src/screensaverctrlnone.cpp
branchRCL_3
changeset 27 fc25e03508fd
parent 26 e8d784ac1a4b
--- a/src/screensaverctrlnone.cpp	Wed Sep 01 12:30:40 2010 +0100
+++ b/src/screensaverctrlnone.cpp	Tue Sep 14 21:20:26 2010 +0300
@@ -29,6 +29,10 @@
 const TInt KDisplayOff = 0;
 const TInt KDisplayOn = 1;
 
+
+const TInt KTimerDelay = 60*1000*1000;  // 60 seconds
+const TInt KTimerInterval = KTimerDelay; 
+
 // -----------------------------------------------------------------------------
 // CScreensaverCtrlNone::NewL
 // -----------------------------------------------------------------------------
@@ -48,6 +52,12 @@
 //
 CScreensaverCtrlNone::~CScreensaverCtrlNone()
     {
+	if( iTimer )
+		{
+        iTimer->Cancel();
+        delete iTimer;
+		}
+    
     }
 
 // -----------------------------------------------------------------------------
@@ -74,7 +84,6 @@
     {
     SCRLOGGER_WRITEF( _L("SCR:CScreensaverCtrlNone::ClearScreen start") );
     SwitchDisplayState( KDisplayOn );
-    
     SwitchLights( ESSForceLightsOn );
     }
 
@@ -151,7 +160,10 @@
 //
 void CScreensaverCtrlNone::ConstructL()
     {
-    CreateWindowL();
+    iTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+    iTimer->Start( KTimerDelay, KTimerInterval,
+                            TCallBack( CloseDisplayResource,this ) );
+	CreateWindowL();
     SetRect( iCoeEnv->ScreenDevice()->SizeInPixels() );
     ActivateL();
     }
@@ -191,5 +203,25 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// CScreensaverCtrlNone::CloseDisplayResource
+// -----------------------------------------------------------------------------
+//
+TInt CScreensaverCtrlNone::CloseDisplayResource( TAny* aPtr )
+    {
+    SCRLOGGER_WRITEF( _L("CScreensaverCtrlNone::CloseResource()") );
+    CScreensaverCtrlNone* ctrl = static_cast<CScreensaverCtrlNone*>( aPtr );
+	
+    if( ctrl && ctrl->Model().ScreenSaverIsOn() && !ctrl->Model().ScreenSaverIsPreviewing() )
+        {
+        ctrl->SwitchDisplayState( KDisplayOff );
+        ctrl->SwitchLights( ESSForceLightsOff );
+        return KErrNone;
+        }
+    else
+        {
+        return KErrGeneral;
+        }
+    }
 
 //End of file