--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/classicui_pub/generic_button_api/inc/AknButton.h Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,1491 @@
+/*
+* Copyright (c) 2005-2008 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: Button component.
+*
+*/
+
+
+
+#ifndef __AKNBUTTON_H__
+#define __AKNBUTTON_H__
+
+// INCLUDES
+#include <AknControl.h>
+#include <AknIconUtils.h>
+#include <AknUtils.h>
+
+// FORWARD DECLARATIONS
+class CGulIcon;
+class CAknButton;
+class CAknButtonExtension;
+class CAknInfoPopupNoteController;
+class CAknButtonStateExtension;
+class CAknPictographInterface;
+class CAknsFrameBackgroundControlContext;
+class CAknResourceProvider;
+
+// CLASS DECLARATION
+
+/**
+* Class which represents one of the button states.
+*
+* @lib eikcoctl.lib
+* @since Series 60 3.1
+*/
+class CAknButtonState : public CBase
+ {
+ public: // Constructors and destructors
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~CAknButtonState();
+
+ protected: // Constructors and destructors
+
+ /**
+ * Constructor.
+ *
+ * @param aFlags The flags for the button state
+ */
+ IMPORT_C CAknButtonState( const TInt aFlags );
+
+ /**
+ * Symbian 2nd phase constructor.
+ *
+ * @param aIcon The icon for the normal state. Takes ownership.
+ * @param aDimmedIcon The icon for the dimmed state. Takes ownership.
+ * @param aPressedIcon The icon for the pressed down. Takes ownership.
+ * @param aHoverIcon The icon for the hover state. Takes ownership.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ */
+ IMPORT_C void ConstructL( CGulIcon* aIcon,
+ CGulIcon* aDimmedIcon,
+ CGulIcon* aPressedIcon,
+ CGulIcon* aHoverIcon,
+ const TDesC& aText,
+ const TDesC& aHelpText );
+
+ /**
+ * Symbian 2nd phase constructor.
+ *
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the normal state icon.
+ * @param aMaskId The mask ID for the normal state icon.
+ * @param aDimmedBmpId The bitmap ID for the dimmed state icon.
+ * @param aDimmedMaskId The mask ID for the dimmed state icon.
+ * @param aPressedBmpId The bitmap ID for the pressed down state.
+ * @param aPressedMaskId The mask ID for the pressed down state.
+ * @param aHoverBmpId The bitmap ID for the hover state icon.
+ * @param aHoverMaskId The mask ID for the hover state icon.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon.
+ * @param aDimmedId Item ID of the dimmed masked bitmap to be created
+ * for skin specific icon.
+ * @param aPressedId Item ID of the pressed masked bitmap to be created
+ * for skin specific icon.
+ * @param aHoverId Item ID of the masked hover bitmap to be created
+ * for skin specific icon.
+ */
+ IMPORT_C void ConstructL( const TDesC& aFilePath,
+ const TInt aBmpId,
+ const TInt aMaskId,
+ const TInt aDimmedBmpId,
+ const TInt aDimmedMaskId,
+ const TInt aPressedBmpId,
+ const TInt aPressedMaskId,
+ const TInt aHoverBmpId,
+ const TInt aHoverMaskId,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TAknsItemID& aId = KAknsIIDNone,
+ const TAknsItemID& aDimmedId = KAknsIIDNone,
+ const TAknsItemID& aPressedId = KAknsIIDNone,
+ const TAknsItemID& aHoverId = KAknsIIDNone );
+
+ public: // New functions
+
+ /**
+ * Provides the icon for the normal state.
+ *
+ * @return The icon for the normal state.
+ */
+ IMPORT_C const CGulIcon* Icon() const;
+
+ /**
+ * Provides the icon for the dimmed state.
+ *
+ * @return The icon for the dimmed state.
+ */
+ IMPORT_C const CGulIcon* DimmedIcon() const;
+
+ /**
+ * Provides the icon for the pressed down (not released) state.
+ *
+ * @return The icon for the pressed down (not released) state.
+ */
+ IMPORT_C const CGulIcon* PressedIcon() const;
+
+ /**
+ * Provides the icon for the hover state.
+ *
+ * @return The icon for the hover state.
+ */
+ IMPORT_C const CGulIcon* HoverIcon() const;
+
+ /**
+ * Provides the text inside the button.
+ *
+ * @return The button text.
+ */
+ IMPORT_C const TDesC& Text() const;
+
+ /**
+ * Provides the text inside the help note.
+ *
+ * @return The tooltip text.
+ */
+ IMPORT_C const TDesC& HelpText() const;
+
+ /**
+ * Provides the flags for the state.
+ *
+ * @return The state flags.
+ */
+ IMPORT_C TInt Flags() const;
+
+ /**
+ * Sets the icon for the normal state. Takes ownership.
+ *
+ * @param aIcon The icon for the normal state.
+ */
+ IMPORT_C void SetIcon( CGulIcon* aIcon );
+
+ /**
+ * Sets the icon for the dimmed state. Takes ownership.
+ *
+ * @param aDimmedIcon The icon for the dimmed state.
+ */
+ IMPORT_C void SetDimmedIcon( CGulIcon* aDimmedIcon );
+
+ /**
+ * Sets the icon for the pressed down state. Takes ownership.
+ *
+ * @param aPressedIcon The icon for the pressed down state.
+ */
+ IMPORT_C void SetPressedIcon( CGulIcon* aPressedIcon );
+
+ /**
+ * Sets the icon for the hover state. Takes ownership.
+ *
+ * @param aHoverIcon The icon for the hover state.
+ */
+ IMPORT_C void SetHoverIcon( CGulIcon* aHoverIcon );
+
+ /**
+ * Sets the text inside the button.
+ *
+ * @param aText The text inside the button.
+ */
+ IMPORT_C void SetTextL( const TDesC& aText );
+
+ /**
+ * Sets the text inside the help note.
+ *
+ * @param aHelpText The text inside the tooltip.
+ */
+ IMPORT_C void SetHelpTextL( const TDesC& aHelpText );
+
+ /**
+ * Sets the flags for the state.
+ *
+ * @param aFlags The flags for the state.
+ */
+ IMPORT_C void SetFlags( const TInt aFlags );
+
+ /**
+ * Sets the icon for the normal state
+ *
+ * @param aFlags The flags for the state.
+ */
+ void UpdateIconL( const TDesC& aFilePath,
+ const TInt aBmpId,
+ const TInt aMaskId,
+ const TInt aDimmedBmpId,
+ const TInt aDimmedMaskId,
+ const TInt aPressedBmpId,
+ const TInt aPressedMaskId,
+ const TInt aHoverBmpId,
+ const TInt aHoverMaskId,
+ const TAknsItemID& aId = KAknsIIDNone,
+ const TAknsItemID& aDimmedId = KAknsIIDNone,
+ const TAknsItemID& aPressedId = KAknsIIDNone,
+ const TAknsItemID& aHoverId = KAknsIIDNone );
+
+
+
+ protected: // New functions
+
+ /**
+ * Constructs controls from a resource file.
+ * @param aReader The resource reader with which to access the
+ * control's resource values.
+ */
+ IMPORT_C virtual void ConstructFromResourceL( TResourceReader& aReader );
+
+ /**
+ * Updates the size of icons. Called from CAknButton::SizeChanged()
+ * function.
+ *
+ * @param aRect The new rectangle for the icons.
+ * @param aScaleMode The scale mode which was set for the button.
+ */
+ IMPORT_C virtual void SizeChanged( const TRect& aRect,
+ TScaleMode aScaleMode );
+
+ /**
+ * @return ETrue if the button has valid text (not empty and not space).
+ */
+ IMPORT_C TBool HasText() const;
+
+ /**
+ * @return ETrue if the button has valid tooltip text (not empty and
+ * not space).
+ */
+ IMPORT_C TBool HasHelp() const;
+
+ /**
+ * Handles changes in state's environment.
+ *
+ * @since S60 3.2.
+ * @param aType Resource change's type.
+ */
+ void HandleResourceChange( TInt aType );
+
+ /**
+ * Sets default scaling mode.
+ *
+ * @since S60 3.2
+ * @param aScaleMode Scaling mode.
+ */
+ void SetIconScaleMode( const TScaleMode aScaleMode );
+
+ private: // new functions
+
+ /**
+ * Creates one icon based on the specified file path and IDs.
+ *
+ * @param aIcon The icon object which is created and returned.
+ * Will be deleted if it is not NULL on entry.
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the icon.
+ * @param aMaskId The mask ID for the icon.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon.
+ */
+ void CreateButtonIconL( CGulIcon*& aIcon, const TDesC& aFilePath,
+ TInt aBmpId, TInt aMaskId,
+ const TAknsItemID& aId = KAknsIIDNone ) const;
+
+ /**
+ * Loads one icon based on the specified file path and IDs. If the icon
+ * is already loaded it is deleted and replaced with a reloaded copy.
+ *
+ * @since S60 3.2
+ * @param aIcon The icon object which is created and returned.
+ * Will be deleted if it is not NULL on entry.
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the icon.
+ * @param aMaskId The mask ID for the icon.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon.
+ */
+ void LoadButtonIcon( CGulIcon*& aIcon ) const;
+
+ /**
+ * Replaces the given icon with a new one. If the original icon had its
+ * size set then the new icon is scaled to that size.
+ *
+ * @since S60 3.2
+ */
+ void ReplaceIcon( CGulIcon*& aIcon, CGulIcon* aNewIcon );
+
+ /**
+ * Scales all icons.
+ *
+ * @since S60 3.2
+ * @param aSize New icon size.
+ * @param aScaleMode Scaling mode.
+ * @return KErrNone or an error code.
+ */
+ TInt ScaleIcons( const TSize& aSize, TScaleMode aScaleMode );
+
+ /**
+ * @return The extension object.
+ */
+ CAknButtonStateExtension* Extension() const;
+
+ /**
+ * @return The scalemode of the ButtonState
+ */
+ TScaleMode ScaleMode() const;
+
+ /**
+ * @param aDimmedIconCreatedByButton ETrue, if the dimmed icon of the state is
+ * created by owning Button
+ */
+ void SetGeneratedDimmedIcon( TBool aDimmedIconCreatedByButton );
+
+ friend class CAknButton;
+
+ protected: // data
+ CGulIcon* iIcon; // bitmaps for normal state
+ CGulIcon* iDimmedIcon; // bitmaps for dimmed icon
+ CGulIcon* iPressedIcon; // bitmaps for pressed but not activated state
+ CGulIcon* iHoverIcon; // bitmaps for hover icon
+ HBufC* iText; // text for normal state
+ HBufC* iHelpText; // text which is shown as a help
+ TInt iFlags; // flags for the state
+ CAknButtonStateExtension* iExtension; // for future extensions
+ };
+
+
+// CLASS DECLARATION
+
+/**
+* Generic button class.
+*
+* @lib eikcoctl.lib
+* @since Series 60 3.1
+*/
+class CAknButton : public CAknControl
+ {
+ public: // Enumerations
+
+ enum TAlignment
+ {
+ ECenter, /* align center vertically or horizontally */
+ ETop, /* align to top vertically */
+ EBottom, /* align to bottom vertically */
+ ERight, /* align to right horizontally */
+ ELeft /* align to left horixontally */
+ };
+
+ enum TTooltipPosition
+ {
+ EPositionTop = 1, /* Tool tip alignment vertically to top */
+ EPositionBottom, /* Tool tip alignment vertically to bottom */
+ EPositionLeft, /* Tool tip alignment horizontally to left */
+ EPositionRight /* Tool tip alignment horizontally to right */
+ };
+
+ enum TTextAndIconAlignment
+ {
+ EIconBeforeText, /* Icon and text side by side Icon first */
+ EIconAfterText, /* Icon and text side by side Text first */
+ EIconUnderText, /* Icon and text one upon the other Icon under the text */
+ EIconOverText, /* Icon and text one upon the other Icon over the text */
+ EOverlay /* Icon and text overlaid */
+ };
+
+ enum TButtonEvent
+ {
+ ELongPressEvent = 100, /* Observer event for long press event */
+ ELongPressEndedEvent /* Observer event for long press ended event */
+ };
+
+ public: // Constructors and destructors
+
+ /**
+ * Two-phased constructor.
+ * Constructs an empty button.
+ */
+ IMPORT_C static CAknButton* NewL();
+
+ /**
+ * Two-phased constructor. Constructs an empty button.
+ */
+ IMPORT_C static CAknButton* NewLC();
+
+ /**
+ * Two-phased constructor. Constructs the button from resources.
+ *
+ * @param aReader is the resource reader with which to access
+ * the control's resource values.
+ */
+ IMPORT_C static CAknButton* NewL( TResourceReader& aReader );
+
+ /**
+ * Two-phased constructor. Constructs the button from resources.
+ *
+ * @param aReader is the resource reader with which to access
+ * the control's resource values.
+ */
+ IMPORT_C static CAknButton* NewLC( TResourceReader& aReader );
+
+ /**
+ * Two-phased constructor. Constructs the button from resources.
+ *
+ * @param aResourceId is the ID for this component's resource.
+ */
+ IMPORT_C static CAknButton* NewL( const TInt aResourceId );
+
+ /**
+ * Two-phased constructor. Constructs the button from resources.
+ *
+ * @param aResourceId is the ID for this component's resource.
+ */
+ IMPORT_C static CAknButton* NewLC( const TInt aResourceId );
+
+ /**
+ * Two-phased constructor. Constructs one state button.
+ *
+ * @param aIcon The icon for the normal state. Takes ownership.
+ * @param aDimmedIcon The icon for the dimmed state. Takes ownership.
+ * @param aPressedIcon The icon for the pressed down. Takes ownership.
+ * @param aHoverIcon The icon for the hover state. Takes ownership.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aButtonFlags The flags for the button.
+ * @param aStateFlags The flags for the first state.
+ */
+ IMPORT_C static CAknButton* NewL( CGulIcon* aIcon,
+ CGulIcon* aDimmedIcon,
+ CGulIcon* aPressedIcon,
+ CGulIcon* aHoverIcon,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aButtonFlags,
+ const TInt aStateFlags );
+
+ /**
+ * Two-phased constructor. Constructs one state button.
+ *
+ * @param aIcon The icon for the normal state. Takes ownership.
+ * @param aDimmedIcon The icon for the dimmed state. Takes ownership.
+ * @param aPressedIcon The icon for the pressed down. Takes ownership.
+ * @param aHoverIcon The icon for the hover state. Takes ownership.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aButtonFlags The flags for the button.
+ * @param aStateFlags The flags for the first state.
+ */
+ IMPORT_C static CAknButton* NewLC( CGulIcon* aIcon,
+ CGulIcon* aDimmedIcon,
+ CGulIcon* aPressedIcon,
+ CGulIcon* aHoverIcon,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aFlags,
+ const TInt aStateFlags );
+
+ /**
+ * Two-phased constructor. Constructs one state button.
+ *
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the normal state icon.
+ * @param aMaskId The mask ID for the normal state icon.
+ * @param aDimmedBmpId The bitmap ID for the dimmed state icon.
+ * @param aDimmedMaskId The mask ID for the dimmed state icon.
+ * @param aPressedBmpId The bitmap ID for the pressed down state.
+ * @param aPressedMaskId The mask ID for the pressed down state.
+ * @param aHoverBmpId The bitmap ID for the hover state.
+ * @param aHoverMaskId The mask ID for the hover state.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aButtonFlags The flags for the button.
+ * @param aStateFlags The flags for the first state.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon.
+ * @param aDimmedId Item ID of the dimmed masked bitmap to be created
+ * for skin specific icon.
+ * @param aPressedId Item ID of the pressed masked bitmap to be created
+ * for skin specific icon.
+ * @param aHoverId Item ID of the masked hover bitmap to be created
+ * for skin specific icon.
+ */
+ IMPORT_C static CAknButton* NewL( const TDesC& aFilePath,
+ const TInt aBmpId,
+ const TInt aMaskId,
+ const TInt aDimmedBmpId,
+ const TInt aDimmedMaskId,
+ const TInt aPressedBmpId,
+ const TInt aPressedMaskId,
+ const TInt aHoverBmpId,
+ const TInt aHoverMaskId,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aButtonFlags,
+ const TInt aStateFlags,
+ const TAknsItemID& aId = KAknsIIDNone,
+ const TAknsItemID& aDimmedId = KAknsIIDNone,
+ const TAknsItemID& aPressedId = KAknsIIDNone,
+ const TAknsItemID& aHoverId = KAknsIIDNone );
+
+ /**
+ * Two-phased constructor. Constructs one state button.
+ *
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the normal state icon.
+ * @param aMaskId The mask ID for the normal state icon.
+ * @param aDimmedBmpId The bitmap ID for the dimmed state icon.
+ * @param aDimmedMaskId The mask ID for the dimmed state icon.
+ * @param aPressedBmpId The bitmap ID for the pressed down state.
+ * @param aPressedMaskId The mask ID for the pressed down state.
+ * @param aHoverBmpId The bitmap ID for the hover state.
+ * @param aHoverMaskId The mask ID for the hover state.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aButtonFlags The flags for the button.
+ * @param aStateFlags The flags for the first state.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon.
+ * @param aDimmedId Item ID of the dimmed masked bitmap to be created
+ * for skin specific icon.
+ * @param aPressedId Item ID of the pressed masked bitmap to be created
+ * for skin specific icon.
+ * @param aHoverId Item ID of the hover state masked bitmap to be
+ * created for skin specific icon.
+ */
+ IMPORT_C static CAknButton* NewLC( const TDesC& aFilePath,
+ const TInt aBmpId,
+ const TInt aMaskId,
+ const TInt aDimmedBmpId,
+ const TInt aDimmedMaskId,
+ const TInt aPressedBmpId,
+ const TInt aPressedMaskId,
+ const TInt aHoverBmpId,
+ const TInt aHoverMaskId,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aButtonFlags,
+ const TInt aStateFlags,
+ const TAknsItemID& aId = KAknsIIDNone,
+ const TAknsItemID& aDimmedId = KAknsIIDNone,
+ const TAknsItemID& aPressedId = KAknsIIDNone,
+ const TAknsItemID& aHoverId = KAknsIIDNone );
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C virtual ~CAknButton();
+
+ public: // Functions from base class
+
+ /**
+ * Sets control as ready to be drawn.
+ */
+ IMPORT_C void ActivateL();
+
+ /**
+ * Constructs controls from a resource file.
+ *
+ * @param aReader The resource reader, with which to access the
+ * control's resource values.
+ */
+ IMPORT_C void ConstructFromResourceL( TResourceReader& aReader );
+
+ /**
+ * Handles a change to the control's resources.
+ *
+ * @param aType is a message UID value.
+ */
+ IMPORT_C void HandleResourceChange( TInt aType );
+
+ /**
+ * Returns the control's minimum required size. It does not include the
+ * size of the highlight. However, it includes current margins.
+ * Use HighlightRect() function to get highlight rectangle for the
+ * focused button.
+ *
+ * @return The minimum size required by the control.
+ */
+ IMPORT_C TSize MinimumSize();
+
+ /**
+ * Sets button dimmed. Does not redraw the button. Note: This function
+ * does not affect the flag set with function CCoeControl::SetDimmed(),
+ * since button needs to get pointer events, even if it is dimmed.
+ * The value of the flag can be enquired using CAknButotn::IsDimmed().
+ *
+ * @param aDimmed is ETrue to dim the button, EFalse to set the button
+ * as not dimmed.
+ */
+ IMPORT_C void SetDimmed( TBool aDimmed );
+
+ /**
+ * Handles key events.
+ *
+ * @param aKeyEvent The key event.
+ * @param aType The type of key event: EEventKey, EEventKeyUp or
+ * EEventKeyDown.
+ */
+ IMPORT_C TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+ TEventCode aType );
+
+ /**
+ * Sets this control as visible or invisible.
+ *
+ * @param aVisible ETrue to make the control visible, EFalse to make
+ * it invisible.
+ */
+ IMPORT_C void MakeVisible( TBool aVisible );
+
+ /**
+ * This function is called by the dialog framework immediately before
+ * it removes keyboard focus from a control within a dialog.
+ * Currently has empty implementation.
+ */
+ IMPORT_C void PrepareForFocusLossL();
+
+ /**
+ * Prepares the control for gaining focus.
+ * Must be used before calling SetFocus() function in case when help
+ * note should be shown.
+ */
+ IMPORT_C void PrepareForFocusGainL();
+
+ /**
+ * Handles pointer events.
+ *
+ * @param aPointerEvent The pointer event.
+ */
+ IMPORT_C void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+
+ /**
+ * Responds to changes in the position of a control.
+ */
+ IMPORT_C virtual void PositionChanged();
+
+ public: // New functions
+
+ /**
+ * Constructs controls from a resource file.
+ *
+ * @param aResourceId The ID for this component's resource.
+ */
+ IMPORT_C void ConstructFromResourceL( const TInt aResourceId );
+
+ /**
+ * Sets button state.
+ *
+ * @param aStateIndex The index for the state, starts from 0.
+ * @param aDrawNow ETrue to redraw the button.
+ */
+ IMPORT_C virtual void SetCurrentState( const TInt aStateIndex,
+ const TBool aDrawNow );
+
+ /**
+ * Adds one more state for the button to the end of state array.
+ *
+ * @param aIcon The icon object containing a bitmap and a mask (if
+ * there is one) for the button.
+ * @param aDimmedIcon The icon object containing a bitmap and a mask
+ * (if there is one) for the dimmed case.
+ * @param aPressedIcon The icon object containing a bitmap and a mask
+ * (if there is one) for the case when button is pressed.
+ * @param aHoverIcon The icon object containingg a bitmap and a mask
+ * for the case when the pointer is hovering over the button.
+ * @param aText is the text.
+ * @param aHelpText is the text for the tooltip.
+ * @param aStateFlags The flags for the state.
+ */
+ IMPORT_C virtual void AddStateL( CGulIcon* aIcon,
+ CGulIcon* aDimmedIcon,
+ CGulIcon* aPressedIcon,
+ CGulIcon* aHoverIcon,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aStateFlags );
+
+ /**
+ * Adds one more state for the button.
+ *
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the normal state icon.
+ * @param aMaskId The mask ID for the normal state icon.
+ * @param aDimmedBmpId The bitmap ID for the dimmed state icon.
+ * @param aDimmedMaskId The mask ID for the dimmed state icon.
+ * @param aPressedBmpId The bitmap ID for the pressed down state.
+ * @param aPressedMaskId The mask ID for the pressed down state.
+ * @param aHoverBmpId The bitmap ID for the hover state.
+ * @param aHoverMaskId The mask ID for the hover state.
+ * @param aHoverId Item ID of the hover state masked bitmap to be
+ * created for skin specific icon.
+ * @param aText is the text.
+ * @param aHelpText is the text for the tooltip.
+ * @param aStateFlags The flags for the state.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon. Use KAknsIIDNone when it is not needed.
+ * @param aDimmedId Item ID of the dimmed masked bitmap to be created
+ * for skin specific icon. Use KAknsIIDNone when it is not needed.
+ * @param aPressedId Item ID of the pressed masked bitmap to be created
+ * for skin specific icon. Use KAknsIIDNone when it is not needed.
+ * @param aHoverId Item ID of the hover state masked bitmap to be
+ * created for skin specific icon.
+ */
+ IMPORT_C virtual void AddStateL( const TDesC& aFilePath,
+ const TInt aBmpId,
+ const TInt aMaskId,
+ const TInt aDimmedBmpId,
+ const TInt aDimmedMaskId,
+ const TInt aPressedBmpId,
+ const TInt aPressedMaskId,
+ const TInt aHoverBmpId,
+ const TInt aHoverMaskId,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aStateFlags,
+ const TAknsItemID& aId,
+ const TAknsItemID& aDimmedId,
+ const TAknsItemID& aPressedId,
+ const TAknsItemID& aHoverId );
+
+ /**
+ * Adds one more state for the button to the end of state array.
+ *
+ * @param aIcon The icon object containing a bitmap and
+ * a mask (if there is one) for the button.
+ * @param aDimmedIcon The icon object containing a bitmap and a mask
+ * (if there is one) for the dimmed case.
+ * @param aPressedIcon The icon object containing a bitmap and a mask
+ * (if there is one) for the case when
+ * button is pressed.
+ * @param aHoverIcon The icon object containingg a bitmap and
+ * a mask for the case when the pointer is
+ * hovering over the button.
+ * @param aText is the text.
+ * @param aHelpText is the text for the tooltip.
+ * @param aStateFlags The flags for the state.
+ * @param aCommandId Command to be attached with the state.
+ */
+ void AddStateL( CGulIcon* aIcon,
+ CGulIcon* aDimmedIcon,
+ CGulIcon* aPressedIcon,
+ CGulIcon* aHoverIcon,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aStateFlags,
+ const TInt aCommandId );
+
+ /**
+ * Sets the button flags.
+ *
+ * @param aFlags which can be combination of: KAknButtonTextLeft,
+ * KAknButtonSizeFitText, KAknButtonNoFrame, KAknButtonKeyRepeat,
+ * KAknButtonReportOnKeyDown, KAknButtonNoFramePressEvent,
+ * KAknButtonRequestExitOnButtonUpEvent, KAknButtonReportOnLongPress.
+ */
+ IMPORT_C void SetButtonFlags( const TInt aFlags );
+
+ /**
+ * Sets specified frame IDs. Can be used when default frame is not
+ * suitable. Use KAknsIIDNone value in case when some frame or center
+ * drawing is not needed or KAknsIIDDefault when the default button
+ * frame should be used.
+ *
+ * @param aFrameId The item ID of the entire frame.
+ * @param aCenterId The item ID of the center part of the frame.
+ * @param aLatchedFrameId The item ID of the entire frame for button
+ * in latched state.
+ * @param aLatchedCenterId The item ID of the center part of the
+ * frame for button in latched state.
+ * @param aDimmedFrameId The item ID of the entire frame for a button
+ * in dimmed state.
+ * @param aDimmedCenterId The item ID of the center part of the frame
+ * for a button in dimmed state.
+ * @param aPressedFrameId The item ID of the entire frame for a
+ * button in pressed state.
+ * @param aPressedCenterId is the item ID of the center part of the
+ * frame for a button in pressed state.
+ * @param aLatchedDimmedFrameId The item ID of the entire frame for
+ * a button in latched and dimmed state.
+ * @param aLatchedDimmedCenterId The item ID of the center part of
+ * the frame for a button in latched and dimmed state.
+ */
+ IMPORT_C void SetFrameAndCenterIds( const TAknsItemID& aFrameId,
+ const TAknsItemID& aCenterId,
+ const TAknsItemID& aLatchedFrameId,
+ const TAknsItemID& aLatchedCenterId,
+ const TAknsItemID& aDimmedFrameId,
+ const TAknsItemID& aDimmedCenterId,
+ const TAknsItemID& aPressedFrameId,
+ const TAknsItemID& aPressedCenterId,
+ const TAknsItemID& aLatchedDimmedFrameId,
+ const TAknsItemID& aLatchedDimmedCenterId );
+
+ /**
+ * Sets specified background IDs. Can be used when default frame is not
+ * suitable and the backgound is composed of only single image instead
+ * of frame and center. SetFrameAndCenterIds() function can also be used
+ * for this purpose by giving the same backround ID for both frame and
+ * center. This allows also some of the states to be composed of frames
+ * and the others from single backgound images. Use KAknsIIDNone value
+ * in case when some backgound drawing is not needed or KAknsIIDDefault
+ * when the default button frame should be used.
+ *
+ * @param aBackgroundId The item ID of the entire frame.
+ * @param aLatchedBackgroundId The item ID of the background for the
+ * button in latched state.
+ * @param aDimmedBackgroundId The item ID of the background for the
+ * button in dimmed state.
+ * @param aPressedBackgroundId The item ID of the background for the
+ * button in pressed state.
+ * @param aLatchedDimmedBackgroundId The item ID of the background for
+ * the button in latched and dimmed state.
+ */
+ IMPORT_C void SetBackgroundIds( const TAknsItemID& aBackgroundId,
+ const TAknsItemID& aLatchedBackgroundId,
+ const TAknsItemID& aDimmedBackgroundId,
+ const TAknsItemID& aPressedBackgroundId,
+ const TAknsItemID& aLatchedDimmedBackgroundId );
+
+ /**
+ * Sets some specific text font.
+ *
+ * @param aFont The font, which should be used for the text inside the
+ * text button.
+ */
+ IMPORT_C void SetTextFont( const CFont* aFont );
+
+ /**
+ * Sets the color table and color index for the button text. It will be
+ * used on button drawing, if color of the text shouldn't be taken from
+ * text layout.
+ *
+ * @param aTextColorTableId Id for the color table
+ * @param aTextColorIndex Index of the color inside color table.
+ */
+ IMPORT_C void SetTextColorIds( const TAknsItemID& aTextColorTableId,
+ const TInt aTextColorIndex );
+
+ /**
+ * Sets the horizontal alignment for the text inside the button. It
+ * will be used, if alignment shouldn't be taken from text layout. By
+ * default it will be centered.
+ *
+ * @param aHorizontalAlignment The horizontal alignment for the text.
+ */
+ IMPORT_C void SetTextHorizontalAlignment(
+ const CGraphicsContext::TTextAlign aHorizontalAlignment );
+
+ /**
+ * Sets the vertical alignment for the text inside the button. It will
+ * be used if alignment shouldn't be taken from text layout. By default
+ * it will be centered.
+ *
+ * @param aVerticalAlignment The vertical alignment for the text.
+ */
+ IMPORT_C void SetTextVerticalAlignment(
+ const CAknButton::TAlignment aVerticalAlignment );
+
+ /**
+ * Sets the icon and text alignment for a button having both
+ *
+ * @param aAlignment. TTextAndIconAlignment
+ */
+ IMPORT_C void SetTextAndIconAlignment(
+ const CAknButton::TTextAndIconAlignment aAlignment );
+
+ /**
+ * Sets the text underline style for the text inside the button. By
+ * default no underline is used.
+ *
+ * @param aUnderlineStyle The style of underline.
+ */
+ IMPORT_C void SetTextUnderlineStyle( TFontUnderline aUnderlineStyle );
+
+ /**
+ * Sets the scale mode for the icon inside the button.
+ * The default is EAspectRatioNotPreserved.
+ *
+ * @param aScaleMode The scale mode.
+ */
+ IMPORT_C void SetIconScaleMode( const TScaleMode aScaleMode );
+
+ /**
+ * Sets the horizontal alignment for the icon inside the button.
+ * By default it will be centered.
+ *
+ * @param aHorizontalAlignment The horizontal alignment for the icon.
+ */
+ IMPORT_C void SetIconHorizontalAlignment(
+ const CAknButton::TAlignment aHorizontalAlignment );
+
+ /**
+ * Sets the vertical alignment for the icon inside the button.
+ * By default it will be centered.
+ *
+ * @param aVerticalAlignment The vertical alignment for the icon.
+ */
+ IMPORT_C void SetIconVerticalAlignment(
+ const CAknButton::TAlignment aVerticalAlignment );
+
+ /**
+ * Sets the delay before the help text is shown and also specifies the
+ * time for how long help text is visible.
+ *
+ * @param aBeforeTimeout The delay in milliseconds before text help note
+ * is shown. The default is 150 milliseconds.
+ * @param aInViewTimeout The interval in milliseconds during which help
+ * text note is shown. The default is 3000 milliseconds.
+ */
+ IMPORT_C void SetHelpNoteTimeouts( const TInt aBeforeTimeout,
+ const TInt aInViewTimeout );
+
+ /**
+ * Sets the interval for key repeat.
+ *
+ * @param aKeyRepeatDelay The initial delay, after which the key repeat is
+ started. The default is 500 milliseconds.
+ * @param aKeyRepeatInterval The interval in milliseconds, in which key
+ * repeat events should be reported. The default is 500 milliseconds.
+ */
+ IMPORT_C void SetKeyRepeatInterval( const TInt aKeyRepeatDelay,
+ const TInt aKeyRepeatInterval );
+
+ /**
+ * Sets the interval for long press. When KAknButtonReportOnLongPress
+ * flag is set for the button, button will notify observer with
+ * KAknButtonLongPressEvent as the event type, after button has been
+ * pressed for the specified time.
+ *
+ * @param aLongPressInterval The time interval in milliseconds, after
+ * which the long press event should be reported. The default
+ * value is 800 milliseconds.
+ */
+ IMPORT_C void SetLongPressInterval( const TInt aLongPressInterval );
+
+ /**
+ * Returns the index of the button state.
+ */
+ IMPORT_C TInt StateIndex() const;
+
+ /**
+ * Enables pictograph drawing in the button text.
+ * Only effective in Japanese variant.
+ * By default, it is disabled.
+ *
+ * @param aInterface Used pictograph interface owned by the caller.
+ */
+ IMPORT_C void EnablePictographsL( CAknPictographInterface& aInterface );
+
+ /**
+ * Disables pictograph drawing in the button text.
+ * Only effective in Japanese variant.
+ * By default, it is disabled.
+ */
+ IMPORT_C void DisablePictographs();
+
+ /**
+ * It will change the default highlight rectangle around
+ * the focused button.
+ *
+ * @param aRect The highlight rectangle.
+ */
+ IMPORT_C void SetHighlightRect( const TRect& aRect );
+
+ /**
+ * Gets the highlight rectangle around the button.
+ *
+ * @return The higlight rectangle around the button.
+ */
+ IMPORT_C TRect HighlightRect() const;
+
+ /**
+ * Sets the tooltip position.
+ *
+ * @param aPosition The position of the tooltip.
+ */
+ IMPORT_C void SetTooltipPosition( const TTooltipPosition aPosition );
+
+ /**
+ * Sets whether button should send an EEventRequestExit event to command
+ * observer on button up event.
+ *
+ * @param aRequestExit ETrue if button should request exit.
+ */
+ IMPORT_C void SetRequestExit( const TBool aRequestExit );
+
+ /**
+ * Tests if the control is dimmed. This function overrides the function
+ * declared in CCoeControl, and returns the value which is set and unset
+ * using CAknButton::SetDimmed().
+ *
+ * @return ETrue if the control is dimmed, EFalse if it is not dimmed.
+ */
+ IMPORT_C TBool IsDimmed() const;
+
+ /**
+ * Sets the help text for dimmed button.
+ *
+ * @param aHelpText The text inside the tooltip.
+ */
+ IMPORT_C void SetDimmedHelpTextL( const TDesC& aHelpText );
+
+ /**
+ * Check if point is within buttons visible area, when
+ * KAknButtonHitTest flag is enabled
+ *
+ * @param aPoint Location to check.
+ * @param aCheckHitArea if need to check the hit area for fixed
+ * toolbar button
+ */
+ TBool HitAreaContainsL( const TPoint& aPoint, TBool aCheckHitArea ) const;
+
+ /**
+ * Returns the current state of the button.
+ *
+ * @return the current state of the button
+ */
+ IMPORT_C CAknButtonState* State() const;
+
+ /**
+ * Returns the state of the button under specified index.
+ *
+ * @param aStateIndex The index for the state.
+ * @return the state of the button.
+ */
+ IMPORT_C CAknButtonState* State( const TInt aStateIndex ) const;
+
+ /**
+ * Returns the flags of button. The flags are defined in eikon.hrh.
+ * @return Button flags.
+ * @since S60 3.2
+ */
+ IMPORT_C TInt ButtonFlags() const;
+
+ /**
+ * Sets button's margins. These define the free area inside the button
+ * where content is placed. Note that calling this function overrides
+ * default margins that are scaled automatically depending on the
+ * current screen layout. If this function is called then the caller
+ * is responsible for updating margins whenever the layout changes.
+ *
+ * @since S60 3.2
+ * @param aMargins New marginals.
+ */
+ IMPORT_C void SetMargins( const TMargins8& aMargins );
+
+ /**
+ * Sets icon size for the button. Calling this function overrides the
+ * default size that is scaled automatically depending on the current
+ * screen layout. If this function is called then the caller is
+ * responsible for updating icon size whenever the layout changes.
+ *
+ * @since S60 3.2
+ * @param aSize New icon size.
+ * @return KErrNone if the operation succeeded, otherwise an error code.
+ */
+ IMPORT_C TInt SetIconSize( const TSize& aSize );
+
+ /**
+ * Checks if the button uses default margins.
+ *
+ * @since S60 3.2
+ *
+ * @return ETrue if default margins are used.
+ */
+ TBool UsesDefaultMargins() const;
+
+ /**
+ * Sets tooltip to hide or show itself when background faded.
+ *
+ * @since S60 3.2
+ * @param aHide should be ETrue if hiding, EFalse if showing
+ */
+ void HideTooltipWhenAppFaded( TBool aHide );
+
+
+ /**
+ */
+ void CheckHitArea();
+
+ /**
+ * Resets button to unpressed state.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C void ResetState();
+
+ /**
+ * Sets button to use additional masks during drawing. Calling this
+ * method forces button to bypass the normal drawing routine i.e.
+ * method DrawMaskedL is executed instead of Draw.
+ *
+ * @since S60 5.0
+ * @param aMaskedDraw ETrue to use additional mask.
+ */
+ void UseMaskedDraw( TBool aMaskedDraw );
+
+ /**
+ * Registers resource provider.
+ * @param aProvider New resource provider.
+ */
+ void RegisterResourceProvider( CAknResourceProvider* aProvider );
+
+ /**
+ * Unregisters resource provider.
+ */
+ void UnregisterResourceProvider();
+
+ CAknsFrameBackgroundControlContext* BgContext();
+
+ /**
+ * Removes the currently active state from the button,
+ * and sets the current state to the previous one.
+ */
+ void RemoveCurrentState();
+
+ /**
+ * Returns the button touchable area.
+ *
+ * @since S60 5.0
+ * @return Button touch area
+ */
+ TRect TouchArea() const;
+
+ protected: // Constructors
+
+ /**
+ * C++ constructor for the one state button.
+ *
+ * @param aFlags The flags for the button
+ */
+ IMPORT_C CAknButton( const TInt aFlags );
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ IMPORT_C void ConstructL();
+
+ /**
+ * Symbian 2nd phase constructor.
+ *
+ * @param aIcon The icon for the normal state. Takes ownership.
+ * @param aDimmedIcon The icon for the dimmed state. Takes ownership.
+ * @param aPressedIcon The icon for the pressed down. Takes ownership.
+ * @param aHoverIcon The icon for the hover state.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aStateFlags The flags for the first state.
+ */
+ IMPORT_C void ConstructL( CGulIcon* aIcon,
+ CGulIcon* aDimmedIcon,
+ CGulIcon* aPressedIcon,
+ CGulIcon* aHoverIcon,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aStateFlags );
+
+ /**
+ * Symbian 2nd phase constructor.
+ *
+ * @param aFilePath The path to the file which contains icons.
+ * @param aBmpId The bitmap ID for the normal state icon.
+ * @param aMaskId The mask ID for the normal state icon.
+ * @param aDimmedBmpId The bitmap ID for the dimmed state icon.
+ * @param aDimmedMaskId The mask ID for the dimmed state icon.
+ * @param aPressedBmpId The bitmap ID for the pressed down state.
+ * @param aPressedMaskId The mask ID for the pressed down state.
+ * @param aHoverBmpId The bitmap ID for the hover state icon.
+ * @param aHoverMaskId The mask ID for the hover state icon.
+ * @param aText The text inside the button.
+ * @param aHelpText The text for the tooltip.
+ * @param aStateFlags The flags for the first state.
+ * @param aId Item ID of the masked bitmap to be created for skin
+ * specific icon.
+ * @param aDimmedId Item ID of the dimmed masked bitmap to be created
+ * for skin specific icon.
+ * @param aPressedId Item ID of the pressed masked bitmap to be created
+ * for skin specific icon.
+ * @param aHoverId Item ID of the masked hover bitmap to be created
+ * for skin specific icon.
+ */
+ IMPORT_C void ConstructL( const TDesC& aFilePath,
+ const TInt aBmpId,
+ const TInt aMaskId,
+ const TInt aDimmedBmpId,
+ const TInt aDimmedMaskId,
+ const TInt aPressedBmpId,
+ const TInt aPressedMaskId,
+ const TInt aHoverBmpId,
+ const TInt aHoverMaskId,
+ const TDesC& aText,
+ const TDesC& aHelpText,
+ const TInt aStateFlags,
+ const TAknsItemID& aId = KAknsIIDNone,
+ const TAknsItemID& aDimmedId = KAknsIIDNone,
+ const TAknsItemID& aPressedId = KAknsIIDNone,
+ const TAknsItemID& aHoverId = KAknsIIDNone );
+
+ protected: // Functions from base class
+
+ /**
+ * Responds to size changes to sets the size and position of the
+ * contents of this control.
+ */
+ IMPORT_C void SizeChanged();
+
+ /**
+ * This function is called whenever a control gains or loses focus.
+ *
+ * @param aDrawNow Contains the value that was passed to it by SetFocus().
+ */
+ IMPORT_C void FocusChanged( TDrawNow aDrawNow );
+
+ /**
+ * For future extensions
+ *
+ * @param aInterface The ID for the extension interface.
+ */
+ IMPORT_C void* ExtensionInterface( TUid aInterface );
+
+ protected: // New functions
+
+ /**
+ * Changes the state of the button to the next one.
+ *
+ * @return the current state index
+ */
+ IMPORT_C TInt ChangeState( TBool aDrawNow );
+
+ /**
+ * Returns the text, which will be displayed inside the button
+ * for the current state.
+ */
+ IMPORT_C const TDesC& GetCurrentText() const;
+
+ /**
+ * Returns icon for the current state.
+ */
+ IMPORT_C const CGulIcon* GetCurrentIcon() const;
+
+ /**
+ * Shows help text for a certain period of time.
+ */
+ IMPORT_C void ShowHelpL();
+
+ /**
+ * Hides help text after certain interval.
+ */
+ IMPORT_C void HideHelp();
+
+
+ private: // Functions from base class
+
+ /**
+ * From CCoeControl. Draws the control. Called by window server.
+ */
+ IMPORT_C void Draw( const TRect& aRect ) const;
+
+ private: // New functions
+
+ /**
+ * Continues drawing of the button which has only text.
+ */
+ void DrawTextButton( CWindowGc& aGc ) const;
+
+ /**
+ * Continues drawing of the button which has only an icon in it.
+ */
+ void DrawIconButton( CWindowGc& aGc ) const;
+
+ /**
+ * Continues drawing of the button which has both text and icon.
+ */
+ void DrawTextAndIconButton( CWindowGc& aGc ) const;
+
+ /**
+ * Starts the long press timer.
+ */
+ void StartLongPressTimerL();
+
+ /**
+ * Stops the long press timer.
+ */
+ void StopLongPressTimer();
+
+ /**
+ * Starts the timer for the key repeat.
+ */
+ void StartKeyRepeatTimerL();
+
+ /**
+ * Stops the key repeat timer.
+ */
+ void StopKeyRepeatTimer();
+
+ /**
+ * Called after timeout is over.
+ */
+ static TInt ReportKeyRepeatL( TAny* aThis );
+
+ /**
+ * Asserts that extension class object exists.
+ *
+ * @return Extension object.
+ */
+ CAknButtonExtension* Extension() const;
+
+ /**
+ * Updates tooltip position.
+ */
+ void UpdateTooltipPosition();
+
+ /**
+ * Checks whether toolbar should send an EEventRequestExit event to
+ * command observe on button up event.
+ *
+ * @return ETrue if event should be sent, EFalse otherwise.
+ */
+ TBool RequestExit() const;
+
+ /**
+ * Gets the rectangele reserved for button content excluding frame.
+ *
+ * @return Content rectangle.
+ */
+ TRect ContentRect() const;
+
+ /**
+ * Checks whether button needs redrawing when it is pressed or released.
+ *
+ * @return ETrue, if redraw is needed, othewise EFalse.
+ */
+ TBool NeedsRedrawWhenPressed() const;
+
+ /**
+ * Returns the ID of specified skin item.
+ */
+ TAknsItemID SkinIID( const TInt aIndex ) const;
+
+ /**
+ * Calculates default margins.
+ */
+ void CalculateDefaultMargins();
+
+ /**
+ * Scales all icons.
+ *
+ * @return KErrNone or an error code.
+ */
+ TInt ScaleIcons();
+
+ /**
+ * Gets the correct text color.
+ *
+ * @return Text color.
+ */
+ TRgb TextColor() const;
+
+ /**
+ * Generates the pressed down bitmaps
+ * if flag KAknButtonPressedDownFrame is set and button has no frame
+ */
+ void CreatePressedDownFrameL();
+
+ /**
+ * Calculates color's luminance.
+ */
+ TInt CalculateLuminance( const TRgb& aColor ) const;
+
+ /**
+ * Converts outline color, if fill color is too similar to outline color
+ *
+ * @aFillColor fill color
+ * @aOutlineColor outline color
+ */
+ void ConvertColorsForOutlineEffect( TRgb& aFillColor, TRgb& aOutlineColor ) const;
+
+ /**
+ * Gets text colors
+ *
+ * @aPenColor pen color
+ * @aBrushColor brush color
+ */
+ void GetTextColors( TRgb& aPenColor, TRgb& aBrushColor ) const;
+
+ /**
+ * Sets new state index
+ *
+ * @param aNewIndex New state index
+ */
+ void SetStateIndexL( TInt aNewIndex );
+
+ protected: // Data
+
+ // array to keep states
+ CArrayPtrFlat<CAknButtonState>* iStates;
+
+ // button flags
+ TInt iFlags;
+
+ // current button state index
+ TInt iStateIndex;
+
+ // flag to define whether the button is pressed
+ TBool iButtonPressed;
+
+ // number of drag events, needed to distinguish when it is outside
+ // the button.
+ TInt iNumberOfDragEvents;
+
+ // Flag which shows whether key down event was reported before key up
+ // event was sent to the button, because some controls consume key down
+ // but don't consume key up events which might cause of button state
+ // when it is not expected
+ TBool iKeyDownReported;
+
+ // Background control context for button's frame
+ CAknsFrameBackgroundControlContext* iBgContext;
+
+ // Customized highlight rectangular around the button if the default one
+ // won't be used
+ TRect iHighlightRect;
+
+ // text button specific data
+ const CFont* iFont; // font for the text inside the button
+ TAlignment iVerticalAlignment; // vertical alignment for the text. Centered by default
+ CGraphicsContext::TTextAlign iHorizontalAlignment; // horizontal alignment for the text. Centered by default
+ TAknsItemID iTextColorTableId; // id for the color table
+ TInt iTextColorIndex; // index of the color in color table
+
+ // icon button specific data
+ TScaleMode iScaleMode; // scale mode for the icon, by default it is EAspectRatioNotPreserved
+
+ // tooltip specific data
+ TInt iHelpNoteWaitInterval; // interval in milliseconds between the time when the button got focused and the help text is shown
+ TInt iHelpNoteInViewInterval; // interval during which help text is shown in milliseconds
+ CAknInfoPopupNoteController* iHelpNote; // component to show help text
+ HBufC* iDimmedHelpText; // help text in case if the button is dimmed, not used currently
+ TBool iShowHelp; // flag which specifies whether help note should be shown
+
+ // Key repeat handling
+ CPeriodic* iKeyRepeatTimer; // timer to report key repeats
+ TInt iKeyRepeatDelay; // initial delay for key repeats
+ TInt iKeyRepeatInterval; // time interval for key repeats
+
+ private:
+ CAknButtonExtension* iExtension;
+
+ };
+
+
+#endif // __AKNBUTTON_H__
+
+// End of File