]> git.vomp.tv Git - vompclient-marten.git/blob - vmute.cc
New timers system. New program structure for handling buttons/timers
[vompclient-marten.git] / vmute.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 "vmute.h"
22
23 VMute::VMute()
24 {
25   isMuted = Audio::getInstance()->toggleUserMute();
26
27   create(40, 40);
28   if (Video::getInstance()->getFormat() == Video::PAL)
29   {
30     setScreenPos(600, 500);
31   }
32   else
33   {
34     setScreenPos(590, 400);
35   }
36
37   setBackgroundColour(Colour::VIEWBACKGROUND);
38 }
39
40 void VMute::draw()
41 {
42   View::draw();
43
44   WSymbol w;
45   w.setSurface(surface);
46   if (isMuted) w.nextSymbol = WSymbol::MUTE;
47   else w.nextSymbol = WSymbol::UNMUTE;
48   w.setSurfaceOffset(5, 5);
49   w.draw();
50
51   Timers::getInstance()->cancelTimer(this, 1); // if it exists
52   Timers::getInstance()->setTimer(this, 1, (struct timespec){2, 0});
53 }
54
55 void VMute::timercall(int clientReference)
56 {
57   // delete me!
58   Message* m = new Message();
59   m->message = Message::CLOSE_ME;
60   m->to = ViewMan::getInstance();
61   m->from = this;
62   ViewMan::getInstance()->postMessage(m);
63 }
64
65 int VMute::handleCommand(int command)
66 {
67   switch(command)
68   {
69     case Remote::MUTE:
70     {
71       isMuted = Audio::getInstance()->toggleUserMute();
72       draw();
73       show();
74       // handled
75       return 2;
76     }
77   }
78
79   // allow command to drop through to other views
80   return 0;
81 }