idlefw/src/framework/aipluginstatemanager.cpp
branchRCL_3
changeset 8 d0529222e3f0
parent 4 1a2a00e78665
child 11 bd874ee5e5e2
--- a/idlefw/src/framework/aipluginstatemanager.cpp	Tue Feb 02 00:23:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,549 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:  System state observer and notifier
-*
-*/
-
-
-#include <connect/sbdefs.h>
-#include <aipspropertyobserver.h>
-#include <settingsinternalcrkeys.h> // for KSettingsScreenSaverPeriod
-#include <e32property.h>
-#include <aiutility.h>
-#include <e32base.h>
-#include <centralrepository.h>
-#include <activeidle2domaincrkeys.h>
-#include "aifwpanic.h"
-#include "aipluginstatemanager.h"
-#include "aipluginstatemachineimpl.h"
-#include "ailightstatusobserver.h"
-#include "aicallstatusobserver.h"
-#include "aifocusobserver.h"
-#include "aikeylockobserver.h"
-#include "aibackuprestorestatusobserver.h"
-#include "aienvironmentchangeobserver.h"
-#include "aiuiframeworkobserverimpl.h"
-
-#include <ScreensaverInternalPSKeys.h> // this include needs to be last
-
-#include "debug.h"
-
-const TInt KMinuteInSeconds( 60 );
-const TInt KSecondInMikroSeconds( 1000*1000 );
-const TInt KAIFadeOutEstimateMikroSeconds( 10 * KSecondInMikroSeconds );
-const TInt KTwoMinutesInMikroSeconds( 2 * KMinuteInSeconds * KSecondInMikroSeconds );
-
-#define AI2_OPTION_RESUME_AT_CREATION
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::NewL()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager* CAiPluginStateManager::NewL()
-    {
-    CAiPluginStateManager* self = new (ELeave) CAiPluginStateManager;
-    
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    
-    return self;
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::~CAiPluginStateManager()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager::~CAiPluginStateManager()
-    {       
-    iStateMachines.ResetAndDestroy();
-    
-    DestroySystemStateObservers();
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::CAiPluginStateManager()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager::CAiPluginStateManager()
-    {
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ConstructL()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ConstructL()
-    {
-    TInt value( 0 );
-    
-    TInt err( RProperty::Get( KCRUidPersonalizationSettings, 
-                              KSettingsScreenSaverPeriod, value ) );
-                               
-    if( err == KErrNone )
-        {
-        iT1Delay = ( value * KMinuteInSeconds * KSecondInMikroSeconds )
-                   + KAIFadeOutEstimateMikroSeconds;
-        }
-    else
-        {
-        // default when error to 2 minutes
-        iT1Delay = KTwoMinutesInMikroSeconds;
-        }    
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::CreateSystemStateObserversL()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::CreateSystemStateObserversL()
-    {
-    iT1Timer = CPeriodic::NewL( CActive::EPriorityStandard );
-
-    iBackupOperationObserver = CAiBackupRestoreStatusObserver::NewL( this );
-
-    iCallStateObserver = CAiCallStatusObserver::NewL( this );
-
-    iLightStateObserver = CAiLightStatusObserver::NewL( this );
-
-    iFocusObserver = CAiFocusObserver::NewL( this );
-
-    iKeylockObserver = CAiKeylockObserver::NewL( this );
-
-    // Environment change observer notifies time/date/midnight/language
-    // changes
-    iEnvironmentObserver = CAiEnvironmentChangeObserver::NewL( this );
-
-    // Ui framework observer notifies currently general theme changes
-    iFrameworkObserver = CAiUiFrameworkObserverImpl::NewL( *this );
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::DestroySystemStateObservers()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::DestroySystemStateObservers()
-    {
-    if( iT1Timer )
-        {
-        iT1Timer->Cancel();
-        
-        delete iT1Timer;       
-        iT1Timer = NULL;
-        }
-
-    delete iBackupOperationObserver;
-    iBackupOperationObserver = NULL;
-
-    delete iCallStateObserver;
-    iCallStateObserver = NULL;
-
-    delete iLightStateObserver;
-    iLightStateObserver = NULL;
-
-    delete iFocusObserver;
-    iFocusObserver = NULL;
-
-    delete iKeylockObserver;
-    iKeylockObserver = NULL;
-
-    delete iEnvironmentObserver;
-    iEnvironmentObserver = NULL;
-
-    delete iFrameworkObserver;
-    iFrameworkObserver = NULL;
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::UiFwObserver()
-// ----------------------------------------------------------------------------
-//
-MAiUiFrameworkObserver* CAiPluginStateManager::UiFwObserver() const
-    {
-    return iFrameworkObserver;
-    }
-    
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ReportStateChange()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ReportStateChange( TAiStateChanges aState )
-    {
-    if( !iIsDeviceStarted ) 
-        {
-        if( aState == ESMAISystemBoot )
-            {
-            iIsDeviceStarted = ETrue;
-            }               
-        }
-    
-    if( aState == ESMAISystemBoot )
-        {
-        return;
-        }
-        
-    ProcessStateChangeForAll( aState );
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::StateVariable()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::StateVariable( TAiStateVariable aStateChange )
-    {
-    switch ( aStateChange )
-        {
-        case ESMAICallStatus:
-            {
-            return CallOngoing();
-            }
-        case ESMAILightStatus:
-            {
-            return LightsOn();
-            }
-        case ESMAIBackupRestoreStatus:
-            {
-            return BackupOngoing();
-            }
-        case ESMAIIdleFocusStatus:
-            {
-            return IdleFocused();
-            }
-        default:
-            {
-            return EFalse;
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::RestartSuspendTimer()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::RestartSuspendTimer()
-    {
-    if( iT1Timer )
-        {
-        iT1Timer->Cancel();
-        
-        iT1Timer->Start( iT1Delay, iT1Delay,                         
-                         TCallBack( T1TimerCallback, this ) );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::PluginCreatedL()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::PluginCreatedL( CAiContentPublisher& aPlugin )
-    {
-    // Create a new state machine for the plugin from the heap
-    // and append the machine to our local array.
-    CAiPluginStateMachine* machine = 
-        new ( ELeave ) CAiPluginStateMachine( *this, aPlugin );                                                                                                                                              
-
-    // Important to append first so failure will be handled properly
-    CleanupStack::PushL( machine );
-    iStateMachines.AppendL( machine );
-    CleanupStack::Pop( machine );
-              
-    // This will effectively resume the plugin NOW.
-    ProcessStateChange( ESMAISystemBoot, *machine );
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::PluginDestroyed()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::PluginDestroyed( CAiContentPublisher& aPlugin )
-    {
-    // plugin has beed destroyed, remove the state machine also
-    for( TInt i = 0; i < iStateMachines.Count(); i++ )
-        {
-        if( &iStateMachines[i]->Plugin() == &aPlugin )
-            {
-            iStateMachines[i]->HandleEvent( ESMAISystemShutdown );
-            delete iStateMachines[i];
-          
-            iStateMachines.Remove( i );                                    
-            break;
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::AllPluginsCreated()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::AllPluginsCreated()
-    {
-    // Currently we get this event via pluginmanager -> aifw -> EAISMSystemBoot event
-    // so no implementation required. We might want to handle this locally in the 
-    // future though. Current impl is such because RefreshUI for ui controller
-    // needs to after the plugins are resumed -> If we handle this here it is not
-    // garanteed.
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::AllPluginsDestroyed()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::AllPluginsDestroyed()
-    {
-    // Plugins have been destroyed, so destroy the state machines also.
-    iStateMachines.ResetAndDestroy();
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::TranslateReason()
-// ----------------------------------------------------------------------------
-//
-TAiTransitionReason CAiPluginStateManager::TranslateReason( 
-    TAiStateChanges aStateChange )
-    {
-    switch ( aStateChange )
-        {
-        case ESMAIBacklightOn:
-            {
-            return EAiBacklightOn;
-            }
-        case ESMAIBacklightOff:
-            {
-            return EAiBacklightOff;
-            }
-        case ESMAIBackupOn:
-            {
-            return EAiBackupRestoreStarted;
-            }
-        case ESMAIBackupOff:
-            {
-            return EAiBackupRestoreEnded;
-            }
-        case ESMAIInCall:
-            {
-            return EAiPhoneCallStarted;
-            }
-        case ESMAINoCall:
-            {
-            return EAiPhoneCallEnded;
-            }
-        case ESMAISystemBoot:
-            {
-            return EAiSystemStartup;
-            }
-        case ESMAILocaleChanged:
-            {
-            return EAiLanguageChanged;
-            }
-        case ESMAIIdleForeground:
-            {
-            return EAiIdleForeground;
-            }
-        case ESMAIIdleBackground:
-            {
-            return EAiIdleBackground;
-            }
-        case ESMAITimeChanged:
-            {
-            return EAiTimeChanged;
-            }
-        case ESMAIMidnightCrossover:
-            {
-            return EAiMidnightPassed;
-            }
-        case ESMAIRelayoutScreen:
-            {
-            return EAiScreenLayoutChanged;
-            }
-        case ESMAIReportThemeChangeStarted:
-            {
-            return EAiUiDefinitionChangeStarted;
-            }
-        case ESMAIReportThemeChangeReady:
-            {
-            return EAiUiDefinitionChangeEnded;
-            }
-        case ESMAIGeneralThemeChanged:
-            {
-            return EAiGeneralThemeChanged;
-            }
-        case ESMAISystemShutdown:
-            {
-            return EAiSystemShutdown;
-            }
-        case ESMAIT1Timeout:
-            {
-            return EAiSuspendPlugins;
-            }
-        case ESMAIKeylockEnabled:
-            {
-            return EAiKeylockEnabled;
-            }
-        case ESMAIKeylockDisabled:
-            {
-            return EAiKeylockDisabled;
-            }
-        case ESMAIOffLine:
-            {
-            return EAiIdleOffLine;
-            }
-        case ESMAIOnLine:
-            {
-            return EAiIdleOnLine;
-            }   
-        case ESMAIPageSwitch:
-        	{
-        	return EAiIdlePageSwitch;
-        	}
-        case ESMAIUnknownState: // fallthrough
-        default:
-            {
-            return EAiUnknownTransitionReason;
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessStateChange()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessStateChange( TAiStateChanges aState,
-    CAiPluginStateMachine& aMachine )
-    {
-    aMachine.HandleEvent( aState );    
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessOnlineState()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessOnlineState( CAiContentPublisher& aPlugin ) 
-    {
-    for ( TInt i = 0; i < iStateMachines.Count(); i++ )
-        {
-        if( &iStateMachines[i]->Plugin() == &aPlugin )
-            {
-            iStateMachines[i]->HandleEvent( ESMAIOnLine );            
-            break;
-            }
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessOfflineState()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessOfflineState( CAiContentPublisher& aPlugin )
-    {
-    for ( TInt i = 0; i < iStateMachines.Count(); i++ )
-        {
-        if( &iStateMachines[i]->Plugin() == &aPlugin )
-            {
-            iStateMachines[i]->HandleEvent( ESMAIOffLine );            
-            break;
-            }        
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessStateChangeForAll()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessStateChangeForAll( TAiStateChanges aState )
-    {
-    for ( TInt i = 0; i < iStateMachines.Count(); ++i )
-        {
-        iStateMachines[i]->HandleEvent( aState );
-        }
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::IdleFocused()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::IdleFocused() const
-    {
-    if ( iFocusObserver )
-        {
-        return ( iFocusObserver->Status() == ESMAIIdleForeground );
-        }
-
-    return EFalse;
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::BackupOngoing()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::BackupOngoing() const
-    {
-    if ( iBackupOperationObserver )
-        {
-        return ( iBackupOperationObserver->Status() == ESMAIBackupOn );
-        }
-    
-    return EFalse;    
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::LightsOn()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::LightsOn() const
-    {
-    if ( iLightStateObserver )
-        {
-        return ( iLightStateObserver->Status() == ESMAIBacklightOn );
-        }
-    
-    return EFalse;
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::CallOngoing()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::CallOngoing() const
-    {
-    if ( iCallStateObserver )
-        {
-        return ( iCallStateObserver->Status() == ESMAIInCall );
-        }
-        
-    return EFalse;    
-    }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::T1TimerCallback()
-// ----------------------------------------------------------------------------
-//
-TInt CAiPluginStateManager::T1TimerCallback( TAny* aPtr )
-    {
-    CAiPluginStateManager* self =
-        static_cast< CAiPluginStateManager* >( aPtr );
-
-    __ASSERT_DEBUG( self, 
-        AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
-    self->iT1Timer->Cancel();
-    
-//    self->ProcessStateChangeForAll( ESMAIT1Timeout );
-    
-    return KErrNone;
-    }
-
-// End of file
-