diff -r 000000000000 -r 3ee3dfdd8d69 extras/calcsoft/src/CalcCmdBtn.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/extras/calcsoft/src/CalcCmdBtn.cpp Mon Jan 18 20:20:33 2010 +0200 @@ -0,0 +1,270 @@ +/* +* 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. +* +*/ + + +// INCLUDE FILES +#include +#include +#include + +#include "CalcFunc.h" +#include "CalcCmdBtn.h" +#include "CalcDrawingConst.laf" +#include +#include +#include "fbs.h" + +// skin support +#include +#include +#include +#include + +#include +#include + +// skin support +#include + + +// LOCAL CONSTANTS AND MACROS + +// ================= MEMBER FUNCTIONS ======================= + +// Two-phased constructor. +CCalcCommandButton* CCalcCommandButton::NewL( + CCalcFuncmapSubPane* aFuncmapSubPane, + const CGulIcon* aUnpressedBmp, + const CGulIcon* aPressedBmp, + const CGulIcon* aInactiveBmp) + { + CCalcCommandButton* self = new (ELeave) CCalcCommandButton(); + CleanupStack::PushL(self); + self->ConstructL(aFuncmapSubPane, aUnpressedBmp, + aPressedBmp, aInactiveBmp); + CleanupStack::Pop(self); + return self; + } + +// Destructor +CCalcCommandButton::~CCalcCommandButton() + { + } + + + +// --------------------------------------------------------- +// CCalcCommandButton::SetStateAndRedraw +// Button state is set and re-draw. +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCalcCommandButton::SetStateAndRedraw + (const TState& aState) + { + iState = aState; + DrawNow(); + } + + +// --------------------------------------------------------- +// CCalcCommandButton::SetIsSelectedAndRedraw +// Set flag which button is selected or not, and redraw. +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCalcCommandButton::SetIsSelectedAndRedraw(TBool aIsSelected) + { + iIsSelected = aIsSelected; + DrawNow(); + } + + +// --------------------------------------------------------- +// CCalcCommandButton::State +// Button state is returned. +// (other items were commented in a header). +// --------------------------------------------------------- +// +CCalcCommandButton::TState CCalcCommandButton::State() const + { + return iState; + } + + + +// C++ default constructor can NOT contain any code, that +// might leave. +// +CCalcCommandButton::CCalcCommandButton() + : iState(ENormal), + iIsSelected(EFalse) + { + } + +// Second-phase constructor +void CCalcCommandButton::ConstructL + (CCalcFuncmapSubPane* aFuncmapSubPane, + const CGulIcon* aUnpressedButtonIcon, + const CGulIcon* aPressedButtonIcon, + const CGulIcon* aInactiveButtonIcon) + { + iUnpressedButton = aUnpressedButtonIcon; + iPressedButton = aPressedButtonIcon; + iInactiveButton = aInactiveButtonIcon; + SetContainerWindowL(*aFuncmapSubPane); + } + + +// --------------------------------------------------------- +// CCalcCommandButton::SizeChanged +// Data of control is set. +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCalcCommandButton::SizeChanged() + { + TRect buttonRect(Rect()); + TRect aParentRect; + TAknWindowLineLayout area; + TAknWindowLineLayout cursor_color; + + if (AknLayoutUtils::ScalableLayoutInterfaceAvailable()) + { + + area = AknLayoutScalable_Apps::cell_calc_pane_g1().LayoutLine(); + + // For drawing cursor color. + cursor_color = AknLayoutScalable_Apps::grid_highlight_pane_cp02().LayoutLine(); + + + } + + else + { + + area = AppLayout::Cell_pane_elements__calc__Line_1(); +// For drawing cursor color. + cursor_color = AppLayout::Cell_pane_highlight_elements__various__Line_1(aParentRect); + + } + + area.iC = cursor_color.iC; + iLayoutRect.LayoutRect(buttonRect,area); + + } + +// --------------------------------------------------------- +// CCalcCommandButton::Draw +// Draw a button +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CCalcCommandButton::Draw + (const TRect& /* aRect */) const + { + const CGulIcon* drawButton = iUnpressedButton; + + switch (iState) + { + case EPressed: + { + drawButton = iPressedButton; + break; + } + case EDimmed: + { + drawButton = iInactiveButton; + break; + } + default: + { + break; + } + } + CWindowGc& gc = SystemGc(); + + // Clear with skin background + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + AknsDrawUtils::Background( skin, AknsDrawUtils::ControlContext(this), this, gc, Rect()); + + if (AknLayoutUtils::ScalableLayoutInterfaceAvailable()) + { + TAknWindowLineLayout layout = AknLayoutScalable_Apps::grid_highlight_pane_cp02().LayoutLine(); + TAknWindowLineLayout area = AknLayoutScalable_Apps::cell_calc_pane_g1().LayoutLine(); + + TAknLayoutRect topLeft; + topLeft.LayoutRect(Rect(), area); + + TAknLayoutRect bottomRight; + bottomRight.LayoutRect(Rect(),area); + + TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr); + TRect innerRect = outerRect; + innerRect.Shrink(TSize(5,5)); + gc.SetPenStyle(CGraphicsContext::ENullPen); + if (iIsSelected) + TBool highlightDrawn = AknsDrawUtils::DrawFrame(skin, gc, outerRect, innerRect, + KAknsIIDQsnFrGrid, KAknsIIDNone); + } + else + { + if (iIsSelected) + { + iLayoutRect.DrawOutLineRect(gc); + } + + } + + + + //Set the size of the bitmap. SVG-T upgrade. + TRect rect(Rect()); + AknIconUtils::SetSize(drawButton->Bitmap(),rect.Size()); + AknIconUtils::SetSize(drawButton->Mask(), rect.Size()); + iLayoutRect.DrawImage(gc, drawButton->Bitmap(), drawButton->Mask()); + + } + +// --------------------------------------------------------- +// CCalcCommandButton::SetBitmapIcons +// Sets the button bitmap Icons when the skin changes. +// --------------------------------------------------------- +// +void CCalcCommandButton::SetBitmapIcons(CGulIcon* aUnpressedBmp, + CGulIcon* aPressedBmp, + CGulIcon* aInactiveBmp) +{ + iUnpressedButton = aUnpressedBmp; + iPressedButton = aPressedBmp; + iInactiveButton = aInactiveBmp; +} + +// --------------------------------------------------------- +// CCalcCommandButton::ButtonLayout +// Gets the button layout. Used for pen input. +// --------------------------------------------------------- +// +TRect CCalcCommandButton::ButtonLayout() + { + TRect buttonRect(Rect()); + return buttonRect; + } +// End of File