summaryrefslogtreecommitdiff
path: root/core/settings/light-and-power/light.cpp
Unidiff
Diffstat (limited to 'core/settings/light-and-power/light.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/settings/light-and-power/light.cpp64
1 files changed, 49 insertions, 15 deletions
diff --git a/core/settings/light-and-power/light.cpp b/core/settings/light-and-power/light.cpp
index 6115178..d6d09a1 100644
--- a/core/settings/light-and-power/light.cpp
+++ b/core/settings/light-and-power/light.cpp
@@ -7,174 +7,202 @@
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU General Public 8:`=1 )Y*s>-.--   : the terms of the GNU General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This file is distributed in the hope that 13    .i_,=:_.      -<s. This file is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
18..}^=.=       =       ; Public License for more details. 18..}^=.=       =       ; Public License for more details.
19++=   -.     .`     .: 19++=   -.     .`     .:
20 :     =  ...= . :.=- You should have received a copy of the GNU 20 :     =  ...= . :.=- You should have received a copy of the GNU
21 -.   .:....=;==+<; General Public License along with this file; 21 -.   .:....=;==+<; General Public License along with this file;
22  -_. . .   )=.  = see the file COPYING. If not, write to the 22  -_. . .   )=.  = see the file COPYING. If not, write to the
23    --        :-=` Free Software Foundation, Inc., 23    --        :-=` Free Software Foundation, Inc.,
24 59 Temple Place - Suite 330, 24 59 Temple Place - Suite 330,
25 Boston, MA 02111-1307, USA. 25 Boston, MA 02111-1307, USA.
26 26
27*/ 27*/
28 28
29#include "light.h" 29#include "light.h"
30 30
31#include <qpe/config.h> 31#include <qpe/config.h>
32#include <qpe/power.h> 32#include <qpe/power.h>
33#if defined(Q_WS_QWS) && !defined(QT_NO_COP) 33#if defined(Q_WS_QWS) && !defined(QT_NO_COP)
34#include <qpe/qcopenvelope_qws.h> 34#include <qpe/qcopenvelope_qws.h>
35#endif 35#endif
36 36
37#include <qlabel.h>
37#include <qcheckbox.h> 38#include <qcheckbox.h>
38#include <qtabwidget.h> 39#include <qtabwidget.h>
39#include <qslider.h> 40#include <qslider.h>
40#include <qspinbox.h> 41#include <qspinbox.h>
41#include <qpushbutton.h> 42#include <qpushbutton.h>
42#include <qgroupbox.h> 43#include <qgroupbox.h>
43#include <qcombobox.h> 44#include <qcombobox.h>
44 45
45#include <opie/odevice.h> 46#include <opie/odevice.h>
46 47
47#include "sensor.h" 48#include "sensor.h"
48 49
49using namespace Opie; 50using namespace Opie;
50 51
51LightSettings::LightSettings( QWidget* parent, const char* name, WFlags ) 52LightSettings::LightSettings( QWidget* parent, const char* name, WFlags )
52 : LightSettingsBase( parent, name, false, WStyle_ContextHelp ) 53 : LightSettingsBase( parent, name, false, WStyle_ContextHelp )
53{ 54{
54 m_bres = ODevice::inst ( )-> displayBrightnessResolution ( ); 55 m_bres = ODevice::inst ( )-> displayBrightnessResolution ( );
55 m_cres = ODevice::inst ( )-> displayContrastResolution ( ); 56 m_cres = ODevice::inst ( )-> displayContrastResolution ( );
56 57
58 // check whether to show the light sensor stuff
59
57 if ( !ODevice::inst ( )-> hasLightSensor ( )) { 60 if ( !ODevice::inst ( )-> hasLightSensor ( )) {
58 auto_brightness-> hide ( ); 61 auto_brightness-> hide ( );
59 CalibrateLightSensor-> hide ( ); 62 CalibrateLightSensor-> hide ( );
60 auto_brightness_ac-> hide ( ); 63 auto_brightness_ac-> hide ( );
61 CalibrateLightSensor_ac-> hide ( ); 64 CalibrateLightSensor_ac-> hide ( );
62 } 65 }
66
67 // check whether to show the contrast stuff
68
63 if (m_cres) { 69 if (m_cres) {
64 GroupLight->setTitle(tr("Backlight && Contrast")); 70 GroupLight->setTitle(tr("Backlight && Contrast"));
65 GroupLight_ac->setTitle(GroupLight->title()); 71 GroupLight_ac->setTitle(GroupLight->title());
66 } else { 72 } else {
67 contrast->hide(); 73 contrast->hide();
68 contrast_ac->hide(); 74 contrast_ac->hide();
69 } 75 }
70 76
77 // check whether to show the cpu frequency stuff
78
71 QStrList freq = ODevice::inst()->allowedCpuFrequencies(); 79 QStrList freq = ODevice::inst()->allowedCpuFrequencies();
72 if ( freq.count() ) { 80 if ( freq.count() ) {
73 frequency->insertStrList( freq ); 81 frequency->insertStrList( freq );
74 frequency_ac->insertStrList( freq ); 82 frequency_ac->insertStrList( freq );
75 } else { 83 } else {
84 frequencyLabel->hide();
76 frequency->hide(); 85 frequency->hide();
86 frequencyLabel_ac->hide();
77 frequency_ac->hide(); 87 frequency_ac->hide();
78 } 88 }
79 89
90 // check whether to show the hinge action stuff
91
92 if ( !ODevice::inst()->hasHingeSensor() ) {
93 closeHingeLabel->hide();
94 closeHingeAction->hide();
95 closeHingeLabel_ac->hide();
96 closeHingeAction_ac->hide();
97 }
98
80 Config config ( "apm" ); 99 Config config ( "apm" );
81 config. setGroup ( "Battery" ); 100 config. setGroup ( "Battery" );
82 101
83 // battery spinboxes 102 // battery spinboxes
84 interval_dim-> setValue ( config. readNumEntry ( "Dim", 30 )); 103 interval_dim-> setValue ( config. readNumEntry ( "Dim", 30 ));
85 interval_lightoff-> setValue ( config. readNumEntry ( "LightOff", 20 )); 104 interval_lightoff-> setValue ( config. readNumEntry ( "LightOff", 20 ));
86 interval_suspend-> setValue ( config. readNumEntry ( "Suspend", 60 )); 105 interval_suspend-> setValue ( config. readNumEntry ( "Suspend", 60 ));
87 106
88 // battery check and slider 107 // battery check and slider
89 LcdOffOnly->setChecked ( config. readBoolEntry ( "LcdOffOnly", false )); 108 LcdOffOnly->setChecked ( config. readBoolEntry ( "LcdOffOnly", false ));
90 109
91 // CPU frequency 110 // CPU frequency
92 frequency->setCurrentItem( config.readNumEntry("Freq", 0) ); 111 frequency->setCurrentItem( config.readNumEntry("Freq", 0) );
93 112
94 int bright = config. readNumEntry ( "Brightness", 127 ); 113 // hinge action
114 closeHingeAction->setCurrentItem( config.readNumEntry("CloseHingeAction", 0) );
115
116 int bright = config. readNumEntry ( "Brightness", 127 );
95 int contr = m_oldcontrast = config. readNumEntry ( "Contrast", 127 ); 117 int contr = m_oldcontrast = config. readNumEntry ( "Contrast", 127 );
96 brightness-> setTickInterval ( QMAX( 16, 256 / m_bres )); 118 brightness-> setTickInterval ( QMAX( 16, 256 / m_bres ));
97 brightness-> setLineStep ( QMAX( 1, 256 / m_bres )); 119 brightness-> setLineStep ( QMAX( 1, 256 / m_bres ));
98 brightness-> setPageStep ( QMAX( 1, 256 / m_bres )); 120 brightness-> setPageStep ( QMAX( 1, 256 / m_bres ));
99 brightness-> setValue ( bright ); 121 brightness-> setValue ( bright );
100 122
101 if (m_cres) { 123 if (m_cres) {
102 contrast-> setTickInterval ( QMAX( 16, 256 / m_cres )); 124 contrast-> setTickInterval ( QMAX( 16, 256 / m_cres ));
103 contrast-> setLineStep ( QMAX( 1, 256 / m_cres )); 125 contrast-> setLineStep ( QMAX( 1, 256 / m_cres ));
104 contrast-> setPageStep ( QMAX( 1, 256 / m_cres )); 126 contrast-> setPageStep ( QMAX( 1, 256 / m_cres ));
105 contrast-> setValue ( contr ); 127 contrast-> setValue ( contr );
106 } 128 }
107 129
108 // light sensor 130 // light sensor
109 auto_brightness-> setChecked ( config. readBoolEntry ( "LightSensor", false )); 131 auto_brightness-> setChecked ( config. readBoolEntry ( "LightSensor", false ));
110 m_sensordata = config. readListEntry ( "LightSensorData", ';' ); 132 m_sensordata = config. readListEntry ( "LightSensorData", ';' );
111 133
112 config. setGroup ( "AC" ); 134 config. setGroup ( "AC" );
113 135
114 // ac spinboxes 136 // ac spinboxes
115 interval_dim_ac-> setValue ( config. readNumEntry ( "Dim", 60 )); 137 interval_dim_ac-> setValue ( config. readNumEntry ( "Dim", 60 ));
116 interval_lightoff_ac-> setValue ( config. readNumEntry ( "LightOff", 120 )); 138 interval_lightoff_ac-> setValue ( config. readNumEntry ( "LightOff", 120 ));
117 interval_suspend_ac-> setValue ( config. readNumEntry ( "Suspend", 0 )); 139 interval_suspend_ac-> setValue ( config. readNumEntry ( "Suspend", 0 ));
118 140
119 // ac check and slider 141 // ac check and slider
120 LcdOffOnly_ac-> setChecked ( config. readBoolEntry ( "LcdOffOnly", false )); 142 LcdOffOnly_ac-> setChecked ( config. readBoolEntry ( "LcdOffOnly", false ));
121 143
122 // CPU frequency 144 // CPU frequency
123 frequency_ac->setCurrentItem( config.readNumEntry("Freq", 0) ); 145 frequency_ac->setCurrentItem( config.readNumEntry("Freq", 0) );
124 146
147 // hinge action
148 closeHingeAction_ac->setCurrentItem( config.readNumEntry("CloseHingeAction", 0) );
149
125 bright = config. readNumEntry ( "Brightness", 255 ); 150 bright = config. readNumEntry ( "Brightness", 255 );
126 brightness_ac-> setTickInterval ( QMAX( 16, 256 / m_bres )); 151 brightness_ac-> setTickInterval ( QMAX( 16, 256 / m_bres ));
127 brightness_ac-> setLineStep ( QMAX( 1, 256 / m_bres )); 152 brightness_ac-> setLineStep ( QMAX( 1, 256 / m_bres ));
128 brightness_ac-> setPageStep ( QMAX( 1, 256 / m_bres )); 153 brightness_ac-> setPageStep ( QMAX( 1, 256 / m_bres ));
129 brightness_ac-> setValue ( bright ); 154 brightness_ac-> setValue ( bright );
130 155
131 if (m_cres) { 156 if (m_cres) {
132 contr = config. readNumEntry ( "Contrast", 127); 157 contr = config. readNumEntry ( "Contrast", 127);
133 contrast_ac-> setTickInterval ( QMAX( 16, 256 / m_cres )); 158 contrast_ac-> setTickInterval ( QMAX( 16, 256 / m_cres ));
134 contrast_ac-> setLineStep ( QMAX( 1, 256 / m_cres )); 159 contrast_ac-> setLineStep ( QMAX( 1, 256 / m_cres ));
135 contrast_ac-> setPageStep ( QMAX( 1, 256 / m_cres )); 160 contrast_ac-> setPageStep ( QMAX( 1, 256 / m_cres ));
136 contrast_ac-> setValue ( contr ); 161 contrast_ac-> setValue ( contr );
137 } 162 }
138 163
139 // light sensor 164 // light sensor
140 auto_brightness_ac-> setChecked ( config. readBoolEntry ( "LightSensor", false )); 165 auto_brightness_ac-> setChecked ( config. readBoolEntry ( "LightSensor", false ));
141 m_sensordata_ac = config. readListEntry ( "LightSensorData", ';' ); 166 m_sensordata_ac = config. readListEntry ( "LightSensorData", ';' );
142 167
143 // advanced settings 168 // warnings
144 config. setGroup ( "Warnings" ); 169 config. setGroup ( "Warnings" );
145 warnintervalBox-> setValue ( config. readNumEntry ( "checkinterval", 10000 ) / 1000 ); 170 warnintervalBox-> setValue ( config. readNumEntry ( "checkinterval", 10000 ) / 1000 );
146 lowSpinBox-> setValue ( config. readNumEntry ( "powerverylow", 10 ) ); 171 lowSpinBox-> setValue ( config. readNumEntry ( "powerverylow", 10 ) );
147 criticalSpinBox-> setValue ( config. readNumEntry ( "powercritical", 5 ) ); 172 criticalSpinBox-> setValue ( config. readNumEntry ( "powercritical", 5 ) );
148 173
149 m_resettimer = new QTimer ( this ); 174 m_resettimer = new QTimer ( this );
150 connect ( m_resettimer, SIGNAL( timeout ( )), this, SLOT( resetBacklight ( ))); 175 connect ( m_resettimer, SIGNAL( timeout ( )), this, SLOT( resetBacklight ( )));
151 176
152 if ( PowerStatusManager::readStatus ( ). acStatus ( ) != PowerStatus::Online ) { 177 if ( PowerStatusManager::readStatus ( ). acStatus ( ) != PowerStatus::Online ) {
153 tabs-> setCurrentPage ( 0 ); 178 tabs-> setCurrentPage ( 0 );
154 } 179 }
155 else { 180 else {
156 tabs-> setCurrentPage ( 1 ); 181 tabs-> setCurrentPage ( 1 );
157 } 182 }
158 183
159 connect ( brightness, SIGNAL( valueChanged ( int )), this, SLOT( setBacklight ( int ))); 184 connect ( brightness, SIGNAL( valueChanged ( int )), this, SLOT( setBacklight ( int )));
160 connect ( brightness_ac, SIGNAL( valueChanged ( int )), this, SLOT( setBacklight ( int ))); 185 connect ( brightness_ac, SIGNAL( valueChanged ( int )), this, SLOT( setBacklight ( int )));
161 if (m_cres) { 186 if (m_cres) {
162 connect ( contrast, SIGNAL( valueChanged ( int )), this, SLOT( setContrast ( int ))); 187 connect ( contrast, SIGNAL( valueChanged ( int )), this, SLOT( setContrast ( int )));
163 connect ( contrast_ac, SIGNAL( valueChanged ( int )), this, SLOT( setContrast ( int ))); 188 connect ( contrast_ac, SIGNAL( valueChanged ( int )), this, SLOT( setContrast ( int )));
164 } 189 }
165 connect( frequency, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) ); 190 connect( frequency, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) );
191 connect( frequency_ac, SIGNAL( activated(int) ), this, SLOT( setFrequency(int) ) );
192 connect( closeHingeAction, SIGNAL( activated(int) ), this, SLOT( setCloseHingeAction(int) ) );
193 connect( closeHingeAction_ac, SIGNAL( activated(int) ), this, SLOT( setCloseHingeAction(int) ) );
166} 194}
167 195
168LightSettings::~LightSettings ( ) 196LightSettings::~LightSettings ( )
169{ 197{
170} 198}
171 199
172void LightSettings::calibrateSensor ( ) 200void LightSettings::calibrateSensor ( )
173{ 201{
174 Sensor *s = new Sensor ( m_sensordata, this ); 202 Sensor *s = new Sensor ( m_sensordata, this );
175 connect ( s, SIGNAL( viewBacklight ( int )), this, SLOT( setBacklight ( int ))); 203 connect ( s, SIGNAL( viewBacklight ( int )), this, SLOT( setBacklight ( int )));
176 s-> showMaximized ( ); 204 s-> showMaximized ( );
177 s-> exec ( ); 205 s-> exec ( );
178 delete s; 206 delete s;
179} 207}
180 208
@@ -182,77 +210,83 @@ void LightSettings::calibrateSensorAC ( )
182{ 210{
183 Sensor *s = new Sensor ( m_sensordata_ac, this ); 211 Sensor *s = new Sensor ( m_sensordata_ac, this );
184 connect ( s, SIGNAL( viewBacklight ( int )), this, SLOT( setBacklight ( int ))); 212 connect ( s, SIGNAL( viewBacklight ( int )), this, SLOT( setBacklight ( int )));
185 s-> showMaximized ( ); 213 s-> showMaximized ( );
186 s-> exec ( ); 214 s-> exec ( );
187 delete s; 215 delete s;
188} 216}
189 217
190void LightSettings::setBacklight ( int bright ) 218void LightSettings::setBacklight ( int bright )
191{ 219{
192 QCopEnvelope e ( "QPE/System", "setBacklight(int)" ); 220 QCopEnvelope e ( "QPE/System", "setBacklight(int)" );
193 e << bright; 221 e << bright;
194 222
195 if ( bright != -1 ) { 223 if ( bright != -1 ) {
196 m_resettimer-> stop ( ); 224 m_resettimer-> stop ( );
197 m_resettimer-> start ( 4000, true ); 225 m_resettimer-> start ( 4000, true );
198 } 226 }
199} 227}
200 228
201void LightSettings::setContrast ( int contr ) 229void LightSettings::setContrast ( int contr )
202{ 230{
203 if (contr == -1) contr = m_oldcontrast; 231 if (contr == -1) contr = m_oldcontrast;
204
205 ODevice::inst ( )-> setDisplayContrast(contr); 232 ODevice::inst ( )-> setDisplayContrast(contr);
206} 233}
207 234
208void LightSettings::setFrequency ( int index ) 235void LightSettings::setFrequency ( int index )
209{ 236{
210qWarning("LightSettings::setFrequency(%d)", index); 237 qWarning("LightSettings::setFrequency(%d)", index);
211 ODevice::inst ( )-> setCurrentCpuFrequency(index); 238 ODevice::inst ( )-> setCurrentCpuFrequency(index);
212} 239}
213 240
214void LightSettings::resetBacklight ( ) 241void LightSettings::resetBacklight ( )
215{ 242{
216 setBacklight ( -1 ); 243 setBacklight ( -1 );
217 setContrast ( -1 ); 244 setContrast ( -1 );
218} 245}
219 246
247void LightSettings::setCloseHingeAction ( int index )
248{
249 qWarning("LightSettings::setCloseHingeStatus(%d)", index);
250}
251
220void LightSettings::accept ( ) 252void LightSettings::accept ( )
221{ 253{
222 Config config ( "apm" ); 254 Config config ( "apm" );
223 255
224 // bat 256 // bat
225 config. setGroup ( "Battery" ); 257 config. setGroup ( "Battery" );
226 config. writeEntry ( "LcdOffOnly", LcdOffOnly-> isChecked ( )); 258 config. writeEntry ( "LcdOffOnly", LcdOffOnly-> isChecked ( ));
227 config. writeEntry ( "Dim", interval_dim-> value ( )); 259 config. writeEntry ( "Dim", interval_dim-> value ( ));
228 config. writeEntry ( "LightOff", interval_lightoff-> value ( )); 260 config. writeEntry ( "LightOff", interval_lightoff-> value ( ));
229 config. writeEntry ( "Suspend", interval_suspend-> value ( )); 261 config. writeEntry ( "Suspend", interval_suspend-> value ( ));
230 config. writeEntry ( "Brightness", brightness-> value () ); 262 config. writeEntry ( "Brightness", brightness-> value () );
231 if (m_cres) 263 if (m_cres)
232 config. writeEntry ( "Contrast", contrast-> value () ); 264 config. writeEntry ( "Contrast", contrast-> value () );
233 config. writeEntry ( "Freq", frequency->currentItem() ); 265 config. writeEntry ( "Freq", frequency->currentItem() );
266 config. writeEntry ( "CloseHingeAction", closeHingeAction->currentItem() );
234 267
235 // ac 268 // ac
236 config. setGroup ( "AC" ); 269 config. setGroup ( "AC" );
237 config. writeEntry ( "LcdOffOnly", LcdOffOnly_ac-> isChecked ( )); 270 config. writeEntry ( "LcdOffOnly", LcdOffOnly_ac-> isChecked ( ));
238 config. writeEntry ( "Dim", interval_dim_ac-> value ( )); 271 config. writeEntry ( "Dim", interval_dim_ac-> value ( ));
239 config. writeEntry ( "LightOff", interval_lightoff_ac-> value ( )); 272 config. writeEntry ( "LightOff", interval_lightoff_ac-> value ( ));
240 config. writeEntry ( "Suspend", interval_suspend_ac-> value ( )); 273 config. writeEntry ( "Suspend", interval_suspend_ac-> value ( ));
241 config. writeEntry ( "Brightness", brightness_ac-> value () ); 274 config. writeEntry ( "Brightness", brightness_ac-> value () );
242 if (m_cres) 275 if (m_cres)
243 config. writeEntry ( "Contrast", contrast_ac-> value () ); 276 config. writeEntry ( "Contrast", contrast_ac-> value () );
244 config. writeEntry ( "Freq", frequency_ac->currentItem() ); 277 config. writeEntry ( "Freq", frequency_ac->currentItem() );
278 config. writeEntry ( "CloseHingeAction", closeHingeAction_ac->currentItem() );
245 279
246 // only make light sensor stuff appear if the unit has a sensor 280 // only make light sensor stuff appear if the unit has a sensor
247 if ( ODevice::inst ( )-> hasLightSensor ( )) { 281 if ( ODevice::inst ( )-> hasLightSensor ( )) {
248 config. setGroup ( "Battery" ); 282 config. setGroup ( "Battery" );
249 config. writeEntry ( "LightSensor", auto_brightness->isChecked() ); 283 config. writeEntry ( "LightSensor", auto_brightness->isChecked() );
250 config. writeEntry ( "LightSensorData", m_sensordata, ';' ); 284 config. writeEntry ( "LightSensorData", m_sensordata, ';' );
251 config. setGroup ( "AC" ); 285 config. setGroup ( "AC" );
252 config. writeEntry ( "LightSensor", auto_brightness_ac->isChecked() ); 286 config. writeEntry ( "LightSensor", auto_brightness_ac->isChecked() );
253 config. writeEntry ( "LightSensorData", m_sensordata_ac, ';' ); 287 config. writeEntry ( "LightSensorData", m_sensordata_ac, ';' );
254 } 288 }
255 289
256 // advanced 290 // advanced
257 config. setGroup ( "Warnings" ); 291 config. setGroup ( "Warnings" );
258 config. writeEntry ( "check_interval", warnintervalBox-> value ( ) * 1000 ); 292 config. writeEntry ( "check_interval", warnintervalBox-> value ( ) * 1000 );
@@ -266,16 +300,16 @@ void LightSettings::accept ( )
266 } 300 }
267 { 301 {
268 QCopEnvelope e ( "QPE/System", "setScreenSaverInterval(int)" ); 302 QCopEnvelope e ( "QPE/System", "setScreenSaverInterval(int)" );
269 e << -1; 303 e << -1;
270 } 304 }
271 LightSettingsBase::accept ( ); 305 LightSettingsBase::accept ( );
272} 306}
273 307
274void LightSettings::done ( int r ) 308void LightSettings::done ( int r )
275{ 309{
276 m_resettimer-> stop ( ); 310 m_resettimer-> stop ( );
277 resetBacklight ( ); 311 resetBacklight ( );
278 312
279 LightSettingsBase::done ( r ); 313 LightSettingsBase::done ( r );
280 close ( ); 314 close ( );
281} 315}