extras/calcsoft/src/CalcFunc.cpp
changeset 13 83b3f7c09925
parent 2 c4c2ac0facfd
--- 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