src/screensavershareddatamonitor.cpp
branchRCL_3
changeset 8 25957ccd51ab
parent 0 040fcad49f44
child 9 b3594157d381
--- 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