3 #include <setup_osd_extra.h>
7 #include <enigma_main.h>
8 #include <lib/base/i18n.h>
9 #include <lib/dvb/edvb.h>
10 #include <lib/gdi/gfbdc.h>
11 #include <lib/gdi/font.h>
12 #include <lib/gui/eskin.h>
13 #include <lib/gui/ebutton.h>
14 #include <lib/gui/echeckbox.h>
15 #include <lib/gui/guiactions.h>
16 #include <lib/gui/slider.h>
17 #include <lib/gui/statusbar.h>
18 #include <lib/gui/emessage.h>
19 #include <lib/system/econfig.h>
20 #include <lib/system/info.h>
21 #include <lib/system/init.h>
22 #include <lib/system/init_num.h>
24 class PluginOffsetScreen
: public eWidget
26 enum { posLeftTop
, posRightBottom
} curPos
;
28 int eventHandler( const eWidgetEvent
& e
);
29 int left
, top
, right
, bottom
;
30 void redrawLeftTop( gPainter
*target
);
31 void redrawRightBottom( gPainter
*target
);
32 void redrawWidget(gPainter
*target
, const eRect
&where
);
33 gColor foreColor
, backColor
;
38 struct PluginOffsetActions
41 eAction leftTop
, rightBottom
, store
;
43 :map("PluginOffsetActions", _("PluginOffsetActions")),
44 leftTop(map
,"leftTop", _("enable set the leftTop Point of the rectangle")),
45 rightBottom(map
,"rightBottom", _("enable set the rightBottom Point of the rectangle")),
46 store(map
, "store", _("saves the current positions"))
51 eAutoInitP0
<PluginOffsetActions
> i_PluginOffsetActions(eAutoInitNumbers::actions
, "tuxtxt offset actions");
53 int PluginOffsetScreen::eventHandler( const eWidgetEvent
&event
)
57 case eWidgetEvent::execBegin
:
58 eConfig::getInstance()->getKey("/enigma/plugins/needoffsets/left", left
);
59 eConfig::getInstance()->getKey("/enigma/plugins/needoffsets/top", top
);
60 eConfig::getInstance()->getKey("/enigma/plugins/needoffsets/right", right
);
61 eConfig::getInstance()->getKey("/enigma/plugins/needoffsets/bottom", bottom
);
64 case eWidgetEvent::execDone
:
65 eConfig::getInstance()->setKey("/enigma/plugins/needoffsets/left", left
);
66 eConfig::getInstance()->setKey("/enigma/plugins/needoffsets/top", top
);
67 eConfig::getInstance()->setKey("/enigma/plugins/needoffsets/right", right
);
68 eConfig::getInstance()->setKey("/enigma/plugins/needoffsets/bottom", bottom
);
70 case eWidgetEvent::willShow
:
73 case eWidgetEvent::evtAction
:
74 if (event
.action
== &i_PluginOffsetActions
->leftTop
)
79 else if (event
.action
== &i_PluginOffsetActions
->rightBottom
)
81 curPos
=posRightBottom
;
84 else if (event
.action
== &i_cursorActions
->cancel
)
89 else if (event
.action
== &i_PluginOffsetActions
->store
)
94 else if (event
.action
== &i_cursorActions
->left
)
96 if ( curPos
== posLeftTop
)
98 else if (curPos
== posRightBottom
)
101 else if (event
.action
== &i_cursorActions
->right
)
103 if ( curPos
== posLeftTop
)
105 else if (curPos
== posRightBottom
)
108 else if (event
.action
== &i_cursorActions
->up
)
110 if ( curPos
== posLeftTop
)
112 else if (curPos
== posRightBottom
)
115 else if (event
.action
== &i_cursorActions
->down
)
117 if ( curPos
== posLeftTop
)
119 else if (curPos
== posRightBottom
)
124 if ( curPos
== posLeftTop
)
125 invalidate( eRect( ePoint(left
-1, top
-1), eSize(102, 102) ) );
126 else if ( curPos
== posRightBottom
)
127 invalidate( eRect( ePoint(right
-101, bottom
-101), eSize(102, 102) ) );
132 return eWidget::eventHandler( event
);
135 void PluginOffsetScreen::redrawLeftTop( gPainter
*target
)
137 target
->fill( eRect( ePoint( left
, top
), eSize( 100, 3 ) ) );
138 target
->fill( eRect( ePoint( left
, top
), eSize( 3, 100 ) ) );
141 void PluginOffsetScreen::redrawRightBottom( gPainter
*target
)
143 target
->fill( eRect( ePoint( right
-3, bottom
-100 ), eSize( 3, 100 ) ) );
144 target
->fill( eRect( ePoint( right
-100, bottom
-3 ), eSize( 100, 3 ) ) );
147 void PluginOffsetScreen::redrawWidget(gPainter
*target
, const eRect
&where
)
149 target
->setForegroundColor( foreColor
);
150 if ( where
.intersects( eRect( ePoint( left
, top
), eSize( 100, 100 ) ) ) )
151 redrawLeftTop( target
);
152 if ( where
.intersects( eRect( ePoint( right
-3, bottom
-100 ), eSize( 3, 100 ) ) ) )
153 redrawRightBottom( target
);
156 PluginOffsetScreen::PluginOffsetScreen()
157 :eWidget(0, 1), curPos( posLeftTop
),
158 left(20), top(20), right( 699 ), bottom( 555 )
160 foreColor
= eSkin::getActive()->queryColor("eWindow.titleBarFont");
161 setForegroundColor( foreColor
);
163 resize(eSize(768,576));
164 descr
= new eLabel( this );
165 descr
->setFlags( eLabel::flagVCenter
|RS_WRAP
);
166 descr
->setForegroundColor( foreColor
);
167 descr
->resize(eSize(568,300));
168 descr
->move(ePoint(100,100));
169 descr
->setText(_("here you can center the tuxtxt rectangle...\npress red to select the left top edge\npress green to select the right bottom edge\nuse the cursor keys to move the selected edges"));
170 eSize ext
= descr
->getExtend();
171 ext
+=eSize(8,4); // the given Size of the Text is okay... but the renderer sucks...
172 descr
->resize( ext
);
173 descr
->move( ePoint( (width()/2)-(ext
.width()/2) , (height()/2)-(ext
.height()/2) ) );
175 addActionMap(&i_PluginOffsetActions
->map
);
176 addActionMap(&i_cursorActions
->map
);
177 addActionToHelpList( &i_PluginOffsetActions
->leftTop
);
178 addActionToHelpList( &i_PluginOffsetActions
->rightBottom
);
182 eZapOsdSetup::eZapOsdSetup()
188 void eZapOsdSetup::init_eZapOsdSetup()
190 setText(_("OSD Settings"));
191 cmove(ePoint(140, 125));
192 cresize(eSize(460, 350));
194 int fd
=eSkin::getActive()->queryValue("fontsize", 20);
196 alpha
= gFBDC::getInstance()->getAlpha();
197 eLabel
* l
= new eLabel(this);
198 l
->setText(_("Alpha:"));
199 l
->move(ePoint(20, 20));
200 l
->resize(eSize(110, fd
+4));
201 sAlpha
= new eSlider( this, l
, 0, 512 );
202 sAlpha
->setIncrement( eSystemInfo::getInstance()->getAlphaIncrement() ); // Percent !
204 sAlpha
->move( ePoint( 150, 20 ) );
205 sAlpha
->resize(eSize( 290, fd
+4 ) );
206 sAlpha
->setHelpText(_("change the transparency correction"));
207 sAlpha
->setValue( alpha
);
208 CONNECT( sAlpha
->changed
, eZapOsdSetup::alphaChanged
);
210 brightness
= gFBDC::getInstance()->getBrightness();
211 l
= new eLabel(this);
212 l
->setText(_("Brightness:"));
213 l
->move(ePoint(20, 60));
214 l
->resize(eSize(120, fd
+4));
215 sBrightness
= new eSlider( this, l
, 0, 255 );
216 sBrightness
->setIncrement( 5 ); // Percent !
217 sBrightness
->move( ePoint( 150, 60 ) );
218 sBrightness
->resize(eSize( 290, fd
+4 ) );
219 sBrightness
->setHelpText(_("change the brightness correction"));
220 sBrightness
->setValue( brightness
);
221 CONNECT( sBrightness
->changed
, eZapOsdSetup::brightnessChanged
);
223 gamma
= gFBDC::getInstance()->getGamma();
224 l
= new eLabel(this);
225 l
->setText(_("Contrast:"));
226 l
->move(ePoint(20, 100));
227 l
->resize(eSize(120, fd
+4));
228 sGamma
= new eSlider( this, l
, 0, 255 );
229 sGamma
->setIncrement( 5 ); // Percent !
230 sGamma
->move( ePoint( 150, 100 ) );
231 sGamma
->resize(eSize( 290, fd
+4 ) );
232 sGamma
->setHelpText(_("change the contrast"));
233 sGamma
->setValue( gamma
);
234 CONNECT( sGamma
->changed
, eZapOsdSetup::gammaChanged
);
236 simpleMainMenu
=new eCheckbox(this);
237 simpleMainMenu
->setText(_("Show Mainmenu like Listbox"));
238 simpleMainMenu
->setHelpText(_("show the Mainmenu in normal listbox style"));
239 simpleMainMenu
->move(ePoint(20,140));
240 simpleMainMenu
->resize(eSize(420,35));
242 eConfig::getInstance()->getKey("/ezap/osd/simpleMainMenu", bla
);
243 simpleMainMenu
->setCheck(bla
);
245 skin
=new eButton(this);
246 skin
->setText(_("Change skin"));
247 skin
->setShortcut("blue");
248 skin
->setShortcutPixmap("blue");
249 skin
->move(ePoint(20, 190));
250 skin
->resize(eSize(205, 40));
252 skin
->setHelpText(_("press ok to open skin selector"));
253 CONNECT( skin
->selected
, eZapOsdSetup::skinPressed
);
255 pluginoffs
=new eButton(this);
256 pluginoffs
->setText(_("TuxText position"));
257 pluginoffs
->setHelpText(_("here you can center the Tuxtxt (builtin videotext)"));
258 pluginoffs
->setShortcut("yellow");
259 pluginoffs
->setShortcutPixmap("yellow");
260 pluginoffs
->move(ePoint(235, 190));
261 pluginoffs
->resize(eSize(205, 40));
262 pluginoffs
->loadDeco();
263 CONNECT( pluginoffs
->selected
, eZapOsdSetup::pluginPositionPressed
);
265 ok
=new eButton(this);
266 ok
->setText(_("save"));
267 ok
->setShortcut("green");
268 ok
->setShortcutPixmap("green");
269 ok
->move(ePoint(20, 245));
270 ok
->resize(eSize(205, 40));
271 ok
->setHelpText(_("save changes and return"));
274 CONNECT(ok
->selected
, eZapOsdSetup::okPressed
);
276 expert
=new eButton(this);
277 expert
->setText(_("additional settings"));
278 expert
->setShortcut("red");
279 expert
->setShortcutPixmap("red");
280 expert
->move(ePoint(235, 245));
281 expert
->resize(eSize(205, 40));
283 expert
->setHelpText(_("open additional settings"));
284 CONNECT( expert
->selected
, eZapOsdSetup::expertPressed
);
286 statusbar
=new eStatusBar(this);
287 statusbar
->move( ePoint(0, clientrect
.height()-50 ) );
288 statusbar
->resize( eSize( clientrect
.width(), 50) );
289 statusbar
->loadDeco();
293 eZapOsdSetup::~eZapOsdSetup()
297 void eZapOsdSetup::alphaChanged( int i
)
300 gFBDC::getInstance()->setAlpha(alpha
);
303 void eZapOsdSetup::brightnessChanged( int i
)
306 gFBDC::getInstance()->setBrightness(brightness
);
309 void eZapOsdSetup::gammaChanged( int i
)
312 gFBDC::getInstance()->setGamma(gamma
);
315 void eZapOsdSetup::pluginPositionPressed()
317 eWidget
*oldfocus
=focus
;
319 PluginOffsetScreen scr
;
327 void eZapOsdSetup::okPressed()
329 eConfig::getInstance()->setKey("/ezap/osd/simpleMainMenu", simpleMainMenu
->isChecked());
330 gFBDC::getInstance()->saveSettings();
331 eConfig::getInstance()->flush();
335 void eZapOsdSetup::skinPressed()
337 eWidget
*oldfocus
=focus
;
342 setup
.setLCD(LCDTitle
, LCDElement
);
349 eMessageBox
msg(_("You have to restart enigma to apply the new skin\nRestart now?"), _("Skin changed"), eMessageBox::btYes
|eMessageBox::btNo
|eMessageBox::iconQuestion
, eMessageBox::btYes
);
351 int ret
= msg
.exec();
353 if ( ret
== eMessageBox::btYes
)
355 if ( eZapMain::getInstance()->checkRecordState() )
356 eZap::getInstance()->quit(2);
364 void eZapOsdSetup::expertPressed()
367 eOSDExpertSetup setup
;
369 setup
.setLCD(LCDTitle
, LCDElement
);
374 eConfig::getInstance()->flush();
378 int eZapOsdSetup::eventHandler( const eWidgetEvent
&e
)
382 case eWidgetEvent::execDone
:
384 gFBDC::getInstance()->reloadSettings();
388 return eWindow::eventHandler( e
);