]> git.vomp.tv Git - vompclient.git/blob - vvolume.cc
20 CWFs, fix some snprintf calls
[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, see <https://www.gnu.org/licenses/>.
18 */
19
20 #include "vvolume.h"
21
22 #include "input.h"
23 #include "audio.h"
24 #include "wsymbol.h"
25 #include "colour.h"
26 #include "video.h"
27 #include "timers.h"
28 #include "boxstack.h"
29 #include "messagequeue.h"
30
31 VVolume::VVolume()
32 {
33   displayVolume = Audio::getInstance()->getVolume();
34
35   setSize(227, 31);
36   createBuffer();
37   if (Video::getInstance()->getFormat() == Video::PAL)
38   {
39     setPosition(100, 499);
40   }
41   else
42   {
43     setPosition(90, 400);
44   }
45 }
46
47 VVolume::~VVolume()
48 {
49   // Make sure the timer is deleted
50   Timers::getInstance()->cancelTimer(this, 1);
51 }
52
53 void VVolume::draw()
54 {
55   Boxx::draw();
56
57   fillColour(DrawStyle::VIEWBACKGROUND);
58
59   WSymbol w;
60   TEMPADD(&w);
61   w.nextSymbol = WSymbol::VOLUME2;
62   w.setPosition(3, 10);
63   w.draw();
64
65   int i = 0;
66
67   for(; i < displayVolume; i++)
68   {
69     w.nextSymbol = WSymbol::VOLBAR;
70     w.setPosition(40 + (i * 9), 3);
71     w.draw();
72   }
73
74   for(; i < 20; i++)
75   {
76     w.nextSymbol = WSymbol::VOLDOT;
77     w.setPosition(40 + (i * 9), 13);
78     w.draw();
79   }
80
81   Timers::getInstance()->setTimerD(this, 1, 2);
82 }
83
84 void VVolume::timercall(int /* clientReference */)
85 {
86   // delete me!
87   Message* m = new Message(); // Delete self
88   m->message = Message::CLOSE_ME;
89   m->to = BoxStack::getInstance();
90   m->from = this;
91   MessageQueue::getInstance()->postMessage(m);
92 }
93
94 int VVolume::handleCommand(int command)
95 {
96   switch(command)
97   {
98     case Input::VOLUMEDOWN:
99     {
100       displayVolume = Audio::getInstance()->volumeDown();
101       draw();
102       BoxStack::getInstance()->update(this);
103       // handled
104       return 2;
105     }
106     case Input::VOLUMEUP:
107     {
108       displayVolume = Audio::getInstance()->volumeUp();
109       draw();
110       BoxStack::getInstance()->update(this);
111       // handled
112       return 2;
113     }
114   }
115
116   // allow command to drop through to other views
117   return 0;
118 }