diff -r 000000000000 -r 2f259fa3e83a uifw/EikStd/coctlinc/akntoolbarextensionview.h --- /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 + + +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 iItems; + + /** + * Pointer array of extension items + * Own. + */ + RPointerArray 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