diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiScheduler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_core_toolkit_api/inc/uiacceltk/HuiScheduler.h Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,171 @@ +/* +* Copyright (c) 2006-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: ?Description +* +*/ + + + +#ifndef __HUISCHEDULER_H__ +#define __HUISCHEDULER_H__ + + +#include +#include +#include + + +/* Forward declaration. */ +class CHuiEnv; + + +/** + * The scheduler executes commands at certain points in time. There is one + * scheduler instance created for each environment. Everyone has access to + * their environment's scheduler, and can send commands with it. Commands + * include, for instance, visual animation commands and action commands sent + * by controls. An action command would be sent, for example, when a menu + * item is selected or a button is pressed. + */ +NONSHARABLE_CLASS(CHuiScheduler) : public CBase + { +public: + + /* Constructors and destructor. */ + + /** + * Constructor. This is only done internally in the toolkit. Applications + * cannot construct schedulers. + * + * @param aEnv Environment that owns the scheduler. + */ + CHuiScheduler(CHuiEnv& aEnv); + + /** + * Destructor. + */ + virtual ~CHuiScheduler(); + + + /* Methods. */ + + /** + * Called to notify the scheduler that time has passed and it may be + * necessary to trigger new animations and actions. + * + * @param aElapsedTime Number of elapsed seconds. + */ + void AdvanceTime(TReal32 aElapsedTime); + + /** + * Post a new command that will be executed immediately or after a + * period of time. + * + * @param aCommand Command to send. + * @param aDelayMilliSeconds Time to wait before executing. + */ + void PostCommandL(const THuiCommand& aCommand, TInt aDelayMilliSeconds); + + /** + * Cancel all commands related to an object. + * + * @param aVisual Visual. + */ + void CancelCommands(const TAny* aObject); + + /** + * Cancel commands related to an object. + * + * @param aVisual Visual. + & @param aCommandType Type of command to cancel. + */ + void CancelCommands(const TAny* aObject, THuiOp aCommandOperation); + + /** + * Cancel commands related to a specific object. + * + * @param aControl Control. + * @param aCommandType Type of command. + * @param aParam Parameter for custom event. + */ + void CancelCommands(const TAny* aObject, THuiCommandType aCommandType, TInt aParam); + + /** + * Determines how much time is remaining until a command is to be + * executed. + * + * @param aObject Object. + * @param aCommandType Type of command. + * + * @return Time interval in milliseconds. -1, if no commands found. + */ + TInt TimeUntilCommand(const TAny* aObject, THuiCommandType aCommandType); + + /** + * Counts the number of pending commands. + * + * @return Number of commands waiting to be executed. + */ + TInt PendingCount() const; + + +private: + + /* Private methods */ + + /** + * Removes a pending command from the queue. + * + * @param aIndex Index of the pending command. + */ + void RemovePendingCommand(TInt aIndex); + + +private: + + /** + * A command to be executed at a certain point in time. A list of these delayed + * command events is stored in the HuiScheduler. + * + */ + + class TDelayedCommand + { + public: + /** Constructor. A command may be passed in the initialiser. */ + TDelayedCommand(const THuiCommand* aCommand) + : iCommand(aCommand) + { + } + + /** The time when this command will be executed. */ + TTime iExecutionTime; + + /** + * The command that will be executed. + * + * @see THuiCommand + * */ + const THuiCommand* iCommand; + }; + + /** Scheduler's environment. */ + CHuiEnv& iEnv; + + /** Pending commands waiting for execution. */ + RArray iPendingCommands; + + }; + +#endif // __HUISCHEDULER_H__