30 #include "screensavershareddatai.h" |
29 #include "screensavershareddatai.h" |
31 #include "screensavershareddatamonitor.h" |
30 #include "screensavershareddatamonitor.h" |
32 #include "screensaverappui.h" |
31 #include "screensaverappui.h" |
33 #include "ScreensaverUtils.h" |
32 #include "ScreensaverUtils.h" |
34 #include "screensaverutility.h" |
33 #include "screensaverutility.h" |
|
34 #include "screensaveractivitymanager.h" |
35 |
35 |
36 |
36 |
37 // Minimum plugin suspension time |
37 // Minimum plugin suspension time |
38 const TInt KMinPluginSuspensionTime = 500000; // 0.5 sec |
38 const TInt KMinPluginSuspensionTime = 500000; // 0.5 sec |
39 |
39 |
41 const TInt KTimeoutShort = 5; |
41 const TInt KTimeoutShort = 5; |
42 |
42 |
43 const TInt KNoPreview = 0; |
43 const TInt KNoPreview = 0; |
44 |
44 |
45 const TInt KPreviewTimeout = 10000000; // 10 sec |
45 const TInt KPreviewTimeout = 10000000; // 10 sec |
|
46 const TInt KIgnoreActivityTimeout = 500000; // 0.5 sec |
46 |
47 |
47 const TText KSilentProfileInd= KPuaCodeSilentSymbol; |
48 const TText KSilentProfileInd= KPuaCodeSilentSymbol; |
48 const TText KSilentVibraInd= KPuaCodeAprofSilentVibra; |
49 const TText KSilentVibraInd= KPuaCodeAprofSilentVibra; |
49 const TText KSoundVibraInd= KPuaCodeAprofSoundVibra; |
50 const TText KSoundVibraInd= KPuaCodeAprofSoundVibra; |
50 const TText KSoundInd= KPuaCodeAprofSound; |
51 const TText KSoundInd= KPuaCodeAprofSound; |
74 StopActivityMonitoring( iActivityManagerScreensaverShort ); |
75 StopActivityMonitoring( iActivityManagerScreensaverShort ); |
75 DisableSharedDataAndMonitor(); |
76 DisableSharedDataAndMonitor(); |
76 delete iIndicatorArray; |
77 delete iIndicatorArray; |
77 KillTimer( iPreviewTimer ); |
78 KillTimer( iPreviewTimer ); |
78 KillTimer( iExpiryTimer ); |
79 KillTimer( iExpiryTimer ); |
|
80 KillTimer( iIgnoreActivityResetTimer ); |
79 iAknUiServer.Close(); |
81 iAknUiServer.Close(); |
80 } |
82 } |
81 |
83 |
82 // ----------------------------------------------------------------------------- |
84 // ----------------------------------------------------------------------------- |
83 // CScreensaverEngine::SharedDataInterface |
85 // CScreensaverEngine::SharedDataInterface |
153 iScreenSaverIsOn = ETrue; |
155 iScreenSaverIsOn = ETrue; |
154 |
156 |
155 // Report whether started from Idle BEFORE bringing to foreground |
157 // Report whether started from Idle BEFORE bringing to foreground |
156 iSharedDataI->SetSSStartedFromIdleStatus(); |
158 iSharedDataI->SetSSStartedFromIdleStatus(); |
157 |
159 |
158 iSharedDataI->SetSSForcedLightsOn(1); |
160 if ( !View()->IsContentlessScreensaver() ) |
159 |
161 { |
160 ScreensaverUtility::BringToForeground(); |
162 ScreensaverUtility::BringToForeground(); |
|
163 } |
161 |
164 |
162 SCRLOGGER_WRITE("Model: SS is displaying (BringToForeground)"); |
165 SCRLOGGER_WRITE("Model: SS is displaying (BringToForeground)"); |
163 |
166 |
164 // Compress heap while displaying. No longer possible to |
167 // Compress heap while displaying. No longer possible to |
165 // compress all heaps (User::CompressAllHeaps() is a no-op) |
168 // compress all heaps (User::CompressAllHeaps() is a no-op) |
224 // ----------------------------------------------------------------------------- |
226 // ----------------------------------------------------------------------------- |
225 // |
227 // |
226 void CScreensaverEngine::StartPreviewModeL( ) |
228 void CScreensaverEngine::StartPreviewModeL( ) |
227 { |
229 { |
228 SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::StartPreviewModeL()") ); |
230 SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::StartPreviewModeL()") ); |
|
231 iActivityManagerScreensaverShort->SetInactivityTimeout(0); |
229 |
232 |
230 iScreenSaverIsPreviewing = ETrue; |
233 iScreenSaverIsPreviewing = ETrue; |
231 // Change the display object into what's being previewed |
234 // Change the display object into what's being previewed |
232 View()->CreatePreviewDisplayObjectL(); |
235 View()->CreatePreviewDisplayObjectL(); |
233 |
236 |
243 |
246 |
244 View()->ShowDisplayObject(); |
247 View()->ShowDisplayObject(); |
245 |
248 |
246 iSharedDataI->SetScreensaverPreviewState( EScreenSaverPreviewStart ); |
249 iSharedDataI->SetScreensaverPreviewState( EScreenSaverPreviewStart ); |
247 |
250 |
248 ScreensaverUtility::BringToForeground(); |
251 if ( !View()->IsContentlessScreensaver() ) |
|
252 { |
|
253 ScreensaverUtility::BringToForeground(); |
|
254 } |
249 } |
255 } |
250 |
256 |
251 // ----------------------------------------------------------------------------- |
257 // ----------------------------------------------------------------------------- |
252 // CScreensaverEngine::DisplayObject |
258 // CScreensaverEngine::DisplayObject |
253 // ----------------------------------------------------------------------------- |
259 // ----------------------------------------------------------------------------- |
555 // called after the interval time expired. |
561 // called after the interval time expired. |
556 User::ResetInactivityTime(); |
562 User::ResetInactivityTime(); |
557 |
563 |
558 // Start monitoring activity for screensaver |
564 // Start monitoring activity for screensaver |
559 iActivityManagerScreensaver |
565 iActivityManagerScreensaver |
560 = CUserActivityManager::NewL( CActive::EPriorityStandard ); |
566 = CScreensaverActivityManager::NewL( CActive::EPriorityStandard ); |
561 iActivityManagerScreensaver->Start( Timeout(), |
567 iActivityManagerScreensaver->Start( Timeout(), |
562 TCallBack( HandleInactiveEventL,this ), |
568 TCallBack( HandleInactiveEventL,this ), |
563 TCallBack( HandleActiveEventL, this ) ); |
569 TCallBack( HandleActiveEventL, this ) ); |
564 |
570 |
565 // Start monitoring activity for screensaver, short timeout |
571 // Start monitoring activity for screensaver, short timeout |
566 iActivityManagerScreensaverShort |
572 iActivityManagerScreensaverShort |
567 = CUserActivityManager::NewL( CActive::EPriorityStandard ); |
573 = CScreensaverActivityManager::NewL( CActive::EPriorityUserInput ); |
568 |
574 |
569 iActivityManagerScreensaverShort->Start( KTimeoutShort, |
575 iActivityManagerScreensaverShort->Start( KTimeoutShort, |
570 TCallBack( HandleInactiveEventShortL, this ), |
576 TCallBack( HandleInactiveEventShortL, this ), |
571 TCallBack( HandleActiveEventShortL, this ) ); |
577 TCallBack( HandleActiveEventShortL, this ) ); |
572 } |
578 } |
573 |
579 |
574 // ----------------------------------------------------------------------------- |
580 // ----------------------------------------------------------------------------- |
575 // CScreensaverEngine::StopActivityMonitoring |
581 // CScreensaverEngine::StopActivityMonitoring |
576 // ----------------------------------------------------------------------------- |
582 // ----------------------------------------------------------------------------- |
577 // |
583 // |
578 void CScreensaverEngine::StopActivityMonitoring( CUserActivityManager*& aActivityManager ) |
584 void CScreensaverEngine::StopActivityMonitoring( CScreensaverActivityManager*& aActivityManager ) |
579 { |
585 { |
580 if ( aActivityManager ) |
586 if ( aActivityManager ) |
581 { |
587 { |
582 aActivityManager->Cancel(); |
588 aActivityManager->Cancel(); |
583 delete aActivityManager; |
589 delete aActivityManager; |
726 // ----------------------------------------------------------------------------- |
732 // ----------------------------------------------------------------------------- |
727 // |
733 // |
728 TInt CScreensaverEngine::HandleActiveEventShortL( TAny* aPtr ) |
734 TInt CScreensaverEngine::HandleActiveEventShortL( TAny* aPtr ) |
729 { |
735 { |
730 SCRLOGGER_WRITE("HandleActiveEventShortL(), stopping saver"); |
736 SCRLOGGER_WRITE("HandleActiveEventShortL(), stopping saver"); |
731 STATIC_CAST(CScreensaverEngine*, aPtr)->StopScreenSaver(); |
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 } |
732 return KErrNone; |
746 return KErrNone; |
733 } |
747 } |
734 |
748 |
735 // ----------------------------------------------------------------------------- |
749 // ----------------------------------------------------------------------------- |
736 // CScreensaverEngine::HandleInactiveEventShortL |
750 // CScreensaverEngine::HandleInactiveEventShortL |
741 SCRLOGGER_WRITE("HandleInactiveEventShortL()"); |
755 SCRLOGGER_WRITE("HandleInactiveEventShortL()"); |
742 // Start, if keys are locked and short timeout in use |
756 // Start, if keys are locked and short timeout in use |
743 CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr); |
757 CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr); |
744 // Restore inactivity timeout if it was reset at keylock activation |
758 // Restore inactivity timeout if it was reset at keylock activation |
745 _this->iActivityManagerScreensaverShort->SetInactivityTimeout(KTimeoutShort); |
759 _this->iActivityManagerScreensaverShort->SetInactivityTimeout(KTimeoutShort); |
|
760 _this->iIgnoreNextActivity = EFalse; |
746 |
761 |
747 if ( _this->iSharedDataI->IsKeyguardOn() ) |
762 if ( _this->iSharedDataI->IsKeyguardOn() ) |
748 { |
763 { |
749 SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver"); |
764 SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver"); |
750 _this->StartScreenSaver( ); |
765 _this->StartScreenSaver( ); |
765 control->KillTimer( control->iSuspendTimer ); |
780 control->KillTimer( control->iSuspendTimer ); |
766 |
781 |
767 control->View()->SetDisplayObject( EDisplayPlugin ); |
782 control->View()->SetDisplayObject( EDisplayPlugin ); |
768 control->View()->ShowDisplayObject(); |
783 control->View()->ShowDisplayObject(); |
769 |
784 |
|
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 |
770 return KErrNone; |
798 return KErrNone; |
771 } |
799 } |
772 |
800 |
773 // --------------------------------------------------------------------------- |
801 // --------------------------------------------------------------------------- |
774 // CScreensaverEngine::HandleKeyguardStateChanged |
802 // CScreensaverEngine::HandleKeyguardStateChanged |
775 // --------------------------------------------------------------------------- |
803 // --------------------------------------------------------------------------- |
776 // |
804 // |
777 void CScreensaverEngine::HandleKeyguardStateChanged( TBool aEnabled ) |
805 void CScreensaverEngine::HandleKeyguardStateChanged( TBool aEnabled ) |
778 { |
806 { |
|
807 KillTimer( iIgnoreActivityResetTimer ); |
779 if ( aEnabled ) |
808 if ( aEnabled ) |
780 { |
809 { |
781 // Keyguard switch generates an activity event still, let the inactivity |
810 if ( !iScreenSaverIsOn ) |
782 // handler start the screensaver after one second |
811 { |
783 iActivityManagerScreensaverShort->SetInactivityTimeout(1); |
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 StartScreenSaver(); |
|
816 iIgnoreNextActivity = ETrue; |
|
817 |
|
818 iIgnoreActivityResetTimer = CPeriodic::New( EPriorityLow ); |
|
819 if ( iIgnoreActivityResetTimer ) |
|
820 { |
|
821 iIgnoreActivityResetTimer->Start( KIgnoreActivityTimeout, |
|
822 KIgnoreActivityTimeout, |
|
823 TCallBack( ResetIgnoreFlagCb, this ) ); |
|
824 } |
|
825 } |
784 } |
826 } |
785 else |
827 else |
786 { |
828 { |
787 StopScreenSaver(); |
829 StopScreenSaver(); |
|
830 } |
|
831 } |
|
832 |
|
833 // --------------------------------------------------------------------------- |
|
834 // |
|
835 // --------------------------------------------------------------------------- |
|
836 // |
|
837 void CScreensaverEngine::NotifyKeyEventReceived() |
|
838 { |
|
839 if ( iSharedDataI->IsKeyguardOn() ) |
|
840 { |
|
841 iIgnoreNextActivity = ETrue; |
788 } |
842 } |
789 } |
843 } |
790 |
844 |
791 // ----------------------------------------------------------------------------- |
845 // ----------------------------------------------------------------------------- |
792 // CScreensaverEngine::View |
846 // CScreensaverEngine::View |