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, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 #include "vlivebanner.h"
23 VLiveBanner::VLiveBanner(View* tparent, Channel* channel)
28 if (Video::getInstance()->getFormat() == Video::PAL)
30 setScreenPos(125, 410);
34 setScreenPos(115, 320);
37 setDimensions(500, 120);
39 setBackgroundColour(Colour::VIEWBACKGROUND);
41 setTitleBarColour(Colour::TITLEBARBACKGROUND);
43 sl.setScreenPos(screenX, screenY + 30);
44 sl.setDimensions(width, height - 60);
50 VLiveBanner::~VLiveBanner()
55 void VLiveBanner::delData()
59 int eventListSize = eventList->size();
60 for(int i = 0; i < eventListSize; i++)
62 delete (*eventList)[i];
71 void VLiveBanner::setChannel(Channel* tChannel)
74 currentChannel = tChannel;
77 setTitleText(currentChannel->name);
78 eventList = VDR::getInstance()->getChannelSchedule(currentChannel->number);
82 sl.addOption("No channel data available", 1);
87 Log::getInstance()->log("Banner", Log::DEBUG, "Start sort");
88 sort(eventList->begin(), eventList->end(), EventSorter());
89 Log::getInstance()->log("Banner", Log::DEBUG, "End sort");
92 char tempString2[300];
96 int eventListSize = eventList->size();
97 for(int i = 0; i < eventListSize; i++)
99 event = (*eventList)[i];
101 btime = localtime((time_t*)&event->time);
102 strftime(tempString2, 299, "%0H:%0M ", btime);
103 snprintf(tempString, 299, "%s %s", tempString2, event->title);
104 event->index = sl.addOption(tempString, first);
108 // Reset the timer as it probably took 1-2 seconds to change the channel
109 ViewMan::getInstance()->timedDelete(this, 4, 0);
113 void VLiveBanner::draw()
117 rectangle(0, height - 30, width, 30, titleBarColour);
119 rectangle(7, height - 24, 18, 16, Colour::RED);
120 drawText("info", 32, height - 25, Colour::LIGHTTEXT);
123 int VLiveBanner::handleCommand(int command)
141 case Remote::DF_DOWN:
150 case Remote::CHANNELUP:
152 Message* m = new Message();
155 m->message = Message::CHANNEL_UP;
156 ViewMan::getInstance()->postMessage(m);
159 case Remote::CHANNELDOWN:
161 Message* m = new Message();
164 m->message = Message::CHANNEL_DOWN;
165 ViewMan::getInstance()->postMessage(m);
171 if (!eventList) return 2;
173 int eventListSize = eventList->size();
174 for(int i = 0; i < eventListSize; i++)
176 event = (*eventList)[i];
177 if (event->index == sl.getCurrentOption())
179 Log::getInstance()->log("VLiveBanner", Log::DEBUG, "Found the option you pointed at. %s", event->title);
180 // First, cancel my delete timer
181 ViewMan::getInstance()->timedDelete(this, 0, 0);
183 VInfo* vi = new VInfo();
184 vi->setTitleText(event->title);
187 if (event->description) vi->setMainText(event->description);
188 else vi->setMainText("Summary unavailable");
189 if (Video::getInstance()->getFormat() == Video::PAL)
191 vi->setScreenPos(120, 130);
195 vi->setScreenPos(110, 90);
197 vi->setDimensions(510, 270);
199 ViewMan::getInstance()->addNoLock(vi);
207 return 2; // should not get here