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);
129 #ifndef VOMP_HAS_EXIT
130 sl.addOption(tr("7. Reboot"), reinterpret_cast<void*>(7), 0,info);
132 sl.addOption(tr("7. Exit"), reinterpret_cast<void*>(7), 0,info);
138 void VWelcome::preDelete()
140 Timers::getInstance()->cancelTimer(this, 1);
143 VWelcome::~VWelcome()
147 void VWelcome::draw()
153 void VWelcome::drawClock()
155 // Blank the area first
156 #ifndef GRADIENT_DRAWING
157 rectangle(area.w - 60, 0, 60, 30, titleBarColour);
163 LOCALTIME_R(&t, &tms);
165 strftime(timeString, 19, "%H:%M", &tms);
166 drawTextRJ(timeString, 450, 5, DrawStyle::LIGHTTEXT);
168 time_t dt = 60 - (t % 60); // seconds to the next minute
169 if (dt == 0) dt = 60; // advance a whole minute if necessary
170 dt += t; // get a time_t value for it rather than using duration
171 // (so it will occur at the actual second and not second and a half)
173 Timers::getInstance()->setTimerT(this, 1, dt);
176 void VWelcome::timercall(int /* clientReference */)
178 #ifndef GRADIENT_DRAWING
183 boxstack->update(this, &clockRegion);
186 int VWelcome::handleCommand(int command)
194 boxstack->update(this);
201 boxstack->update(this);
226 #ifdef VOMP_PLATTFORM_MVP
238 Control::getInstance()->doReboot();
243 ULONG option = reinterpret_cast<ULONG>(sl.getCurrentOptionData());
249 else if (option == 2)
254 else if (option == 3)
259 else if (option == 4)
264 else if (option == 5)
269 else if (option == 6)
274 else if (option == 7)
276 Control::getInstance()->doReboot();
279 return 2; // never gets here
284 VScreensaver* vscreensaver = new VScreensaver();
285 boxstack->add(vscreensaver);
286 vscreensaver->draw();
287 // boxstack->update(vscreensaver);
303 void VWelcome::doChannelsList()
305 ChannelList* chanList = VDR::getInstance()->getChannelsList(VDR::VIDEO);
309 VChannelList* vchan = new VChannelList(VDR::VIDEO);
310 vchan->setList(chanList);
313 boxstack->add(vchan);
314 boxstack->update(vchan);
318 Control::getInstance()->connectionLost();
322 void VWelcome::doRadioList()
324 ChannelList* chanList = VDR::getInstance()->getChannelsList(VDR::RADIO);
328 VChannelList* vchan = new VChannelList(VDR::RADIO);
329 vchan->setList(chanList);
332 boxstack->add(vchan);
333 boxstack->update(vchan);
337 Control::getInstance()->connectionLost();
341 void VWelcome::doRecordingsList()
343 VRecordingList* vrec;
344 if (Control::getInstance()->isAdvMenus())
345 vrec = new VRecordingListAdvanced();
347 vrec = new VRecordingListClassic();
351 boxstack->update(vrec);
355 Control::getInstance()->connectionLost();
359 void VWelcome::doMediaList()
361 #ifdef VOMP_MEDIAPLAYER
362 VMediaList::createList();
366 void VWelcome::doTimersList()
368 VTimerList* vtl = new VTimerList();
372 Control::getInstance()->connectionLost();
378 boxstack->update(vtl);
381 void VWelcome::doOptions()
383 // VOptionsMenu* voptionsmenu = new VOptionsMenu();
384 // voptionsmenu->draw();
385 // boxstack->add(voptionsmenu);
386 // boxstack->updateView(voptionsmenu);
388 VOpts* vopts = new VOpts();
390 boxstack->add(vopts);
391 boxstack->update(vopts);
394 void VWelcome::processMessage(Message* m)
396 if (m->message == Message::MOUSE_MOVE)
398 if (sl.mouseMove(m->parameter - getScreenX(), m->tag - getScreenY()))
401 boxstack->update(this);
404 else if (m->message == Message::MOUSE_LBDOWN)
406 if (sl.mouseLBDOWN(m->parameter - getScreenX(), m->tag - getScreenY()))
408 boxstack->handleCommand(Input::OK); //simulate OK press