/** Copyright (c) 2002 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: The Function-Map's button class, CCalcCommandButton* Derived from CEikCommandButtonBase* The CCalcCommandButton is flat button.* In making disable, it calls SetDimmed() function.**/#ifndef CALCCMDBTN_H#define CALCCMDBTN_H#include <coecntrl.h>#include <aknutils.h>// CLASS DEFINITIONS class CCalcFuncmapSubPane;/**CCalcCommandButton : The button class for FunctionMap of a calculator*/class CCalcCommandButton : public CCoeControl { public: enum TState // Button state for bitmap. { ENormal, // Button is normal. EPressed, // Button is pushed. EDimmed // Button is dimmed. }; public: // Constructors and destructor /** * Two-phased constructor. * @param aFuncmapSubPane : CCalcFuncmapSubPane pointer * @param aUnpressedBmp : Bitmap for unpressed button * @param aPressedBmp : Bitmap for pressed button * @param aInactiveBmp : Bitmap for inactive button */ static CCalcCommandButton* NewL( CCalcFuncmapSubPane* aFuncmapSubPane, const CGulIcon* aUnpressedBmp, const CGulIcon* aPressedBmp, const CGulIcon* aInactiveBmp); /** * Destructor. */ virtual ~CCalcCommandButton(); public: // New functions /** * Button state is set and re-draw. * @param aState : State of a button (ENormal || EPressed || ESelected) */ void SetStateAndRedraw(const TState& aState); /** * Set flag which button is selected or not, and redraw. * @param aIsSelected : Button is selected or not. */ void SetIsSelectedAndRedraw(TBool aIsSelected); /** * Return Current state of a button. * @return Current state of a button (ENormal || EPressed || ESelected) */ TState State() const; /** *Sets iUnpressedButton, iPressedButton, iInactiveButton bitmap arrays to the current bitmaps. * @param aUnpressedButtonIcon: Icon for Unpressed button * @param aPressedButtonIcon : Icon for pressed button * @param aInactiveButtonIcon : Icon for Inactive button */ void SetBitmapIcons(CGulIcon* aUnpressedButtonIcon, CGulIcon* aPressedButtonIcon, CGulIcon* aInactiveButtonIcon); /** * Gets the button layout * Used for touch support. */ TRect ButtonLayout(); private: // New functions /** * C++ default constructor. */ CCalcCommandButton(); /** * Second-phase constructor. * @param aFuncmapSubPane : CCalcFuncmapSubPane pointer * @param aUnpressedBmp : Bitmap for unpressed button * @param aPressedBmp : Bitmap for pressed button * @param aInactiveBmp : Bitmap for inactive button */ void ConstructL( CCalcFuncmapSubPane* aFuncmapSubPane, const CGulIcon* aUnpressedBmp, const CGulIcon* aPressedBmp, const CGulIcon* aInactiveBmp); private: // Functions from base classes /** * From CCoeControl : Data of control is set. */ void SizeChanged(); /** * From CCoeControl : Draw a button * @param aRect : Size of a button */ void Draw(const TRect& aRect) const; private: // Data TState iState; // Current state of a button TBool iIsSelected; // If Button selected TRUE const CGulIcon* iUnpressedButton; // Unpressed button bitmap const CGulIcon* iPressedButton; // Pressed button bitmap const CGulIcon* iInactiveButton; // Inactive button bitmap TAknLayoutRect iLayoutRect; // rectangle of button };#endif // CALCCMDBTN_H// End of File