diff -r 000000000000 -r 8466d47a6819 emailuis/uicomponents/inc/fscontrolbutton.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/uicomponents/inc/fscontrolbutton.h Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,445 @@ +/* +* 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: Main class for Control Button component. +* +*/ + + +#ifndef C_FSCONTROLBUTTON_H +#define C_FSCONTROLBUTTON_H +// SF +#include +#include +#include +// +#include "fscontrolbuttoninterface.h" + +class CAlfDeckLayout; +class CAlfTexture; +class CFsControlButtonModel; +class MFsControlButtonObserver; +class CFsControlButtonVisualiser; +class CFsTextStyleManager; + +/** + * Main class for ControlButton component + * Control class of ControlButton component. + * + * @code + * + * @endcode + * + * @lib fs_generic.lib + */ +NONSHARABLE_CLASS( CFsControlButton ) : + public CAlfControl, + public MFsControlButtonInterface + { + +public: + + /** + * Two-phased constructor. + * + * @param aEnv huitk environment instance. + * @param aParent parent control. + * @param aId unique id of the button. + * @param aType Button type. + * @param aStartPoint Starting point of the button. + * @param aParentLayout layout of the button. + * @param aTextStyleManager Text style manager. + */ + static CFsControlButton* NewL( + CAlfEnv& aEnv, + MFsControlButtonObserver& aParent, + TInt aId, + TFsControlButtonType aType, + TRect& aStartPoint, + CAlfDeckLayout& aParentLayout, + CFsTextStyleManager* aTextStyleManager ); + + /** + * Destructor. + */ + virtual ~CFsControlButton(); + + + /** + * Retrieves button's visualiser. + * + * @return visualiser of the button. + */ + CFsControlButtonVisualiser* Visualiser(); + + /** + * Set the layout position index on controlbar. + * + * @param aLayoutPos New layout position on controlbar. + */ + void SetParentIndex( TInt aLayoutPos ); + + /** + * Sets focus to control button. + * + * @param aState state of focus. + */ + void SetFocus( TBool aState = ETrue ); + + /** + * Refresh the button's position. + */ + void RefreshButtonPosition( TSize& aParentSize ); + +// from base class CAlfControl + + virtual TBool OfferEventL( const TAlfEvent& aEvent ); + +// from base class MFsControlButtonInterface + + /** + * From MFsControlButtonInterface. + * Sets first line of text in button. + * + * @param aLabel text to be set. + * @param aContent Specifies the text row. + */ + virtual void SetTextL( const TDesC& aLabel, TFsButtonContent aContent ); + + /** + * From MFsControlButtonInterface. + * Sets visualiser for the button. Ownership of the new visualiser is + * gained. + * + * @param aVisualiser New visualiser to be used to draw button. + */ + virtual void SetVisualiserL( CFsControlButtonVisualiser* aVisualiser ); + + /** + * From MFsControlButtonInterface. + * Retrieves id of the button. + * + * @return id of the button. + */ + virtual TInt Id() const; + + /** + * From MFsControlButtonInterface. + * Sets icon in the button. + * + * @param aIcon icon to be added. + * @param aWhich specifies which icon is to be added, A or B. + */ + virtual void SetIconL( + CAlfTexture& aIcon, + TFsControlButtonElem aWhich = ECBElemIconA ); + + /** + * From MFsControlButtonInterface. + * Sets width of the button. + * + * @param aWidth width of the button. + */ + virtual void SetWidth( TInt aWidth ); + + // Platform layout changes + /** + * @see MFsControlButtonInterface::SetSize + */ + virtual void SetSize( const TSize& aSize ); + // Platform layout changes + + /** + * From MFsControlButtonInterface. + * Set auto size mode for button. + * Defines how the buttons size is changed. + * + * @param aAutoSizeMode new mode. + */ + virtual void SetAutoSizeMode( + MFsControlButtonInterface::TFsAutoSizeMode aAutoSizeMode ); + + /** + * From MFsControlButtonInterface. + * Checks if button has focus. + * + * @return ETrue if focused, EFalse otherwise. + */ + virtual TBool IsFocused() const; + + // Platform layout changes + /** + * From MFsControlButtonInterface. + * Sets position of the button (top left point). + * + * @param aTlPoint coordinates of top left point. + */ + virtual void SetPos( const TPoint& aTlPoint ); + // Platform layout changes + + /** + * From MFsControlButtonInterface. + * Retrieves position of button. + * + * @return position of button. + */ + virtual const TAlfTimedPoint Pos() const; + + /** + * From MFsControlButtonInterface. + * Retrieves size of button. + * + * @return size of button. + */ + virtual const TAlfTimedPoint Size() const; + + /** + * From MFsControlButtonInterface. + * Sets component to button which will be triggered when button + * is pressed. + * + * @param aComponent component to be set. + */ + virtual void SetTriggeredComponent( MFsTriggeredComponent& aComponent ); + + /** + * From MFsControlButtonInterface. + * Clears triggered component. No more events to triggered + * component are sent. + */ + virtual void ClearTriggeredComponent(); + + /** + * From MFsControlButtonInterface. + * Sets alignment of element. + * + * @param aButtonElem element to be aligned. + * @param aHAlign horizontal alignment of element. + * @param aVAlign vertical alignment of element. + */ + virtual void SetElemAlignL( TFsControlButtonElem aButtonElem, + TAlfAlignHorizontal aHAlign, + TAlfAlignVertical aVAlign ); + + /** + * From MFsControlButtonInterface. + * Sets dimm state of the button. + * + * @param aDimmed dimm state of the the button. + */ + virtual void SetDimmed( TBool aDimmed = ETrue ); + + /** + * From MFsControlButtonInterface. + * Checks dimm state of the button. + * + * @return ETrue if dimmed, EFalse otherwise. + */ + virtual TBool IsDimmed() const; + + /** + * From MFsControlButtonInterface. + * Shows (enables) button. + */ + virtual void ShowButtonL(); + + /** + * From MFsControlButtonInterface. + * Hides (disables) button. + */ + virtual void HideButton(); + + /** + * From MFsControlButtonInterface. + * Checks if button is visible (enabled). + * + * @return ETrue if enabled, EFalse otherwise. + */ + virtual TBool IsVisible() const; + + /** + * From MFsControlButtonInterface. + * Sets bar's background image. Ownership of the object is transfered. + * + * @param aImage Background image brush. + */ + virtual void SetBackgroundImageL( CAlfImageBrush* aImage ); + + /** + * From MFsControlButtonInterface. + * Sets button's background color. + * + * @param aColor color of background. + */ + virtual void SetBackgroundColor( const TRgb& aColor ); + + /** + * From MFsControlButtonInterface. + * Clears button's background color. Button is transparent. + */ + virtual void ClearBackgroundColor(); + + /** + * From MFsControlButtonInterface. + * Clears button's background image. + */ + virtual void ClearBackgroundImage(); + + /** + * From MFsControlButtonInterface. + * Retrieves text from control button. + * + * @param aContent Specifies the text row. + * @return text on control button. + */ + virtual TPtrC Text( TFsButtonContent aContent ) const; + + /** + * From MFsControlButtonInterface. + * Set new height for the button text. + * + * @param aTextHeight Height in pixels. + */ + virtual void SetTextHeight( const TInt aTextHeight ); + + /** + * From MFsControlButtonInterface. + * Change the current font. + * + * @param aFont Font specification. + */ + virtual void SetTextFontL( const TFontSpec& aFont ); + + /** + * From MFsControlButtonInterface. + * Set button's text color when it's not focused or dimmed. + * + * @param aColor New color. + */ + virtual void SetNormalTextColor( const TRgb& aColor ); + + /** + * From MFsControlButtonInterface. + * Set button's text color when it's focused. + * + * @param aColor New color. + */ + virtual void SetFocusedTextColor( const TRgb& aColor ); + + /** + * From MFsControlButtonInterface. + * Set button's text color when it's dimmed. + * + * @param aColor New color. + */ + virtual void SetDimmedTextColor( const TRgb& aColor ); + + /** + * From MFsControlButtonInterface. + * Retrieves control button type. + * + * @return control button type. + */ + virtual TFsControlButtonType ControlButtonType() const; + +// Touch + virtual CAlfControl* AsAlfControl(); +// + + /** + * Enables focus drawing for item and draws it. + * NOTE: Do not change focus state. Item might be focused altough + * selector is not visible. + * @param aShow If ETrue visibility of focus is drawn if + * EFalse visibility of focus is hidden. + */ + void MakeFocusVisible( TBool aShow ); + +private: + + /** + * Constructor. + * + * @param aParent parent control. + * @param aParentLayout If given, has the parent layout. + */ + CFsControlButton( MFsControlButtonObserver& aParent, + CAlfDeckLayout& aParentLayout ); + + /** + * Constructs and initializes button control. + * + * @param aEnv Environment. + * @param aId unique id of the button. + * @param aType type of the button. + * @param aStartPoint Starting point of the button. + * @param aTextStyleManager Text style manager. + */ + void ConstructL( + CAlfEnv& aEnv, + TInt aId, + TFsControlButtonType aType, + TRect& aStartPoint, + CFsTextStyleManager* aTextStyleManager ); + + /** + * Starts to listen unhandled pointer events. + * + * @param aGrab ETrue adds pointer event observer if EFalse removes it. + */ + void GrabPointerEvents( TBool aGrab ); + +private: // data + + /** + * Parent of button. + * Not own. + */ + MFsControlButtonObserver& iParent; + + /** + * Button's model. + * Own. + */ + CFsControlButtonModel* iModel; + + /** + * Button's visualiser. + * Own. + */ + CFsControlButtonVisualiser* iVisualiser; + + /** + * Component triggered by button. + * Not own. + */ + MFsTriggeredComponent* iTriggeredComponent; + + /** + * Flag for visibility state changed from hidden to visible. + */ + TBool iWasHidden; + + /** + * Parent layout. + */ + CAlfDeckLayout& iParentLayout; + + /** + * Flag that states if event was received after touch event. + */ + TBool iTouchPressed; + + }; + +#endif // C_FSCONTROLBUTTON_H