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 |