--- /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