trunk 20080912
[gitenigma.git] / src / setup_rc.cpp
blob979595a3b825a99f3273de30e55f73d581a9ce94
1 #include <setup_rc.h>
3 #include <lib/gui/slider.h>
4 #include <lib/gui/ebutton.h>
5 #include <lib/gui/elabel.h>
6 #include <lib/gui/combobox.h>
7 #include <lib/gui/enumber.h>
8 #include <lib/gui/echeckbox.h>
9 #include <lib/gui/eskin.h>
10 #include <lib/gui/actions.h>
11 #include <lib/system/econfig.h>
12 #include <lib/base/i18n.h>
13 #include <lib/dvb/dvbwidgets.h>
14 #include <lib/driver/rc.h>
15 #include <enigma.h>
16 #include <enigma_main.h>
18 void eZapRCSetup::repeatChanged( int i )
20 eDebug("Repeat rate changed to %i", i);
21 rrate = 250-i;
22 update();
25 void eZapRCSetup::delayChanged( int i )
27 eDebug("Repeat delay changed to %i", i);
28 rdelay = i;
29 update();
32 void eZapRCSetup::update()
34 eRCInput::getInstance()->config.set(rdelay, rrate);
37 eZapRCSetup::eZapRCSetup()
38 :eWindow(0)
40 init_eZapRCSetup();
43 void eZapRCSetup::init_eZapRCSetup()
45 setText(_("Remotecontrol Setup"));
46 cmove(ePoint(140, 136));
47 cresize(eSize(470, 335));
49 int fd=eSkin::getActive()->queryValue("fontsize", 20);
51 eConfig::getInstance()->getKey("/ezap/rc/repeatRate", rrate);
52 eConfig::getInstance()->getKey("/ezap/rc/repeatDelay", rdelay);
53 rrate = 250 - rrate;
55 lrrate=new eLabel(this);
56 lrrate->setText(_("Repeat Rate:"));
57 lrrate->move(ePoint(20, 20));
58 lrrate->resize(eSize(170, fd+4));
60 lrdelay=new eLabel(this);
61 lrdelay->setText(_("Repeat Delay:"));
62 lrdelay->move(ePoint(20, 60));
63 lrdelay->resize(eSize(170, fd+4));
65 srrate=new eSlider(this, lrrate, 0, 250 );
66 srrate->setName("rrate");
67 srrate->move(ePoint(200, 20));
68 srrate->resize(eSize(220, fd+4));
69 srrate->setHelpText(_("change remote control repeat rate\nleft => less, right => more (... repeats)"));
70 CONNECT( srrate->changed, eZapRCSetup::repeatChanged );
72 srdelay=new eSlider(this, lrdelay, 0, 1000 );
73 srdelay->setName("rdelay");
74 srdelay->move(ePoint(200, 60));
75 srdelay->resize(eSize(220, fd+4));
76 srdelay->setHelpText(_("change remote control repeat delay\nleft => shorter, right => longer (...delay)"));
77 CONNECT( srdelay->changed, eZapRCSetup::delayChanged );
79 lrcStyle=new eLabel(this);
80 lrcStyle->move(ePoint(20, 100));
81 lrcStyle->resize(eSize(220, fd+4));
82 lrcStyle->setText("Remotecontrol Style:");
83 rcStyle=new eComboBox(this, 4, lrcStyle);
84 rcStyle->move(ePoint(20, 140));
85 rcStyle->resize(eSize(220, 35));
86 rcStyle->setHelpText(_("select your favourite RC style (ok)"));
87 rcStyle->loadDeco();
88 CONNECT( rcStyle->selchanged, eZapRCSetup::styleChanged );
89 eListBoxEntryText *current=0;
90 const std::set<eString> &activeStyles=eActionMapList::getInstance()->getCurrentStyles();
91 for (std::map<eString, eString>::const_iterator it(eActionMapList::getInstance()->getExistingStyles().begin())
92 ; it != eActionMapList::getInstance()->getExistingStyles().end(); ++it)
94 if (activeStyles.find(it->first) != activeStyles.end())
96 current = new eListBoxEntryText( *rcStyle, it->second, (void*) &it->first );
97 curstyle = it->first;
99 else
100 new eListBoxEntryText( *rcStyle, it->second, (void*) &it->first );
102 if (current)
103 rcStyle->setCurrent( current );
105 lNextCharTimeout = new eLabel(this);
106 lNextCharTimeout->move(ePoint(20,185));
107 lNextCharTimeout->resize(eSize(300,35));
108 lNextCharTimeout->setText(_("Next Char Timeout:"));
110 unsigned int t;
111 if (eConfig::getInstance()->getKey("/ezap/rc/TextInputField/nextCharTimeout", t) )
112 t=0;
113 NextCharTimeout = new eNumber(this,1,0,3999,4,0,0,lNextCharTimeout);
114 NextCharTimeout->move(ePoint(335,180));
115 NextCharTimeout->resize(eSize(65,35));
116 NextCharTimeout->loadDeco();
117 NextCharTimeout->setHelpText(_("cursor to next char timeout(msek) in textinputfields"));
118 NextCharTimeout->setNumber(t);
119 CONNECT(NextCharTimeout->selected, eZapRCSetup::nextField);
121 ok=new eButton(this);
122 ok->setText(_("save"));
123 ok->setShortcut("green");
124 ok->setShortcutPixmap("green");
125 ok->move(ePoint(20, clientrect.height()-100));
126 ok->resize(eSize(220, 40));
127 ok->setHelpText(_("save changes and return"));
128 ok->loadDeco();
129 CONNECT(ok->selected, eZapRCSetup::okPressed);
131 statusbar=new eStatusBar(this);
132 statusbar->move( ePoint(0, clientrect.height()-50 ) );
133 statusbar->resize( eSize( clientrect.width(), 50) );
134 statusbar->loadDeco();
136 srdelay->setValue(rdelay);
137 srrate->setValue(rrate);
138 setHelpID(85);
141 eZapRCSetup::~eZapRCSetup()
145 void eZapRCSetup::nextField(int *)
147 focusNext(eWidget::focusDirNext);
150 void eZapRCSetup::styleChanged( eListBoxEntryText* e)
152 if (e)
154 eActionMapList::getInstance()->deactivateStyle( curstyle );
155 eActionMapList::getInstance()->activateStyle( curstyle = *(eString*)e->getKey() );
159 void eZapRCSetup::okPressed()
161 // save current selected style
162 eConfig::getInstance()->setKey("/ezap/rc/style", curstyle.c_str());
164 eZap::getInstance()->getServiceSelector()->setKeyDescriptions();
165 setStyle();
167 rrate = 250 - srrate->getValue();
168 eConfig::getInstance()->setKey("/ezap/rc/repeatRate", rrate);
169 eConfig::getInstance()->setKey("/ezap/rc/repeatDelay", rdelay);
170 unsigned int t = (unsigned int) NextCharTimeout->getNumber();
171 eConfig::getInstance()->setKey("/ezap/rc/TextInputField/nextCharTimeout", t );
172 eConfig::getInstance()->flush();
173 close(1);
176 int eZapRCSetup::eventHandler( const eWidgetEvent & e )
178 switch(e.type)
180 case eWidgetEvent::execDone:
181 setStyle();
182 eConfig::getInstance()->getKey("/ezap/rc/repeatRate", rrate);
183 eConfig::getInstance()->getKey("/ezap/rc/repeatDelay", rdelay);
184 update();
185 break;
186 default:
187 return eWindow::eventHandler( e );
189 return 1;
192 void eZapRCSetup::setStyle()
194 eActionMapList::getInstance()->deactivateStyle(curstyle);
196 char *style=0;
197 if (eConfig::getInstance()->getKey("/ezap/rc/style", style) )
198 eActionMapList::getInstance()->activateStyle("default");
199 else
201 eActionMapList::getInstance()->activateStyle( style );
202 free(style);