summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/desktop.cpp34
-rw-r--r--library/password.cpp24
-rw-r--r--library/password.h1
3 files changed, 46 insertions, 13 deletions
diff --git a/core/launcher/desktop.cpp b/core/launcher/desktop.cpp
index 0e60839..d74b745 100644
--- a/core/launcher/desktop.cpp
+++ b/core/launcher/desktop.cpp
@@ -183,3 +183,3 @@ public:
183 183
184 setBacklight ( -3 ); 184 setBacklight ( -1 );
185 } 185 }
@@ -334,8 +334,10 @@ void DesktopApplication::switchLCD ( bool on )
334 if ( dapp-> m_screensaver ) { 334 if ( dapp-> m_screensaver ) {
335 if ( on ) 335 if ( on ) {
336 dapp-> m_screensaver-> restore ( ); //setBacklight ( on ? -3 : -1 ); 336 dapp-> m_screensaver-> setDisplayState ( true );
337 else 337 dapp-> m_screensaver-> setBacklight ( -3 );
338 dapp-> m_screensaver-> save ( 1 ); 338 }
339 339 else {
340 } 340 dapp-> m_screensaver-> setDisplayState ( false );
341 }
342 }
341 } 343 }
@@ -864,3 +866,3 @@ void Desktop::togglePower()
864 if ( excllock ) 866 if ( excllock )
865 return ; 867 return;
866 868
@@ -872,6 +874,16 @@ void Desktop::togglePower()
872 874
873 ODevice::inst ( ) -> suspend ( ); 875#ifdef QWS
876 if ( Password::needToAuthenticate ( true ) && qt_screen ) {
877 // Should use a big black window instead.
878 // But this would not show up fast enough
879 QGfx *g = qt_screen-> screenGfx ( );
880 g-> fillRect ( 0, 0, qt_screen-> width ( ), qt_screen-> height ( ));
881 delete g;
882 }
883#endif
884
885 ODevice::inst ( )-> suspend ( );
874 886
875 QWSServer::screenSaverActivate ( false );
876 DesktopApplication::switchLCD ( true ); // force LCD on without slow qcop call 887 DesktopApplication::switchLCD ( true ); // force LCD on without slow qcop call
888 QWSServer::screenSaverActivate ( false );
877 889
@@ -882,3 +894,3 @@ void Desktop::togglePower()
882 if ( wasloggedin ) 894 if ( wasloggedin )
883 login( TRUE ); 895 login ( true );
884 896
diff --git a/library/password.cpp b/library/password.cpp
index 4b22b65..6d126c4 100644
--- a/library/password.cpp
+++ b/library/password.cpp
@@ -29,3 +29,3 @@
29#include <qfile.h> 29#include <qfile.h>
30#include <qwindowsystem_qws.h> 30//#include <qwindowsystem_qws.h>
31 31
@@ -287,2 +287,21 @@ QString Password::getPassword( const QString& prompt )
287/*! 287/*!
288 Return if a prompt for the user's passcode is needed.
289
290 If \a at_poweron is TRUE, the dialog is only used if the user's
291 preference request it at poweron
292
293 Opie extension to speed up suspend/resume.
294*/
295
296bool Password::needToAuthenticate(bool at_poweron)
297{
298 Config cfg("Security");
299 cfg.setGroup("Passcode");
300 QString passcode = cfg.readEntry("passcode");
301
302 return ( !passcode.isEmpty()
303 && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) );
304}
305
306/*!
288 Prompt, fullscreen, for the user's passcode until they get it right. 307 Prompt, fullscreen, for the user's passcode until they get it right.
@@ -326,3 +345,4 @@ void Password::authenticate(bool at_poweron)
326 // refresh screen #### should probably be in caller 345 // refresh screen #### should probably be in caller
327 // Not needed (we took away the screen blacking) 346 // Not needed (we took away the screen blacking) TT
347 // Not needed (we have intelligent screen blacking) sandman
328 //if ( qwsServer ) 348 //if ( qwsServer )
diff --git a/library/password.h b/library/password.h
index a3a3e45..a2f2c3c 100644
--- a/library/password.h
+++ b/library/password.h
@@ -27,2 +27,3 @@ class Password
27public: 27public:
28 static bool needToAuthenticate(bool atpoweron=FALSE); // Opie extension to speed up suspend/resume (sandman)
28 static void authenticate(bool atpoweron=FALSE); 29 static void authenticate(bool atpoweron=FALSE);