diff -r 2e08ef6b6eda -r 1f307dce3b5a src/screensavershareddatamonitor.cpp --- a/src/screensavershareddatamonitor.cpp Tue May 25 12:43:23 2010 +0300 +++ b/src/screensavershareddatamonitor.cpp Wed Jun 09 09:42:47 2010 +0300 @@ -26,6 +26,8 @@ #include #include // kuikmmcinserted #include +#include +#include #ifdef RD_UI_TRANSITION_EFFECTS_PHASE2 #include @@ -72,6 +74,9 @@ DeleteSubscriber( iChargerStateSubscriber ); iChargerStateProperty.Close(); + + delete iMessageWaitingWatcher; + delete iMessageWaitingRepository; } // ----------------------------------------------------------------------------- @@ -150,6 +155,12 @@ iChargerStateSubscriber = new (ELeave) CSubscriber( TCallBack( HandleChargerStateChanged, this ), iChargerStateProperty ); iChargerStateSubscriber->SubscribeL(); + + iMessageWaitingRepository = CRepository::NewL( KCRUidCtsyMessageWaitingIndicator ); + iMessageWaitingWatcher = CScreensaverRepositoryWatcher::NewL( KCRUidCtsyMessageWaitingIndicator, + TCallBack( HandleMessageWaitingStateChanged, this ), + iMessageWaitingRepository ); + } // ----------------------------------------------------------------------------- @@ -250,22 +261,7 @@ CScreensaverSharedDataMonitor* _this = STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr); - if ( _this->iData->IsKeyguardOn() ) - { - // Keys locked - if screensaver is running, this was caused by - // automatic keyguard and screensaver should refresh the view - // to show the keylock indicator - if ( _this->Model().ScreenSaverIsOn() ) - { - _this->View()->UpdateAndRefresh(); - } - _this->Model().StartScreenSaver(); - } - else - { - _this->Model().StopScreenSaver(); - } - + _this->Model().HandleKeyguardStateChanged( _this->iData->IsKeyguardOn() ); return KErrNone; } @@ -363,4 +359,18 @@ return KErrNone; } +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CScreensaverSharedDataMonitor::HandleMessageWaitingStateChanged( TAny* aPtr ) + { + CScreensaverSharedDataMonitor* self = STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr); + if ( self->iMessageWaitingWatcher->ChangedKey() == KCtsyMessageWaitingDisplayStatus ) + { + self->View()->UpdateAndRefresh(); + } + return KErrNone; + } + // End of file