diff -r 058b1fc1663a -r 8a173132b0aa src/screensaverengine.cpp --- a/src/screensaverengine.cpp Mon Jan 18 20:19:52 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,768 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Screensaver engine class definition. -* -*/ - - - -#include -#include -#include -#include -#include -#include -#include - -#include "screensaverengine.h" -#include "screensaverctrlmovingtext.h" -#include "screensavershareddatai.h" -#include "screensavershareddatamonitor.h" -#include "screensaverappui.h" -#include "ScreensaverUtils.h" -#include "screensaverutility.h" - - -// Minimum plugin suspension time -const TInt KMinPluginSuspensionTime = 500000; // 0.5 sec - -// Inactivity timeout in seconds when keys locked -const TInt KTimeoutShort = 5; - -const TInt KNoPreview = 0; - -const TInt KPreviewTimeout = 10000000; // 10 sec - -const TText KSilentProfileInd= KPuaCodeSilentSymbol; -const TText KSilentVibraInd= KPuaCodeAprofSilentVibra; -const TText KSoundVibraInd= KPuaCodeAprofSoundVibra; -const TText KSoundInd= KPuaCodeAprofSound; - -// Class CScreensaverEngine - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::NewL -// ----------------------------------------------------------------------------- -// -CScreensaverEngine* CScreensaverEngine::NewL() - { - CScreensaverEngine* self = new (ELeave) CScreensaverEngine(); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop(); //self - return self; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::~CScreensaverEngine -// ----------------------------------------------------------------------------- -// -CScreensaverEngine::~CScreensaverEngine( ) - { - StopActivityMonitoring( iActivityManagerScreensaver ); - StopActivityMonitoring( iActivityManagerScreensaverShort ); - DisableSharedDataAndMonitor(); - delete iIndicatorArray; - KillTimer( iPreviewTimer ); - iAknUiServer.Close(); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::SharedDataInterface -// ----------------------------------------------------------------------------- -// -CScreensaverSharedDataI* CScreensaverEngine::SharedDataInterface( ) const - { - return iSharedDataI; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::ResetInactivityTimeout -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::ResetInactivityTimeout() - { - if ( iActivityManagerScreensaver ) - { - SCRLOGGER_WRITEF(_L("SCR: Model: Setting inac timeout to %d secs"), - Timeout()); - iActivityManagerScreensaver->SetInactivityTimeout( Timeout( ) ); - } - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::ScreenSaverIsOn -// ----------------------------------------------------------------------------- -// -TBool CScreensaverEngine::ScreenSaverIsOn( ) const - { - return iScreenSaverIsOn; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::ScreenSaverIsPreviewing -// ----------------------------------------------------------------------------- -// -TBool CScreensaverEngine::ScreenSaverIsPreviewing( ) const - { - return iScreenSaverIsPreviewing; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::StartScreenSaver -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StartScreenSaver( ) - { - SCRLOGGER_WRITE("Model: StartScreenSaver()"); - - // Ignore start while in preview to avoid double-start lock - if ( iScreenSaverIsPreviewing ) - { - // Reset user activity so that screensaver is enabled after - // preview even if no user activity happens any more - // Note that this puts on backlight but it should be on at this - // time anyway (unless a plugin set it off, but what the hey) - User::ResetInactivityTime(); - return; - } - - // if (DisplayFlag() == 1) then screensaver can be activated - // else screensaver can't come during phone call. - // Also not OK to start until system startup has been completed - if ( ( !DisplayFlag() ) && ( iSharedDataI->IsSystemStartupComplete() ) ) - { - if ( !iScreenSaverIsOn ) - { - // connect in StartScreenSaver, intercept and capture application - // key event. It makes sure this event will not be received - // by other applictions when screensaver is activated. - iAknUiServer.ConnectAndSendAppsKeySuppress(ETrue); - iScreenSaverIsOn = ETrue; - - // Report whether started from Idle BEFORE bringing to foreground - iSharedDataI->SetSSStartedFromIdleStatus(); - - ScreensaverUtility::BringToForeground(); - - SCRLOGGER_WRITE("Model: SS is displaying (BringToForeground)"); - - // Compress heap while displaying. No longer possible to - // compress all heaps (User::CompressAllHeaps() is a no-op) - User::Heap().Compress(); - - DisplayObject(); - } - else - { - SCRLOGGER_WRITE("Model: StartScreenSaver(): already on, ignore"); - } - } - else - { - SCRLOGGER_WRITE("Model: SS not displaying, not allowed."); - ResetInactivityTimeout( ); - } - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::StopScreenSaver -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StopScreenSaver() - { - SCRLOGGER_WRITE("Stopping Screensaver"); - - if( iScreenSaverIsOn ) - { - // disconnect in StopScreenSaver, It makes sure other applications could - // receive application key event when screensaver is disactivated. - iAknUiServer.ConnectAndSendAppsKeySuppress(EFalse); - // Indicate we've stopped - iSharedDataI->SetScreensaverStatus( EFalse ); - - iScreenSaverIsOn = EFalse ; - - View()->HideDisplayObject(); - } - - - if( iScreenSaverIsPreviewing ) - { - iSharedDataI->SetScreensaverPreviewMode( KNoPreview ); - - iScreenSaverIsPreviewing = EFalse; - - View()->HideDisplayObject(); - - // Update preview progress - iSharedDataI->SetScreensaverPreviewState( EScreenSaverPreviewEnd ); - iSharedDataI->SetScreensaverPreviewState( EScreenSaverPreviewNone ); - - KillTimer( iPreviewTimer ); - } - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::StartPreviewModeL -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StartPreviewModeL( ) - { - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::StartPreviewModeL()") ); - - iScreenSaverIsPreviewing = ETrue; - // Change the display object into what's being previewed - View()->CreatePreviewDisplayObjectL(); - - if( iSharedDataI->ScreensaverPreviewState() == EScreenSaverPreviewError ) - { - iScreenSaverIsPreviewing = EFalse; - return; - } - - StartPreviewTimer(); - - UpdateIndicatorAttributes(); - - View()->ShowDisplayObject(); - - iSharedDataI->SetScreensaverPreviewState( EScreenSaverPreviewStart ); - - ScreensaverUtility::BringToForeground(); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::DisplayObject -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::DisplayObject() - { - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::DisplayObject()") ); - //if the display object type is plugin, we should recreate the object - //cause when plugin is suspend status, it will be changed to the default - //type - if ( iSharedDataI->DisplayObjectType() == EDisplayPlugin ) - { - View()->SetDisplayObject( EDisplayPlugin ); - } - - UpdateIndicatorAttributes(); - - View()->ShowDisplayObject(); - - iSharedDataI->SetScreensaverStatus( ETrue ); - } - -// ---------------------------------------------------------------------------- -// CScreensaverEngine::StartSuspendTimer -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StartSuspendTimer( TInt aSec ) - { - KillTimer( iSuspendTimer ); - - // Let's keep this operation reasonable. - TInt realTime = ( aSec > KMinPluginSuspensionTime ) - ? aSec : KMinPluginSuspensionTime; - - TRAP_IGNORE( iSuspendTimer = CPeriodic::NewL( CActive::EPriorityStandard ) ); - - iSuspendTimer->Start( realTime, realTime, TCallBack( - HandleSuspendTimerExpiry, this ) ); - - SCRLOGGER_WRITEF(_L("SCR: iSuspendTimer->Start(%d, %d, HandleSuspensionTimerTimeout)"), - realTime, realTime); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::IndicatorArray -// ----------------------------------------------------------------------------- -// -CScreensaverIndicatorArray& CScreensaverEngine::IndicatorArray() const - { - return *iIndicatorArray; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::GetColorModel -// ----------------------------------------------------------------------------- -// -const TScreensaverColorModel& CScreensaverEngine::GetColorModel() const - { - SCRLOGGER_WRITE("Host / Own use: GetColorModel()"); - - return iColorModel; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::AddPartialModeLevel -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::AddPartialModeLevel( TInt aBpp, - TScreensaverPartialModeType aType ) - { - TInt i; - for (i = 0; i < iColorModel.iNumberOfPartialModes; i++ ) - { - if ( (iColorModel.iPartialModes[i].iBpp == aBpp) - && (iColorModel.iPartialModes[i].iType == aType) ) - { - break; - } - } - if ( i >= iColorModel.iNumberOfPartialModes ) - { - iColorModel.iPartialModes[iColorModel.iNumberOfPartialModes].iBpp - = aBpp; - iColorModel.iPartialModes[iColorModel.iNumberOfPartialModes].iType - = aType; - iColorModel.iNumberOfPartialModes++; - } - } - - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::UpdateIndicatorAttributes -// This method is for updating screensaver indicator -// attributes (payloads and dependencies). This is where indicator -// payload values are connected to real values. -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::UpdateIndicatorAttributes() - { - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverView::UpdateIndicatorAttributes()")); - - TIndicatorPayload payload; - - // First integer types. - payload.iType = EPayloadTypeInteger; - - // Missed calls. - payload.iInteger = iSharedDataI->NewMissedCalls(); - iIndicatorArray->SetIndicatorPayload( ESsMissedCallsInd, payload ); - // Missed calls indicator depends on status of new contacts note. - iIndicatorArray->SetDependencyStatus( ESsMissedCallsInd, - !iSharedDataI->IsNCNActive() ); - - // Unread messages - payload.iInteger = iSharedDataI->UnreadMessagesNumber(); - iIndicatorArray->SetIndicatorPayload( ESsNewMessagesInd, payload ); - iIndicatorArray->SetDependencyStatus( ESsNewMessagesInd, (payload.iInteger > 0 - ? EFalse : ETrue) ); - - // Then string types. - payload.iType = EPayloadTypeText; - - // Profile information - TBool nameDisplayed = (iSharedDataI->ActiveProfile() == EProfileGeneralId) ? EFalse : ETrue; - TBool isSilent = iSharedDataI->IsSilentMode(); - payload.iText.Zero( ); - - if ( nameDisplayed || isSilent || iShowExtendedProfileInd ) - { - // append alert type indicator - if ( iShowExtendedProfileInd ) - { - TBool isVibra = iSharedDataI->IsVibraMode( ); - if ( isSilent ) - { - payload.iText.Append( isVibra ? KSilentVibraInd - : KSilentProfileInd ); - } - else - { - payload.iText.Append( isVibra ? KSoundVibraInd : KSoundInd ); - } - } - else - { - // Check if this is silent mode and we have to add indicator - // character to string. - if ( isSilent ) - { - payload.iText.Append( KSilentProfileInd ); - } - } - - if ( nameDisplayed ) - { - const TDesC& profile = iSharedDataI->ProfileName( ); - // Don't panic if profile name is too long, 'less than' ensures - // the 1 free space used for silent/vibra - if ( profile.Length( ) < KMaxPayloadTextLength ) - { - // append profile name - payload.iText.Append( profile ); - } - } - - // Profile indicator shown - iIndicatorArray->SetDependencyStatus( ESsProfileInd, EFalse ); - } - else - { - // Profile indicator not shown - iIndicatorArray->SetDependencyStatus( ESsProfileInd, ETrue ); - } - - iIndicatorArray->SetIndicatorPayload( ESsProfileInd, payload ); - - // AM/PM indicator is text but it is updated with every draw - // in screensaver control, so that it changes properly even if - // time rolls over between draws. Note that Am/Pm information is - // maintained by screensaver display object, not shareddatainterface. - if ( AknLayoutUtils::ScalableLayoutInterfaceAvailable() ) - { - // Am/Pm indicator depends on 12-hour clock - iIndicatorArray->SetDependencyStatus( ESsAmPmInd, !ScreensaverUtility::Query12HourClock( ) ); - } - else - { - // Make sure it's not shown - iIndicatorArray->SetDependencyStatus( ESsAmPmInd, ETrue ); - } - - - // Key lock indicator depends on status of key guard. - iIndicatorArray->SetDependencyStatus( ESsKeyLockInd, !iSharedDataI->IsKeyguardOn() ); - - // Instant messaging indicator depends on existence of unseen IMs - iIndicatorArray->SetDependencyStatus( ESsImInd, !iSharedDataI->IsHaveNewInstantMessages() ); - - // Mail indicator depends on existence of unseen mails - iIndicatorArray->SetDependencyStatus( ESsMailInd, !iSharedDataI->IsHaveNewEmail() ); - - // Voicemail indicator depends on existence of unseen voicemail messages - iIndicatorArray->SetDependencyStatus( ESsVoicemailInd, !iSharedDataI->IsHaveNewVoicemail() ); - - //Set visibility for indicators if selected screensaver is a plugin - //which overides standard indicators - //TODO: Convert the iControlType to the iSettingType -// if ( (iSharedDataI->ScreensaverObjectType() == EDisplayPlugin ) && -// ( AppUi()->ScreensaverView()->PluginFlags() & CScreensaverView::EPluginFlagOverrideIndicators ) ) -// { - iIndicatorArray->SetVisibilityForIndicators(); -// } - } - - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::CScreensaverEngine -// ----------------------------------------------------------------------------- -// -CScreensaverEngine::CScreensaverEngine() - { - - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::ConstructL -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::ConstructL( ) - { - SetupColorModelL(); - - EnableSharedDataAndMonitorL(); - - iIndicatorArray = CScreensaverIndicatorArray::NewL( iSharedDataI->IsInvertedColors() ); - - StartActivityMonitoringL(); - - FeatureManager::InitializeLibL(); - iShowExtendedProfileInd - = FeatureManager::FeatureSupported( KFeatureIdProtocolCdma ); - FeatureManager::UnInitializeLib(); - - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::EnableSharedDataAndMonitorL -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::EnableSharedDataAndMonitorL() - { - iSharedDataI = CScreensaverSharedDataI::NewL(); - - iSharedDataMonitor = CScreensaverSharedDataMonitor::NewL( iSharedDataI ); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::DisableSharedDataAndMonitor -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::DisableSharedDataAndMonitor( ) - { - delete iSharedDataMonitor; - iSharedDataMonitor = NULL; - - delete iSharedDataI; - iSharedDataI = NULL; - - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::StartActivityMonitoringL -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StartActivityMonitoringL( ) - { - // Actually screensaver is the last exe to be launch at the startup, - // so when it is being launched the elapsed time(User::InactivityTime()) - // is greater than the interval (15 sec) which screensaver pass to start - // activitymanager for inactivitycallback. - // So it has to do to reset inactivitytime (User::ResetInactivityTime() ) - // once in the screensaver constructor so that the inactivity callback - // called after the interval time expired. - User::ResetInactivityTime(); - - // Start monitoring activity for screensaver - iActivityManagerScreensaver - = CUserActivityManager::NewL( CActive::EPriorityStandard ); - iActivityManagerScreensaver->Start( Timeout(), - TCallBack( HandleInactiveEventL,this ), - TCallBack( HandleActiveEventL, this ) ); - - // Start monitoring activity for screensaver, short timeout - iActivityManagerScreensaverShort - = CUserActivityManager::NewL( CActive::EPriorityStandard ); - - iActivityManagerScreensaverShort->Start( KTimeoutShort, - TCallBack( HandleInactiveEventShortL, this ), - TCallBack( HandleActiveEventShortL, this ) ); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::StopActivityMonitoring -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StopActivityMonitoring( CUserActivityManager*& aActivityManager ) - { - if ( aActivityManager ) - { - aActivityManager->Cancel(); - delete aActivityManager; - aActivityManager = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::SetupColorModelL -// THIS IS TEMPORARY VERSION OF SetupColorModelL function. It is used until -// new version of LcdPartialMode module is integrated. -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::SetupColorModelL() - { - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::SetupColorModelL()") ); - TResourceReader reader; - TInt i, ctmp; - - TInt suggestedDrawingMode; - - CEikonEnv::Static()->CreateResourceReaderLC( reader, R_SCREENSAVER_COLOR_MODEL ); - suggestedDrawingMode = reader.ReadInt32( ); - - // - // Let's find out how many partial modes hardware - // actually supports. - // - AddPartialModeLevel( (TInt)3, - (TScreensaverPartialModeType)EPartialModeTypeMostPowerSaving ); - AddPartialModeLevel( (TInt)3, - (TScreensaverPartialModeType)EPartialModeTypeDefault ); - AddPartialModeLevel( (TInt)16, - (TScreensaverPartialModeType)EPartialModeTypeFull ); - - if ( suggestedDrawingMode == ESsColorModel3BitMode ) - { - // This can always be done, just set default partial mode to - // most power saving. First try 'most power saving' and if not supported - // then try default. if default isn't supported leave with error code. - iColorModel.iSystemPartialMode.iBpp = 3; - iColorModel.iSystemPartialMode.iType - = EPartialModeTypeMostPowerSaving; - } - - // Read color indices for 3-bit mode. - reader.Read( iColorModel.iColors, 8 * sizeof(TInt16) ); - - // Read rgb values for gradient effect. - for (i = 0; i < 6; i++ ) - { - ctmp = reader.ReadInt32( ); - iColorModel.iDarkGradient[i] = TRgb( ctmp ); - } - - for (i = 0; i < 6; i++ ) - { - ctmp = reader.ReadInt32( ); - iColorModel.iLightGradient[i] = TRgb( ctmp ); - } - - CleanupStack::PopAndDestroy( ); // reader - } - -// ---------------------------------------------------------------------------- -// CScreensaverEngine::StartPreviewTimer -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::StartPreviewTimer() - { - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::StartPreviewTimer()") ); - - KillTimer( iPreviewTimer ); - - TRAP_IGNORE( iPreviewTimer = CPeriodic::NewL( CActive::EPriorityHigh ) ); - - iPreviewTimer->Start( KPreviewTimeout, KPreviewTimeout, TCallBack( - HandlePreviewTimerExpiry, this ) ); - - SCRLOGGER_WRITEF(_L("SCR: iPreviewTimer->Start(%d, %d, HandlePreviewTimerTimeout)"), - KPreviewTimeout,KPreviewTimeout); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::KillTimer -// Stops and deletes a timer -// ----------------------------------------------------------------------------- -// -void CScreensaverEngine::KillTimer( CPeriodic*& aTimer ) - { - if ( aTimer ) - { - aTimer->Cancel( ); - delete aTimer; - aTimer = NULL; - } - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandlePreviewTimerExpiry -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandlePreviewTimerExpiry( TAny* aPtr ) - { - CScreensaverEngine* Engine = STATIC_CAST(CScreensaverEngine*, aPtr); - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverView::HandlePreviewTimerTimeout()")); - - Engine->KillTimer( Engine->iPreviewTimer ); - Engine->StopScreenSaver(); - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleActiveEventL -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleActiveEventL( TAny* /* aPtr */) - { - SCRLOGGER_WRITE("HandleActiveEventL(), do nothing"); - // We can be pretty sure the short timeout has passed and its - // active event handler stops the saver - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleInactiveEventL -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleInactiveEventL( TAny* aPtr ) - { - SCRLOGGER_WRITE("HandleInactiveEventL(), starting screensaver"); - - CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr); - - // Double-start is OK, it will be checked in StartScreenSaver() - _this->StartScreenSaver( ); - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleActiveEventShortL -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleActiveEventShortL( TAny* aPtr ) - { - SCRLOGGER_WRITE("HandleActiveEventShortL(), stopping saver"); - STATIC_CAST(CScreensaverEngine*, aPtr)->StopScreenSaver(); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleInactiveEventShortL -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleInactiveEventShortL( TAny* aPtr ) - { - SCRLOGGER_WRITE("HandleInactiveEventShortL()"); - // Start, if keys are locked and short timeout in use - CScreensaverEngine* _this= STATIC_CAST(CScreensaverEngine*, aPtr); - - if ( _this->iSharedDataI->IsKeyguardOn() ) - { - SCRLOGGER_WRITE("HandleInactiveEventShortL() starting saver"); - _this->StartScreenSaver( ); - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::HandleSuspendTimerExpiry -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::HandleSuspendTimerExpiry( TAny* aPtr ) - { - CScreensaverEngine* control= STATIC_CAST(CScreensaverEngine*, aPtr); - SCRLOGGER_WRITEF(_L("SCR: Inside CScreensaverEngine::HandleSuspendTimerExpiry()")); - - control->KillTimer( control->iSuspendTimer ); - - control->View()->SetDisplayObject( EDisplayPlugin ); - control->View()->ShowDisplayObject(); - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::View -// ----------------------------------------------------------------------------- -// -CScreensaverView* CScreensaverEngine::View() const - { - return STATIC_CAST( CScreensaverAppUi*, CCoeEnv::Static()->AppUi() )->ScreensaverView(); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::Timeout -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::Timeout( ) - { - return iSharedDataI->ScreensaverTimeout( ); - } - -// ----------------------------------------------------------------------------- -// CScreensaverEngine::DisplayFlag -// ----------------------------------------------------------------------------- -// -TInt CScreensaverEngine::DisplayFlag( ) - { - return iSharedDataI->IsScreenSaverAllowed(); - } -// End of file.