uifw/EikStd/coctlinc/akntoolbarextensionview.h
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/EikStd/coctlinc/akntoolbarextensionview.h	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,361 @@
+/*
+* 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:  Toolbar extension view, which shows a set of buttons or other
+*                components. 
+*
+*/
+
+
+#ifndef CAKNTOOLBAREXTENSIONVIEW_H
+#define CAKNTOOLBAREXTENSIONVIEW_H
+
+#include <AknControl.h>
+
+
+class CAknToolbarExtension; 
+class CAknToolbarItem; 
+class CAknsFrameBackgroundControlContext;
+class TAknWindowComponentLayout;
+class CAknResourceProvider;
+
+
+/**
+ *  Toolbar extension view
+ *
+ *  Toolbar extension view shows the extension view window. Extension view
+ *  can consist of buttons, editor and other controls. Extension view is 
+ *  either focused or non-focusing, depending on toolbar. 
+ *
+ *  @lib eikcoctl.lib
+ *  @since S60 v5.0
+ */
+NONSHARABLE_CLASS( CAknToolbarExtensionView ) : public CAknControl
+    {
+public:
+
+    /**
+     * Creates toolbar extension
+     *
+     * @return extension
+     */
+    static CAknToolbarExtensionView* NewL( TResourceReader& aReader,
+        CAknToolbarExtension* aExtension );
+
+    /**
+     * Destructor
+     */
+    ~CAknToolbarExtensionView();
+
+
+// from base class CCoeControl
+
+    /**
+     * From CCoeControl.
+     * Constructs extension view from resource
+     *
+     * @param aReader resource reader
+     */
+    void ConstructFromResourceL( TResourceReader& aReader );
+
+    /**
+     * From CCoeControl
+     * Makes extension visible or hides it
+     *
+     * @param aVisible indicates if to show or to hide
+     */
+    void MakeVisible( TBool aVisible );
+
+    /**
+     * From CCoeControl.
+     * Handles key events. 
+     *
+     * @param aKeyEvent information about the key event
+     * @param aType type of the key event. 
+     * @return consumed or did not consume the key event. 
+     */
+    TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType );
+
+    /**
+     * From CCoeControl.
+     * Gets the number of controls contained in a compound control.
+     *
+     * @return The number of component controls contained by this control.
+     */
+    TInt CountComponentControls() const;
+
+    /**
+     * From CCoeControl.
+     * Gets the specified component of a compound control.
+     *
+     * @param aIndex The index of the control to get
+     * @return The component control with an index of aIndex.
+     */
+    CCoeControl* ComponentControl( TInt aIndex ) const;
+
+    /**
+     * From CCoeControl.
+     * Handles resource changes, for example layout and skin changes 
+     *
+     * @param aType the type of resource change
+     */
+    void HandleResourceChange( TInt aType );
+
+    /**
+     * Handles pointer events
+     * @param aPointerEvent information about the pointer event
+     */
+    void HandlePointerEventL( const TPointerEvent& aPointerEvent ); 
+
+// new functions
+
+    /**
+     * Gets a pointer to the specified control.
+     *
+     * @param aControlId The ID of the control for which a pointer is
+     *      required.
+     * @return Pointer to the control with the specified ID.
+     */
+    CCoeControl* ControlOrNull( TInt aCommandId ) const; 
+
+    /**
+     * Returns command id of the control given
+     * @param aControl the control which command id is needed 
+     * @return command id of the control
+     */
+    TInt CommandIdByControl( CCoeControl* aControl ) const; 
+
+    /**
+     * Checks where controltype is an editor
+     * @param aType controltype of the control
+     * @return ETrue if control is editor. 
+     */
+    TBool Editor( TInt aType );
+
+    /**
+     * Adds one item to the specified place. Takes ownership.
+     * Leaves with value KErrArgument if aItem does not exist or 
+     * aIndex is out of bound. 
+     *
+     * @param aItem The control.
+     * @param aType The type of the new toolbar item.
+     * @param aCommandId The command ID for this item.
+     * @param aFlags The flags.
+     * @param aIndex The index in array at which item should be added.
+     */
+    void AddItemL( CCoeControl* aItem,
+                   TInt aType,
+                   TInt aCommandId,
+                   TInt aFlags,
+                   TInt aIndex );
+
+    /**
+     * Removes an item
+     * @param aCommandId the command id of the item to be removed
+     */
+    void RemoveItemL( TInt aCommandId ); 
+
+    /**
+     * Sets an item dimmed or undimmed
+     * @param aCommandId the command id of the item to be dimmed
+     * @param aDimmed to dim or undim
+     */
+    void SetItemDimmed( TInt aCommandId, TBool aDimmed ); 
+
+    /**
+     * Hides an item or unhides it
+     * @param aCommandId command id of the item to be hidden/unhidden
+     * @param aHidden to hide or unhide
+     */
+    void HideItemL( TInt aCommandId, TBool aHide ); 
+
+private: // Functions from base class
+
+    /**
+     * From CCoeControl. Draws the control. Called by window server.
+     */
+    void Draw( const TRect& aRect ) const;  
+
+
+private: // New functions
+
+    /**
+     * Default constructor
+     *
+     * @param aExtension pointer to extension
+     */
+    CAknToolbarExtensionView( CAknToolbarExtension* aExtension );
+
+    /**
+     * 2nd phase constructor
+     */
+    void ConstructL(); 
+
+    /**
+     * Constructs an control from resources 
+     *
+     * @param aReader resource reader
+     * @return a toolbar item
+     */
+    CAknToolbarItem* ConstructControlLC( TResourceReader& aReader ); 
+
+    /**
+     * Calculates size and position for the extension
+     *
+     * @return the extension rect
+     */
+    TRect CalculateSizeL(); 
+
+    /**
+     * Selects or unselects an item
+     *
+     * @param aIndex the item to select/unselect
+     * @param aSelect if to select an item or unselect it
+     */
+    void SelectItemL( TInt aIndex, TBool aSelect ); 
+
+    /**
+     * Gets rect from layout data.
+     */
+    TRect RectFromLayout( const TRect& aParent,
+        const TAknWindowComponentLayout& aComponentLayout) const; 
+
+    /**
+     * Resizing editor and button after it
+     */
+    void ResizeFindPaneL( TRect& aWindowRect, TBool aLandscape, TInt aPosition, 
+        TInt& aIndex ); 
+
+    /**
+     * Getting the correct y-coordinate for extension
+     */
+    TInt GetVariety( TInt aRow, TBool aLandscape ); 
+
+    /**
+     * Checking button frames when an item was added, removed, hidden or unhidden
+     * after an editor. 
+     */
+    void CheckButtonFrames( TInt aAdd, TInt aIndex ); 
+
+    /**
+     * Returns index of the item which commandid is given as parameter. 
+     */
+    TInt ToolbarItemIndexById( TBool aVisibleItems, const TInt aId ) const;  
+
+    /**
+     * Moves highlight to another item
+     * @param aDirection to which direction to move, enum defined in 
+     *        akntoolbarextenion.view.cpp
+     * @param aIndex if aDirection is  ENoDirection, this index informs to which item 
+     *        to move the highlight
+     */
+    void MoveHighlightL( TInt aDirection, TInt aIndex );
+
+    /**
+     * Calculates next focusable item. Used with floating toolbar extension. 
+     * @param aStep how many steps to move. 
+     * @return index of the next focusable item
+     */
+    TInt NextFocusable( TInt aStep ); 
+
+    /**
+     * Adjusts button's properties depending on the toolbar extension's features.
+     */                                   
+    void AdjustButtonL( CAknButton& aButton );
+    
+    /**
+     * Calculates and sets the control positions according to layout rects
+     * @param aWindowRect Window rect
+     * @param aGridRect Grid rect
+     * @param aCellRect Cell rect
+     * @return Extension width
+     */                                   
+    TInt CalculateControlPositions( 
+        TRect& aWindowRect, TRect& aGridRect, TRect& aCellRect );
+
+    /**
+     * Returns hidden items count
+     * Needed when iVisibleItems is not up-to-date.
+     * @return Count of hidden items
+     */                                   
+    TInt CountHiddenItems();
+
+private: // data
+
+    /** Toolbar extension frame context
+     * Own
+     */ 
+    CAknsFrameBackgroundControlContext* iFrameContext;
+
+    /**
+     * Pointer to extension
+     * Not own. 
+     */
+    CAknToolbarExtension* iExtension; 
+
+    /**
+     * Pointer array of extension items
+     * Own. 
+     */
+    RPointerArray<CAknToolbarItem> iItems; 
+
+    /**
+     * Pointer array of extension items
+     * Own. 
+     */
+    RPointerArray<CAknToolbarItem> iVisibleItems; 
+
+    /**
+     * Extension position
+     */
+    TPoint iExtensionPosition; 
+
+    /**
+     * Currently selected item
+     */
+    TInt iSelectedItem; 
+
+    /**
+     * Previously selected item, used in handlepointerevent to control
+     * the pointer events
+     */
+    TInt iPreviousItem; 
+
+    /**
+     * Item that catches point down event
+     */
+    TInt iDownItem;
+
+    /**
+     * Number of colums in extension. Used when moving the focus down or up. 
+     */
+    TInt iNumberOfColumns; 
+
+    /**
+     * Number of rows in extension. 
+     */
+    TInt iNumberOfRows; 
+
+    /**
+     * Resource provider.
+     * Own.
+     */
+    CAknResourceProvider* iResourceProvider;
+
+    /*
+     * record whether the touch down operation takes place outside the view area
+     */
+    TBool    iIsDownOutside;
+    };
+
+#endif // CAKNTOOLBAREXTENSIONVIEW_H