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/>.
20 #include "vtimeredit.h"
29 #include "vquestion.h"
30 #include "messagequeue.h"
31 #include "staticartwork.h"
33 VTimerEdit::VTimerEdit(RecTimer* trt)
39 if (Video::getInstance()->getFormat() == Video::PAL)
48 buttonBack.setPosition(30,350);
49 buttonDelete.setPosition(400,350);
50 buttonBack.setText(tr("Back"));
51 buttonBack.setActive(1);
52 buttonDelete.setText(tr("Delete"));
57 setTitleText(tr("Edit Timer"));
58 setTitleBarColour(DrawStyle::TITLEBARBACKGROUND);
59 TVMediaInfo *info= new TVMediaInfo();
60 info->setStaticArtwork(sa_timers);
61 setTitleBarIcon(info);
62 MessageQueue::getInstance()->addReceiver(this);
65 VTimerEdit::~VTimerEdit()
67 MessageQueue::getInstance()->removeReceiver(this);
70 void VTimerEdit::setParent(MessageReceiver* 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(&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(&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);
178 return BoxStack::COMMAND_HANDLED;
183 ViewMan::getInstance()->updateView(this);
184 return BoxStack::COMMAND_HANDLED;
192 BoxStack::getInstance()->update(this);
193 return BoxStack::COMMAND_HANDLED;
200 BoxStack::getInstance()->update(this);
201 return BoxStack::COMMAND_HANDLED;
206 if (selectedButton == 0) return BoxStack::DELETE_ME;
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);
224 return BoxStack::COMMAND_HANDLED;
228 return BoxStack::DELETE_ME;
231 // stop command getting to any more views
232 return BoxStack::ABANDON_COMMAND;
235 void VTimerEdit::processMessage(Message* m)
237 if (m->message == Message::MOUSE_MOVE)
239 int x = m->parameter - getScreenX();
240 int y = m->tag - 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 Input::sendInputKey(Input::OK);
259 else if (m->message == Message::QUESTION_YES)
261 if (selectedButton == 1)
263 Message* m2 = new Message(); // Delete self
265 m2->p_to = Message::BOXSTACK;
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);