summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp161
-rw-r--r--core/launcher/desktop.h15
2 files changed, 129 insertions, 47 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index d2bd8ae..4926b97 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -167,5 +167,10 @@ public:
167 167
168 m_disable_suspend_ac = 100;
169 m_enable_dim_ac = false;
170 m_enable_lightoff_ac = false;
171 m_enable_onlylcdoff_ac = false;
172
168 m_lcd_status = true; 173 m_lcd_status = true;
169 174
170 m_backlight_normal = -1; 175 m_backlight_normal = -1;
171 m_backlight_current = -1; 176 m_backlight_current = -1;
@@ -188,34 +193,50 @@ public:
188 { 193 {
189 switch ( level ) { 194 bool onAC = ( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online );
195
196 switch ( level ) {
190 case 0: 197 case 0:
191 if ( m_disable_suspend > 0 && m_enable_dim ) { 198
192 if ( m_backlight_current > 1 ) 199 if ( m_disable_suspend_ac > 0 && m_enable_dim_ac && onAC ) {
193 setBacklightInternal ( 1 ); // lowest non-off 200 if ( m_backlight_current > 1 )
194 } 201 setBacklight( 1 ); // lowest non-off
195 return true; 202 } else if ( m_disable_suspend > 0 && m_enable_dim ) {
196 break; 203 if ( m_backlight_current > 1 )
204 setBacklightInternal( 1 ); // lowest non-off
205 }
206 return true;
207 break;
197 case 1: 208 case 1:
198 if ( m_disable_suspend > 1 && m_enable_lightoff ) { 209
199 setBacklightInternal ( 0 ); // off 210 if ( m_disable_suspend_ac > 1 && m_enable_lightoff_ac && onAC ) {
200 } 211 setBacklightInternal( 0 ); // off
201 return true; 212 } else if ( m_disable_suspend > 1 && m_enable_lightoff ) {
202 break; 213 setBacklightInternal( 0 ); // off
203 case 2: 214 }
204 if ( m_enable_onlylcdoff ) {
205 ODevice::inst ( )-> setDisplayStatus ( false );
206 m_lcd_status = false;
207 return true; 215 return true;
208 } 216 break;
209 else // We're going to suspend the whole machine 217 case 2:
210 { 218 if ( m_enable_onlylcdoff_ac && onAC ) {
211 if ( ( m_disable_suspend > 2 ) && 219 ODevice::inst ( ) -> setDisplayStatus ( false );
212 ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) && 220 m_lcd_status = false;
213 ( !Network::networkOnline ( ) ) ) { 221 return true;
214 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
215 return true;
216 } 222 }
217 } 223 else if ( m_enable_onlylcdoff ) {
218 break; 224 ODevice::inst ( ) -> setDisplayStatus ( false );
219 } 225 m_lcd_status = false;
220 return false; 226 return true;
227 }
228 else // We're going to suspend the whole machine
229 {
230 if ( ( m_disable_suspend_ac > 2 && onAC ) && ( !Network::networkOnline ( ) ) ) {
231 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
232 return true;
233 }
234 if ( ( m_disable_suspend > 2 ) && ( !Network::networkOnline ( ) ) ) {
235 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
236 return true;
237 }
238 }
239 break;
240 }
241 return false;
221 } 242 }
@@ -262,2 +283,28 @@ public:
262 283
284 void setIntervalsAC( int i1, int i2, int i3 )
285 {
286 Config config( "qpe" );
287 config.setGroup( "Screensaver" );
288
289 int v[ 4 ];
290 i1 = ssi( i1, config, "DimAC", "Interval_DimAC", 30 );
291 i2 = ssi( i2, config, "LightOffAC", "Interval_LightOffAC", 20 );
292 i3 = ssi( i3, config, "", "IntervalAC", 60 );
293
294 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3);
295
296 v [ 0 ] = QMAX( 1000 * i1, 100 );
297 v [ 1 ] = QMAX( 1000 * i2, 100 );
298 v [ 2 ] = QMAX( 1000 * i3, 100 );
299 v [ 3 ] = 0;
300 m_enable_dim_ac = ( ( i1 != 0 ) ? config.readNumEntry ( "DimAC", 1 ) : false );
301 m_enable_lightoff_ac = ( ( i2 != 0 ) ? config.readNumEntry ( "LightOffAC", 1 ) : false );
302 m_enable_onlylcdoff_ac = config.readNumEntry ( "LcdOffOnlyAC", 0 );
303
304 if ( !i1 && !i2 && !i3 )
305 QWSServer::setScreenSaverInterval( 0 );
306 else
307 QWSServer::setScreenSaverIntervals( v );
308 }
309
263 void setInterval ( int interval ) 310 void setInterval ( int interval )
@@ -273,3 +320,3 @@ public:
273 } 320 }
274 321
275 void setBacklight ( int bright ) 322 void setBacklight ( int bright )
@@ -301,3 +348,3 @@ private:
301 bright = m_backlight_normal; 348 bright = m_backlight_normal;
302 349
303 if ( bright != m_backlight_current ) { 350 if ( bright != m_backlight_current ) {
@@ -323,2 +370,7 @@ private:
323 370
371 int m_disable_suspend_ac;
372 bool m_enable_dim_ac;
373 bool m_enable_lightoff_ac;
374 bool m_enable_onlylcdoff_ac;
375
324 bool m_lcd_status; 376 bool m_lcd_status;
@@ -337,3 +389,3 @@ void DesktopApplication::switchLCD ( bool on )
337 if ( on ) { 389 if ( on ) {
338 dapp-> m_screensaver-> setDisplayState ( true ); 390 dapp-> m_screensaver-> setDisplayState ( true );
339 dapp-> m_screensaver-> setBacklight ( -3 ); 391 dapp-> m_screensaver-> setBacklight ( -3 );
@@ -352,5 +404,10 @@ DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
352 404
353 QTimer * t = new QTimer( this ); 405 //FIXME, need also a method for setting different timer ( changed runtime )
354 connect( t, SIGNAL( timeout() ), this, SLOT( psTimeout() ) ); 406 m_timer = new QTimer( this );
355 t->start( 10000 ); 407 connect( m_timer, SIGNAL( timeout() ), this, SLOT( psTimeout() ) );
408 Config cfg( "qpe" );
409 cfg.setGroup( "APM" );
410 m_timer->start( cfg.readNumEntry( "check_interval", 10000 ) );
411 m_powerVeryLow = cfg.readNumEntry( "power_verylow", 10 );
412 m_powerCritical = cfg.readNumEntry( "power_critical", 5 );
356 ps = new PowerStatus; 413 ps = new PowerStatus;
@@ -409,2 +466,7 @@ void DesktopApplication::systemMessage( const QCString & msg, const QByteArray &
409 } 466 }
467 else if ( msg == "setScreenSaverIntervalsAC(int,int,int)" ) {
468 int t1, t2, t3;
469 stream >> t1 >> t2 >> t3;
470 m_screensaver-> setIntervalsAC( t1, t2, t3 );
471 }
410 else if ( msg == "setBacklight(int)" ) { 472 else if ( msg == "setBacklight(int)" ) {
@@ -419,2 +481,5 @@ void DesktopApplication::systemMessage( const QCString & msg, const QByteArray &
419 } 481 }
482 else if ( msg == "reloadPowerWarnSettings()" ) {
483 reloadPowerWarnSettings();
484 }
420 else if ( msg == "setDisplayState(int)" ) { 485 else if ( msg == "setDisplayState(int)" ) {
@@ -429,2 +494,12 @@ void DesktopApplication::systemMessage( const QCString & msg, const QByteArray &
429 494
495void DesktopApplication::reloadPowerWarnSettings() {
496 Config cfg( "apm" );
497 cfg.setGroup( "Warnings" );
498
499 m_timer->changeInterval( cfg.readNumEntry( "checkinterval", 10000 ) );
500 m_powerVeryLow = cfg.readNumEntry( "powerverylow", 10 );
501 m_powerCritical = cfg.readNumEntry( "powervcritical", 5 );
502}
503
504
430enum MemState { Unknown, VeryLow, Low, Normal } memstate = Unknown; 505enum MemState { Unknown, VeryLow, Low, Normal } memstate = Unknown;
@@ -481,3 +556,3 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
481 } 556 }
482// menu key now opens application menu/toolbar 557
483// if ( ke->simpleData.keycode == Key_F11 ) { 558// if ( ke->simpleData.keycode == Key_F11 ) {
@@ -486,3 +561,3 @@ bool DesktopApplication::qwsEventFilter( QWSEvent *e )
486// } 561// }
487 562
488 if ( ke->simpleData.keycode == Key_F12 ) { 563 if ( ke->simpleData.keycode == Key_F12 ) {
@@ -565,9 +640,11 @@ void DesktopApplication::psTimeout()
565 640
566 if ( ( ps->batteryStatus() == PowerStatus::VeryLow ) ) { 641 // if ( ( ps->batteryStatus() == PowerStatus::VeryLow ) ) {
567 pa->alert( tr( "Battery is running very low." ), 6 ); 642 if ( ( ps->batteryPercentRemaining() == m_powerVeryLow ) ) {
643 pa->alert( tr( "Battery is running very low." ), 6 );
568 } 644 }
569 645
570 if ( ps->batteryStatus() == PowerStatus::Critical ) { 646 // if ( ps->batteryStatus() == PowerStatus::Critical ) {
571 pa->alert( tr( "Battery level is critical!\n" 647 if ( ps->batteryPercentRemaining() == m_powerCritical ) {
572 "Keep power off until power restored!" ), 1 ); 648 pa->alert( tr( "Battery level is critical!\n"
649 "Keep power off until power restored!" ), 1 );
573 } 650 }
diff --git a/core/launcher/desktop.h b/core/launcher/desktop.h
index 04c2f61..15d8ef7 100644
--- a/core/launcher/desktop.h
+++ b/core/launcher/desktop.h
@@ -82,7 +82,12 @@ protected slots:
82private: 82private:
83 DesktopPowerAlerter *pa; 83 void reloadPowerWarnSettings();
84 PowerStatus *ps; 84 DesktopPowerAlerter *pa;
85 QTimer *cardSendTimer; 85 PowerStatus *ps;
86 QCopChannel *channel; 86 QTimer *cardSendTimer;
87 QPEScreenSaver *m_screensaver; 87 QCopChannel *channel;
88 QPEScreenSaver *m_screensaver;
89 QTimer * m_timer;
90 int m_powerVeryLow;
91 int m_powerCritical;
92
88}; 93};