2 Copyright 2004-2020 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/>.
26 #include "messagequeue.h"
28 #include "vserverselect.h"
30 VServerSelect::VServerSelect(const VDPC& servers, MessageReceiver* treplyTo)
34 if (Video::getInstance()->getFormat() == Video::PAL)
36 setPosition(220, 200);
40 setPosition(210, 150);
44 setTitleBarColour(DrawStyle::TITLEBARBACKGROUND);
45 setTitleText(tr("Choose a VDR server"));
47 sl.setPosition(10, 30 + 5);
48 sl.setSize(area.w - 20, area.h - 30 - 15);
51 sl.addOption(servers[0].name, 0, 1);
52 for(u4 k = 1; k < servers.numServers(); k++)
54 sl.addOption(servers[k].name, 0, 0);
58 MessageQueue::getInstance()->addReceiver(this);
61 VServerSelect::~VServerSelect()
63 MessageQueue::getInstance()->removeReceiver(this);
66 void VServerSelect::draw()
71 int VServerSelect::handleCommand(int command)
79 BoxStack::getInstance()->update(this);
80 return BoxStack::COMMAND_HANDLED;
86 BoxStack::getInstance()->update(this);
87 return BoxStack::COMMAND_HANDLED;
91 Message* m = new Message(); // Question/Answer mech. Better being messages
93 m->message = Message::SERVER_SELECTED;
94 m->parameter = sl.getCurrentOption();
95 MessageQueue::getInstance()->postMessage(m);
96 return BoxStack::DELETE_ME;
100 return BoxStack::ABANDON_COMMAND;
103 void VServerSelect::processMessage(Message* m)
105 if (m->message == Message::MOUSE_MOVE)
107 if (sl.mouseMove(m->parameter - getScreenX(), m->tag - getScreenY()))
110 BoxStack::getInstance()->update(this);
113 else if (m->message == Message::MOUSE_LBDOWN)
115 if (sl.mouseLBDOWN(m->parameter - getScreenX(), m->tag - getScreenY()))
117 Input::sendInputKey(Input::OK);