-rw-r--r-- | core/launcher/desktop.cpp | 28 | ||||
-rw-r--r-- | library/password.cpp | 24 | ||||
-rw-r--r-- | library/password.h | 1 |
3 files changed, 43 insertions, 10 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 @@ -182,5 +182,5 @@ public: } - setBacklight ( -3 ); + setBacklight ( -1 ); } bool save( int level ) @@ -333,9 +333,11 @@ void DesktopApplication::switchLCD ( bool on ) if ( dapp-> m_screensaver ) { - if ( on ) - dapp-> m_screensaver-> restore ( ); //setBacklight ( on ? -3 : -1 ); - else - dapp-> m_screensaver-> save ( 1 ); - + if ( on ) { + dapp-> m_screensaver-> setDisplayState ( true ); + dapp-> m_screensaver-> setBacklight ( -3 ); + } + else { + dapp-> m_screensaver-> setDisplayState ( false ); + } } } @@ -871,8 +873,18 @@ void Desktop::togglePower() suspendTime = QDateTime::currentDateTime(); +#ifdef QWS + if ( Password::needToAuthenticate ( true ) && qt_screen ) { + // Should use a big black window instead. + // But this would not show up fast enough + QGfx *g = qt_screen-> screenGfx ( ); + g-> fillRect ( 0, 0, qt_screen-> width ( ), qt_screen-> height ( )); + delete g; + } +#endif + ODevice::inst ( ) -> suspend ( ); - QWSServer::screenSaverActivate ( false ); DesktopApplication::switchLCD ( true ); // force LCD on without slow qcop call + QWSServer::screenSaverActivate ( false ); { @@ -881,5 +893,5 @@ void Desktop::togglePower() if ( wasloggedin ) - login( TRUE ); + login ( true ); execAutoStart(); diff --git a/library/password.cpp b/library/password.cpp index 4b22b65..6d126c4 100644 --- a/library/password.cpp +++ b/library/password.cpp @@ -28,5 +28,5 @@ #include <qapplication.h> #include <qfile.h> -#include <qwindowsystem_qws.h> +//#include <qwindowsystem_qws.h> #include <qdialog.h> @@ -286,4 +286,23 @@ QString Password::getPassword( const QString& prompt ) /*! + Return if a prompt for the user's passcode is needed. + + If \a at_poweron is TRUE, the dialog is only used if the user's + preference request it at poweron + + Opie extension to speed up suspend/resume. +*/ + +bool Password::needToAuthenticate(bool at_poweron) +{ + Config cfg("Security"); + cfg.setGroup("Passcode"); + QString passcode = cfg.readEntry("passcode"); + + return ( !passcode.isEmpty() + && (!at_poweron || cfg.readNumEntry("passcode_poweron",0)) ); +} + +/*! Prompt, fullscreen, for the user's passcode until they get it right. @@ -325,5 +344,6 @@ void Password::authenticate(bool at_poweron) } else if ( at_poweron ) { // refresh screen #### should probably be in caller - // Not needed (we took away the screen blacking) + // Not needed (we took away the screen blacking) TT + // Not needed (we have intelligent screen blacking) sandman //if ( qwsServer ) //qwsServer->refresh(); diff --git a/library/password.h b/library/password.h index a3a3e45..a2f2c3c 100644 --- a/library/password.h +++ b/library/password.h @@ -26,4 +26,5 @@ class Password { public: + static bool needToAuthenticate(bool atpoweron=FALSE); // Opie extension to speed up suspend/resume (sandman) static void authenticate(bool atpoweron=FALSE); static QString getPassword( const QString& prompt ); |