summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 33bea36..c4c6050 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -1,630 +1,636 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#include "desktop.h" 21#include "desktop.h"
22#include "info.h" 22#include "info.h"
23#include "launcher.h" 23#include "launcher.h"
24//#include "mrulist.h"
25#include "qcopbridge.h" 24#include "qcopbridge.h"
26#include "shutdownimpl.h" 25#include "shutdownimpl.h"
27#include "startmenu.h" 26#include "startmenu.h"
28#include "taskbar.h" 27#include "taskbar.h"
29#include "transferserver.h" 28#include "transferserver.h"
30#include "irserver.h" 29#include "irserver.h"
31#include "packageslave.h" 30#include "packageslave.h"
32 31
33#include <qpe/applnk.h> 32#include <qpe/applnk.h>
34#include <qpe/mimetype.h> 33#include <qpe/mimetype.h>
35#include <qpe/password.h> 34#include <qpe/password.h>
36#include <qpe/config.h> 35#include <qpe/config.h>
37#include <qpe/power.h> 36#include <qpe/power.h>
38#include <qpe/timeconversion.h> 37#include <qpe/timeconversion.h>
39#include <qpe/qcopenvelope_qws.h> 38#include <qpe/qcopenvelope_qws.h>
40#include <qpe/network.h> 39#include <qpe/network.h>
41#include <qpe/global.h> 40#include <qpe/global.h>
42 41
43#if defined( QT_QWS_CUSTOM ) || defined( QT_QWS_IPAQ ) 42#if defined( QT_QWS_CUSTOM ) || defined( QT_QWS_IPAQ )
44#include <qpe/custom.h> 43#include <qpe/custom.h>
45#endif 44#endif
46 45
47#include <opie/odevice.h> 46#include <opie/odevice.h>
48 47
49#include <qgfx_qws.h> 48#include <qgfx_qws.h>
50#include <qmainwindow.h> 49#include <qmainwindow.h>
51#include <qmessagebox.h> 50#include <qmessagebox.h>
52#include <qtimer.h> 51#include <qtimer.h>
53#include <qwindowsystem_qws.h> 52#include <qwindowsystem_qws.h>
54 53
55#include <qvaluelist.h> 54#include <qvaluelist.h>
56 55
57#include <stdlib.h> 56#include <stdlib.h>
58#include <unistd.h> 57#include <unistd.h>
59#include <fcntl.h> 58#include <fcntl.h>
60 59
61using namespace Opie; 60using namespace Opie;
62 61
63class QCopKeyRegister 62class QCopKeyRegister
64{ 63{
65public: 64public:
66 QCopKeyRegister() : keyCode( 0 ) 65 QCopKeyRegister() : keyCode( 0 )
67 { } 66 { }
68 QCopKeyRegister( int k, const QString &c, const QString &m ) 67 QCopKeyRegister( int k, const QString &c, const QString &m )
69 : keyCode( k ), channel( c ), message( m ) 68 : keyCode( k ), channel( c ), message( m )
70 { } 69 { }
71 70
72 int getKeyCode() const 71 int getKeyCode() const
73 { 72 {
74 return keyCode; 73 return keyCode;
75 } 74 }
76 QString getChannel() const 75 QString getChannel() const
77 { 76 {
78 return channel; 77 return channel;
79 } 78 }
80 QString getMessage() const 79 QString getMessage() const
81 { 80 {
82 return message; 81 return message;
83 } 82 }
84 83
85private: 84private:
86 int keyCode; 85 int keyCode;
87 QString channel, message; 86 QString channel, message;
88}; 87};
89 88
90typedef QValueList<QCopKeyRegister> KeyRegisterList; 89typedef QValueList<QCopKeyRegister> KeyRegisterList;
91KeyRegisterList keyRegisterList; 90KeyRegisterList keyRegisterList;
92 91
93static Desktop* qpedesktop = 0; 92static Desktop* qpedesktop = 0;
94static int loggedin = 0; 93static int loggedin = 0;
95static void login( bool at_poweron ) 94static void login( bool at_poweron )
96{ 95{
97 if ( !loggedin ) { 96 if ( !loggedin ) {
98 Global::terminateBuiltin( "calibrate" ); 97 Global::terminateBuiltin( "calibrate" );
99 Password::authenticate( at_poweron ); 98 Password::authenticate( at_poweron );
100 loggedin = 1; 99 loggedin = 1;
101 QCopEnvelope e( "QPE/Desktop", "unlocked()" ); 100 QCopEnvelope e( "QPE/Desktop", "unlocked()" );
102 } 101 }
103} 102}
104 103
105bool Desktop::screenLocked() 104bool Desktop::screenLocked()
106{ 105{
107 return loggedin == 0; 106 return loggedin == 0;
108} 107}
109 108
110/* 109/*
111 Priority is number of alerts that are needed to pop up 110 Priority is number of alerts that are needed to pop up
112 alert. 111 alert.
113 */ 112 */
114class DesktopPowerAlerter : public QMessageBox 113class DesktopPowerAlerter : public QMessageBox
115{ 114{
116public: 115public:
117 DesktopPowerAlerter( QWidget *parent, const char *name = 0 ) 116 DesktopPowerAlerter( QWidget *parent, const char *name = 0 )
118 : QMessageBox( tr( "Battery Status" ), "Low Battery", 117 : QMessageBox( tr( "Battery Status" ), "Low Battery",
119 QMessageBox::Critical, 118 QMessageBox::Critical,
120 QMessageBox::Ok | QMessageBox::Default, 119 QMessageBox::Ok | QMessageBox::Default,
121 QMessageBox::NoButton, QMessageBox::NoButton, 120 QMessageBox::NoButton, QMessageBox::NoButton,
122 parent, name, FALSE ) 121 parent, name, FALSE )
123 { 122 {
124 currentPriority = INT_MAX; 123 currentPriority = INT_MAX;
125 alertCount = 0; 124 alertCount = 0;
126 } 125 }
127 126
128 void alert( const QString &text, int priority ); 127 void alert( const QString &text, int priority );
129 void hideEvent( QHideEvent * ); 128 void hideEvent( QHideEvent * );
130private: 129private:
131 int currentPriority; 130 int currentPriority;
132 int alertCount; 131 int alertCount;
133}; 132};
134 133
135void DesktopPowerAlerter::alert( const QString &text, int priority ) 134void DesktopPowerAlerter::alert( const QString &text, int priority )
136{ 135{
137 alertCount++; 136 alertCount++;
138 if ( alertCount < priority ) 137 if ( alertCount < priority )
139 return ; 138 return ;
140 if ( priority > currentPriority ) 139 if ( priority > currentPriority )
141 return ; 140 return ;
142 currentPriority = priority; 141 currentPriority = priority;
143 setText( text ); 142 setText( text );
144 show(); 143 show();
145} 144}
146 145
147 146
148void DesktopPowerAlerter::hideEvent( QHideEvent *e ) 147void DesktopPowerAlerter::hideEvent( QHideEvent *e )
149{ 148{
150 QMessageBox::hideEvent( e ); 149 QMessageBox::hideEvent( e );
151 alertCount = 0; 150 alertCount = 0;
152 currentPriority = INT_MAX; 151 currentPriority = INT_MAX;
153} 152}
154 153
155class QPEScreenSaver : public QWSScreenSaver 154class QPEScreenSaver : public QWSScreenSaver
156{ 155{
157private: 156private:
158 int LcdOn; 157 int LcdOn;
159 158
160public: 159public:
161 QPEScreenSaver() 160 QPEScreenSaver()
162 { 161 {
163 m_disable_suspend = 100; 162 m_disable_suspend = 100;
164 m_enable_dim = false; 163 m_enable_dim = false;
165 m_enable_lightoff = false; 164 m_enable_lightoff = false;
166 m_enable_onlylcdoff = false; 165 m_enable_onlylcdoff = false;
167 166
168 m_disable_suspend_ac = 100; 167 m_disable_suspend_ac = 100;
169 m_enable_dim_ac = false; 168 m_enable_dim_ac = false;
170 m_enable_lightoff_ac = false; 169 m_enable_lightoff_ac = false;
171 m_enable_onlylcdoff_ac = false; 170 m_enable_onlylcdoff_ac = false;
171 m_disable_apm_ac = false;
172 172
173 m_lcd_status = true; 173 m_lcd_status = true;
174 174
175 m_backlight_normal = -1; 175 m_backlight_normal = -1;
176 m_backlight_current = -1; 176 m_backlight_current = -1;
177 m_backlight_forcedoff = false; 177 m_backlight_forcedoff = false;
178 178
179 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 179 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
180 ODevice::inst ( )-> setDisplayStatus ( true ); 180 ODevice::inst ( )-> setDisplayStatus ( true );
181 setBacklight ( -1 ); 181 setBacklight ( -1 );
182 } 182 }
183 void restore() 183 void restore()
184 { 184 {
185 if ( !m_lcd_status ) { // We must have turned it off 185 if ( !m_lcd_status ) { // We must have turned it off
186 ODevice::inst ( ) -> setDisplayStatus ( true ); 186 ODevice::inst ( ) -> setDisplayStatus ( true );
187 m_lcd_status = true; 187 m_lcd_status = true;
188 } 188 }
189 189
190 setBacklightInternal ( -1 ); 190 setBacklightInternal ( -1 );
191 } 191 }
192 bool save( int level ) 192 bool save( int level )
193 { 193 {
194 bool onAC = ( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ); 194 bool onAC = ( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online );
195 195
196 switch ( level ) { 196 switch ( level ) {
197 case 0: 197 case 0:
198 198
199 if ( m_disable_suspend_ac > 0 && m_enable_dim_ac && onAC ) { 199 if ( m_disable_suspend_ac > 0 && m_enable_dim_ac && onAC ) {
200 if ( m_backlight_current > 1 ) 200 if ( m_backlight_current > 1 )
201 setBacklight( 1 ); // lowest non-off 201 setBacklight( 1 ); // lowest non-off
202 } else if ( m_disable_suspend > 0 && m_enable_dim ) { 202 } else if ( m_disable_suspend > 0 && m_enable_dim ) {
203 if ( m_backlight_current > 1 ) 203 if ( m_backlight_current > 1 )
204 setBacklightInternal( 1 ); // lowest non-off 204 setBacklightInternal( 1 ); // lowest non-off
205 } 205 }
206 return true; 206 return true;
207 break; 207 break;
208 case 1: 208 case 1:
209 209
210 if ( m_disable_suspend_ac > 1 && m_enable_lightoff_ac && onAC ) { 210 if ( m_disable_suspend_ac > 1 && m_enable_lightoff_ac && onAC ) {
211 setBacklightInternal( 0 ); // off 211 setBacklightInternal( 0 ); // off
212 } else if ( m_disable_suspend > 1 && m_enable_lightoff ) { 212 } else if ( m_disable_suspend > 1 && m_enable_lightoff ) {
213 setBacklightInternal( 0 ); // off 213 setBacklightInternal( 0 ); // off
214 } 214 }
215 return true; 215 return true;
216 break; 216 break;
217 case 2: 217 case 2:
218 if ( m_disable_apm_ac && onAC ) {
219 return true;
220 }
221
218 if ( m_enable_onlylcdoff_ac && onAC ) { 222 if ( m_enable_onlylcdoff_ac && onAC ) {
219 ODevice::inst ( ) -> setDisplayStatus ( false ); 223 ODevice::inst ( ) -> setDisplayStatus ( false );
220 m_lcd_status = false; 224 m_lcd_status = false;
221 return true; 225 return true;
222 } 226 }
223 else if ( m_enable_onlylcdoff ) { 227 else if ( m_enable_onlylcdoff ) {
224 ODevice::inst ( ) -> setDisplayStatus ( false ); 228 ODevice::inst ( ) -> setDisplayStatus ( false );
225 m_lcd_status = false; 229 m_lcd_status = false;
226 return true; 230 return true;
227 } 231 }
228 else // We're going to suspend the whole machine 232 else // We're going to suspend the whole machine
229 { 233 {
230 if ( ( m_disable_suspend_ac > 2 && onAC ) && ( !Network::networkOnline ( ) ) ) { 234 if ( ( m_disable_suspend_ac > 2 && onAC ) && ( !Network::networkOnline ( ) ) ) {
231 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 235 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
232 return true; 236 return true;
233 } 237 }
234 if ( ( m_disable_suspend > 2 ) && ( !Network::networkOnline ( ) ) ) { 238 if ( ( m_disable_suspend > 2 ) && ( !Network::networkOnline ( ) ) ) {
235 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 239 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
236 return true; 240 return true;
237 } 241 }
238 } 242 }
239 break; 243 break;
240 } 244 }
241 return false; 245 return false;
242 } 246 }
243 247
244private: 248private:
245 static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def ) 249 static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def )
246 { 250 {
247 if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 ) 251 if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 )
248 return 0; 252 return 0;
249 253
250 if ( interval < 0 ) { 254 if ( interval < 0 ) {
251 // Restore screen blanking and power saving state 255 // Restore screen blanking and power saving state
252 interval = config.readNumEntry( value, def ); 256 interval = config.readNumEntry( value, def );
253 } 257 }
254 return interval; 258 return interval;
255 } 259 }
256 260
257public: 261public:
258 void setIntervals( int i1, int i2, int i3 ) 262 void setIntervals( int i1, int i2, int i3 )
259 { 263 {
260 Config config( "qpe" ); 264 Config config( "qpe" );
261 config.setGroup( "Screensaver" ); 265 config.setGroup( "Screensaver" );
262 266
263 int v[ 4 ]; 267 int v[ 4 ];
264 i1 = ssi( i1, config, "Dim", "Interval_Dim", 30 ); 268 i1 = ssi( i1, config, "Dim", "Interval_Dim", 30 );
265 i2 = ssi( i2, config, "LightOff", "Interval_LightOff", 20 ); 269 i2 = ssi( i2, config, "LightOff", "Interval_LightOff", 20 );
266 i3 = ssi( i3, config, "", "Interval", 60 ); 270 i3 = ssi( i3, config, "", "Interval", 60 );
267 271
268 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3); 272 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3);
269 273
270 v [ 0 ] = QMAX( 1000 * i1, 100 ); 274 v [ 0 ] = QMAX( 1000 * i1, 100 );
271 v [ 1 ] = QMAX( 1000 * i2, 100 ); 275 v [ 1 ] = QMAX( 1000 * i2, 100 );
272 v [ 2 ] = QMAX( 1000 * i3, 100 ); 276 v [ 2 ] = QMAX( 1000 * i3, 100 );
273 v [ 3 ] = 0; 277 v [ 3 ] = 0;
274 m_enable_dim = ( ( i1 != 0 ) ? config. readNumEntry ( "Dim", 1 ) : false ); 278 m_enable_dim = ( ( i1 != 0 ) ? config. readNumEntry ( "Dim", 1 ) : false );
275 m_enable_lightoff = ( ( i2 != 0 ) ? config. readNumEntry ( "LightOff", 1 ) : false ); 279 m_enable_lightoff = ( ( i2 != 0 ) ? config. readNumEntry ( "LightOff", 1 ) : false );
276 m_enable_onlylcdoff = config. readNumEntry ( "LcdOffOnly", 0 ); 280 m_enable_onlylcdoff = config.readNumEntry ( "LcdOffOnly", 0 );
277 281
278 if ( !i1 && !i2 && !i3 ) 282 if ( !i1 && !i2 && !i3 )
279 QWSServer::setScreenSaverInterval( 0 ); 283 QWSServer::setScreenSaverInterval( 0 );
280 else 284 else
281 QWSServer::setScreenSaverIntervals( v ); 285 QWSServer::setScreenSaverIntervals( v );
282 } 286 }
283 287
284 void setIntervalsAC( int i1, int i2, int i3 ) 288 void setIntervalsAC( int i1, int i2, int i3 )
285 { 289 {
286 Config config( "qpe" ); 290 Config config( "qpe" );
287 config.setGroup( "Screensaver" ); 291 config.setGroup( "Screensaver" );
288 292
289 int v[ 4 ]; 293 int v[ 4 ];
290 i1 = ssi( i1, config, "DimAC", "Interval_DimAC", 30 ); 294 i1 = ssi( i1, config, "DimAC", "Interval_DimAC", 30 );
291 i2 = ssi( i2, config, "LightOffAC", "Interval_LightOffAC", 20 ); 295 i2 = ssi( i2, config, "LightOffAC", "Interval_LightOffAC", 20 );
292 i3 = ssi( i3, config, "", "IntervalAC", 60 ); 296 i3 = ssi( i3, config, "", "IntervalAC", 60 );
293 297
294 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3); 298 //qDebug("screen saver intervals: %d %d %d", i1, i2, i3);
295 299
296 v [ 0 ] = QMAX( 1000 * i1, 100 ); 300 v [ 0 ] = QMAX( 1000 * i1, 100 );
297 v [ 1 ] = QMAX( 1000 * i2, 100 ); 301 v [ 1 ] = QMAX( 1000 * i2, 100 );
298 v [ 2 ] = QMAX( 1000 * i3, 100 ); 302 v [ 2 ] = QMAX( 1000 * i3, 100 );
299 v [ 3 ] = 0; 303 v [ 3 ] = 0;
300 m_enable_dim_ac = ( ( i1 != 0 ) ? config.readNumEntry ( "DimAC", 1 ) : false ); 304 m_enable_dim_ac = ( ( i1 != 0 ) ? config.readNumEntry ( "DimAC", 1 ) : false );
301 m_enable_lightoff_ac = ( ( i2 != 0 ) ? config.readNumEntry ( "LightOffAC", 1 ) : false ); 305 m_enable_lightoff_ac = ( ( i2 != 0 ) ? config.readNumEntry ( "LightOffAC", 1 ) : false );
302 m_enable_onlylcdoff_ac = config.readNumEntry ( "LcdOffOnlyAC", 0 ); 306 m_enable_onlylcdoff_ac = config.readNumEntry ( "LcdOffOnlyAC", 0 );
307 m_disable_apm_ac = config.readNumEntry ( "NoApmAC", 0 );
303 308
304 if ( !i1 && !i2 && !i3 ) 309 if ( !i1 && !i2 && !i3 )
305 QWSServer::setScreenSaverInterval( 0 ); 310 QWSServer::setScreenSaverInterval( 0 );
306 else 311 else
307 QWSServer::setScreenSaverIntervals( v ); 312 QWSServer::setScreenSaverIntervals( v );
308 } 313 }
309 314
310 void setInterval ( int interval ) 315 void setInterval ( int interval )
311 { 316 {
312 setIntervals ( -1, -1, interval ); 317 setIntervals ( -1, -1, interval );
313 } 318 }
314 319
315 void setMode ( int mode ) 320 void setMode ( int mode )
316 { 321 {
317 if ( mode > m_disable_suspend ) 322 if ( mode > m_disable_suspend )
318 setInterval( -1 ); 323 setInterval( -1 );
319 m_disable_suspend = mode; 324 m_disable_suspend = mode;
320 } 325 }
321 326
322 void setBacklight ( int bright ) 327 void setBacklight ( int bright )
323 { 328 {
324 // Read from config 329 // Read from config
325 Config config ( "qpe" ); 330 Config config ( "qpe" );
326 config. setGroup ( "Screensaver" ); 331 config. setGroup ( "Screensaver" );
327 m_backlight_normal = config. readNumEntry ( "Brightness", 255 ); 332 m_backlight_normal = config. readNumEntry ( "Brightness", 255 );
328 333
329 setBacklightInternal ( bright ); 334 setBacklightInternal ( bright );
330 } 335 }
331 336
332private: 337private:
333 void setBacklightInternal ( int bright ) 338 void setBacklightInternal ( int bright )
334 { 339 {
335 if ( bright == -3 ) { 340 if ( bright == -3 ) {
336 // Forced on 341 // Forced on
337 m_backlight_forcedoff = false; 342 m_backlight_forcedoff = false;
338 bright = -1; 343 bright = -1;
339 } 344 }
340 if ( m_backlight_forcedoff && bright != -2 ) 345 if ( m_backlight_forcedoff && bright != -2 )
341 return ; 346 return ;
342 if ( bright == -2 ) { 347 if ( bright == -2 ) {
343 // Toggle between off and on 348 // Toggle between off and on
344 bright = m_backlight_current ? 0 : -1; 349 bright = m_backlight_current ? 0 : -1;
345 m_backlight_forcedoff = !bright; 350 m_backlight_forcedoff = !bright;
346 } 351 }
347 if ( bright == -1 ) 352 if ( bright == -1 )
348 bright = m_backlight_normal; 353 bright = m_backlight_normal;
349 354
350 if ( bright != m_backlight_current ) { 355 if ( bright != m_backlight_current ) {
351 ODevice::inst ( )-> setDisplayBrightness ( bright ); 356 ODevice::inst ( )-> setDisplayBrightness ( bright );
352 m_backlight_current = bright; 357 m_backlight_current = bright;
353 } 358 }
354 } 359 }
355 360
356public: 361public:
357 void setDisplayState ( bool on ) 362 void setDisplayState ( bool on )
358 { 363 {
359 if ( m_lcd_status != on ) { 364 if ( m_lcd_status != on ) {
360 ODevice::inst ( ) -> setDisplayStatus ( on ); 365 ODevice::inst ( ) -> setDisplayStatus ( on );
361 m_lcd_status = on; 366 m_lcd_status = on;
362 } 367 }
363 } 368 }
364 369
365private: 370private:
366 int m_disable_suspend; 371 int m_disable_suspend;
367 bool m_enable_dim; 372 bool m_enable_dim;
368 bool m_enable_lightoff; 373 bool m_enable_lightoff;
369 bool m_enable_onlylcdoff; 374 bool m_enable_onlylcdoff;
370 375
371 int m_disable_suspend_ac; 376 int m_disable_suspend_ac;
372 bool m_enable_dim_ac; 377 bool m_enable_dim_ac;
373 bool m_enable_lightoff_ac; 378 bool m_enable_lightoff_ac;
374 bool m_enable_onlylcdoff_ac; 379 bool m_enable_onlylcdoff_ac;
380 bool m_disable_apm_ac;
375 381
376 bool m_lcd_status; 382 bool m_lcd_status;
377 383
378 int m_backlight_normal; 384 int m_backlight_normal;
379 int m_backlight_current; 385 int m_backlight_current;
380 bool m_backlight_forcedoff; 386 bool m_backlight_forcedoff;
381}; 387};
382 388
383void DesktopApplication::switchLCD ( bool on ) 389void DesktopApplication::switchLCD ( bool on )
384{ 390{
385 if ( qApp ) { 391 if ( qApp ) {
386 DesktopApplication *dapp = (DesktopApplication *) qApp; 392 DesktopApplication *dapp = (DesktopApplication *) qApp;
387 393
388 if ( dapp-> m_screensaver ) { 394 if ( dapp-> m_screensaver ) {
389 if ( on ) { 395 if ( on ) {
390 dapp-> m_screensaver-> setDisplayState ( true ); 396 dapp-> m_screensaver-> setDisplayState ( true );
391 dapp-> m_screensaver-> setBacklight ( -3 ); 397 dapp-> m_screensaver-> setBacklight ( -3 );
392 } 398 }
393 else { 399 else {
394 dapp-> m_screensaver-> setDisplayState ( false ); 400 dapp-> m_screensaver-> setDisplayState ( false );
395 } 401 }
396 } 402 }
397 } 403 }
398} 404}
399 405
400 406
401DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType ) 407DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
402 : QPEApplication( argc, argv, appType ) 408 : QPEApplication( argc, argv, appType )
403{ 409{
404 410
405 m_timer = new QTimer( this ); 411 m_timer = new QTimer( this );
406 connect( m_timer, SIGNAL( timeout() ), this, SLOT( apmTimeout() ) ); 412 connect( m_timer, SIGNAL( timeout() ), this, SLOT( apmTimeout() ) );
407 Config cfg( "apm" ); 413 Config cfg( "apm" );
408 cfg.setGroup( "Warnings" ); 414 cfg.setGroup( "Warnings" );
409 m_timer->start( 5000 ); 415 m_timer->start( 5000 );
410 //cfg.readNumEntry( "checkinterval", 10000 ) 416 //cfg.readNumEntry( "checkinterval", 10000 )
411 m_powerVeryLow = cfg.readNumEntry( "powerverylow", 10 ); 417 m_powerVeryLow = cfg.readNumEntry( "powerverylow", 10 );
412 m_powerCritical = cfg.readNumEntry( "powercritical", 5 ); 418 m_powerCritical = cfg.readNumEntry( "powercritical", 5 );
413 ps = new PowerStatus; 419 ps = new PowerStatus;
414 pa = new DesktopPowerAlerter( 0 ); 420 pa = new DesktopPowerAlerter( 0 );
415 421
416 channel = new QCopChannel( "QPE/Desktop", this ); 422 channel = new QCopChannel( "QPE/Desktop", this );
417 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ), 423 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
418 this, SLOT( desktopMessage( const QCString&, const QByteArray& ) ) ); 424 this, SLOT( desktopMessage( const QCString&, const QByteArray& ) ) );
419 425
420 channel = new QCopChannel( "QPE/System", this ); 426 channel = new QCopChannel( "QPE/System", this );
421 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ), 427 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
422 this, SLOT( systemMessage( const QCString&, const QByteArray& ) ) ); 428 this, SLOT( systemMessage( const QCString&, const QByteArray& ) ) );
423 429
424 m_screensaver = new QPEScreenSaver; 430 m_screensaver = new QPEScreenSaver;
425 431
426 m_screensaver-> setInterval ( -1 ); 432 m_screensaver-> setInterval ( -1 );
427 QWSServer::setScreenSaver( m_screensaver ); 433 QWSServer::setScreenSaver( m_screensaver );
428} 434}
429 435
430 436
431DesktopApplication::~DesktopApplication() 437DesktopApplication::~DesktopApplication()
432{ 438{
433 delete ps; 439 delete ps;
434 delete pa; 440 delete pa;
435} 441}
436 442
437void DesktopApplication::desktopMessage( const QCString &msg, const QByteArray &data ) 443void DesktopApplication::desktopMessage( const QCString &msg, const QByteArray &data )
438{ 444{
439 QDataStream stream( data, IO_ReadOnly ); 445 QDataStream stream( data, IO_ReadOnly );
440 if ( msg == "keyRegister(int key, QString channel, QString message)" ) { 446 if ( msg == "keyRegister(int key, QString channel, QString message)" ) {
441 int k; 447 int k;
442 QString c, m; 448 QString c, m;
443 stream >> k; 449 stream >> k;
444 stream >> c; 450 stream >> c;
445 stream >> m; 451 stream >> m;
446 452
447 qWarning( "KeyRegisterReceived: %i, %s, %s", k, ( const char* ) c, ( const char * ) m ); 453 qWarning( "KeyRegisterReceived: %i, %s, %s", k, ( const char* ) c, ( const char * ) m );
448 keyRegisterList.append( QCopKeyRegister( k, c, m ) ); 454 keyRegisterList.append( QCopKeyRegister( k, c, m ) );
449 } 455 }
450} 456}
451 457
452 458
453void DesktopApplication::systemMessage( const QCString & msg, const QByteArray & data ) 459void DesktopApplication::systemMessage( const QCString & msg, const QByteArray & data )
454{ 460{
455 QDataStream stream ( data, IO_ReadOnly ); 461 QDataStream stream ( data, IO_ReadOnly );
456 462
457 if ( msg == "setScreenSaverInterval(int)" ) { 463 if ( msg == "setScreenSaverInterval(int)" ) {
458 int time; 464 int time;
459 stream >> time; 465 stream >> time;
460 m_screensaver-> setInterval( time ); 466 m_screensaver-> setInterval( time );
461 } 467 }
462 else if ( msg == "setScreenSaverIntervals(int,int,int)" ) { 468 else if ( msg == "setScreenSaverIntervals(int,int,int)" ) {
463 int t1, t2, t3; 469 int t1, t2, t3;
464 stream >> t1 >> t2 >> t3; 470 stream >> t1 >> t2 >> t3;
465 m_screensaver-> setIntervals( t1, t2, t3 ); 471 m_screensaver-> setIntervals( t1, t2, t3 );
466 } 472 }
467 else if ( msg == "setScreenSaverIntervalsAC(int,int,int)" ) { 473 else if ( msg == "setScreenSaverIntervalsAC(int,int,int)" ) {
468 int t1, t2, t3; 474 int t1, t2, t3;
469 stream >> t1 >> t2 >> t3; 475 stream >> t1 >> t2 >> t3;
470 m_screensaver-> setIntervalsAC( t1, t2, t3 ); 476 m_screensaver-> setIntervalsAC( t1, t2, t3 );
471 } 477 }
472 else if ( msg == "setBacklight(int)" ) { 478 else if ( msg == "setBacklight(int)" ) {
473 int bright; 479 int bright;
474 stream >> bright; 480 stream >> bright;
475 m_screensaver-> setBacklight( bright ); 481 m_screensaver-> setBacklight( bright );
476 } 482 }
477 else if ( msg == "setScreenSaverMode(int)" ) { 483 else if ( msg == "setScreenSaverMode(int)" ) {
478 int mode; 484 int mode;
479 stream >> mode; 485 stream >> mode;
480 m_screensaver-> setMode ( mode ); 486 m_screensaver-> setMode ( mode );
481 } 487 }
482 else if ( msg == "reloadPowerWarnSettings()" ) { 488 else if ( msg == "reloadPowerWarnSettings()" ) {
483 reloadPowerWarnSettings(); 489 reloadPowerWarnSettings();
484 } 490 }
485 else if ( msg == "setDisplayState(int)" ) { 491 else if ( msg == "setDisplayState(int)" ) {
486 int state; 492 int state;
487 stream >> state; 493 stream >> state;
488 m_screensaver-> setDisplayState ( state != 0 ); 494 m_screensaver-> setDisplayState ( state != 0 );
489 } 495 }
490 else if ( msg == "suspend()" ) { 496 else if ( msg == "suspend()" ) {
491 emit power(); 497 emit power();
492 } 498 }
493} 499}
494 500
495void DesktopApplication::reloadPowerWarnSettings() { 501void DesktopApplication::reloadPowerWarnSettings() {
496 Config cfg( "apm" ); 502 Config cfg( "apm" );
497 cfg.setGroup( "Warnings" ); 503 cfg.setGroup( "Warnings" );
498 504
499 // m_timer->changeInterval( cfg.readNumEntry( "checkinterval", 10000 ) ); 505 // m_timer->changeInterval( cfg.readNumEntry( "checkinterval", 10000 ) );
500 m_powerVeryLow = cfg.readNumEntry( "powerverylow", 10 ); 506 m_powerVeryLow = cfg.readNumEntry( "powerverylow", 10 );
501 m_powerCritical = cfg.readNumEntry( "powervcritical", 5 ); 507 m_powerCritical = cfg.readNumEntry( "powervcritical", 5 );
502} 508}
503 509
504 510
505enum MemState { Unknown, VeryLow, Low, Normal } memstate = Unknown; 511enum MemState { Unknown, VeryLow, Low, Normal } memstate = Unknown;
506 512
507#ifdef Q_WS_QWS 513#ifdef Q_WS_QWS
508bool DesktopApplication::qwsEventFilter( QWSEvent *e ) 514bool DesktopApplication::qwsEventFilter( QWSEvent *e )
509{ 515{
510 qpedesktop->checkMemory(); 516 qpedesktop->checkMemory();
511 517
512 if ( e->type == QWSEvent::Key ) { 518 if ( e->type == QWSEvent::Key ) {
513 QWSKeyEvent * ke = ( QWSKeyEvent * ) e; 519 QWSKeyEvent * ke = ( QWSKeyEvent * ) e;
514 if ( !loggedin && ke->simpleData.keycode != Key_F34 ) 520 if ( !loggedin && ke->simpleData.keycode != Key_F34 )
515 return TRUE; 521 return TRUE;
516 bool press = ke->simpleData.is_press; 522 bool press = ke->simpleData.is_press;
517 bool autoRepeat = ke->simpleData.is_auto_repeat; 523 bool autoRepeat = ke->simpleData.is_auto_repeat;
518 524
519 /* 525 /*
520 app that registers key/message to be sent back to the app, when it doesn't have focus, 526 app that registers key/message to be sent back to the app, when it doesn't have focus,
521 when user presses key, unless keyboard has been requested from app. 527 when user presses key, unless keyboard has been requested from app.
522 will not send multiple repeats if user holds key 528 will not send multiple repeats if user holds key
523 i.e. one shot 529 i.e. one shot
524 */ 530 */
525 if ( !keyRegisterList.isEmpty() && ke->simpleData.keycode !=0 && press) { 531 if ( !keyRegisterList.isEmpty() && ke->simpleData.keycode !=0 && press) {
526// qDebug("<<<<<<<<<<<<<keycode %d", ke->simpleData.keycode); 532// qDebug("<<<<<<<<<<<<<keycode %d", ke->simpleData.keycode);
527 KeyRegisterList::Iterator it; 533 KeyRegisterList::Iterator it;
528 for ( it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) { 534 for ( it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) {
529 if ( ( *it ).getKeyCode() == ke->simpleData.keycode && !autoRepeat && !keyboardGrabbed() ) { 535 if ( ( *it ).getKeyCode() == ke->simpleData.keycode && !autoRepeat && !keyboardGrabbed() ) {
530 if ( press ) 536 if ( press )
531 qDebug( "press" ); 537 qDebug( "press" );
532 else 538 else
533 qDebug( "release" ); 539 qDebug( "release" );
534 QCopEnvelope( ( *it ).getChannel().utf8(), ( *it ).getMessage().utf8() ); 540 QCopEnvelope( ( *it ).getChannel().utf8(), ( *it ).getMessage().utf8() );
535 } 541 }
536 } 542 }
537 } 543 }
538 544
539 if ( !keyboardGrabbed() ) { 545 if ( !keyboardGrabbed() ) {
540 if ( ke->simpleData.keycode == Key_F9 ) { 546 if ( ke->simpleData.keycode == Key_F9 ) {
541 if ( press ) 547 if ( press )
542 emit datebook(); 548 emit datebook();
543 return TRUE; 549 return TRUE;
544 } 550 }
545 if ( ke->simpleData.keycode == Key_F10 ) { 551 if ( ke->simpleData.keycode == Key_F10 ) {
546 if ( !press && cardSendTimer ) { 552 if ( !press && cardSendTimer ) {
547 emit contacts(); 553 emit contacts();
548 delete cardSendTimer; 554 delete cardSendTimer;
549 } 555 }
550 else if ( press ) { 556 else if ( press ) {
551 cardSendTimer = new QTimer(); 557 cardSendTimer = new QTimer();
552 cardSendTimer->start( 2000, TRUE ); 558 cardSendTimer->start( 2000, TRUE );
553 connect( cardSendTimer, SIGNAL( timeout() ), this, SLOT( sendCard() ) ); 559 connect( cardSendTimer, SIGNAL( timeout() ), this, SLOT( sendCard() ) );
554 } 560 }
555 return TRUE; 561 return TRUE;
556 } 562 }
557 563
558// if ( ke->simpleData.keycode == Key_F11 ) { 564// if ( ke->simpleData.keycode == Key_F11 ) {
559// if ( press ) emit menu(); 565// if ( press ) emit menu();
560// return TRUE; 566// return TRUE;
561// } 567// }
562 568
563 if ( ke->simpleData.keycode == Key_F12 ) { 569 if ( ke->simpleData.keycode == Key_F12 ) {
564 while ( activePopupWidget() ) 570 while ( activePopupWidget() )
565 activePopupWidget() ->close(); 571 activePopupWidget() ->close();
566 if ( press ) 572 if ( press )
567 emit launch(); 573 emit launch();
568 return TRUE; 574 return TRUE;
569 } 575 }
570 if ( ke->simpleData.keycode == Key_F13 ) { 576 if ( ke->simpleData.keycode == Key_F13 ) {
571 if ( press ) 577 if ( press )
572 emit email(); 578 emit email();
573 return TRUE; 579 return TRUE;
574 } 580 }
575 } 581 }
576 582
577 if ( ke->simpleData.keycode == Key_F34 ) { 583 if ( ke->simpleData.keycode == Key_F34 ) {
578 if ( press ) 584 if ( press )
579 emit power(); 585 emit power();
580 return TRUE; 586 return TRUE;
581 } 587 }
582 // This was used for the iPAQ PowerButton 588 // This was used for the iPAQ PowerButton
583 // See main.cpp for new KeyboardFilter 589 // See main.cpp for new KeyboardFilter
584 // 590 //
585 // if ( ke->simpleData.keycode == Key_SysReq ) { 591 // if ( ke->simpleData.keycode == Key_SysReq ) {
586 // if ( press ) emit power(); 592 // if ( press ) emit power();
587 // return TRUE; 593 // return TRUE;
588 // } 594 // }
589 if ( ke->simpleData.keycode == Key_F35 ) { 595 if ( ke->simpleData.keycode == Key_F35 ) {
590 if ( press ) 596 if ( press )
591 emit backlight(); 597 emit backlight();
592 return TRUE; 598 return TRUE;
593 } 599 }
594 if ( ke->simpleData.keycode == Key_F32 ) { 600 if ( ke->simpleData.keycode == Key_F32 ) {
595 if ( press ) 601 if ( press )
596 QCopEnvelope e( "QPE/Desktop", "startSync()" ); 602 QCopEnvelope e( "QPE/Desktop", "startSync()" );
597 return TRUE; 603 return TRUE;
598 } 604 }
599 if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) { 605 if ( ke->simpleData.keycode == Key_F31 && !ke->simpleData.modifiers ) {
600 if ( press ) 606 if ( press )
601 emit symbol(); 607 emit symbol();
602 return TRUE; 608 return TRUE;
603 } 609 }
604 if ( ke->simpleData.keycode == Key_NumLock ) { 610 if ( ke->simpleData.keycode == Key_NumLock ) {
605 if ( press ) 611 if ( press )
606 emit numLockStateToggle(); 612 emit numLockStateToggle();
607 } 613 }
608 if ( ke->simpleData.keycode == Key_CapsLock ) { 614 if ( ke->simpleData.keycode == Key_CapsLock ) {
609 if ( press ) 615 if ( press )
610 emit capsLockStateToggle(); 616 emit capsLockStateToggle();
611 } 617 }
612 if ( ( press && !autoRepeat ) || ( !press && autoRepeat ) ) 618 if ( ( press && !autoRepeat ) || ( !press && autoRepeat ) )
613 qpedesktop->keyClick(); 619 qpedesktop->keyClick();
614 } 620 }
615 else { 621 else {
616 if ( e->type == QWSEvent::Mouse ) { 622 if ( e->type == QWSEvent::Mouse ) {
617 QWSMouseEvent * me = ( QWSMouseEvent * ) e; 623 QWSMouseEvent * me = ( QWSMouseEvent * ) e;
618 static bool up = TRUE; 624 static bool up = TRUE;
619 if ( me->simpleData.state & LeftButton ) { 625 if ( me->simpleData.state & LeftButton ) {
620 if ( up ) { 626 if ( up ) {
621 up = FALSE; 627 up = FALSE;
622 qpedesktop->screenClick(); 628 qpedesktop->screenClick();
623 } 629 }
624 } 630 }
625 else { 631 else {
626 up = TRUE; 632 up = TRUE;
627 } 633 }
628 } 634 }
629 } 635 }
630 636