summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp40
-rw-r--r--core/launcher/desktop.h1
2 files changed, 10 insertions, 31 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 4640a12..68949e6 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -13,96 +13,98 @@
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" 24//#include "mrulist.h"
25#include "qcopbridge.h" 25#include "qcopbridge.h"
26#include "shutdownimpl.h" 26#include "shutdownimpl.h"
27#include "startmenu.h" 27#include "startmenu.h"
28#include "taskbar.h" 28#include "taskbar.h"
29#include "transferserver.h" 29#include "transferserver.h"
30#include "irserver.h" 30#include "irserver.h"
31#include "packageslave.h" 31#include "packageslave.h"
32 32
33#include <qpe/applnk.h> 33#include <qpe/applnk.h>
34#include <qpe/mimetype.h> 34#include <qpe/mimetype.h>
35#include <qpe/password.h> 35#include <qpe/password.h>
36#include <qpe/config.h> 36#include <qpe/config.h>
37#include <qpe/power.h> 37#include <qpe/power.h>
38#include <qpe/timeconversion.h> 38#include <qpe/timeconversion.h>
39#include <qpe/qcopenvelope_qws.h> 39#include <qpe/qcopenvelope_qws.h>
40#include <qpe/network.h> 40#include <qpe/network.h>
41#include <qpe/global.h> 41#include <qpe/global.h>
42 42
43#if defined( QT_QWS_CUSTOM ) || defined( QT_QWS_IPAQ ) 43#if defined( QT_QWS_CUSTOM ) || defined( QT_QWS_IPAQ )
44#include <qpe/custom.h> 44#include <qpe/custom.h>
45#endif 45#endif
46 46
47#include <opie/odevice.h> 47#include <opie/odevice.h>
48 48
49#include <qgfx_qws.h> 49#include <qgfx_qws.h>
50#include <qmainwindow.h> 50#include <qmainwindow.h>
51#include <qmessagebox.h> 51#include <qmessagebox.h>
52#include <qtimer.h> 52#include <qtimer.h>
53#include <qwindowsystem_qws.h> 53#include <qwindowsystem_qws.h>
54 54
55#include <qvaluelist.h> 55#include <qvaluelist.h>
56 56
57#include <stdlib.h> 57#include <stdlib.h>
58#include <unistd.h> 58#include <unistd.h>
59#include <fcntl.h> 59#include <fcntl.h>
60 60
61using namespace Opie;
62
61class QCopKeyRegister 63class QCopKeyRegister
62{ 64{
63public: 65public:
64 QCopKeyRegister() : keyCode( 0 ) 66 QCopKeyRegister() : keyCode( 0 )
65 { } 67 { }
66 QCopKeyRegister( int k, const QString &c, const QString &m ) 68 QCopKeyRegister( int k, const QString &c, const QString &m )
67 : keyCode( k ), channel( c ), message( m ) 69 : keyCode( k ), channel( c ), message( m )
68 { } 70 { }
69 71
70 int getKeyCode() const 72 int getKeyCode() const
71 { 73 {
72 return keyCode; 74 return keyCode;
73 } 75 }
74 QString getChannel() const 76 QString getChannel() const
75 { 77 {
76 return channel; 78 return channel;
77 } 79 }
78 QString getMessage() const 80 QString getMessage() const
79 { 81 {
80 return message; 82 return message;
81 } 83 }
82 84
83private: 85private:
84 int keyCode; 86 int keyCode;
85 QString channel, message; 87 QString channel, message;
86}; 88};
87 89
88typedef QValueList<QCopKeyRegister> KeyRegisterList; 90typedef QValueList<QCopKeyRegister> KeyRegisterList;
89KeyRegisterList keyRegisterList; 91KeyRegisterList keyRegisterList;
90 92
91static Desktop* qpedesktop = 0; 93static Desktop* qpedesktop = 0;
92static int loggedin = 0; 94static int loggedin = 0;
93static void login( bool at_poweron ) 95static void login( bool at_poweron )
94{ 96{
95 if ( !loggedin ) { 97 if ( !loggedin ) {
96 Global::terminateBuiltin( "calibrate" ); 98 Global::terminateBuiltin( "calibrate" );
97 Password::authenticate( at_poweron ); 99 Password::authenticate( at_poweron );
98 loggedin = 1; 100 loggedin = 1;
99 QCopEnvelope e( "QPE/Desktop", "unlocked()" ); 101 QCopEnvelope e( "QPE/Desktop", "unlocked()" );
100 } 102 }
101} 103}
102 104
103bool Desktop::screenLocked() 105bool Desktop::screenLocked()
104{ 106{
105 return loggedin == 0; 107 return loggedin == 0;
106} 108}
107 109
108/* 110/*
@@ -132,97 +134,97 @@ private:
132 134
133void DesktopPowerAlerter::alert( const QString &text, int priority ) 135void DesktopPowerAlerter::alert( const QString &text, int priority )
134{ 136{
135 alertCount++; 137 alertCount++;
136 if ( alertCount < priority ) 138 if ( alertCount < priority )
137 return ; 139 return ;
138 if ( priority > currentPriority ) 140 if ( priority > currentPriority )
139 return ; 141 return ;
140 currentPriority = priority; 142 currentPriority = priority;
141 setText( text ); 143 setText( text );
142 show(); 144 show();
143} 145}
144 146
145 147
146void DesktopPowerAlerter::hideEvent( QHideEvent *e ) 148void DesktopPowerAlerter::hideEvent( QHideEvent *e )
147{ 149{
148 QMessageBox::hideEvent( e ); 150 QMessageBox::hideEvent( e );
149 alertCount = 0; 151 alertCount = 0;
150 currentPriority = INT_MAX; 152 currentPriority = INT_MAX;
151} 153}
152 154
153 155
154class QPEScreenSaver : public QWSScreenSaver 156class QPEScreenSaver : public QWSScreenSaver
155{ 157{
156private: 158private:
157 int LcdOn; 159 int LcdOn;
158 160
159public: 161public:
160 QPEScreenSaver() 162 QPEScreenSaver()
161 { 163 {
162 m_disable_suspend = 100; 164 m_disable_suspend = 100;
163 m_enable_dim = false; 165 m_enable_dim = false;
164 m_enable_lightoff = false; 166 m_enable_lightoff = false;
165 m_enable_onlylcdoff = false; 167 m_enable_onlylcdoff = false;
166 168
167 m_lcd_status = true; 169 m_lcd_status = true;
168 170
169 m_backlight_bright = -1; 171 m_backlight_bright = -1;
170 m_backlight_forcedoff = false; 172 m_backlight_forcedoff = false;
171 173
172 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off) 174 // Make sure the LCD is in fact on, (if opie was killed while the LCD is off it would still be off)
173 ODevice::inst ( ) -> setDisplayStatus ( true ); 175 ODevice::inst ( ) -> setDisplayStatus ( true );
174 } 176 }
175 void restore() 177 void restore()
176 { 178 {
177 if ( !m_lcd_status ) // We must have turned it off 179 if ( !m_lcd_status ) // We must have turned it off
178 ODevice::inst ( ) -> setDisplayStatus ( true ); 180 ODevice::inst ( ) -> setDisplayStatus ( true );
179 181
180 setBacklight ( -1 ); 182 setBacklight ( -3 );
181 } 183 }
182 bool save( int level ) 184 bool save( int level )
183 { 185 {
184 switch ( level ) { 186 switch ( level ) {
185 case 0: 187 case 0:
186 if ( m_disable_suspend > 0 && m_enable_dim ) { 188 if ( m_disable_suspend > 0 && m_enable_dim ) {
187 if ( backlight() > 1 ) 189 if ( backlight() > 1 )
188 setBacklight( 1 ); // lowest non-off 190 setBacklight( 1 ); // lowest non-off
189 } 191 }
190 return true; 192 return true;
191 break; 193 break;
192 case 1: 194 case 1:
193 if ( m_disable_suspend > 1 && m_enable_lightoff ) { 195 if ( m_disable_suspend > 1 && m_enable_lightoff ) {
194 setBacklight( 0 ); // off 196 setBacklight( 0 ); // off
195 } 197 }
196 return true; 198 return true;
197 break; 199 break;
198 case 2: 200 case 2:
199 if ( m_enable_onlylcdoff ) { 201 if ( m_enable_onlylcdoff ) {
200 ODevice::inst ( ) -> setDisplayStatus ( false ); 202 ODevice::inst ( ) -> setDisplayStatus ( false );
201 m_lcd_status = false; 203 m_lcd_status = false;
202 return true; 204 return true;
203 } 205 }
204 else // We're going to suspend the whole machine 206 else // We're going to suspend the whole machine
205 { 207 {
206 if ( ( m_disable_suspend > 2 ) && 208 if ( ( m_disable_suspend > 2 ) &&
207 ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) && 209 ( PowerStatusManager::readStatus().acStatus() != PowerStatus::Online ) &&
208 ( !Network::networkOnline ( ) ) ) { 210 ( !Network::networkOnline ( ) ) ) {
209 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE ); 211 QWSServer::sendKeyEvent( 0xffff, Qt::Key_F34, FALSE, TRUE, FALSE );
210 return true; 212 return true;
211 } 213 }
212 } 214 }
213 break; 215 break;
214 } 216 }
215 return false; 217 return false;
216 } 218 }
217 219
218private: 220private:
219 static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def ) 221 static int ssi( int interval, Config & config, const QString & enable, const QString & value, int def )
220 { 222 {
221 if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 ) 223 if ( !enable.isEmpty() && config.readNumEntry( enable, 0 ) == 0 )
222 return 0; 224 return 0;
223 225
224 if ( interval < 0 ) { 226 if ( interval < 0 ) {
225 // Restore screen blanking and power saving state 227 // Restore screen blanking and power saving state
226 interval = config.readNumEntry( value, def ); 228 interval = config.readNumEntry( value, def );
227 } 229 }
228 return interval; 230 return interval;
@@ -274,98 +276,103 @@ public:
274 Config config ( "qpe" ); 276 Config config ( "qpe" );
275 config. setGroup ( "Screensaver" ); 277 config. setGroup ( "Screensaver" );
276 m_backlight_bright = config. readNumEntry ( "Brightness", 255 ); 278 m_backlight_bright = config. readNumEntry ( "Brightness", 255 );
277 } 279 }
278 return m_backlight_bright; 280 return m_backlight_bright;
279 } 281 }
280 282
281 void setBacklight ( int bright ) 283 void setBacklight ( int bright )
282 { 284 {
283 if ( bright == -3 ) { 285 if ( bright == -3 ) {
284 // Forced on 286 // Forced on
285 m_backlight_forcedoff = false; 287 m_backlight_forcedoff = false;
286 bright = -1; 288 bright = -1;
287 } 289 }
288 if ( m_backlight_forcedoff && bright != -2 ) 290 if ( m_backlight_forcedoff && bright != -2 )
289 return ; 291 return ;
290 if ( bright == -2 ) { 292 if ( bright == -2 ) {
291 // Toggle between off and on 293 // Toggle between off and on
292 bright = m_backlight_bright ? 0 : -1; 294 bright = m_backlight_bright ? 0 : -1;
293 m_backlight_forcedoff = !bright; 295 m_backlight_forcedoff = !bright;
294 } 296 }
295 297
296 m_backlight_bright = bright; 298 m_backlight_bright = bright;
297 299
298 bright = backlight ( ); 300 bright = backlight ( );
299 ODevice::inst ( ) -> setDisplayBrightness ( bright ); 301 ODevice::inst ( ) -> setDisplayBrightness ( bright );
300 302
301 m_backlight_bright = bright; 303 m_backlight_bright = bright;
302 } 304 }
303 305
304private: 306private:
305 int m_disable_suspend; 307 int m_disable_suspend;
306 bool m_enable_dim; 308 bool m_enable_dim;
307 bool m_enable_lightoff; 309 bool m_enable_lightoff;
308 bool m_enable_onlylcdoff; 310 bool m_enable_onlylcdoff;
309 311
310 bool m_lcd_status; 312 bool m_lcd_status;
311 313
312 int m_backlight_bright; 314 int m_backlight_bright;
313 bool m_backlight_forcedoff; 315 bool m_backlight_forcedoff;
314}; 316};
315 317
316 318
317void DesktopApplication::switchLCD ( bool on ) 319void DesktopApplication::switchLCD ( bool on )
318{ 320{
319 if ( qApp ) { 321 if ( qApp ) {
320 DesktopApplication *dapp = (DesktopApplication *) qApp; 322 DesktopApplication *dapp = (DesktopApplication *) qApp;
321 323
322 if ( dapp-> m_screensaver ) 324 if ( dapp-> m_screensaver ) {
323 dapp-> m_screensaver-> setBacklight ( on ? -3 : -1 ); 325 if ( on )
326 dapp-> m_screensaver-> restore ( ); //setBacklight ( on ? -3 : -1 );
327 else
328 dapp-> m_screensaver-> save ( 1 );
329
330 }
324 } 331 }
325} 332}
326 333
327 334
328DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType ) 335DesktopApplication::DesktopApplication( int& argc, char **argv, Type appType )
329 : QPEApplication( argc, argv, appType ) 336 : QPEApplication( argc, argv, appType )
330{ 337{
331 338
332 QTimer * t = new QTimer( this ); 339 QTimer * t = new QTimer( this );
333 connect( t, SIGNAL( timeout() ), this, SLOT( psTimeout() ) ); 340 connect( t, SIGNAL( timeout() ), this, SLOT( psTimeout() ) );
334 t->start( 10000 ); 341 t->start( 10000 );
335 ps = new PowerStatus; 342 ps = new PowerStatus;
336 pa = new DesktopPowerAlerter( 0 ); 343 pa = new DesktopPowerAlerter( 0 );
337 344
338 channel = new QCopChannel( "QPE/Desktop", this ); 345 channel = new QCopChannel( "QPE/Desktop", this );
339 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ), 346 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
340 this, SLOT( desktopMessage( const QCString&, const QByteArray& ) ) ); 347 this, SLOT( desktopMessage( const QCString&, const QByteArray& ) ) );
341 348
342 channel = new QCopChannel( "QPE/System", this ); 349 channel = new QCopChannel( "QPE/System", this );
343 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ), 350 connect( channel, SIGNAL( received( const QCString&, const QByteArray& ) ),
344 this, SLOT( systemMessage( const QCString&, const QByteArray& ) ) ); 351 this, SLOT( systemMessage( const QCString&, const QByteArray& ) ) );
345 352
346 m_screensaver = new QPEScreenSaver; 353 m_screensaver = new QPEScreenSaver;
347 354
348 m_screensaver-> setInterval ( -1 ); 355 m_screensaver-> setInterval ( -1 );
349 QWSServer::setScreenSaver( m_screensaver ); 356 QWSServer::setScreenSaver( m_screensaver );
350} 357}
351 358
352 359
353DesktopApplication::~DesktopApplication() 360DesktopApplication::~DesktopApplication()
354{ 361{
355 delete ps; 362 delete ps;
356 delete pa; 363 delete pa;
357} 364}
358 365
359void DesktopApplication::desktopMessage( const QCString &msg, const QByteArray &data ) 366void DesktopApplication::desktopMessage( const QCString &msg, const QByteArray &data )
360{ 367{
361#ifdef Q_WS_QWS 368#ifdef Q_WS_QWS
362 QDataStream stream( data, IO_ReadOnly ); 369 QDataStream stream( data, IO_ReadOnly );
363 if ( msg == "keyRegister(int key, QString channel, QString message)" ) { 370 if ( msg == "keyRegister(int key, QString channel, QString message)" ) {
364 int k; 371 int k;
365 QString c, m; 372 QString c, m;
366 stream >> k; 373 stream >> k;
367 stream >> c; 374 stream >> c;
368 stream >> m; 375 stream >> m;
369 376
370 qWarning( "KeyRegisterReceived: %i, %s, %s", k, ( const char* ) c, ( const char * ) m ); 377 qWarning( "KeyRegisterReceived: %i, %s, %s", k, ( const char* ) c, ( const char * ) m );
371 keyRegisterList.append( QCopKeyRegister( k, c, m ) ); 378 keyRegisterList.append( QCopKeyRegister( k, c, m ) );
@@ -961,75 +968,48 @@ void Desktop::startTransferServer()
961 delete transferServer; 968 delete transferServer;
962 transferServer = 0; 969 transferServer = 0;
963 } 970 }
964 if ( !transferServer || !qcopBridge ) 971 if ( !transferServer || !qcopBridge )
965 startTimer( 2000 ); 972 startTimer( 2000 );
966} 973}
967 974
968void Desktop::timerEvent( QTimerEvent *e ) 975void Desktop::timerEvent( QTimerEvent *e )
969{ 976{
970 killTimer( e->timerId() ); 977 killTimer( e->timerId() );
971 startTransferServer(); 978 startTransferServer();
972} 979}
973 980
974void Desktop::terminateServers() 981void Desktop::terminateServers()
975{ 982{
976 delete transferServer; 983 delete transferServer;
977 delete qcopBridge; 984 delete qcopBridge;
978 transferServer = 0; 985 transferServer = 0;
979 qcopBridge = 0; 986 qcopBridge = 0;
980} 987}
981 988
982void Desktop::rereadVolumes() 989void Desktop::rereadVolumes()
983{ 990{
984 Config cfg( "qpe" ); 991 Config cfg( "qpe" );
985 cfg.setGroup( "Volume" ); 992 cfg.setGroup( "Volume" );
986 touchclick = cfg.readBoolEntry( "TouchSound" ); 993 touchclick = cfg.readBoolEntry( "TouchSound" );
987 keyclick = cfg.readBoolEntry( "KeySound" ); 994 keyclick = cfg.readBoolEntry( "KeySound" );
988 alarmsound = cfg.readBoolEntry( "AlarmSound" ); 995 alarmsound = cfg.readBoolEntry( "AlarmSound" );
989} 996}
990 997
991void Desktop::keyClick() 998void Desktop::keyClick()
992{ 999{
993 if ( keyclick ) 1000 if ( keyclick )
994 ODevice::inst ( ) -> keySound ( ); 1001 ODevice::inst ( ) -> keySound ( );
995} 1002}
996 1003
997void Desktop::screenClick() 1004void Desktop::screenClick()
998{ 1005{
999 if ( touchclick ) 1006 if ( touchclick )
1000 ODevice::inst ( ) -> touchSound ( ); 1007 ODevice::inst ( ) -> touchSound ( );
1001} 1008}
1002 1009
1003void Desktop::soundAlarm() 1010void Desktop::soundAlarm()
1004{ 1011{
1005 if ( qpedesktop-> alarmsound ) 1012 if ( qpedesktop-> alarmsound )
1006 ODevice::inst ( ) -> alarmSound ( ); 1013 ODevice::inst ( ) -> alarmSound ( );
1007} 1014}
1008 1015
1009bool Desktop::eventFilter( QObject *, QEvent *ev )
1010{
1011 if ( ev-> type ( ) == QEvent::KeyPress ) {
1012 QKeyEvent * ke = ( QKeyEvent * ) ev;
1013 if ( ke-> key ( ) == Qt::Key_F11 ) { // menu key
1014 QWidget * active = qApp-> activeWindow ( );
1015
1016 if ( active && active-> isPopup ( ) )
1017 active->close();
1018
1019 /*
1020 * On iPAQ 38xx that key is not the "menu key" but the mail key
1021 * To not confuse the users, make it launch the mail app on 38xx
1022 */
1023 if ( ODevice::inst() ->model() == OMODEL_iPAQ_H38xx ) {
1024 QCopEnvelope e( "QPE/System", "execute(QString)" );
1025 e << QString( "mail" );
1026 return true;
1027 }
1028 else {
1029 raiseMenu ( );
1030 return true;
1031 }
1032 }
1033 }
1034 return false;
1035}
diff --git a/core/launcher/desktop.h b/core/launcher/desktop.h
index b9ff39f..f7c3e3f 100644
--- a/core/launcher/desktop.h
+++ b/core/launcher/desktop.h
@@ -77,69 +77,68 @@ public slots:
77protected slots: 77protected slots:
78 void shutdown( ShutdownImpl::Type ); 78 void shutdown( ShutdownImpl::Type );
79 void psTimeout(); 79 void psTimeout();
80 void sendCard(); 80 void sendCard();
81private: 81private:
82 DesktopPowerAlerter *pa; 82 DesktopPowerAlerter *pa;
83 PowerStatus *ps; 83 PowerStatus *ps;
84 QTimer *cardSendTimer; 84 QTimer *cardSendTimer;
85 QCopChannel *channel; 85 QCopChannel *channel;
86 QPEScreenSaver *m_screensaver; 86 QPEScreenSaver *m_screensaver;
87}; 87};
88 88
89 89
90class Desktop : public QWidget 90class Desktop : public QWidget
91{ 91{
92 Q_OBJECT 92 Q_OBJECT
93public: 93public:
94 Desktop(); 94 Desktop();
95 ~Desktop(); 95 ~Desktop();
96 96
97 static bool screenLocked(); 97 static bool screenLocked();
98 98
99 void show(); 99 void show();
100 void checkMemory(); 100 void checkMemory();
101 101
102 void keyClick(); 102 void keyClick();
103 void screenClick(); 103 void screenClick();
104 static void soundAlarm(); 104 static void soundAlarm();
105 105
106public slots: 106public slots:
107 void raiseDatebook(); 107 void raiseDatebook();
108 void raiseContacts(); 108 void raiseContacts();
109 void raiseMenu(); 109 void raiseMenu();
110 void raiseLauncher(); 110 void raiseLauncher();
111 void raiseEmail(); 111 void raiseEmail();
112 void execAutoStart(); 112 void execAutoStart();
113 void togglePower(); 113 void togglePower();
114 void toggleLight(); 114 void toggleLight();
115 void toggleNumLockState(); 115 void toggleNumLockState();
116 void toggleCapsLockState(); 116 void toggleCapsLockState();
117 void toggleSymbolInput(); 117 void toggleSymbolInput();
118 void terminateServers(); 118 void terminateServers();
119 void rereadVolumes(); 119 void rereadVolumes();
120 120
121protected: 121protected:
122 void executeOrModify( const QString& appLnkFile ); 122 void executeOrModify( const QString& appLnkFile );
123 void styleChange( QStyle & ); 123 void styleChange( QStyle & );
124 void timerEvent( QTimerEvent *e ); 124 void timerEvent( QTimerEvent *e );
125 bool eventFilter( QObject *, QEvent * );
126 125
127 QWidget *bg; 126 QWidget *bg;
128 Launcher *launcher; 127 Launcher *launcher;
129 TaskBar *tb; 128 TaskBar *tb;
130 129
131private: 130private:
132 void startTransferServer(); 131 void startTransferServer();
133 bool recoverMemory(); 132 bool recoverMemory();
134 133
135 QCopBridge *qcopBridge; 134 QCopBridge *qcopBridge;
136 TransferServer *transferServer; 135 TransferServer *transferServer;
137 PackageSlave *packageSlave; 136 PackageSlave *packageSlave;
138 137
139 QDateTime suspendTime; 138 QDateTime suspendTime;
140 bool keyclick, touchclick, alarmsound; 139 bool keyclick, touchclick, alarmsound;
141}; 140};
142 141
143 142
144#endif // __DESKTOP_H__ 143#endif // __DESKTOP_H__
145 144