/*
* Copyright (c) 2002-2005 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: Interface of normal button and multidisplay button
*
*/
#ifndef C_CAKNFEPCTRLCOMMONBUTTON_H
#define C_CAKNFEPCTRLCOMMONBUTTON_H
// system includes
#include <AknsConstants.h>
#include <peninputlayoutbasecontrol.h>
#include <peninputlayoutbutton.h>
#include <AknLayout2Def.h>
#include <peninputpluginutils.h>
// forward declarations
class TResourceReader;
struct TDraw3PiecesFrame
{
TAknsItemID iImgLeftID;
TAknsItemID iImgMiddleID;
TAknsItemID iImgRightID;
TRect iInnerRect;
TDraw3PiecesFrame(TAknsItemID aImgLeftID,
TAknsItemID aImgMiddleID,
TAknsItemID aImgRightID,
TRect aInnerRect)
{
iImgLeftID = aImgLeftID;
iImgMiddleID = aImgMiddleID;
iImgRightID = aImgRightID;
iInnerRect = aInnerRect;
};
TDraw3PiecesFrame()
{
};
};
// class declarations
/**
* Basic functionality for graphic buttons
* It provides creation from resource and can react according to SizeChanged Msg
*
* @lib fepcommonctrls.lib
* @since S60 v3.2
*/
class CAknFepCtrlCommonButton : public CButtonBase
{
public:
/**
* Two-phased constructor.
*
* @since S60 v3.2
* @param aUiLayout An instance of CFepUiLayout
* @param aControlId The control id of input range button
* @return The pointer point to CAknFepCtrlCommonButton type object
*/
IMPORT_C static CAknFepCtrlCommonButton* NewL(CFepUiLayout* aUiLayout,
TInt aControlId,
TAknsItemID aNormalID,
TAknsItemID aPressedID,
TAknsItemID aInactiveID);
/**
* Two-phased constructor.
*
* @since S60 v3.2
* @param aUiLayout An instance of CFepUiLayout
* @param aControlId The control id of input range button
* @return The pointer point to CAknFepCtrlCommonButton type object
*/
IMPORT_C static CAknFepCtrlCommonButton* NewLC(CFepUiLayout* aUiLayout,
TInt aControlId,
TAknsItemID aNormalID,
TAknsItemID aPressedID,
TAknsItemID aInactiveID);
/**
* Destructor.
*
* @since S60 v3.2
*/
IMPORT_C virtual ~CAknFepCtrlCommonButton();
/**
* This function creates the input range button from resource.
*
* @since S60 v3.2
* @param aReader A Reader which is created against the AKN_FEP_BUTTON resource type
* @return None
*/
IMPORT_C void ConstructFromResourceL(TResourceReader& aReader);
/**
* This function creates the input range button from resource,
* before calling this function, caller should set resource id of
* range button first
*
* @since S60 v3.2
* @return None
*/
IMPORT_C void ConstructFromResourceL();
/**
* This function handles the SizeChanged event, it resizes all images and rects
*
* @since S60 v3.2
* @param aRect New button extent
* @param aInnerRect New button inner
* @param aIsReloadImages Whether resize images as well,
* if only the position of the button changed, no need to reset the images as well
* @return Nothing
*/
IMPORT_C void SizeChanged(TRect aRect, TRect aInnerRect, TBool aIsReloadImages = EFalse);
/**
* Draws UI
*
* @since S60 v3.2
* @return None
*/
IMPORT_C void Draw();
/**
* Set active for this button
*
* @since S60 v3.2
* @param aActiveFlag active the button or desactive it
* @return None
*/
IMPORT_C void SetActive(TBool aActiveFlag);
/**
* Set high light for the button
*
* @since S60 v3.2
* @param aIsHighlight highlight the button or cancel high light it
* @return None
*/
IMPORT_C void SetHighlight(TBool aIsHighlight);
/**
* Set Forground bitmap position
*
* @since S60 v3.2
* @param aRect Forground bitmap position
* @return None
*/
IMPORT_C void SetForgroundBmpRect(const TRect& aRect);
IMPORT_C void SetForegroundBmpL(CFbsBitmap* aBmp,
CFbsBitmap* aMaskBmp);
IMPORT_C void SetDraw3PieceFrameInfo(TDraw3PiecesFrame a3PiecesFrameInfo);
/**
* Cancel pointer down state
*
* @since S60 v3.2
* @return None
*/
EXPORT_C void CancelPointerDownL();
/**
* Set text line layout
*
* @since S60 V4.0
* @param aTextFormat Text line layout to be set
* @return None
*/
inline void SetTextFormat(TAknTextLineLayout aTextFormat);
/**
* Set text to be shown on button
*
* @since S60 V4.0
* @param aText Text to be shown on button
* @return None
*/
inline void SetTextL(const TDesC& aText);
inline void SetImageFrameId( TAknsItemID aNormalID,
TAknsItemID aPressedID,
TAknsItemID aInactiveID );
inline void Set3PiecesColorIcons( CPenInput3PiecesColorIcons* aColorIcons );
/**
* Set text color group
*
* @since S60 V4.0
* @param aColorGroup Text color group
* @return None
*/
inline void SetTextColorIndex( TInt aColorGroup );
inline TInt TextColorIndex() const;
inline CFbsBitmap* ForgroundBmp();
inline CFbsBitmap* ForgroundBmpMask();
inline const TRect& ForgroundBmpRect() const;
protected:
/**
* C++ default constructor.
*
* @since S60 v3.2
* @param aUiLayout An instance of CFepUiLayout
* @param aControlId The control id of input range button
*/
IMPORT_C CAknFepCtrlCommonButton(CFepUiLayout* aUiLayout,
TInt aControlId,
TAknsItemID aNormalID,
TAknsItemID aPressedID,
TAknsItemID aInactiveID);
void ResizeBitmaps(TSize aInnerSize);
void DeleteForgroundRes();
void CreateDimmedMaskL( CFbsBitmap*& aDimmedMask,
const CFbsBitmap* aMask
/*TScaleMode aScaleMode*/ );
/**
* From CFepUiBaseCtrl
* Handle pointer down event
*
* @since S60 V4.0
* @param aPoint The point position relative the layout
* @return The control which handles the event.
*/
IMPORT_C virtual CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
/**
* From CFepUiBaseCtrl
* Handle pointer up event
*
* @since S60 V4.0
* @param aPoint The point position relative the layout
* @return The control which handles the event
*/
IMPORT_C virtual CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
/**
* From CFepUiBaseCtrl
* Handle pointer up event
*
* @since S60 V4.0
* @param aPoint The point position relative the layout
* @return The control which handles the event
*/
IMPORT_C virtual void HandlePointerLeave(const TPoint& aPt);
IMPORT_C virtual void HandlePointerEnter(const TPoint& aPt);
IMPORT_C void Move(const TPoint& aOffset);
protected:
/**
* The first time construct flag of button
*/
TBool iFirstTimeConstruct;
/**
* The highlight flag of the button
*/
TBool iHighlight;
TBool iPressed;
private:
/**
* Froground bitmap and it's mask
*/
CFbsBitmap* iForgroundBmp;
CFbsBitmap* iForgroundBmpMask;
/**
* Froground Dimmed bitmap's mask
*/
CFbsBitmap* iForgroundDimBmpMask;
/**
* Froground bitmap's position
*/
TRect iForgroundBmpRect;
/**
* The img ID of button in various states
*/
TAknsItemID iNormalImgID;
TAknsItemID iPressedImgID;
TAknsItemID iInactiveImgID;
HBufC* iText;
TAknTextLineLayout iTextFormat;
TDraw3PiecesFrame iDraw3PiecesInfo;
/**
* The 3 pieces color icon (owned)
*/
CPenInput3PiecesColorIcons* iColorIcons;
/**
* Text color index
*/
TInt iTextColorIndex;
};
inline void CAknFepCtrlCommonButton::SetTextFormat(TAknTextLineLayout aTextFormat)
{
iTextFormat = aTextFormat;
}
inline void CAknFepCtrlCommonButton::SetTextL(const TDesC& aText)
{
delete iText;
iText = NULL;
iText = aText.AllocL();
}
inline void CAknFepCtrlCommonButton::SetImageFrameId( TAknsItemID aNormalID,
TAknsItemID aPressedID,
TAknsItemID aInactiveID )
{
iNormalImgID = aNormalID;
iPressedImgID = aPressedID;
iInactiveImgID = aInactiveID;
}
inline void CAknFepCtrlCommonButton::
Set3PiecesColorIcons( CPenInput3PiecesColorIcons* aColorIcons )
{
delete iColorIcons;
iColorIcons = aColorIcons;
}
inline void CAknFepCtrlCommonButton::SetTextColorIndex( TInt aColorGroup )
{
iTextColorIndex = aColorGroup;
}
inline TInt CAknFepCtrlCommonButton::TextColorIndex() const
{
return iTextColorIndex;
}
inline CFbsBitmap* CAknFepCtrlCommonButton::ForgroundBmp()
{
return iForgroundBmp;
}
inline CFbsBitmap* CAknFepCtrlCommonButton::ForgroundBmpMask()
{
return iForgroundBmpMask;
}
inline const TRect& CAknFepCtrlCommonButton::ForgroundBmpRect() const
{
return iForgroundBmpRect;
}
#endif // C_CAKNFEPCTRLCOMMONBUTTON_H
// End Of File