--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aipluginstatemanager.h Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,242 @@
+/*
+* 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: Plugin state manager
+*
+*/
+
+
+#ifndef C_AIPLUGINSTATEMANAGER_H
+#define C_AIPLUGINSTATEMANAGER_H
+
+#include <e32base.h>
+#include "aistatemanager.h"
+#include "aipluginstatemachine.h"
+#include "aipluginlifecycleobserver.h"
+
+#include "aistatealive.h"
+#include "aistatesuspended.h"
+#include "aistateidle.h"
+#include "aifwdefs.h"
+
+class MAiPSPropertyObserver;
+class MAiDeviceStatusObserver;
+class CAiPluginStateManager;
+class CAiContentPluginManager;
+class CAiPluginStateMachine;
+class CAiUiFrameworkObserverImpl;
+class MAiUiFrameworkObserver;
+
+/**
+ * Plugin state manager implementation.
+ *
+ * @lib aifw
+ * @since S60 3.2
+ */
+NONSHARABLE_CLASS( CAiPluginStateManager ) : public CBase,
+ public MAiStateManager,
+ public MAiPluginStateResources,
+ public MAiPluginLifecycleObserver
+ {
+
+public: // Constructor and destructor
+
+ static CAiPluginStateManager* NewL();
+
+ virtual ~CAiPluginStateManager();
+
+public: // From MAiStateManager
+
+ void ReportStateChange( TAiStateChanges aState );
+
+public: // From MAiPluginStateMachine
+
+ TBool StateVariable( TAiStateVariable aStateVariable );
+
+ TAiTransitionReason TranslateReason( TAiStateChanges aStateChange );
+
+ void RestartSuspendTimer();
+
+public: // From MAiPluginLifecycleObserver
+
+ void PluginCreatedL( CAiContentPublisher& aPlugin );
+
+ void PluginDestroyed( CAiContentPublisher& aPlugin );
+
+ void AllPluginsCreated();
+
+ void AllPluginsDestroyed();
+
+public: // new methods
+
+ /**
+ * Create system status observers (lights/backup/restore etc.).
+ */
+ void CreateSystemStateObserversL();
+
+ /**
+ * Destroy system status observers.
+ */
+ void DestroySystemStateObservers();
+
+ /**
+ * Provide accessor for fw observer.
+ * @return MAiUiFrameworkObserver pointer to fw observer.
+ */
+ MAiUiFrameworkObserver* UiFwObserver() const;
+
+ /**
+ * Process online state change for a plugin
+ * @param aPlugin plugin
+ */
+ void ProcessOnlineState( CAiContentPublisher& aPlugin );
+
+ /**
+ * Process offline state change for a plugin
+ * @param aPlugin plugin
+ */
+ void ProcessOfflineState( CAiContentPublisher& aPlugin );
+
+private: // Constructors
+
+ CAiPluginStateManager();
+
+ void ConstructL();
+
+private: // New functions
+
+ /**
+ * Handles Statemachine event event and error array update.
+ * @param aState new state.
+ * @param aMachine reference to single state machine.
+ */
+ void ProcessStateChange( TAiStateChanges aState,
+ CAiPluginStateMachine& aMachine );
+
+ /**
+ * Handles Statemachine event event and error array update
+ * for all state machines.
+ * @param aState new state.
+ */
+ void ProcessStateChangeForAll( TAiStateChanges aState );
+
+ /**
+ * Helper to check idle focus status.
+ * @return ETrue if idle is focused / foreground app.
+ */
+ TBool IdleFocused() const;
+
+ /**
+ * Helper to check backup (or restore) status.
+ * @return ETrue if backup (or restore) is ongoing.
+ */
+ TBool BackupOngoing() const;
+
+ /**
+ * Helper to check phone lights status.
+ * @return ETrue if lights are on.
+ */
+ TBool LightsOn() const;
+
+ /**
+ * Helper to check phone call status.
+ * @return ETrue if call is ongoing.
+ */
+ TBool CallOngoing() const;
+
+ /**
+ * Standard callback for CPeriodic ie. T1 timer.
+ */
+ static TInt T1TimerCallback( TAny* aPtr );
+
+private: // Data
+
+ /**
+ * Backup operation state observer.
+ * Own.
+ */
+ MAiDeviceStatusObserver* iBackupOperationObserver;
+
+ /**
+ * Call state observer.
+ * Own.
+ */
+ MAiDeviceStatusObserver* iCallStateObserver;
+
+ /**
+ * Light state observer.
+ * Own.
+ */
+ MAiDeviceStatusObserver* iLightStateObserver;
+
+ /**
+ * Enviroment change observer.
+ * Own.
+ */
+ MAiDeviceStatusObserver* iEnvironmentObserver;
+
+ /**
+ * Focus change observer. Using telephony idle visiblity PS.
+ * Own.
+ */
+ MAiDeviceStatusObserver* iFocusObserver;
+
+ /**
+ * Keylock observer.
+ * Own.
+ */
+ MAiDeviceStatusObserver* iKeylockObserver;
+
+ /**
+ * Enviroment change observer. Full class type is used because
+ * we need to provide accessor for implemented type MAiUiFrameworkObserver.
+ * Own.
+ */
+ CAiUiFrameworkObserverImpl* iFrameworkObserver;
+
+ /**
+ * Timer for suspend, screensaver timout + light fadeout.
+ * Own.
+ */
+ CPeriodic* iT1Timer;
+
+ /**
+ * Timer for suspend, screensaver timout + light fadeout.
+ */
+ TInt iT1Delay;
+
+ /**
+ * New state to be timed.
+ */
+ TAiState iTimedState;
+
+ /**
+ * Reason for timers activity.
+ */
+ TAiTransitionReason iTimedReason;
+
+ /**
+ * Indicates whether the device has been properly started.
+ */
+ TBool iIsDeviceStarted;
+
+ /**
+ * State machines for plugins.
+ * Own.
+ */
+ RPointerArray<CAiPluginStateMachine> iStateMachines;
+ };
+
+#endif // C_AIPLUGINSTATEMANAGER_H
+
+// End of File.