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 "voptionsmenu.h"
23 VOptionsMenu::VOptionsMenu()
25 viewman = ViewMan::getInstance();
27 setBackgroundColour(Colour::VIEWBACKGROUND);
29 setTitleBarColour(Colour::TITLEBARBACKGROUND);
30 setTitleText(tr("Options"));
32 // int fontHeight = surface->getFontHeight();
43 VOptionsMenu::~VOptionsMenu()
47 void VOptionsMenu::draw()
52 int VOptionsMenu::handleCommand(int command)
54 return VTabsViewMan::handleCommand(command);
57 void VOptionsMenu::processMessage(Message* m)
59 if (m->message == Message::CHANGED_OPTIONS)
61 doApplyChanges((map<int,int>*)m->parameter);
62 //viewman->removeView(this);
64 if (!VDR::getInstance()->isConnected()) Command::getInstance()->connectionLost();
66 else if (m->message == Message::CHANGED_REMOTECONTROL)
68 char* remote = Remote::getInstance()->SaveKeysConfig(); //FIXME
69 VDR::getInstance()->configSave("General","Remote keys",remote);
74 VTabsViewMan::processMessage(m);
78 void VOptionsMenu::doApplyChanges(map<int,int>* changedOptions)
80 Video* video = Video::getInstance();
81 map<int,int>::iterator i;
83 for(i = changedOptions->begin(); i != changedOptions->end(); i++)
85 // printf("I FIRST = %i SECOND = %i\n", i->first, i->second);
93 Log::getInstance()->log("Options", Log::DEBUG, "Setting New Remote");
94 Remote::getInstance()->setRemoteType(Remote::NEWREMOTE);
98 Log::getInstance()->log("Options", Log::DEBUG, "Setting Old Remote");
99 Remote::getInstance()->setRemoteType(Remote::OLDREMOTE);
105 Message* m = new Message();
106 m->message = Message::CHANGE_LANGUAGE;
107 m->to = Command::getInstance();
108 Command::getInstance()->postMessageNoLock(m);
115 Log::getInstance()->log("Options", Log::DEBUG, "Setting S-Video");
116 video->setConnection(Video::SVIDEO);
120 Log::getInstance()->log("Options", Log::DEBUG, "Setting RGB/Composite");
121 video->setConnection(Video::COMPOSITERGB);
129 Log::getInstance()->log("Options", Log::DEBUG, "Setting 16:9 TV");
130 video->setTVsize(Video::ASPECT16X9);
134 Log::getInstance()->log("Options", Log::DEBUG, "Setting 4:3 TV");
135 video->setTVsize(Video::ASPECT4X3);
143 Log::getInstance()->log("Options", Log::DEBUG, "Setting letterbox");
144 video->setMode(Video::LETTERBOX);
148 Log::getInstance()->log("Options", Log::DEBUG, "Setting chop-sides");
149 video->setMode(Video::NORMAL);
155 size_t newTCPsize = 2048;
157 if (i->second == 0) newTCPsize = 1024;
158 else if (i->second == 1) newTCPsize = 2048;
159 else if (i->second == 2) newTCPsize = 4096;
160 else if (i->second == 3) newTCPsize = 8192;
161 else if (i->second == 4) newTCPsize = 16384;
162 else if (i->second == 5) newTCPsize = 32768;
163 else if (i->second == 6) newTCPsize = 65536;
165 Log::getInstance()->log("Options", Log::DEBUG, "Setting TCP window size %i", newTCPsize);
166 VDR::getInstance()->setReceiveWindow(newTCPsize);
172 delete changedOptions;
176 void VOptionsMenu::doGeneral()
178 static const int numOptions = 8;
180 static const char* options1[] = {"Old", "New"};
181 static const char* options3[] = {"RGB+composite", "S-Video"};
182 static const char* options4[] = {"4:3", "16:9"};
183 static const char* options5[] = {"Chop sides", "Letterbox"};
184 static const char* options6[] = {"On", "Off", "Last state"};
185 static const char* options7[] = {"All", "FTA only"};
186 static const char* options15[] = {"Alphabetical", "Chronological"};
188 const static OPTIONDATA optionData[numOptions] =
190 {1, "Remote control type", "General", "Remote type", OPTIONTYPE_TEXT, 2, 0, 0, options1 },
191 {2, "Language", "General", "Language", OPTIONTYPE_TEXT, I18n::NumLanguages, 0, 0, I18n::Languages },
192 {3, "TV connection type", "TV", "Connection", OPTIONTYPE_TEXT, 2, 0, 0, options3 },
193 {4, "TV aspect ratio", "TV", "Aspect", OPTIONTYPE_TEXT, 2, 0, 0, options4 },
194 {5, "16:9 on 4:3 display mode", "TV", "Widemode", OPTIONTYPE_TEXT, 2, 0, 0, options5 },
195 {6, "Power state after bootup", "General", "Power After Boot", OPTIONTYPE_TEXT, 3, 0, 0, options6 },
196 {7, "Display channels", "General", "Channels", OPTIONTYPE_TEXT, 2, 0, 0, options7 },
197 {15, "Recordings sort order", "General", "Recordings Sort Order", OPTIONTYPE_TEXT, 2, 0, 0, options15 },
200 // As all the above data is const static, it can be sent to the new View, this stack frame can
201 // quit and the pointers will all still be valid. I think. (Hope).
203 VOptions* v = new VOptions(this, tr("General"), optionData, numOptions);
206 //viewman->updateView(v);
209 void VOptionsMenu::doRemoteConfig()
211 VRemoteConfig* v = new VRemoteConfig(this);
216 void VOptionsMenu::doTimers()
218 static const int numOptions = 4;
220 const static OPTIONDATA optionData[numOptions] =
222 {9, "Default start margin (minutes)", "Timers", "Start margin", OPTIONTYPE_INT, 20, 5, 0, NULL },
223 {10, "Default end margin (minutes)", "Timers", "End margin", OPTIONTYPE_INT, 20, 5, 0, NULL },
224 {11, "Default priority", "Timers", "Priority", OPTIONTYPE_INT, 100, 99, 0, NULL },
225 {12, "Default lifetime", "Timers", "Lifetime", OPTIONTYPE_INT, 100, 99, 0, NULL },
228 // As all the above data is const static, it can be sent to the new View, this stack frame can
229 // quit and the pointers will all still be valid. I think. (Hope).
231 VOptions* v = new VOptions(this, tr("Timers"), optionData, numOptions);
234 //viewman->updateView(v);
237 void VOptionsMenu::doAdvanced()
239 static const int numOptions = 3;
241 static const char* options13[] = {"1024", "2048", "4096", "8192", "16384", "32768", "65536"};
242 static const char* options14[] = {"No", "Yes"};
244 const static OPTIONDATA optionData[numOptions] =
246 {8, "VDR-Pri 0=OK !See forums!", "General", "Live priority", OPTIONTYPE_INT, 100, 0, 0, NULL },
247 {13, "TCP receive window size", "Advanced", "TCP receive window", OPTIONTYPE_TEXT, 7, 1, 0, options13 },
248 {14, "Use WSS (PAL only)", "General", "WSS", OPTIONTYPE_TEXT, 2, 0, 0, options14 }
251 // As all the above data is const static, it can be sent to the new View, this stack frame can
252 // quit and the pointers will all still be valid. I think. (Hope).
254 VOptions* v = new VOptions(this, tr("Advanced"), optionData, numOptions);
257 //viewman->updateView(v);