--- a/extras/calcsoft/src/CalcFunc.cpp Tue Feb 02 00:11:26 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1899 +0,0 @@
-/*
-* 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 subpane class, CCalcFuncmapSubPane
-* Derived from CCoeControl.
-* CCalcFuncmapSubPane is container class of CCalcCommandButton.
-*
-*/
-
-
-
-// INCLUDE FILES
-
-#include <AknUtils.h>
-#include <aknViewAppUi.h>
-
-#include <AknsSkinInstance.h>
-#include <aknpopuplayout.h>
-#include <Calcsoft.rsg>
-#include <layoutmetadata.cdl.h>
-#include "CalcFunc.h"
-//#include "CalcCmdBtn.h"
-#include "CalcEnv.h"
-#include "CalcCont.h"
-#include "CalcView.h"
-#include "CalcOutSheet.h"
-#include "calc.hrh"
-#include "CalcDrawingConst.laf"
-#include "CalcView.h"
-#include <applayout.cdl.h>
-#include <aknlayoutscalable_apps.cdl.h>
-#include <AvkonInternalCRKeys.h>
-#include <PtiDefs.h>
-#include <PtiEngine.h>
-#include <PtiKeyMappings.h>
-#include <AknFepInternalCRKeys.h>
-#include <aknbutton.h>
-#include <AknsDrawUtils.h>
-
-#include <featmgr.h> // Feature Manager
-
-//enum to hold the values of button states
-enum
-{
- EnNormal = 0,
- EnPressed,
- EnDimmed
-};
-// LOCAL CONSTANTS AND MACROS
-const TInt KButtonsInColumn(2); // The number of column of a button
-const TInt KButtonsInRow(KCountOfButtons / KButtonsInColumn);
-const TInt KButtonsInColumnTouch(4); // The number of column of a button in Touch layout
-const TInt KButtonsInRowTouch(KCountOfButtonsTouch / KButtonsInColumnTouch);
- // The number of row of a button
-const TInt KButtonsIdTblTouch[] = // The command ID of a button in Touch Layout
- {
- ECalcCmdCancel, // C
- ECalcCmdSeven, // 7
- ECalcCmdFour, // 4
- ECalcCmdOne, // 1
- ECalcCmdZero, // 0
- ECalcCmdSqrt, // Sqrt
- ECalcCmdEight, // 8
- ECalcCmdFive, // 5
- ECalcCmdTwo, // 2
- ECalcCmdSeparator, // .
- ECalcCmdPercent, // %
- ECalcCmdNine, // 9
- ECalcCmdSix, // 6
- ECalcCmdThree, // 3
- ECalcCmdChangeSign, // +/-
- ECalcCmdDivide, // /
- ECalcCmdMultiply, // *
- ECalcCmdSubtract, // -
- ECalcCmdAdd, // +
- ECalcCmdResult // =
- };
-
-const TInt KButtonsIdTbl[] = // The command ID of a button in non Touch Layout
- {
- ECalcCmdAdd, // +
- ECalcCmdSubtract, // -
- ECalcCmdMultiply, // *
- ECalcCmdDivide, // /
- ECalcCmdChangeSign, // +/-
- ECalcCmdResult, // =
- ECalcCmdSqrt, // Sqrt
- ECalcCmdPercent, // %
- ECalcCmdScrollUp, // Scroll-up
- ECalcCmdScrollDown // Scroll-down
- };
-
-
-// If const TChar is used, complie error occurs in THUMB build.
-// To avoid this, #define is used.
-#define KCalcAsteriskBtn '*'
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// Two-phased constructor.
-CCalcFuncmapSubPane* CCalcFuncmapSubPane::NewL(
- CCalcContainer* aContainer)
- {
- CCalcFuncmapSubPane* self = new (ELeave) CCalcFuncmapSubPane();
- CleanupStack::PushL(self);
- self->ConstructL(aContainer);
- CleanupStack::Pop(self);
- return self;
- }
-
-
-// Destructor
-CCalcFuncmapSubPane::~CCalcFuncmapSubPane()
- {
- for (TInt count(0); count < KCountOfButtonsTouch; count++)
- {
- if(iButtons[count])
- {
- delete iButtons[count];
- }
-
- }
-
- // delete of button controls
- iQwertyModeStatusProperty.Close();
- delete iEngine;
- delete iCRKey;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetScrollupEnable
-// \ scroll up and down button on scrolling enable.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::RedrawScrollButtons()
- {
- CCalcOutputSheet* outputSheet = iContainer->OutputSheet();
- SetScrollupEnable(outputSheet->CanUp());
- SetScrolldownEnable(outputSheet->CanDown());
- }
-
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetChangeSignEnable
-// Redraw ChangeSign button on ChangeSign enable.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetChangeSignEnable
- (TBool aEnable)
- {
-
- /*Get the selected pointer
- button -> different layouts, different values*/
- CAknButton* button = NULL;
- if( AknLayoutUtils::PenEnabled() )
- {
- button = iButtons[ECmdTChangeSign];
- }
- else
- {
- button = iButtons[EChangeSignButton];
- }
-
- //Set to dimmed state
- button->SetDimmed( !aEnable );
- button->DrawNow();
- iIsChangeSignDimmed = aEnable;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetClearKeyEnable
-// Redraw ClearKey button on ClearKey enable.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetClearKeyEnable( TBool aEnable )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- CAknButton* button = NULL;
- button = iButtons[ECmdTCancel];
-
- if ( button )
- {
- button->SetDimmed( !aEnable );
- button->DrawNow();
- }
- }
- iIsClearKeyEnabled = aEnable;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::NotifyTimeoutL
-// If no key is pressed until timeout of *-key,
-// this function is called.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::NotifyTimeoutL()
- {
-
- /*Get the selected pointer
- button -> different layouts, different values*/
- CAknButton* button = iButtons[iSelected];
- if( !AknLayoutUtils::PenEnabled() )
- {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- if ( iKeyboardType == EPtiKeyboardHalfQwerty )
- {
- if( ( iLastKeyCode == EStdKeyLeftShift && iDecimalPoint ) || ( iLastKeyCode == EStdKeyLeftFunc && iDecimalPoint ))
- {
- iContainer->SetSeparatorFromTouchL();
- }
- else
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[iSelected] );
- }
- }
- else
-#endif
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[iSelected] );
- }
- }
- else
- {
- iContainer->View()->HandleCommandL( KButtonsIdTblTouch[iSelected] );
- }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- if ( iKeyboardType == EPtiKeyboardHalfQwerty )
- {
- iLastKeyCode = 0;
- }
-#endif
-
- //Set to dimmed state
- button->SetDimmed( EFalse );
- DrawDeferred();
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::NotifyReleaseKeyL
-// Notify any key is released. If pressed button exists.
-// command which is releated is executed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::NotifyReleaseKeyL()
- {
- /*Get the selected pointer
- button -> different layouts, different values*/
- CAknButton* button = iButtons[iSelected];
- CAknButtonState* state = button->State(EnNormal);
-
- if(state->Flags() == EnPressed)
- {
- TKeyEvent aKeyEvent;
- aKeyEvent.iScanCode = EStdKeyEnter;
- TEventCode aType = EEventKeyUp;
- //trigger offerkeyeventl to this button
- button->OfferKeyEventL(aKeyEvent,aType);
- state->SetFlags(EnNormal);
- button->DrawNow();
- }
- if( !AknLayoutUtils::PenEnabled() )
- {
- if(iSelected == EScrollUp)
- {
- CCalcOutputSheet* outputSheet = iContainer->OutputSheet();
- if(!outputSheet->CanUp())
- {
- RedrawHighlight(EScrollUp,EScrollDown);
- iSelected = EScrollDown;
- }
- }
-
- if(iSelected == EScrollDown)
- {
- CCalcOutputSheet* outputSheet = iContainer->OutputSheet();
- if(!outputSheet->CanDown())
- {
- RedrawHighlight(EScrollDown,EScrollUp);
- iSelected = EScrollUp;
- }
- }
-
- }
-
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::NotifyOtherThanOkKeyPressed
-// If key other than OK-key is pressed this function is called.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::NotifyOtherThanOkKeyPressed()
- {
- //for (TInt cnt(0); cnt < iCountOfButtons; cnt++)
- {
- //Get the pointer for the button
- CAknButton* button = iButtons[iSelected];
- CAknButtonState* state = button->State(EnNormal);
- if(state->Flags() == EnPressed)
- {
- state->SetFlags(EnNormal);
- button->DrawNow();
- }
- }
-
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::NotifyLangChange
-// Called if language is changed.
-// Change layout according to the language.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::NotifyLangChange()
- {
- // Write code here.
- SetLayout();
- DrawNow();
- }
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::IsQwertyKeypadActive
-// Called to check qwerty keypad is active or not
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
- TInt CCalcFuncmapSubPane::IsQwertyKeypadActive()
- {
- TInt value = 0;
-
- iQwertyModeStatusProperty.Get(value);
-
- return value;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::HandleControlEventL
-// Observer event from avkon button change
-// (other items were commented in a header).
-// ---------------------------------------------------------
-void CCalcFuncmapSubPane::HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)
- {
- iIsKeyLongPress = EFalse;
- if ( aEventType != EEventStateChanged && aEventType != CAknButton::ELongPressEvent )
- {
- return;
- }
- else if ( aEventType == CAknButton::ELongPressEvent )
- {
- iIsKeyLongPress = ETrue;
- }
-
- //Get the selected button
- CAknButton* button = (CAknButton*)aControl;
-
- for ( TInt i = 0; i < KCountOfButtons; ++i )
- {
- if ( button == iButtons[i] )
- {
- if(iSelected != i)
- return;
-
- //break;
- }
- }
-
- if ( !button->IsDimmed() )
- {
- //handles all the commands for the buttons
- if( !AknLayoutUtils::PenEnabled() )
- {
- iContainer->View()->HandleCommandL(KButtonsIdTbl[iSelected]);
- if(iSelected == EScrollUp)
- {
- CCalcOutputSheet* outputSheet = iContainer->OutputSheet();
- if(!outputSheet->CanUp())
- {
- RedrawHighlight(EScrollUp,EScrollDown);
- iSelected = EScrollDown;
- }
- }
- else if(iSelected == EScrollDown)
- {
- CCalcOutputSheet* outputSheet = iContainer->OutputSheet();
- if(!outputSheet->CanDown())
- {
- RedrawHighlight(EScrollDown,EScrollUp);
- iSelected = EScrollUp;
- }
- }
- }
- else
- {
- iContainer->View()->HandleCommandL(KButtonsIdTblTouch[iSelected]);
- }
-
- }
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::OfferKeyEventL
-// This function is called by CCalcContainer::OfferKeyEventL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TKeyResponse CCalcFuncmapSubPane::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-{
- TKeyResponse exitCode(EKeyWasNotConsumed);
-
- TPtiKey keyQwertyValue = (TPtiKey)aKeyEvent.iScanCode;
-
- if(IsQwertyKeypadActive())
- {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- if ( iKeyboardType == EPtiKeyboardHalfQwerty )
- {
- TBuf<KMaxNumCharsPerCase> keys;
- TInt firstoperator(-1);
- TInt secondoperator(-1);
-
- TInt oldSelect( iSelected );
-
- if ( ( aKeyEvent.iScanCode == EStdKeyLeftFunc && aType == EEventKeyDown ) ||
- ( aKeyEvent.iScanCode == EStdKeyLeftShift && aType == EEventKeyDown ) )
- {
- iEngine->MappingDataForKey( keyQwertyValue, keys, EPtiCaseFnLower );
- MapDataForChrShiftKey( keys, firstoperator, secondoperator);
- if ( (secondoperator == -1) && (firstoperator != -1))
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- iSelected = firstoperator;
- }
- else
- {
- if ( firstoperator == ECmdTSeparator )
- {
- iDecimalPoint = ETrue;
- }
- else
- {
- iSelected = firstoperator;
- iDecimalPoint = EFalse;
- }
- }
- }
- else if ( (firstoperator == -1) && (secondoperator != -1) )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- iSelected = secondoperator;
- }
- else
- {
- if ( secondoperator == ECmdTSeparator )
- {
- iDecimalPoint = ETrue;
- }
- else
- {
- iSelected = secondoperator;
- iDecimalPoint = EFalse;
- }
- }
- }
- else if ( (firstoperator != -1) && (secondoperator != -1) )
- {
- if ( iLastKeyCode == aKeyEvent.iScanCode )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- if ( iSelected == firstoperator )
- {
- iSelected = secondoperator;
- }
- else
- {
- iSelected = firstoperator;
- }
- }
- else
- {
- if ( firstoperator == ECmdTSeparator || secondoperator == ECmdTSeparator )
- {
- if ( iDecimalPoint )
- {
- iDecimalPoint = EFalse;
- if ( firstoperator == ECmdTSeparator )
- {
- iSelected = secondoperator;
- }
- else
- {
- iSelected = firstoperator;
- }
- }
- else
- {
- iDecimalPoint = ETrue;
- }
- }
- else
- {
- if ( iSelected == firstoperator )
- {
- iSelected = secondoperator;
- }
- else
- {
- iSelected = firstoperator;
- }
- }
- }
- }
- else
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- iSelected = firstoperator;
- }
- else
- {
- if ( firstoperator == ECmdTSeparator )
- {
- iDecimalPoint = ETrue;
- }
- else
- {
- iSelected = firstoperator;
- iDecimalPoint = EFalse;
- }
- }
-
- }
- }
- RedrawHighlight( oldSelect, iSelected );
- iLastKeyCode = aKeyEvent.iScanCode;
- exitCode = EKeyWasConsumed;
-
- iIsShiftKeyPressed = ETrue;
- }
- }
- else
-#endif
- {
- //For Multiplication operator in Qwerty keypad
- if(((aKeyEvent.iScanCode == EStdKeyLeftShift) || (aKeyEvent.iScanCode == EStdKeyRightShift)) && aType == EEventKeyDown)
- {
- if(iShiftKeyPressed == EPtiCaseLower )
- {
- iShiftKeyPressed = EPtiCaseUpper;
- iShiftKey = 0;
- iValue = ETrue;
- }
-
- else
- {
- iShiftKeyPressed = EPtiCaseLower;
- }
- exitCode = EKeyWasConsumed;
-
- iIsShiftKeyPressed = ETrue;
- }
- else if((aKeyEvent.iScanCode == EStdKeyLeftShift || aKeyEvent.iScanCode == EStdKeyRightShift)&& aType == EEventKeyUp)
- {
- /*if(((iLanguage == ELangFrench) || (iLanguage == ELangTaiwanChinese) ||
- (iLanguage == ELangCzech) || (iLanguage == ELangSlovak))&& iShiftKey >= 1)*/
- if( iShiftKey >= 1 )
- {
- iShiftKeyPressed = EPtiCaseLower;
- }
- iValue = EFalse;
- exitCode = EKeyWasConsumed;
-
- iIsShiftKeyPressed = ETrue;
- }
- }
- //else
- if ( !iIsShiftKeyPressed )
- {
- if (aType != EEventKey)
- {
- if (aType == EEventKeyDown)
- {
- iIsOfferKeyEvent = ETrue;
- }
- else if (aType == EEventKeyUp)
- {
- iIsOfferKeyEvent = EFalse;
- }
- // when users press send key, EKeyWasNotConsumed is returned to system
- // to open dialer
- if ( aKeyEvent.iScanCode == EStdKeyYes )
- {
- return EKeyWasNotConsumed;
- }
- return EKeyWasConsumed;
- }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- if( MapNumericCharL( aKeyEvent ) )
- {
- exitCode = EKeyWasConsumed;
- iShiftKeyPressed = EPtiCaseLower;
- }
-#else
- if(MapNumericCharL(keyQwertyValue,iShiftKeyPressed))
- {
- exitCode = EKeyWasConsumed;
- iShiftKeyPressed = EPtiCaseLower;
- }
-#endif
- else
- {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- if( MapNumerics( aKeyEvent ) || aKeyEvent.iCode == EKeyBackspace )
- {
- exitCode = EKeyWasNotConsumed;
- iShiftKeyPressed = EPtiCaseLower;
-
- /*if((iLanguage == ELangFrench) || (iLanguage == ELangTaiwanChinese) ||
- (iLanguage == ELangCzech) || (iLanguage == ELangSlovak))*/
- {
- if( !iValue )
- iShiftKeyPressed = EPtiCaseLower;
-
- else
- iShiftKeyPressed = EPtiCaseUpper;
- iShiftKey++;
- }
- }
-#else
- if(MapNumerics(keyQwertyValue,iShiftKeyPressed) || aKeyEvent.iCode == EKeyBackspace)
- {
- exitCode = EKeyWasNotConsumed;
- iShiftKeyPressed = EPtiCaseLower;
-
- /*if((iLanguage == ELangFrench) || (iLanguage == ELangTaiwanChinese) ||
- (iLanguage == ELangCzech) || (iLanguage == ELangSlovak))*/
- {
- if(!iValue)
- iShiftKeyPressed = EPtiCaseLower;
-
- else
- iShiftKeyPressed = EPtiCaseUpper;
- iShiftKey++;
- }
- }
-#endif
- else
- {
- exitCode = EKeyWasConsumed;
- iShiftKeyPressed = EPtiCaseLower;
- }
-
- }
-
- }
-
- // handle Enter key event
- if ( aKeyEvent.iCode == EKeyEnter )
- {
- exitCode = EKeyWasConsumed;
- HandleMiddleSoftKeyOREKeyOKL();
- iShiftKeyPressed = EPtiCaseLower;
- return exitCode;
- }
-
- iIsShiftKeyPressed = EFalse;
-
- }
-
-/* if(aKeyEvent.iCode == EKeyOK)
- {
-
- HandleMiddleSoftKeyOREKeyOKL();
- exitCode = EKeyWasConsumed;
- }
- else if (aType == EEventKey)*/
- if (aType == EEventKey)
- {
- TInt oldSelect(iSelected);
- TInt row(iSelected % iButtonsInRow);
- TInt column(iSelected / iButtonsInRow);
- iIsOfferKeyEvent = EFalse;
- switch(aKeyEvent.iCode)
- {
- case EKeyLeftArrow:
- {
-
- do
- {
-
- column--;
-
- if(column < 0)
- {
- column = iButtonsInColumn -1;
- row--;
-
- if( row < 0 )
- {
- row = iButtonsInRow -1;
- }
- }
-
- iSelected = row + column * iButtonsInRow;
-
- }while( iButtons[iSelected]->IsDimmed() );
-
- RedrawHighlight(oldSelect, iSelected);
-
- exitCode = EKeyWasConsumed;
- break;
- }
-
- case EKeyRightArrow:
- {
-
- do
- {
- column++;
-
- if(column == iButtonsInColumn)
- {
- column = 0;
- row++;
-
- if( row >= iButtonsInRow )
- {
- row = 0;
- }
- }
-
- iSelected = row + column * iButtonsInRow;
-
- }while( iButtons[iSelected]->IsDimmed() );
-
- RedrawHighlight(oldSelect, iSelected);
- exitCode = EKeyWasConsumed;
- break;
- }
-
- case EKeyUpArrow:
- {
-
- SetNextCursorPosForUpArrow(oldSelect);
-
- RedrawHighlight(oldSelect, iSelected);
- exitCode = EKeyWasConsumed;
- break;
- }
-
- case EKeyDownArrow:
- {
-
- SetNextCursorPosForDownArrow(oldSelect);
-
- RedrawHighlight(oldSelect, iSelected);
- exitCode = EKeyWasConsumed;
- break;
- }
-
- case EKeyOK:
- {
- if ( !AknLayoutUtils::PenEnabled() )
- {
- // get and judge the state of button
- CAknButton* button = iButtons[iSelected];
- CAknButtonState* state = button->State( EnNormal );
- if ( ( iSelected == EScrollUp || iSelected == EScrollDown )
- && ( state->Flags() == EnPressed ) )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[iSelected] );
- // when the history arrives the top or bottom,the button should be set dimmed
- CCalcOutputSheet* outputSheet = iContainer->OutputSheet();
- if ( !( outputSheet->CanDown() ) && iSelected == EScrollDown )
- {
- button->SetDimmed( ETrue );
- DrawDeferred();
- }
- if ( !( outputSheet->CanUp() ) && iSelected == EScrollUp )
- {
- button->SetDimmed( ETrue );
- DrawDeferred();
- }
- }
- }
- break;
- }
- default:
- {
- if(!IsQwertyKeypadActive())
- {
- if(aKeyEvent.iCode == KCalcAsteriskBtn)
- {
- if(iLastKeyCode == aKeyEvent.iCode)
- {
- row++;
-
- if(row == iButtonsInRow - 1) // Equal is not contained in a loop.
- {
- row = 0;
- }
- iSelected = row + column * iButtonsInRow;
- }
- else
- {
- if(AknLayoutUtils::PenEnabled())
- {
- iSelected = ECmdTAdd;
- }
- else
- {
- iSelected = EPlusButton;
- }
-
- }
- RedrawHighlight(oldSelect, iSelected);
- exitCode = EKeyWasConsumed;
- }
- }
- break;
- }
- }
- iLastKeyCode = aKeyEvent.iCode;
-
- }
- else if (aType == EEventKeyDown)
- {
- iIsOfferKeyEvent = ETrue;
- }
- else if (aType == EEventKeyUp)
- {
- iIsOfferKeyEvent = EFalse;
- }
-
-
- return exitCode;
-}
-
-
-// C++ default constructor can NOT contain any code, that
-// might leave.
-//
-CCalcFuncmapSubPane::CCalcFuncmapSubPane()
- {
- }
-
-
-// default constructor can leave.
-void CCalcFuncmapSubPane::ConstructL
- (CCalcContainer* aContainer)
- {
- iSelected = 0;
- iContainer = aContainer;
- iIsOfferKeyEvent = EFalse;
-
- SetContainerWindowL(*iContainer);
- // Read character sequence tables, such as -, +.
- iCalcAppEnv = CCalcAppEnv::Static();
- iIsChangeSignDimmed = ETrue;
-
- if( AknLayoutUtils::PenEnabled() )
- {
- iCountOfButtons = KCountOfButtonsTouch;
- iButtonsInRow = KButtonsInRowTouch;
- iButtonsInColumn = KButtonsInColumnTouch;
-
- }
- else
- {
- iCountOfButtons = KCountOfButtons;
- iButtonsInRow = KButtonsInRow;
- iButtonsInColumn = KButtonsInColumn;
-
- }
-
-
- for (TInt count = 0; count < iCountOfButtons; count++)
- {
- //Create the AknButtons
- if(AknLayoutUtils::PenEnabled())
- {
- iButtons[count] = CAknButton::NewL(
- iCalcAppEnv->UnpressedButtonBmp(count),
- NULL,
- NULL,
- NULL,
- _L(""),
- _L(""),
- 0,
- 0
- );
-
- }
- else
- {
-
- iButtons[count] = CAknButton::NewL(
- iCalcAppEnv->UnpressedButtonBmp(count),
- NULL,
- iCalcAppEnv->PressedButtonBmp(count),
- NULL,
- _L(""),
- _L(""),
- 0,
- 0
- );
- /*if((count == ESqrtButton) && !iIsChangeSignDimmed)
- {
- iButtons[count]->SetDimmed(ETrue);
- }*/
-
- }
-
- iButtons[count]->SetContainerWindowL( *this );
- iButtons[count]->SetObserver( this );
- }
-
- if ( AknLayoutUtils::PenEnabled() )
- {
- iButtons[ECmdTCancel]->SetButtonFlags( KAknButtonReportOnLongPress );
- }
- iSelected = 0;
- RedrawHighlight( iSelected, iSelected );
-
- User::LeaveIfError(iQwertyModeStatusProperty.Attach(KCRUidAvkon, KAknQwertyInputModeActive));
-
- iShiftKeyPressed = EPtiCaseLower;
- iShiftKey = 0;
-
- // Try to get the English key mappings. If those are not available, use the
- // mappings of the current input language. The order is this because all mappings
- // do not necessarily contain all characters neeeded by the Calculator.
- iLanguage = ELangEnglish;
- iEngine = CPtiEngine::NewL(ETrue);
- iCoreLanguage = static_cast<CPtiCoreLanguage*>(iEngine->GetLanguage( iLanguage ));
-
- if( !iCoreLanguage )
- {
- iCRKey = CRepository::NewL(KCRUidAknFep);
- TInt ret = iCRKey->Get(KAknFepInputTxtLang,iLanguage);
- if( ret!= KErrNone )
- {
- //Exit application if server is busy( Error Raised )
- iAvkonViewAppUi->Exit();
- }
- iCoreLanguage = static_cast<CPtiCoreLanguage*>(iEngine->GetLanguage(iLanguage));
- }
-
- RProperty::Get( KCRUidAvkon, KAknKeyBoardLayout, iKeyboardType );
-
- if( iCoreLanguage )
- {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- if ( iKeyboardType == EPtiKeyboardHalfQwerty)
- {
- iHalfQwertyKeyMappings = static_cast<CPtiHalfQwertyKeyMappings*>(iCoreLanguage->GetHalfQwertyKeymappings());
- }
- else
-#endif
- {
- iQwertyKeyMappings = static_cast<CPtiQwertyKeyMappings*>(iCoreLanguage->GetQwertyKeymappings());
- }
- }
-
- // UI language is used to determine the used number format.
- iUiLanguage = User::Language();
-
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
- if ( iKeyboardType == EPtiKeyboardHalfQwerty )
- {
- iEngine->ActivateLanguageL( iLanguage, EPtiEngineHalfQwerty );
- }
- else if ( IsQwertyKeypadActive())
- {
- iEngine->ActivateLanguageL( iLanguage, EPtiEngineQwerty );
- }
-
- // RProperty::Get( KCRUidAvkon, KAknKeyBoardLayout, iKeyboardType );
- iEngine->SetKeyboardType( TPtiKeyboardType (iKeyboardType ));
-
-#endif
-
- iIsShiftKeyPressed = EFalse;
-
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::RefreshButtonIcons
-// This function is called by CCalcContainer::OfferKeyEventL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::RefreshButtonIcons()
-{
- /*for (TInt count(0); count < iCountOfButtons; count++)
- {
- iButtons[count]->SetBitmapIcons(iCalcAppEnv->UnpressedButtonBmp(count),
- iCalcAppEnv->PressedButtonBmp(count),
- iCalcAppEnv->InactiveButtonBmp(count));
- }*/
-}
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetScrollupEnable
-// Redraw scroll-up button on scrolling enable.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetScrollupEnable
- (TBool aEnable)
- {
- //Enabling/Disabling of scroll up buttons only for Non-Touch
- if(!AknLayoutUtils::PenEnabled())
- {
- CAknButton* scrollUp = iButtons[EScrollUp];
- scrollUp->SetDimmed( !aEnable );
- scrollUp->DrawNow();
- }
-
- }
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetScrolldownEnable
-// Redraw scroll-down button on scrolling enable.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetScrolldownEnable
- (TBool aEnable)
- {
- //Enabling/Disabling of scroll down buttons only for Non-Touch
- if(!AknLayoutUtils::PenEnabled())
- {
- CAknButton* scrollDown = iButtons[EScrollDown];
- scrollDown->SetDimmed( !aEnable );
- scrollDown->DrawNow();
- }
- }
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetNextCursorPosForUpArrow
-// Set next cursor position whwn pressing uparrow key.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetNextCursorPosForUpArrow(TInt aOldPos)
-{
-
- TInt row(aOldPos % iButtonsInRow);
- TInt column(aOldPos / iButtonsInRow);
-
- do
- { row--;
-
- if(row < 0)
- {
- column--;
-
- if(column < 0)
- {
- column = iButtonsInColumn -1;
- }
- row = iButtonsInRow - 1;
- }
- iSelected = row + column * iButtonsInRow;
-
- }while( iButtons[iSelected]->IsDimmed() );
-}
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetNextCursorPosForDownArrow
-// Set next cursor position whwn pressing downarrow key.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetNextCursorPosForDownArrow(TInt aOldPos)
-{
- TInt row(aOldPos % iButtonsInRow);
- TInt column(aOldPos / iButtonsInRow);
-
- do
- { row++;
-
- if(row == iButtonsInRow) // KButtonsInRow is equal to "number of rows in column"
- {
- row = 0;
-
- //move focus from last item to first item, column should be added one
- column++;
-
- if( column == iButtonsInColumn )
- {
- column = 0;
- }
- }
- iSelected = row + column * iButtonsInRow;
-
- }while( iButtons[iSelected]->IsDimmed() );
-}
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::RedrawHighlight
-// An old highlight rectangle is erased and
-// a new highlight rectangle is drawn.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::RedrawHighlight
- (TUint aOldId, // The button chosen before
- TUint aNewId) const // The button chosen newly
- {
- // The State of each button is set.
- CAknButton* button = iButtons[aOldId];
- CAknButtonState* state = button->State(EnNormal);
-
- if(state->Flags() == EnPressed)
- {
- TKeyEvent aKeyEvent;
- aKeyEvent.iScanCode = EStdKeyEnter;
- TEventCode aType = EEventKeyUp;
- //trigger offerkeyeventl to this button
- TRAP_IGNORE(button->OfferKeyEventL(aKeyEvent,aType));
- state->SetFlags(EnNormal);
- }
- button->SetFocus( EFalse, EDrawNow );
- button = iButtons[aNewId];
- button->SetFocus( ETrue, EDrawNow );
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetLayout
-// Set functionmap button layout.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-
-
-void CCalcFuncmapSubPane::SetLayout()
- {
- TRect parentRect(Rect());
-
- TInt t = 0;
- if( AknLayoutUtils::PenEnabled() )
- {
- for (TInt count(0); count < KButtonsInColumnTouch; count++)
- {
- for (TInt row(0); row < 5; row++)
- {
-
- TAknWindowLineLayout area;
- TAknWindowLineLayout area1;
-
- TAknWindowLineLayout areaG2;
- TAknWindowLineLayout areaGraphics;
-
- area= AknLayoutScalable_Apps::toolbar_button_pane_cp01(1).LayoutLine();
- areaG2= AknLayoutScalable_Apps::cell_calc_pane_g2(1).LayoutLine();
- if (Layout_Meta_Data::IsLandscapeOrientation())
- {
- area1 = AknLayoutScalable_Apps::cell_calc_pane(count,row,enTouch_with_prt).LayoutLine();
- }
- else
- {
- area1 = AknLayoutScalable_Apps::cell_calc_pane(count,row,enTouch_enabled).LayoutLine();
- }
-
- areaGraphics = area1;
- areaGraphics.iW = areaGraphics.iW - areaG2.il - areaG2.ir;
- areaGraphics.iH = areaG2.iH;
-
- area1.il = area1.il + area.il;
- area1.ir = area1.ir - area.ir;
- area1.it = area1.it + area.it;
- area1.ib = area1.ib - area.ib;
- area1.iW = area1.iW - area.il - area.ir;
- area1.iH = area1.iH - area.it - area.ib;
-
-
- //A change in values here
- if ( Layout_Meta_Data::IsLandscapeOrientation() )
- {
- AknLayoutUtils::LayoutControl(
- iButtons[t], parentRect,/*AknLayoutScalable_Apps::cell_calc_pane(count,Row,enTouch_with_prt).LayoutLine()*/area1 );
- }
- else
- {
- AknLayoutUtils::LayoutControl(
- iButtons[t], parentRect,/*AknLayoutScalable_Apps::cell_calc_pane(count,Row,enTouch_enabled).LayoutLine()*/area1 );
- }
-
- TSize iconSize( areaGraphics.iW, areaGraphics.iH );
- iButtons[t]->SetIconSize( iconSize );
- TRect rect = iButtons[t]->Rect();
- rect.iBr.iX += 5;
- rect.iBr.iY += 5;
- rect.iTl.iX -= 5;
- rect.iTl.iY -= 5;
-
- if ( FeatureManager::FeatureSupported( KFeatureIdRockerKey ) )
- {
- iButtons[t]->SetHighlightRect( rect );
- }
- t++;
- }
- }
-
- }
-
-
- else
- {
- for (TInt count(0); count < KButtonsInColumn; count++)
- {
- for (TInt row(0); row < 5; row++)
- {
- AknLayoutUtils::LayoutControl(
- iButtons[t], parentRect, AknLayoutScalable_Apps::cell_calc_pane( count, row ).LayoutLine());
- iButtons[t]->SetHighlightRect( iButtons[t]->Rect() );
- t++;
- }
-
- }
- }
-
-
- }
-
-
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::CountComponentControls
-// The count of child control is returned.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TInt CCalcFuncmapSubPane::CountComponentControls() const
- {
- return iCountOfButtons;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::ComponentControl
-// Child control's pointer corresponding to the specified index is returned.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CCoeControl* CCalcFuncmapSubPane::ComponentControl
- (TInt aIndex) const
- {
- return iButtons[aIndex];
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetButtonBitmapControl
-// This function is called when the size changes.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-/*CCalcCommandButton*/CAknButton* CCalcFuncmapSubPane::GetButtonBitmapControl
- (TInt aIndex)
- {
- return iButtons[aIndex];
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SizeChanged
-// This function is called when the size changes.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SizeChanged()
- {
- SetLayout();
- }
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetSqrtEnable
-// Redraw square root button, either normal or dimmed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetSqrtEnable(TBool aEnable)
-{
- //Get the sqrt button
- CAknButton* button = NULL;
- if( !AknLayoutUtils::PenEnabled() )
- {
- button = iButtons[ESqrtButton];
- }
- else
- {
- button = iButtons[ECmdTSqrt];
- }
- if( button )
- {
- button->SetDimmed(!aEnable);
- button->DrawNow();
- }
- iIsSqrtDimmed = aEnable;
- }
-
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetPercentEnable
-// Redraw percent button, either normal or dimmed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetPercentEnable(TBool aEnable)
-{
- //Get the percent button
- CAknButton* button = NULL;
- if( !AknLayoutUtils::PenEnabled() )
- {
- button = iButtons[EPercentButton];
- }
- else
- {
- button = iButtons[ECmdTPercent];
- }
- if( button )
- {
- button->SetDimmed(!aEnable);
- button->DrawNow();
- }
- iIsPercentDimmed = aEnable;
-}
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::MapNumericChar
-// Redraw percent button, either normal or dimmed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-TBool CCalcFuncmapSubPane::MapNumericCharL( TKeyEvent aKeyEvent )
- {
- TBuf<KMaxNumCharsPerCase> keys;
-
- TPtiKey aKey = ( TPtiKey )aKeyEvent.iScanCode;
-
-
- if( !keys.Length() )
- {
- keys.Append( aKeyEvent.iCode );
- }
-
- if ( keys.Length() > 0 )
- {
- TUint16 firstChar = keys[0];
- switch ( firstChar )
- {
- case KPtiPinyinMarker:
- case KPtiStrokeMarker:
- case KPtiZhuyinMarker:
- case KPtiCangjieMarker:
- case KPtiGetAllMarker:
- if ( keys.Length() > 1 )
- {
- firstChar = keys[1];
- }
- default:
- break;
- }
-
- TInt loc1 = KAllowedOperatorPlus().Locate( firstChar );
- if ( loc1 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[0] );
- return ETrue;
- }
- TInt loc2 = KAllowedOperatorMinus().Locate( firstChar );
- if ( loc2 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[1] );
- return ETrue;
- }
- TInt loc3 = KAllowedOperatorStar().Locate( firstChar );
- if ( loc3 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[2] );
- return ETrue;
- }
- TInt loc4 = KAllowedOperatorDivide().Locate( firstChar );
- if ( loc4 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[3] );
- return ETrue;
- }
- TInt loc5 = KAllowedOperatorEquals().Locate( firstChar );
- if ( loc5 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[5] );
- return ETrue;
- }
- TInt loc6 = KAllowedOperatorPercent().Locate( firstChar );
- if ( loc6 != KErrNotFound && GetPercentButtonState() )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[7] );
- return ETrue;
- }
-
- }
-
- return EFalse;
- }
-
-#else
-TBool CCalcFuncmapSubPane::MapNumericCharL( TPtiKey aKey, TPtiTextCase aCase )
- {
- TBuf<KMaxNumCharsPerCase> keys;
-
- iQwertyKeyMappings->GetDataForKey( aKey, keys, aCase );
-
- if ( keys.Length() > 0 )
- {
- TUint16 firstChar = keys[0];
- switch ( firstChar )
- {
- case KPtiPinyinMarker:
- case KPtiStrokeMarker:
- case KPtiZhuyinMarker:
- case KPtiCangjieMarker:
- case KPtiGetAllMarker:
- if ( keys.Length() > 1 )
- {
- firstChar = keys[1];
- }
- default:
- break;
- }
-
- TInt loc1 = KAllowedOperatorPlus().Locate( firstChar );
- if ( loc1 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[0] );
- return ETrue;
- }
- TInt loc2 = KAllowedOperatorMinus().Locate( firstChar );
- if ( loc2 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[1] );
- return ETrue;
- }
- TInt loc3 = KAllowedOperatorStar().Locate( firstChar );
- if ( loc3 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[2] );
- return ETrue;
- }
- TInt loc4 = KAllowedOperatorDivide().Locate( firstChar );
- if ( loc4 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[3] );
- return ETrue;
- }
- TInt loc5 = KAllowedOperatorEquals().Locate( firstChar );
- if ( loc5 != KErrNotFound )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[5] );
- return ETrue;
- }
- TInt loc6 = KAllowedOperatorPercent().Locate( firstChar );
- if ( loc6 != KErrNotFound && GetPercentButtonState() )
- {
- iContainer->View()->HandleCommandL( KButtonsIdTbl[7] );
- return ETrue;
- }
-
- }
-
- return EFalse;
- }
-#endif
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::MapNumericChar
-// Redraw percent button, either normal or dimmed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-TBool CCalcFuncmapSubPane::MapNumerics( TKeyEvent aKeyEvent )
- {
-
- TBuf<KMaxNumCharsPerCase> keys;
-
- TPtiKey aKey = ( TPtiKey )aKeyEvent.iScanCode;
-
- if ( !keys.Length() )
- {
- keys.Append( aKeyEvent.iCode );
- }
-
- if ( keys.Length() > 0 )
- {
- TUint16 firstChar = keys[0];
- switch ( firstChar )
- {
- case KPtiPinyinMarker:
- case KPtiStrokeMarker:
- case KPtiZhuyinMarker:
- case KPtiCangjieMarker:
- case KPtiGetAllMarker:
- if ( keys.Length() > 1 )
- {
- firstChar = keys[1];
- }
- default:
- break;
- }
- TInt loc = KAllowedNumericChars().Locate( firstChar );
- if ( loc != KErrNotFound )
- {
- return ETrue;
- }
- }
- return EFalse;
- }
-
-#else
-TBool CCalcFuncmapSubPane::MapNumerics( TPtiKey aKey, TPtiTextCase aCase )
- {
-
- TBuf<KMaxNumCharsPerCase> keys;
-
- iQwertyKeyMappings->GetDataForKey( aKey, keys, aCase );
-
- if ( keys.Length() > 0 )
- {
- TUint16 firstChar = keys[0];
- switch ( firstChar )
- {
- case KPtiPinyinMarker:
- case KPtiStrokeMarker:
- case KPtiZhuyinMarker:
- case KPtiCangjieMarker:
- case KPtiGetAllMarker:
- if ( keys.Length() > 1 )
- {
- firstChar = keys[1];
- }
- default:
- break;
- }
- TInt loc = KAllowedNumericChars().Locate( firstChar );
- if ( loc != KErrNotFound )
- {
- return ETrue;
- }
- }
- return EFalse;
- }
-#endif
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::HandlePointerEventL
-// Handles apen input in Function Pane. .
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::HandlePointerEventL
- ( const TPointerEvent& aPointerEvent )
- {
- if ( !AknLayoutUtils::PenEnabled() )
- {
- return;
- }
- TInt oldSelect( iSelected );
- TInt buttonValue = CalculatingCorrectButton( aPointerEvent );
- if ( !iButtons[buttonValue]->IsDimmed() )
- {
- iSelected = buttonValue;
- if ( iButtons[buttonValue]->Rect().Contains( aPointerEvent.iPosition ) )
- {
- RedrawHighlight( oldSelect, iSelected );
- }
- }
- CCoeControl::HandlePointerEventL( aPointerEvent );
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::FunctionPaneRect
-// This function gives the layout of Function Pnae.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-
-TRect CCalcFuncmapSubPane::FunctionPaneRect()
- {
- TRect parentRect(Rect());
- return parentRect;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::CalculatingCorrectButton
-// Handled when there is Pen Input.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-
-TInt CCalcFuncmapSubPane::CalculatingCorrectButton
- (const TPointerEvent& aPointerEvent)
- {
- TInt selected = iSelected;
-
- //Function that calculates the correct button where the pointer event had occurred
- for(TInt i = 0; i<iCountOfButtons; i++)
- {
- if(iButtons[i]->Rect().Contains(aPointerEvent.iPosition))
- {
- selected = i;
- }
- }
- return selected;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::HandleMiddleSoftKeyOREKeyOK
-// Handled when MSK or EKeyOk is selected.
-// ---------------------------------------------------------
-//
-
-void CCalcFuncmapSubPane::HandleMiddleSoftKeyOREKeyOKL()
- {
- //get the selected button id
- CAknButton* button = iButtons[iSelected];
- //put the button in the pressed state
- CAknButtonState* state = button->State(EnNormal);
- //Put the button in pressed state
-
- TKeyEvent aKeyEvent;
- aKeyEvent.iScanCode = EStdKeyEnter;
- TEventCode aType = EEventKeyDown;
- button->OfferKeyEventL(aKeyEvent,aType);
- //put to pressed state
- state->SetFlags(EnPressed);
- button->DrawNow();
-
- if(!iIsOfferKeyEvent)
- {
-
- NotifyReleaseKeyL();
- }
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetChangeSignButtonState
-// Returns the state of change sign button
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::GetChangeSignButtonState()
-{
- return(iIsChangeSignDimmed);
-}
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetClearButtonState
-// Returns the state of Clear button
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::GetClearButtonState()
- {
- return( iIsClearKeyEnabled );
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetSqrtButtonState
-// Returns the state of square root button
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::GetSqrtButtonState()
-{
- return(iIsSqrtDimmed);
-}
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetPercentButtonState
-// returns the state of percent button
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::GetPercentButtonState()
-{
- return(iIsPercentDimmed);
-}
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetSelectedButtonId
-// returns the id of current button
-// ---------------------------------------------------------
-//
-TInt CCalcFuncmapSubPane::GetSelectedButtonId()
- {
- return iSelected;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::SetHighlightButton
-// set highlight button
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::SetHighlightButton( TUint aOldId, TUint aNewId )
- {
- iSelected = aNewId;
- RedrawHighlight( aOldId, aNewId );
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::IsClearKeyLongPressed
-// Find Clear is long Pressed.
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::IsKeyLongPressed()
- {
- return iIsKeyLongPress;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::MapDataForChrShiftKey
-// Redraw percent button, either normal or dimmed.
-// ---------------------------------------------------------
-//
-void CCalcFuncmapSubPane::MapDataForChrShiftKey( TDes& aOperators, TInt& aFirstOperator, TInt& aSecondOperator)
- {
- if( aOperators.Length() > 0 )
- {
- TUint16 firstChar = aOperators[0];
- TUint16 secondChar = firstChar;
-
- if ( aOperators.Length() > 1 )
- {
- secondChar = aOperators[1];
- }
-
- switch ( firstChar )
- {
- case KPtiPinyinMarker:
- case KPtiStrokeMarker:
- case KPtiZhuyinMarker:
- case KPtiCangjieMarker:
- case KPtiGetAllMarker:
- if ( aOperators.Length() > 2 )
- {
- firstChar = aOperators[1];
- secondChar = aOperators[2];
- }
- else
- {
- firstChar = aOperators[1];
- secondChar = firstChar;
- }
- break;
- default:
- break;
-
- }
-
- MapOperators( firstChar, aFirstOperator );
-
- MapOperators( secondChar, aSecondOperator );
-
- }
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::MapOperators
-// Redraw percent button, either normal or dimmed.
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::MapOperators( TUint16 aOperator, TInt& aResult)
- {
- TInt loc1 = KAllowedOperatorPlus().Locate( aOperator );
- if ( loc1 != KErrNotFound )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- aResult = ECmdTAdd;
- }
- else
- {
- aResult = EPlusButton;
- }
- return ETrue;
- }
- TInt loc2 = KAllowedOperatorMinus().Locate( aOperator );
- if ( loc2 != KErrNotFound )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- aResult = ECmdTSubtract;
- }
- else
- {
- aResult = EMinusButton;
- }
- return ETrue;
- }
- TInt loc3 = KAllowedOperatorStar().Locate( aOperator );
- if ( loc3 != KErrNotFound )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- aResult = ECmdTMultiply;
- }
- else
- {
- aResult = EMultiplyButton;
- }
- return ETrue;
- }
- TInt loc4 = KAllowedOperatorDivide().Locate( aOperator );
- if ( loc4 != KErrNotFound )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- aResult = ECmdTDivide;
- }
- else
- {
- aResult = EDivideButton;
- }
- return ETrue;
- }
- TInt loc5 = KAllowedOperatorEquals().Locate( aOperator );
- if ( loc5 != KErrNotFound )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- aResult = ECmdTResult;
- }
- else
- {
- aResult = EEqualButton;
- }
- return ETrue;
- }
- TInt loc6 = KAllowedOperatorPercent().Locate( aOperator );
- if ( loc6 != KErrNotFound )
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- aResult = ECmdTPercent;
- }
- else
- {
- aResult = EPercentButton;
- }
- return ETrue;
- }
- TInt loc7 = KAllowedOperatorDecimal().Locate( aOperator );
- if ( loc7 != KErrNotFound )
- {
- aResult = ECmdTSeparator;
- return ETrue;
- }
- return EFalse;
- }
-
-// ---------------------------------------------------------
-// CCalcFuncmapSubPane::GetKeyboardType
-// Returns the type of keyboard
-// ---------------------------------------------------------
-//
-TBool CCalcFuncmapSubPane::GetKeyboardType()
- {
- return iKeyboardType;
- }
-
-// End of file