--- a/src/screensavershareddatamonitor.cpp Fri Feb 19 22:51:44 2010 +0200
+++ b/src/screensavershareddatamonitor.cpp Fri Mar 12 15:42:50 2010 +0200
@@ -65,6 +65,9 @@
DeleteSubscriber( iShuttingDownSubscriber );
iShuttingDownProperty.Close();
+
+ DeleteSubscriber( iActivateSSSubscriber );
+ iActivateSSProperty.Close();
}
// -----------------------------------------------------------------------------
@@ -133,6 +136,10 @@
iShuttingDownSubscriber = new (ELeave) CSubscriber(
TCallBack(HandleShuttingDownStateChanged, this), iShuttingDownProperty);
iShuttingDownSubscriber->SubscribeL();
+
+ User::LeaveIfError( iActivateSSProperty.Attach( KPSUidScreenSaver, KScreenSaverActivate ) );
+ iActivateSSSubscriber = new( ELeave ) CSubscriber( TCallBack( HandleActivateSSChanged, this ), iActivateSSProperty );
+ iActivateSSSubscriber->SubscribeL();
}
// -----------------------------------------------------------------------------
@@ -236,10 +243,16 @@
// 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() )
+/* if ( _this->Model().ScreenSaverIsOn() )
{
_this->View()->UpdateAndRefresh();
}
+*/
+ _this->Model().StartScreenSaver();
+ }
+ else
+ {
+ _this->Model().StopScreenSaver();
}
return KErrNone;
@@ -280,4 +293,31 @@
return KErrNone;
}
+
+TInt CScreensaverSharedDataMonitor::HandleActivateSSChanged( TAny* aPtr )
+ {
+ TInt activateState = -1;
+
+ RProperty::Get( KPSUidScreenSaver, KScreenSaverActivate, activateState );
+
+ if( activateState && -1 != activateState )
+ {
+ // Enable SS
+ SCRLOGGER_WRITE("SharedDataMonitor: Activate SS");
+ STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr)->Model().StartScreenSaver();
+ }
+ else if ( !activateState )
+ {
+ // Disable SS
+ SCRLOGGER_WRITE("SharedDataMonitor: Stop SS");
+ STATIC_CAST(CScreensaverSharedDataMonitor*, aPtr)->Model().StopScreenSaver();
+ }
+ else
+ {
+ // Unknown state
+ }
+ return KErrNone;
+ }
+
+
// End of file