--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiacceltk/hitchcock/Client/inc/alfcommandscheduler.h Tue Feb 02 07:56:43 2010 +0200
@@ -0,0 +1,207 @@
+/*
+* Copyright (c) 2007 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: Command scheduler.
+*
+*/
+
+
+
+#ifndef C_ALFCOMMANDSCHEDULER_H
+#define C_ALFCOMMANDSCHEDULER_H
+
+#include <e32base.h>
+#include <alf/alfcommand.h>
+#include <hwrmlight.h>
+
+class CAlfEnv;
+
+/**
+ * Command scheduler.
+ *
+ * Schedules the commands (see alfcommand.h) which are send to
+ * to the environment class with a timeout != 0.
+ *
+ * @since S60 v3.2
+ */
+NONSHARABLE_CLASS( CAlfCommandScheduler ) :
+ public CBase,
+ public MHWRMLightObserver
+ {
+
+public:
+
+ /**
+ * Constructor
+ */
+ static CAlfCommandScheduler* NewL( CAlfEnv& aEnv );
+
+ /**
+ * Destructor
+ */
+ virtual ~CAlfCommandScheduler();
+
+ /**
+ * Executes given command in given time.
+ *
+ * @param aCommand Command to execute.
+ * @param aTimeInMilliSeconds Time to execution.
+ */
+ void ScheduleCommandL( const TAlfCommand& aCommand,
+ TInt aTimeInMilliSeconds );
+
+ /**
+ * Cancel all commands for given object.
+ *
+ * @param aObject All commands associated to this object are cancelled.
+ */
+ void CancelCommands( TAny* aObject );
+
+ /**
+ * Cancels all commands for the given object with given operation.
+ *
+ * @param aObject Associated object.
+ * @param aCommandOperation Operation which is cancelled.
+ */
+ void CancelCommands( TAny* aObject, TAlfOp aCommandOperation);
+
+ /**
+ * Cancels all commands for the given object with given type and paramter.
+ *
+ * @param aObject Associated object.
+ * @param aCommandType Command type.
+ * @param aParam Custom parater (only checked if
+ * aCommandType equals EAlfCommandTypeCustomEvent)
+ */
+ void CancelCommands( TAny* aObject,
+ TAlfCommandType aCommandType,
+ TInt aParam );
+
+ /**
+ * Calculates the milliseconds until the command.
+ *
+ * @param aObject Associated object.
+ * @return Time left in milliseconds to the first found command, which
+ * matched the criteria. KErrNotFound if the none found. The return
+ * value is set to 0 if the command timer has expired and waits
+ * execution from the active scheduler.
+ */
+ TInt MilliSecondsUntilCommand(
+ TAny* aObject );
+
+ /**
+ * Calculates the milliseconds until the command.
+ *
+ * @param aObject Associated object.
+ * @param aCommandOperation Operation which is checked.
+ * @return Time left in milliseconds to the first found command, which
+ * matched the criteria. KErrNotFound if the none found. The return
+ * value is set to 0 if the command timer has expired and waits
+ * execution from the active scheduler.
+ */
+ TInt MilliSecondsUntilCommand(
+ TAny* aObject,
+ TAlfOp aCommandOperation );
+
+ /**
+ * Calculates the milliseconds until the command.
+ *
+ * @param aObject Associated object.
+ * @param aCommandType Command type.
+ * @param aParam Custom parater (only checked if
+ * aCommandType equals EAlfCommandTypeCustomEvent)
+ * @return Time left in milliseconds to the first found command, which
+ * matched the criteria. KErrNotFound if the none found. The return
+ * value is set to 0 if the command timer has expired and waits
+ * execution from the active scheduler.
+ */
+ TInt MilliSecondsUntilCommand(
+ TAny* aObject,
+ TAlfCommandType aCommandType,
+ TInt aParam );
+
+ /**
+ * Executes the command. Called when timer triggers.
+ *
+ * @param aCommand Command to execute.
+ */
+ void ExecuteEventL( TAlfCommand& aCommand );
+
+ /**
+ * Called when the application foreground status changes.
+ *
+ * @param aForeground ETrue if the application is (partially) on foreground.
+ */
+ void AppicationOnForeground( TBool aForeground );
+
+ /**
+ * From MHWRMLightObserver
+ *
+ * Called when display light status changes.
+ */
+ void LightStatusChanged(TInt aTarget, CHWRMLight::TLightStatus aStatus);
+
+private:
+
+ CAlfCommandScheduler( CAlfEnv& aEnv);
+
+ void ConstructL();
+
+ void UpdateSchedulerState();
+ void Run();
+ void Pause();
+
+private: // data
+
+ // Timed command class.
+ class CTimedEvent : public CTimer
+ {
+ public:
+ static CTimedEvent* NewLC(
+ const TAlfCommand& aCommand,
+ CAlfCommandScheduler& aScheduler );
+ ~CTimedEvent();
+
+ void ExecuteAfter( TInt aIntervalInMilliSeconds, TBool aStartPaused );
+ void Pause();
+ void Continue();
+ TInt TimeLeftInMilliSeconds() const;
+
+ protected:
+ CTimedEvent( CAlfCommandScheduler& aScheduler );
+ void ConstructL(const TAlfCommand& aCommand);
+ void RunL();
+ TInt RunError(TInt aError);
+ public:
+ TAlfCommand* iCommand;
+ private:
+ CAlfCommandScheduler& iScheduler;
+ TTime iLastStartTime;
+ TInt iTimeLeftInMilliSeconds;
+ };
+
+ // Timed commands.
+ RPointerArray<CTimedEvent> iEvents;
+
+ // Environment.
+ CAlfEnv& iEnv;
+
+ // Internal flags.
+ TUint iFlags;
+
+ // Light controller/observer. Own.
+ CHWRMLight* iLight;
+ };
+
+
+#endif // C_ALFCOMMANDSCHEDULER_H