diff -r 890b5dd735f8 -r f15ac8e65a02 vtuis/videotelui/inc/compman/cvtuicomponentmanager.h --- a/vtuis/videotelui/inc/compman/cvtuicomponentmanager.h Thu Aug 19 09:57:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,435 +0,0 @@ -/* -* Copyright (c) 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: Component manager implementation. -* -*/ - - -#ifndef C_VTUICOMPONENTMANAGER_H -#define C_VTUICOMPONENTMANAGER_H - -#include - -#include "mvtuicomponentmanager.h" -#include "mvtuicomponent.h" -#include "tvtuicomponentstate.h" - -/** - * CVtUiComponentManager - * - * Component manager implementation. - * - * @since S60 v3.2 - */ -NONSHARABLE_CLASS( CVtUiComponentManager ) - : public CBase, public MVtUiComponentManager - { - -public: // public methods - - /** - * Static constructor. - * - * @return Newly created instance of CVtUiComponentManager class. - */ - static CVtUiComponentManager* NewL(); - - /** - * Destructor. - */ - ~CVtUiComponentManager(); - - /** - * Called when a Ws event is delivered. - * - * @param aEvent Window server event. - * @param aDestination Event destination control. - */ - void HandleWsEventL( const TWsEvent& aEvent, CCoeControl *aDestination ); - - /** - * Called when a resource change is informed. - * - * @param aType Type of change. - */ - void HandleResourceChangeL( TInt aType ); - - /** - * Called when a keyevent needs handling. - * - * @param aKeyEvent Key event structure. - * @param aCode Event code. - */ - TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType); - - /** - * Called when a layout change is informed. - * - */ - void HandleLayoutChangeL(); - -public: // from MVtUiComponentManager - - /** - * @see MVtUiComponentManager::ChangeWsEventRegistration - */ - TInt ChangeWsEventRegistration( MVtUiWindowServerEventObserver& aObserver, - TAction aAction ); - - /** - * @see MVtUiComponentManager::ChangeResourceChangeRegistration - */ - TInt ChangeResourceChangeRegistration( - MVtUiResourceChangeObserver& aObserver, - TAction aAction ); - - /** - * @see MVtUiComponentManager::ChangeKeyEventRegistration - */ - TInt ChangeKeyEventRegistration( MVtUiKeyEventObserver& aComponent, - TAction aAction ); - - /** - * @see MVtUiComponentManager::ChangeLayoutChangeRegistration - */ - TInt ChangeLayoutChangeRegistration( MVtUiLayoutChangeObserver& aComponent, - TAction aAction ); - - /** - * @see MVtUiComponentManager::ChangeComponentRegistration - */ - TInt ChangeComponentRegistration( TVtUiComponentState& aComponentState, - TAction aAction ); - - /** - * @see MVtUiComponentManager::RequestActivation - */ - void RequestActivationL( MVtUiComponent::TComponentId aId ); - - /** - * @see MVtUiComponentManager::DeActivateComponentL - */ - void DeActivateComponentL( MVtUiComponent::TComponentId aId ); - -private: // private classes - - /** - * TStateListItem - * - * Contains one component's state in state list. - */ - class TStateListItem - { - - public: // public type definitions - - /** - * Compare by key type definition. - */ - typedef TInt (*TKeyCmpFunc) - ( const MVtUiComponent::TComponentId*, const TStateListItem& ); - - public: // public methods - - /** - * Constructor - * - * @param aState Constant reference to component state. - */ - TStateListItem( const TVtUiComponentState& aState ); - - /** - * Returns component id. - * - * @return Component's id. - */ - MVtUiComponent::TComponentId ComponentId() const; - - /** - * Returns component's state. - * - * @return Component's state. - */ - TVtUiComponentState::TState State() const; - - /** - * Sets component's state. - * - * @param aState Component's new state. - */ - void SetState( TVtUiComponentState::TState aState ); - - /** - * Returns const reference to block list. - * - * @return Constant reference to block list. - */ - const TVtUiBlockList& BlockList() const; - - /** - * Sets this object as root. - */ - void SetRoot(); - - /** - * Returns ETrue if this object is root. - * - * @return ETrue if this item is root, EFalse otherwise. - */ - TBool IsRoot() const; - - /** - * Sets this object as visited. - */ - void SetVisited(); - - /** - * Returns ETrue if this object is visited. - * - * @return ETrue if this item has been visited, EFalse otherwise. - */ - TBool IsVisited() const; - - public: // static public methods - - /** - * Returns TLinearOrder for RArray operations. Ordered by component id. - * - * @return TLinearOrder insntace for RArray operations. Ordering will - * be done based on component Id. - */ - static TLinearOrder< TStateListItem > LinearOrder(); - - /** - * Returns key order function for RArray operations. - * - * @return Key compare method pointer for RArray operations. - */ - static TKeyCmpFunc KeyOrder(); - - /** - * Returns TLinearOrder for RArray operations. Ordered by component - * state. - * - * @return TLinearOrder instance for RArray operations. Ordering will - * be done based on component state. - */ - static TLinearOrder< TStateListItem > StateOrder(); - - private: // static private methods - - /** - * StateListItem compare method. - */ - static TInt ItemCmpFunc( const TStateListItem& aItem1, - const TStateListItem& aItem2 ); - - /** - * StateListItem vs key compare method. - */ - static TInt KeyCmpFunc( const MVtUiComponent::TComponentId* aKey, - const TStateListItem& aItem ); - - /** - * StateListItem by state compare method. - */ - static TInt StateCmpFunc( const TStateListItem& aItem1, - const TStateListItem& aItem2 ); - - private: // data - - // Component's ID - MVtUiComponent::TComponentId iComponentId; - - // Component's state - TVtUiComponentState::TState iState; - - // Block mask (IDs which will be blocked by this component) - TVtUiBlockListBitField iBlockList; - - // ETrue if this component is the root compoent, EFalse otherwise - TBool iIsRoot; - - // ETrue if this component has been already visited (i.e. evaluated) - TBool iIsVisited; - - }; - - /** - * TStateList - * - * Contains list of component states. This list can be modified and when all - * modifications are ready, the whole list can be commited at once. - * - */ - class TStateList - { - - public: // public methods - - /** - * Constructor. - */ - TStateList(); - - /** - * Destructor. - */ - ~TStateList(); - - /** - * Add new item to state list. - * - * @param aItem Reference to item to be added to the list. - */ - void AddItemL( TStateListItem& aItem ); - - /** - * Returns number of items in state list. - * - * @return Number of items on list. - */ - TInt ItemCount() const; - - /** - * Find state list item by component id. - * - * @param aComponentId Id of component that will be searched. - * @return Index of the component or KErrNotFound if component with - * given Id could not be found. - */ - TInt FindItem( MVtUiComponent::TComponentId aComponentId ) const; - - /** - * Returns reference to state list item at given index. - * - * @param aIndex Index of the item to be fetched. - * @return Reference to item at given index. - */ - TStateListItem& At( TInt aIndex ); - - /** - * Returns const reference to state list item at given index. - * - * @param aIndex Index of the item to be fetched. - * @return Constant reference to item at given index. - */ - const TStateListItem& At( TInt aIndex ) const; - - /** - * Sorts list using given linear order. - * - * @param aOrder TLinearObject that will be used in sorting. - */ - void Sort( - TLinearOrder< CVtUiComponentManager::TStateListItem > aOrder ); - - private: // data - - // List items - RArray< TStateListItem > iItems; - - }; - -private: // enumerations - - /** - * Activation actions - */ - enum TActivationAction - { - /** Hide component */ - EHide, - /** Show component */ - EShow - }; - -private: - - /** - * Constructor - */ - CVtUiComponentManager(); - - /** - * 2nd constructor, may leave - */ - void ConstructL(); - - /** - * Adds or removes component from given array. - */ - template < class T > - TInt AddOrRemoveComponent( RPointerArray< T >& aArray, T* aComponent, - TAction aAction ); - - /** - * Returns linear order object for array operations. - */ - static TLinearOrder< MVtUiComponent > ComponentOrder(); - - /** - * Returns linear order object for array operations. - */ - static TLinearOrder< TVtUiComponentState > ComponentStateOrder(); - - /** - * Starts activation process. - */ - void DoActivationL( TVtUiComponentState& aComponentState, - TVtUiComponentState::TState aNewState ); - - /** - * Starts deactivation process. - */ - void DoDeactivationL( TVtUiComponentState& aComponentState, - TVtUiComponentState::TState aNewState ); - - /** - * Calculates activation. - */ - void CalculateActivationL( const TVtUiBlockList& aBlockList, - const TVtUiBlockList& aExclList, TStateList& aStateList, - TActivationAction aAction ); - - /** - * Commits activation calculation results. - */ - void CommitStateListL( TStateList& aList ); - - /** - * Constructs component state list before the calculations. - */ - void ConstructStateListL( TStateList& aList ); - -private: // data - - // Window server event listeners - RPointerArray< MVtUiWindowServerEventObserver > iWsEventObservers; - - // Resource change event listeners - RPointerArray< MVtUiResourceChangeObserver > iResourceChangeObservers; - - // Key event listeners - RPointerArray< MVtUiKeyEventObserver > iKeyEventObservers; - - // Layout change listeners - RPointerArray< MVtUiLayoutChangeObserver > iLayoutChangeObservers; - - // Registered components - RPointerArray< TVtUiComponentState > iComponents; - - }; - -#endif // C_VTUICOMPONENTMANAGER_H