vtuis/videotelui/inc/features/toolbar/cvtuitoolbarbase.h
branchRCL_3
changeset 25 779871d1e4f4
parent 0 ed9695c8bcbe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/inc/features/toolbar/cvtuitoolbarbase.h	Wed Sep 01 12:29:12 2010 +0100
@@ -0,0 +1,372 @@
+/*
+* 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:  Base class for toolbar.
+*
+*/
+
+
+#ifndef C_VTUITOOLBAR_H
+#define C_VTUITOOLBAR_H
+
+#include <e32base.h>
+#include <aknappui.h>
+#include <akntoolbarobserver.h>
+
+#include "mvtuifeature.h"
+#include "CVtUiAppUi.h"
+#include "cvtuifeaturebase.h"
+#include "mvtuicommandui.h"
+#include "mvtuicomponent.h"
+#include "mvtuiresourcechangeobserver.h"
+#include "tvtuicomponentstate.h"
+#include  "mvtuilayoutchangeobserver.h"
+#include <aknlayoutscalable_avkon.cdl.h>
+
+class MVtuiFeature;
+class CAknToolbar;
+class CVtUiToolbarItem;
+class TVtUiFeatureState;
+class TVtUiStates;
+class CVtUiToolbarContext;
+class CVtUiToolbarCmdPolicy;
+class CVtUiHideToolbarItemAction;
+class CVtUiFeatureManager;
+class CVtUiToolbarSKModifier;
+class CVtUiToolbarButton;
+
+/**
+*  TVtUiToolbarComponentState
+*
+* Toolbar componentstate definition.
+*
+*  @since S60 v3.2
+*/
+class TVtUiToolbarComponentState : public TVtUiComponentState
+    {
+
+public:
+
+    /**
+    * Constructor
+    * @param aComponent Reference to component.
+    */
+    TVtUiToolbarComponentState( MVtUiComponent& aComponent );
+    
+    };
+
+/**
+* CVtUiToolbar  
+* 
+* Toolbar UI feature definition.
+*
+* @since S60 3.2
+*/
+class CVtUiToolbarBase : public CVtUiFeatureBase, public MAknToolbarObserver,
+    public MVtUiCommandUi, public MVtUiComponent,
+    public MVtUiLayoutChangeObserver
+    {
+    public: // public methods
+
+        /**
+        * C++ destructor.
+        */
+        ~CVtUiToolbarBase();
+    
+    public: // from MAknToolbarObserver 
+    
+        /**
+        * @see MAknToolbarObserver::DynInitToolbarL
+        */
+        void DynInitToolbarL( 
+            TInt aResourceId,
+            CAknToolbar* aToolbar );
+        
+        /**
+        * @see MAknToolbarObserver::DynInitToolbarL
+        */
+        void OfferToolbarEventL( TInt aCommand );
+    
+    public: // from MVtUiFeature
+        /**
+        * @see MVtUiFeature::StartL
+        */
+        void StartL();
+
+        /**
+        * @see MVtUiFeature::Stop
+        */
+        void Stop();
+        
+        /*
+        * @see MVtUiFeature::InitFeatureL
+        */
+        void InitFeatureL();
+        
+    public: // from MVtUiCommandUi
+    
+        /**
+        * @see MVtUiCommandUi::RefreshL
+        */
+        void RefreshL();
+
+        /**
+        *  @see MVtUiCommandUi::AddCommandModifier
+        */
+         TInt AddCommandModifier( CVtUiCommandModifyBase& aModifier );
+
+        /**
+        * @see MVtUiCommandUi::RemoveCommandModifier
+        */
+         void RemoveCommandModifier( CVtUiCommandModifyBase& aModifier );
+        
+    public: // from MVtUiComponent
+
+        /**
+        * @see MVtUiComponent::ComponentId
+        */
+        TComponentId ComponentId() const;
+
+        /**
+        * @see MVtUiComponent::ComponentAsControl
+        */
+        CCoeControl* ComponentAsControl();
+
+        /**
+        * @see MVtUiComponent::DoActivateL
+        */
+        virtual void DoActivateL();
+
+        /**
+        * @see MVtUiComponent::DoDeactivateL
+        */
+        virtual void DoDeactivateL();
+    
+    public: // from MVtUiComponentManager
+
+        /**
+        * @see MVtUiComponentManager::HandleLayoutChangeL
+        */
+        void HandleLayoutChangeL();
+
+    public:
+
+        /**
+        * Return number of commands in toolbar.
+        * @return Number of commands.
+        */
+        TInt NumberOfToolbarControls() const;
+        
+        /**
+        * Maps command id array index to command id.
+        * @param aIndex Command id array index.
+        * @return Command id associated with index.
+        */
+        TInt CommandIdByCmdIdsArrayIndex( TInt aIndex ) const;
+   
+        /**
+        * Updates toolbar's buttons states and
+        * redraws the toolbar.
+        */
+        void UpdateToolbarL();
+     
+        /**
+        * EHidden
+        *  command is hidden
+        * EDimmed
+        *  command is dimmed
+        * EShown
+        * command is visible
+        */
+        enum TCmdStateFlags
+            {
+            ENotInitialized = -1,
+            EHidden,
+            EDimmed,
+            EShown
+            }; 
+
+         /**
+        * Sets visibility of toolbar commands.
+        * @param aCmdId command id.
+        * @param aNewState command's new state.
+        * @return ETrue if command is available, otherwise EFalse.
+        */
+        void SetCmdIdVisibilityStateL( TInt aCmdId, TCmdStateFlags aNewState);
+        
+        /**
+        * Cheks if command is available in toolbar.
+        * @param aCmdId command id.
+        * @return ETrue if command is available, otherwise EFalse.
+        */
+        TBool IsCommandInToolbar( TInt aCmdId ) const;
+         
+    protected:
+
+        /**
+        * C++ constructor
+        */
+        CVtUiToolbarBase( CVtUiFeatureManager& aFeatureManager );
+
+        /**
+        * 2nd phase constructor
+        */
+        void BaseConstructL();
+
+    protected:    
+  
+        /**
+        * Creates toolbar buttons
+        */
+        virtual void CreateToolbarButtonsL();
+
+        /*
+        * Appends all the commnands used by toolbar to an array.
+        */
+        virtual void PopulateCmdsIdsL();    
+            
+        /*
+        * Sets toolbar visibility after layoutchange
+        */    
+        virtual void SetToolbarVisibilityAfterLayoutChangeL( TBool aVisible );
+    
+        /**
+        * Creates all toolbar items()
+        */
+        void CreateToolbarItemL( TInt aResourceId,
+            TInt aCommandId, CVtUiAppUi& appUi );
+   
+        /**
+        * Finds command from array by command id.
+        */
+        CVtUiToolbarButton* FindToolbarItemByCommandId( const TInt aCommandId );
+         
+        /*
+        * Starts or stops to block pointer events
+        * @param aIsBlocking ETrue if events are blocked
+        * otherwise EFalse
+        */
+        void BlockPointerEvents( TBool aIsBlocking );
+           
+        /*
+        * Starts or stops to block key events
+        * @param aIsBlocking ETrue if events are blocked
+        * otherwise EFalse
+        */
+        void BlockKeyEvents( TBool aIsBlocking );
+         
+        /*
+        * Cheks if dialer component is active
+        * @return ETrue if dialer is aactive, otherwise EFalse. 
+        */
+        TBool IsDialerActive() const;
+        
+        /**
+        * Dims toolbar.
+        * @param aDimmed ETrue ETrue to dim the toolbar, 
+        *      EFalse to set the toolbar as not dimmed
+        */
+        void DimToolbar( const TBool aDimmed, const TBool aDrawNow );
+    private:
+    
+        /**
+        * Hides command from toolbar.
+        */
+        void HideToolbarButton( const TInt aCommandId, const TBool aHide,
+            const TBool aDrawNow );
+        
+        /**
+        * Dims command from toolbar.
+        */
+        void DimToolbarButton( const TInt aCommandId, const TBool aDimmed,
+            const TBool aDrawNow ); 
+       
+        /**
+        * Maps toggle button id to single command id.
+        */
+        TInt MapCmdIdToChilId( TInt aCmdId );
+        
+        /**
+        * Maps single command id to toggle button id.
+        */
+        TInt MapCmdIdToParentId( TInt aCmdId );
+        
+        /*
+        * Checks if command id associated with toggle button is visible.
+        * Togglle button has two states and two command ids which has their
+        * own state values. See from .rss file.
+        */
+        TBool IsCmdIdVisibleInToggleButton( TInt aCmdId );
+        
+        /*
+        * Checks if both command ids in togglebutton are dimmed.
+        */
+        TBool IsToggleButtonHidden( TInt aFirstCmdId, TInt aSecondCmdId );
+        
+        /*
+        * Removes registrations.
+        */
+        void Clean();
+        
+    protected: // data
+        
+        // array of supported commmand ids
+        RArray<TInt> iCmdIds;    
+        
+        // current focus id
+        TInt iCmdFocus;
+        
+         // owned toolbar control
+        CAknToolbar* iToolbar;
+        
+        // Number of supported toolbar buttons
+        TInt iNumberOfToolbarButtons;
+     
+    private: // data
+         
+        // struct used by iCmdStates array
+        class TCommandState 
+            {
+            public:
+                TInt iCmdId;
+                TCmdStateFlags iOldState;
+                TCmdStateFlags iNewState;
+            };     
+        
+         // owned toolbar item array
+        RPointerArray<CVtUiToolbarButton> iToolBarControls;
+
+        // toolbar context instance
+        CVtUiToolbarContext* iToolbarCtx; 
+       
+        // owned hide toolbar item action
+        CVtUiHideToolbarItemAction* iHideToolbarItemAction;
+        
+        // Toolbar command policy instance
+        CVtUiToolbarCmdPolicy* iToolbarCmdPolicy;
+        
+        // owned softkey modifier
+        CVtUiToolbarSKModifier* iToolbarSKModifier;
+        
+        // array which hold state information of the commands
+        RArray<TCommandState> iCmdStates;
+        
+        // Component state
+        TVtUiToolbarComponentState iComponentState;
+        
+        // ETrue if capture mode was on in previous update
+        TBool iWasCaptureModePreviousState;
+    
+    };
+
+#endif // C_VTUITOOLBAR_H
\ No newline at end of file