src/screensaverengine.cpp
branchRCL_3
changeset 14 d8eca2b0590d
parent 12 0bfd55b8504e
child 15 2e08ef6b6eda
equal deleted inserted replaced
12:0bfd55b8504e 14:d8eca2b0590d
    21 #include <featmgr.h>
    21 #include <featmgr.h>
    22 #include <PUAcodes.hrh>
    22 #include <PUAcodes.hrh>
    23 #include <Profile.hrh>
    23 #include <Profile.hrh>
    24 #include <screensaver.rsg>
    24 #include <screensaver.rsg>
    25 #include <AknUtils.h>
    25 #include <AknUtils.h>
       
    26 #include <activitymanager.h>
    26 
    27 
    27 #include "screensaverengine.h"
    28 #include "screensaverengine.h"
    28 #include "screensaverctrlmovingtext.h"
    29 #include "screensaverctrlmovingtext.h"
    29 #include "screensavershareddatai.h"
    30 #include "screensavershareddatai.h"
    30 #include "screensavershareddatamonitor.h"
    31 #include "screensavershareddatamonitor.h"
    31 #include "screensaverappui.h"
    32 #include "screensaverappui.h"
    32 #include "ScreensaverUtils.h"
    33 #include "ScreensaverUtils.h"
    33 #include "screensaverutility.h"
    34 #include "screensaverutility.h"
    34 #include "screensaveractivitymanager.h"
       
    35 
       
    36 
    35 
    37 // Minimum plugin suspension time
    36 // Minimum plugin suspension time
    38 const TInt KMinPluginSuspensionTime = 500000; // 0.5 sec
    37 const TInt KMinPluginSuspensionTime = 500000; // 0.5 sec
    39 
    38 
    40 // Inactivity timeout in seconds when keys locked
    39 // Inactivity timeout in seconds when keys locked
    41 const TInt KTimeoutShort = 5;
    40 const TInt KTimeoutShort = 5;
    42 
    41 
    43 const TInt KNoPreview = 0;
    42 const TInt KNoPreview = 0;
    44 
    43 
    45 const TInt KPreviewTimeout = 10000000; // 10 sec
    44 const TInt KPreviewTimeout = 10000000; // 10 sec
    46 const TInt KIgnoreActivityTimeout = 500000; // 0.5 sec
       
    47 
    45 
    48 const TText KSilentProfileInd= KPuaCodeSilentSymbol;
    46 const TText KSilentProfileInd= KPuaCodeSilentSymbol;
    49 const TText KSilentVibraInd= KPuaCodeAprofSilentVibra;
    47 const TText KSilentVibraInd= KPuaCodeAprofSilentVibra;
    50 const TText KSoundVibraInd= KPuaCodeAprofSoundVibra;
    48 const TText KSoundVibraInd= KPuaCodeAprofSoundVibra;
    51 const TText KSoundInd= KPuaCodeAprofSound;
    49 const TText KSoundInd= KPuaCodeAprofSound;
    75     StopActivityMonitoring( iActivityManagerScreensaverShort );
    73     StopActivityMonitoring( iActivityManagerScreensaverShort );
    76     DisableSharedDataAndMonitor();
    74     DisableSharedDataAndMonitor();
    77     delete iIndicatorArray;
    75     delete iIndicatorArray;
    78     KillTimer( iPreviewTimer );
    76     KillTimer( iPreviewTimer );
    79     KillTimer( iExpiryTimer );
    77     KillTimer( iExpiryTimer );
    80     KillTimer( iIgnoreActivityResetTimer );
       
    81     iAknUiServer.Close();
    78     iAknUiServer.Close();
    82     }
    79     }
    83 
    80 
    84 // -----------------------------------------------------------------------------
    81 // -----------------------------------------------------------------------------
    85 // CScreensaverEngine::SharedDataInterface
    82 // CScreensaverEngine::SharedDataInterface
   226 // -----------------------------------------------------------------------------
   223 // -----------------------------------------------------------------------------
   227 //
   224 //
   228 void CScreensaverEngine::StartPreviewModeL( )
   225 void CScreensaverEngine::StartPreviewModeL( )
   229     {
   226     {
   230     SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::StartPreviewModeL()") );
   227     SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::StartPreviewModeL()") );
   231     iActivityManagerScreensaverShort->SetInactivityTimeout(0);
       
   232     
   228     
   233     iScreenSaverIsPreviewing = ETrue;
   229     iScreenSaverIsPreviewing = ETrue;
   234     // Change the display object into what's being previewed
   230     // Change the display object into what's being previewed
   235     View()->CreatePreviewDisplayObjectL();
   231     View()->CreatePreviewDisplayObjectL();
   236 
   232 
   561     // called after the interval time expired.
   557     // called after the interval time expired.
   562     User::ResetInactivityTime();
   558     User::ResetInactivityTime();
   563 
   559 
   564     // Start monitoring activity for screensaver
   560     // Start monitoring activity for screensaver
   565     iActivityManagerScreensaver
   561     iActivityManagerScreensaver
   566         = CScreensaverActivityManager::NewL( CActive::EPriorityStandard );
   562         = CUserActivityManager::NewL( CActive::EPriorityStandard );
   567         iActivityManagerScreensaver->Start( Timeout(), 
   563         iActivityManagerScreensaver->Start( Timeout(), 
   568             TCallBack( HandleInactiveEventL,this ),
   564             TCallBack( HandleInactiveEventL,this ),
   569             TCallBack( HandleActiveEventL, this ) );
   565             TCallBack( HandleActiveEventL, this ) );
   570 
   566 
   571     // Start monitoring activity for screensaver, short timeout
   567     // Start monitoring activity for screensaver, short timeout
   572     iActivityManagerScreensaverShort
   568     iActivityManagerScreensaverShort
   573         = CScreensaverActivityManager::NewL( CActive::EPriorityUserInput );
   569         = CUserActivityManager::NewL( CActive::EPriorityUserInput );
   574     
   570     
   575         iActivityManagerScreensaverShort->Start( KTimeoutShort, 
   571         iActivityManagerScreensaverShort->Start( KTimeoutShort, 
   576             TCallBack( HandleInactiveEventShortL, this ), 
   572             TCallBack( HandleInactiveEventShortL, this ), 
   577             TCallBack( HandleActiveEventShortL, this ) );
   573             TCallBack( HandleActiveEventShortL, this ) );
   578     }
   574     }
   579 
   575 
   580 // -----------------------------------------------------------------------------
   576 // -----------------------------------------------------------------------------
   581 // CScreensaverEngine::StopActivityMonitoring
   577 // CScreensaverEngine::StopActivityMonitoring
   582 // -----------------------------------------------------------------------------
   578 // -----------------------------------------------------------------------------
   583 //
   579 //
   584 void CScreensaverEngine::StopActivityMonitoring( CScreensaverActivityManager*& aActivityManager )
   580 void CScreensaverEngine::StopActivityMonitoring( CUserActivityManager*& aActivityManager )
   585     {
   581     {
   586     if ( aActivityManager )
   582     if ( aActivityManager )
   587         {
   583         {
   588         aActivityManager->Cancel();
   584         aActivityManager->Cancel();
   589         delete aActivityManager;
   585         delete aActivityManager;
   731 // CScreensaverEngine::HandleActiveEventShortL
   727 // CScreensaverEngine::HandleActiveEventShortL
   732 // -----------------------------------------------------------------------------
   728 // -----------------------------------------------------------------------------
   733 //
   729 //
   734 TInt CScreensaverEngine::HandleActiveEventShortL( TAny* aPtr )
   730 TInt CScreensaverEngine::HandleActiveEventShortL( TAny* aPtr )
   735     {
   731     {
   736     SCRLOGGER_WRITE("HandleActiveEventShortL(), stopping saver");
   732     SCRLOGGER_WRITE("HandleActiveEventShortL()");
   737     CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr);
       
   738     if ( !_this->iIgnoreNextActivity )
       
   739         {
       
   740         _this->StopScreenSaver();
       
   741         }
       
   742     else
       
   743         {
       
   744         _this->iActivityManagerScreensaverShort->SetInactivityTimeout(0);
       
   745         }
       
   746     return KErrNone;
   733     return KErrNone;
   747     }
   734     }
   748 
   735 
   749 // -----------------------------------------------------------------------------
   736 // -----------------------------------------------------------------------------
   750 // CScreensaverEngine::HandleInactiveEventShortL
   737 // CScreensaverEngine::HandleInactiveEventShortL
   753 TInt CScreensaverEngine::HandleInactiveEventShortL( TAny* aPtr )
   740 TInt CScreensaverEngine::HandleInactiveEventShortL( TAny* aPtr )
   754     {
   741     {
   755     SCRLOGGER_WRITE("HandleInactiveEventShortL()");
   742     SCRLOGGER_WRITE("HandleInactiveEventShortL()");
   756     // Start, if keys are locked and short timeout in use
   743     // Start, if keys are locked and short timeout in use
   757     CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr);
   744     CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr);
   758     // Restore inactivity timeout if it was reset at keylock activation
       
   759     _this->iActivityManagerScreensaverShort->SetInactivityTimeout(KTimeoutShort);
       
   760     _this->iIgnoreNextActivity = EFalse;
       
   761     
       
   762     if ( _this->iSharedDataI->IsKeyguardOn() )
   745     if ( _this->iSharedDataI->IsKeyguardOn() )
   763         {
   746         {
   764         SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver");
   747         SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver");
   765         _this->StartScreenSaver( );
   748         _this->StartScreenSaver( );
   766         }
   749         }
   780     control->KillTimer( control->iSuspendTimer );
   763     control->KillTimer( control->iSuspendTimer );
   781     
   764     
   782     control->View()->SetDisplayObject( EDisplayPlugin );
   765     control->View()->SetDisplayObject( EDisplayPlugin );
   783     control->View()->ShowDisplayObject();
   766     control->View()->ShowDisplayObject();
   784 
   767 
   785     return KErrNone;
       
   786     }
       
   787 
       
   788 // ---------------------------------------------------------------------------
       
   789 // CScreensaverEngine::ResetIgnoreFlagCb
       
   790 // ---------------------------------------------------------------------------
       
   791 //
       
   792 TInt CScreensaverEngine::ResetIgnoreFlagCb( TAny* aPtr )
       
   793     {
       
   794     CScreensaverEngine* engine = STATIC_CAST(CScreensaverEngine*, aPtr);
       
   795     engine->KillTimer( engine->iIgnoreActivityResetTimer );
       
   796     engine->iIgnoreNextActivity = EFalse;
       
   797     
       
   798     return KErrNone;
   768     return KErrNone;
   799     }
   769     }
   800 
   770 
   801 // ---------------------------------------------------------------------------
   771 // ---------------------------------------------------------------------------
   802 // CScreensaverEngine::HandleKeyguardStateChanged
   772 // CScreensaverEngine::HandleKeyguardStateChanged
   803 // ---------------------------------------------------------------------------
   773 // ---------------------------------------------------------------------------
   804 //
   774 //
   805 void CScreensaverEngine::HandleKeyguardStateChanged( TBool aEnabled )
   775 void CScreensaverEngine::HandleKeyguardStateChanged( TBool aEnabled )
   806     {
   776     {
   807     KillTimer( iIgnoreActivityResetTimer );
       
   808     if ( aEnabled )
   777     if ( aEnabled )
   809         {
   778         {
   810         if ( !iScreenSaverIsOn )
   779         StartScreenSaver();
   811             {
       
   812             // Start the screensaver, but set the ignore flag in case keylock
       
   813             // was activated using the side switch. The switch will generate
       
   814             // activity that must be ignored.
       
   815             if ( iActivityManagerScreensaverShort->IsMonitoringForActivity() )
       
   816                 {
       
   817                 // Inactive state, start immediately
       
   818                 StartScreenSaver();
       
   819                 }
       
   820             else
       
   821                 {
       
   822                 // Active state, go to inactive and start.
       
   823                 iActivityManagerScreensaverShort->SetInactivityTimeout(0);
       
   824                 }
       
   825             
       
   826             iIgnoreNextActivity = ETrue;
       
   827             
       
   828             iIgnoreActivityResetTimer = CPeriodic::New( EPriorityLow );
       
   829             if ( iIgnoreActivityResetTimer )
       
   830                 {
       
   831                 iIgnoreActivityResetTimer->Start( KIgnoreActivityTimeout, 
       
   832                                                   KIgnoreActivityTimeout, 
       
   833                                                   TCallBack( ResetIgnoreFlagCb, this ) );
       
   834                 }
       
   835             }
       
   836         }
   780         }
   837     else
   781     else
   838         {
   782         {
   839         StopScreenSaver();
   783         StopScreenSaver();
   840         }
   784         }
   842 
   786 
   843 // ---------------------------------------------------------------------------
   787 // ---------------------------------------------------------------------------
   844 // 
   788 // 
   845 // ---------------------------------------------------------------------------
   789 // ---------------------------------------------------------------------------
   846 //
   790 //
   847 void CScreensaverEngine::NotifyKeyEventReceived()
   791 void CScreensaverEngine::HandleActivateSSChanged( TBool aStart )
   848     {
   792     {
   849     if ( iSharedDataI->IsKeyguardOn() )
   793     if ( aStart )
   850         {
   794         {
   851         iIgnoreNextActivity = ETrue;
   795         StartScreenSaver();
       
   796         }
       
   797     else
       
   798         {
       
   799         StopScreenSaver();
   852         }
   800         }
   853     }
   801     }
   854 
   802 
   855 // -----------------------------------------------------------------------------
   803 // -----------------------------------------------------------------------------
   856 // CScreensaverEngine::View
   804 // CScreensaverEngine::View