]> git.vomp.tv Git - vompclient.git/blob - vvolume.cc
New timers system. New program structure for handling buttons/timers
[vompclient.git] / vvolume.cc
1 /*
2     Copyright 2004-2005 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 */
20
21 #include "vvolume.h"
22
23 VVolume::VVolume()
24 {
25   displayVolume = Audio::getInstance()->getVolume();
26
27   create(227, 31);
28   if (Video::getInstance()->getFormat() == Video::PAL)
29   {
30     setScreenPos(100, 499);
31   }
32   else
33   {
34     setScreenPos(90, 400);
35   }
36
37   setBackgroundColour(Colour::VIEWBACKGROUND);
38 }
39
40 void VVolume::draw()
41 {
42   View::draw();
43
44   WSymbol w;
45   w.setSurface(surface);
46   w.nextSymbol = WSymbol::VOLUME2;
47   w.setSurfaceOffset(3, 10);
48   w.draw();
49
50   int i = 0;
51
52   for(; i < displayVolume; i++)
53   {
54     w.nextSymbol = WSymbol::VOLBAR;
55     w.setSurfaceOffset(40 + (i * 9), 3);
56     w.draw();
57   }
58
59   for(; i < 20; i++)
60   {
61     w.nextSymbol = WSymbol::VOLDOT;
62     w.setSurfaceOffset(40 + (i * 9), 13);
63     w.draw();
64   }
65
66   Timers::getInstance()->cancelTimer(this, 1); // if it exists
67   Timers::getInstance()->setTimer(this, 1, (struct timespec){2, 0});
68 }
69
70 void VVolume::timercall(int clientReference)
71 {
72   // delete me!
73   Message* m = new Message();
74   m->message = Message::CLOSE_ME;
75   m->to = ViewMan::getInstance();
76   m->from = this;
77   ViewMan::getInstance()->postMessage(m);
78 }
79
80 int VVolume::handleCommand(int command)
81 {
82   switch(command)
83   {
84     case Remote::DF_LEFT:
85     case Remote::VOLUMEDOWN:
86     {
87       displayVolume = Audio::getInstance()->volumeDown();
88       draw();
89       show();
90       // handled
91       return 2;
92     }
93     case Remote::DF_RIGHT:
94     case Remote::VOLUMEUP:
95     {
96       displayVolume = Audio::getInstance()->volumeUp();
97       draw();
98       show();
99       // handled
100       return 2;
101     }
102   }
103
104   // allow command to drop through to other views
105   return 0;
106 }