extras/calcsoft/src/CalcCmdBtn.cpp
changeset 0 3ee3dfdd8d69
--- /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    <gulicon.h>
+#include    <calcsoft.rsg>
+#include    <aknutils.h>
+
+#include    "CalcFunc.h"
+#include    "CalcCmdBtn.h"
+#include    "CalcDrawingConst.laf"
+#include <AppLayout.cdl.h>
+#include <AknIconUtils.h>
+#include "fbs.h"
+
+// skin support
+#include    <AknsDrawUtils.h>
+#include  <AknLayoutScalable_Avkon.cdl.h>  
+#include <aknlayoutscalable_avkon.cdl.common.h>
+#include <AknLayout2ScalableDef.h>
+
+#include <aknsconstants.h>
+#include <AknLayoutScalable_Apps.cdl.h>
+
+// skin support
+#include    <AknsDrawUtils.h>
+
+
+//  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