2 Copyright 2004-2005 Chris Tallon
4 This file is part of VOMP.
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.
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.
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/>.
24 #include "vchannellist.h"
25 #include "vrecordinglistclassic.h"
26 #include "vrecordinglistadvanced.h"
27 #include "vtimerlist.h"
33 #include "vscreensaver.h"
34 #include "vmedialist.h"
37 #include "staticartwork.h"
43 boxstack = BoxStack::getInstance();
50 #ifndef GRADIENT_DRAWING
53 if (Video::getInstance()->getFormat() == Video::PAL)
55 setPosition(140, 170);
59 setPosition(130, 140);
64 setPosition(140, 150);
68 setTitleBarColour(DrawStyle::TITLEBARBACKGROUND);
71 #ifndef GRADIENT_DRAWING
72 jpeg.setPosition(240, 60);
74 jpeg.init("/vdr.jpg");
80 vdr.setPosition(250, 65);
81 vdr.setSize(180, 160);
83 sinfo.setStaticArtwork(sa_vdrlogo);
84 vdr.setTVMedia(sinfo, WTVMedia::ZoomHorizontal);
89 sl.setPosition(20, 40);
90 #ifdef GRADIENT_DRAWING
93 sl.setLinesPerOption(1.5f);
100 setTitleText(tr("Welcome"));
103 TVMediaInfo *info= new TVMediaInfo();
104 info->setStaticArtwork(sa_tv);
105 sl.addOption(tr("1. Live TV"), reinterpret_cast<void*>(1), 1, info);
107 info= new TVMediaInfo();
108 info->setStaticArtwork(sa_radio);
109 sl.addOption(tr("2. Radio"), reinterpret_cast<void*>(2), 0, info);
111 info= new TVMediaInfo();
112 info->setStaticArtwork(sa_recordings);
113 sl.addOption(tr("3. Recordings"), reinterpret_cast<void*>(3), 0, info);
115 info= new TVMediaInfo();
116 info->setStaticArtwork(sa_timers);
117 sl.addOption(tr("4. Timers"), reinterpret_cast<void*>(4), 0, info);
118 #ifdef VOMP_PLATTFORM_MVP
119 sl.addOption(tr("5. MediaPlayer"), reinterpret_cast<void*>(5), 0);
122 info= new TVMediaInfo();
123 info->setStaticArtwork(sa_properties);
124 sl.addOption(tr("6. Options"), reinterpret_cast<void*>(6), 0,info);
126 info= new TVMediaInfo();
127 info->setStaticArtwork(sa_restart);
128 #ifndef VOMP_HAS_EXIT
129 sl.addOption(tr("7. Reboot"), reinterpret_cast<void*>(7), 0,info);
131 sl.addOption(tr("7. Exit"), reinterpret_cast<void*>(7), 0,info);
137 void VWelcome::preDelete()
139 Timers::getInstance()->cancelTimer(this, 1);
142 VWelcome::~VWelcome()
146 void VWelcome::draw()
152 void VWelcome::drawClock()
154 // Blank the area first
155 #ifndef GRADIENT_DRAWING
156 rectangle(area.w - 60, 0, 60, 30, titleBarColour);
162 LOCALTIME_R(&t, &tms);
164 strftime(timeString, 19, "%H:%M", &tms);
165 drawTextRJ(timeString, 450, 5, DrawStyle::LIGHTTEXT);
167 time_t dt = 60 - (t % 60); // seconds to the next minute
168 if (dt == 0) dt = 60; // advance a whole minute if necessary
169 dt += t; // get a time_t value for it rather than using duration
170 // (so it will occur at the actual second and not second and a half)
172 Timers::getInstance()->setTimerT(this, 1, dt);
175 void VWelcome::timercall(int /* clientReference */)
177 #ifndef GRADIENT_DRAWING
182 boxstack->update(this, &clockRegion);
185 int VWelcome::handleCommand(int command)
193 boxstack->update(this);
200 boxstack->update(this);
225 #ifdef VOMP_PLATTFORM_MVP
237 Command::getInstance()->doReboot();
242 ULONG option = reinterpret_cast<ULONG>(sl.getCurrentOptionData());
248 else if (option == 2)
253 else if (option == 3)
258 else if (option == 4)
263 else if (option == 5)
268 else if (option == 6)
273 else if (option == 7)
275 Command::getInstance()->doReboot();
278 return 2; // never gets here
283 VScreensaver* vscreensaver = new VScreensaver();
284 boxstack->add(vscreensaver);
285 vscreensaver->draw();
286 // boxstack->update(vscreensaver);
302 void VWelcome::doChannelsList()
304 ChannelList* chanList = VDR::getInstance()->getChannelsList(VDR::VIDEO);
308 VChannelList* vchan = new VChannelList(VDR::VIDEO);
309 vchan->setList(chanList);
312 boxstack->add(vchan);
313 boxstack->update(vchan);
317 Command::getInstance()->connectionLost();
321 void VWelcome::doRadioList()
323 ChannelList* chanList = VDR::getInstance()->getChannelsList(VDR::RADIO);
327 VChannelList* vchan = new VChannelList(VDR::RADIO);
328 vchan->setList(chanList);
331 boxstack->add(vchan);
332 boxstack->update(vchan);
336 Command::getInstance()->connectionLost();
340 void VWelcome::doRecordingsList()
342 VRecordingList* vrec;
343 if (Command::getInstance()->isAdvMenus())
344 vrec = new VRecordingListAdvanced();
346 vrec = new VRecordingListClassic();
350 boxstack->update(vrec);
354 Command::getInstance()->connectionLost();
358 void VWelcome::doMediaList()
360 #ifdef VOMP_MEDIAPLAYER
361 VMediaList::createList();
365 void VWelcome::doTimersList()
367 VTimerList* vtl = new VTimerList();
371 Command::getInstance()->connectionLost();
377 boxstack->update(vtl);
380 void VWelcome::doOptions()
382 // VOptionsMenu* voptionsmenu = new VOptionsMenu();
383 // voptionsmenu->draw();
384 // boxstack->add(voptionsmenu);
385 // boxstack->updateView(voptionsmenu);
387 VOpts* vopts = new VOpts();
389 boxstack->add(vopts);
390 boxstack->update(vopts);
393 void VWelcome::processMessage(Message* m)
395 if (m->message == Message::MOUSE_MOVE)
397 if (sl.mouseMove((m->parameter>>16)-getScreenX(),(m->parameter&0xFFFF)-getScreenY()))
400 boxstack->update(this);
403 else if (m->message == Message::MOUSE_LBDOWN)
405 if (sl.mouseLBDOWN((m->parameter>>16)-getScreenX(),(m->parameter&0xFFFF)-getScreenY()))
407 boxstack->handleCommand(Input::OK); //simulate OK press