williamr@2: /* williamr@2: * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: Toolbar extension component williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef CAKNTOOLBAREXTENSION_H williamr@2: #define CAKNTOOLBAREXTENSION_H williamr@2: williamr@2: #include williamr@2: williamr@2: class CAknToolbarItem; williamr@2: class CAknToolbarExtensionView; williamr@2: class CAknToolbar; williamr@2: williamr@2: williamr@2: /** williamr@2: * Toolbar extension. williamr@2: * williamr@2: * Toolbar extension component. Opens an extension view when this extension williamr@2: * is pressed. williamr@2: * williamr@2: * @lib eikcoctl williamr@2: * @since S60 v5.0 williamr@2: */ williamr@2: NONSHARABLE_CLASS( CAknToolbarExtension ) : public CAknButton, williamr@2: public MCoeControlObserver williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Creates toolbar extension williamr@2: * williamr@2: * @return extension williamr@2: */ williamr@2: static CAknToolbarExtension* NewL( ); williamr@2: williamr@2: williamr@2: /** williamr@2: * Creates toolbar extension williamr@2: * williamr@2: * @param aResourceid The ID for this component's resource williamr@2: * @return extension williamr@2: */ williamr@2: IMPORT_C static CAknToolbarExtension* NewL( TInt aResourceId ); williamr@2: williamr@2: williamr@2: /** williamr@2: * Creates toolbar extension williamr@2: * williamr@2: * @param aResourceid The ID for this component's resource williamr@2: * @return extension williamr@2: */ williamr@2: IMPORT_C static CAknToolbarExtension* NewLC( TInt aResourceId ); williamr@2: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: ~CAknToolbarExtension(); williamr@2: williamr@2: // from base class CCoeControl williamr@2: williamr@2: /** williamr@2: * From CAknButton williamr@2: * constructs the extension from resource williamr@2: * williamr@2: * @param aReader resource reader williamr@2: */ williamr@2: void ConstructFromResourceL( TResourceReader& aReader ); williamr@2: williamr@2: /** williamr@2: * From CCoeControl williamr@2: * williamr@2: * @param aKeyEvent information about the key event williamr@2: * @param aType type of the key event williamr@2: * @return boolean indicating if key event was consumed or not williamr@2: */ williamr@2: TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aType ); williamr@2: williamr@2: /** williamr@2: * From CCoeControl williamr@2: * Handles resource changes williamr@2: * williamr@2: * @param aType the type of the resource change williamr@2: */ williamr@2: void HandleResourceChange( TInt aType ); williamr@2: williamr@2: /** williamr@2: * From CCoeControl. williamr@2: * Makes extension and extension view visible or hides them williamr@2: * williamr@2: * @param aVisible boolean to tell if showing or hiding williamr@2: */ williamr@2: void MakeVisible( TBool aVisible ); williamr@2: williamr@2: williamr@2: // from base class MCoeControlObserver williamr@2: williamr@2: /** williamr@2: * From MCoeControlObserver. williamr@2: * Here the events from the extension itself and extension view components williamr@2: * are handled williamr@2: * williamr@2: * @param aControl control that sent this event williamr@2: * @param aEventType type of the event williamr@2: */ williamr@2: void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType ); williamr@2: williamr@2: williamr@2: // new functions williamr@2: williamr@2: /** williamr@2: * Using this the extension view can get extension position in fixed toolbar williamr@2: * williamr@2: * @return index of the position williamr@2: */ williamr@2: TInt ExtensionPosition(); williamr@2: williamr@2: /** williamr@2: * Creates idle if it does not exist yet and calls it by giving williamr@2: * a callback for notifying when ready to draw extension view. williamr@2: */ williamr@2: void ShowViewViaIdle(); williamr@2: williamr@2: /** williamr@2: * Callback to get notified when ready to show extension view again williamr@2: * @param aThis pointer to this object williamr@2: * @return error code williamr@2: */ williamr@2: static TInt ShowView( TAny* aThis ); williamr@2: williamr@2: /** williamr@2: * Extension view tells extension to change state using this method. This is williamr@2: * used when tapping outside extension view. williamr@2: */ williamr@2: void ViewClosed(); williamr@2: williamr@2: /** williamr@2: * Gets a pointer to the specified control. williamr@2: * williamr@2: * @param aControlId The ID of the control for which a pointer is required. williamr@2: * @return Pointer to the control with the specified ID. williamr@2: */ williamr@2: IMPORT_C CCoeControl* ControlOrNull( TInt aCommandId ) const; williamr@2: williamr@2: /** williamr@2: * Adds one item to the specified place. Takes ownership. Leaves with williamr@2: * value KErrNotSupported, if called when extension view is shown and williamr@2: * with KErrArgument if aItem does not exist or aIndex is out of bound. williamr@2: * williamr@2: * @param aItem The control. williamr@2: * @param aType The type of the new toolbar item. williamr@2: * @param aCommandId The command ID for this item. williamr@2: * @param aFlags The flags. williamr@2: * @param aIndex The index in array at which item should be added. williamr@2: */ williamr@2: IMPORT_C void AddItemL( CCoeControl* aItem, williamr@2: TInt aType, williamr@2: TInt aCommandId, williamr@2: TInt aFlags, williamr@2: TInt aIndex ); williamr@2: williamr@2: williamr@2: /** williamr@2: * Removes one item from the extension view. Leaves with value williamr@2: * KErrNotSupported if called when extension view is shown. williamr@2: * williamr@2: * @param aCommandId The ID of the item which should be removed. williamr@2: */ williamr@2: IMPORT_C void RemoveItemL( TInt aCommandId ); williamr@2: williamr@2: /** williamr@2: * Gets extension flags williamr@2: * williamr@2: * @return extension flags williamr@2: */ williamr@2: TInt ExtensionFlags(); williamr@2: williamr@2: /** williamr@2: * Returns boolean indicating if extension view is shown. williamr@2: * williamr@2: * @return ETrue if shown, EFalse if not williamr@2: */ williamr@2: IMPORT_C TBool IsShown() const; williamr@2: williamr@2: /** williamr@2: * Shows or hides extension view. williamr@2: * williamr@2: * @param aShown to show or to hide williamr@2: */ williamr@2: IMPORT_C void SetShown( TBool aShown ); williamr@2: williamr@2: /** williamr@2: * Returns pointer to extension view williamr@2: * williamr@2: * @return pointer to extension view williamr@2: */ williamr@2: CCoeControl* ExtensionView(); williamr@2: williamr@2: /** williamr@2: * Sets item dimmed or undimmed williamr@2: * williamr@2: * @param aCommandId command id of the item to be dimmed/undimmed williamr@2: * @param aDimmed to dim or undim williamr@2: */ williamr@2: IMPORT_C void SetItemDimmed( TInt aCommandId, TBool aDimmed ); williamr@2: williamr@2: /** williamr@2: * Hides or unhides item. Leaves with value KErrNotSupported if called williamr@2: * when extension view is shown. williamr@2: * williamr@2: * @param aCommandId command id of the item to be hidden/unhidden williamr@2: * @param aHide to hide or unhide williamr@2: */ williamr@2: IMPORT_C void HideItemL( TInt aCommandId, TBool aHide ); williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Constructor williamr@2: */ williamr@2: CAknToolbarExtension(); williamr@2: williamr@2: /** williamr@2: * Constructs the extension button by adding button states with icons williamr@2: */ williamr@2: void BaseConstructL(); williamr@2: williamr@2: /** williamr@2: * Constructs a control from resource williamr@2: * williamr@2: * @param aResourceId The id for this component's resource. williamr@2: */ williamr@2: void ConstructFromResourceL( const TInt aResourceId ); williamr@2: williamr@2: private: // data williamr@2: williamr@2: /** williamr@2: * Pointer to extension view. williamr@2: * Own. williamr@2: */ williamr@2: CAknToolbarExtensionView* iView; williamr@2: williamr@2: /** williamr@2: * Pointer to toolbar, so that extension can notify toolbar about williamr@2: * extension events williamr@2: * Not own. williamr@2: */ williamr@2: CAknToolbar* iToolbar; williamr@2: williamr@2: /** williamr@2: * idle to show extension again on top of other components when williamr@2: * extension is shown when coming back to view. williamr@2: * Own. williamr@2: */ williamr@2: CIdle* iIdle; williamr@2: williamr@2: /** williamr@2: * Extension flags williamr@2: */ williamr@2: TInt iFlags; williamr@2: }; williamr@2: williamr@2: #endif // CAKNTOOLBAREXTENSION_H