3 Copyright 2004-2005 Chris Tallon
5 This file is part of VOMP.
7 VOMP is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 VOMP is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with VOMP. If not, see <https://www.gnu.org/licenses/>.
21 #include "vtimeredit.h"
31 #include "vquestion.h"
32 #include "messagequeue.h"
33 #include "staticartwork.h"
35 VTimerEdit::VTimerEdit(RecTimer* trt)
41 if (Video::getInstance()->getFormat() == Video::PAL)
50 buttonBack.setPosition(30,350);
51 buttonDelete.setPosition(400,350);
52 buttonBack.setText(tr("Back"));
53 buttonBack.setActive(1);
54 buttonDelete.setText(tr("Delete"));
59 setTitleText(tr("Edit Timer"));
60 setTitleBarColour(DrawStyle::TITLEBARBACKGROUND);
61 TVMediaInfo *info= new TVMediaInfo();
62 info->setStaticArtwork(sa_timers);
63 setTitleBarIcon(info);
66 VTimerEdit::~VTimerEdit()
70 void VTimerEdit::setParent(VTimerList* tvTimerList)
72 vTimerList = tvTimerList;
75 void VTimerEdit::draw()
81 int fontheight=getFontHeight();
82 drawText(tr("Active"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
83 drawText(tr("Channel"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
84 drawText(tr("Name"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
85 drawText(tr("Directory"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
87 drawText(tr("Start"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
88 drawText(tr("Stop"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
89 drawText(tr("Priority"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
90 drawText(tr("Lifetime"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
92 drawText(tr("Current"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
93 drawText(tr("Recording"), xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
103 if (recTimer->active) strcpy(buffer, tr("Yes"));
104 else strcpy(buffer, tr("No"));
105 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
108 SNPRINTF(buffer, 999, "%lu", recTimer->channelNumber);
109 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
112 SNPRINTF(buffer, 999, "%s", recTimer->getName());
113 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
116 if (recTimer->getDirectory()) SNPRINTF(buffer, 999, "%s", recTimer->getDirectory());
117 else strcpy(buffer, "");
118 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
122 time_t rectime = recTimer->startTime;
123 LOCALTIME_R((time_t*)&rectime, &tms);
124 strftime(buffer, 999, "%d/%m %H:%M", &tms);
125 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
128 rectime = recTimer->stopTime;
129 LOCALTIME_R((time_t*)&rectime, &tms);
130 strftime(buffer, 999, "%d/%m %H:%M", &tms);
131 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
134 SNPRINTF(buffer, 999, "%lu", recTimer->priority);
135 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
138 SNPRINTF(buffer, 999, "%lu", recTimer->lifeTime);
139 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
143 if (recTimer->pending) strcpy(buffer, tr("Yes"));
144 else strcpy(buffer, tr("No"));
145 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
148 if (recTimer->recording) strcpy(buffer, "Yes");
149 else strcpy(buffer, "No");
150 drawText(buffer, xpos, ypos, DrawStyle::LIGHTTEXT); ypos += fontheight;
153 void VTimerEdit::swap()
155 if (selectedButton == 0)
157 buttonBack.setActive(0);
158 buttonDelete.setActive(1);
163 buttonDelete.setActive(0);
164 buttonBack.setActive(1);
169 int VTimerEdit::handleCommand(int command)
177 ViewMan::getInstance()->updateView(this);
183 ViewMan::getInstance()->updateView(this);
192 BoxStack::getInstance()->update(this);
200 BoxStack::getInstance()->update(this);
206 if (selectedButton == 0) return 4;
208 VQuestion* v = new VQuestion(this);
209 v->setSize(260, 180);
211 v->setTitleBarColour(DrawStyle::DANGER);
214 v->setTitleText(tr("Delete timer"));
215 v->setMainText(tr("Are you sure you want to delete this timer?"));
216 v->setDefault(VQuestion::NO);
217 if (Video::getInstance()->getFormat() == Video::PAL)
218 v->setPosition(230, 160);
220 v->setPosition(220, 140);
222 BoxStack::getInstance()->add(v);
223 BoxStack::getInstance()->update(v);
231 // stop command getting to any more views
235 void VTimerEdit::processMessage(Message* m)
237 if (m->message == Message::MOUSE_MOVE)
239 int x=(m->parameter>>16)-getScreenX();
240 int y=(m->parameter&0xFFFF)-getScreenY();
241 if (buttonBack.mouseMove(x,y)) {
243 buttonDelete.setActive(false);
246 BoxStack::getInstance()->update(this);
247 } else if (buttonDelete.mouseMove(x,y)) {
249 buttonBack.setActive(false);
252 BoxStack::getInstance()->update(this);
255 } else if (m->message == Message::MOUSE_LBDOWN)
257 BoxStack::getInstance()->handleCommand(Input::OK); //simulate OK press
259 else if (m->message == Message::QUESTION_YES)
261 if (selectedButton == 1)
263 Message* m2 = new Message(); // Delete self
265 m2->to = BoxStack::getInstance();
266 m2->message = Message::CLOSE_ME;
267 MessageQueue::getInstance()->postMessage(m2);
269 m2 = new Message(); // OK. Want this to delete before this message does its job
272 m2->message = Message::DELETE_SELECTED_TIMER;
273 MessageQueue::getInstance()->postMessage(m2);