textinput/peninputhwrfscn/src/peninputhwrfscnfunctionpanel.cpp
changeset 0 eb1f2e154e89
child 10 6defe5d1bd39
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrfscn/src/peninputhwrfscnfunctionpanel.cpp	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,805 @@
+/*
+* Copyright (c) 2005-2006 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:  Implementation for chinese peninput full screen hwr
+*
+*/
+
+// SYSTEM INCLUDES
+#include <AknUtils.h>
+#include <AknsUtils.h>
+#include <aknfeppeninputenums.h>
+#include <peninputlayout.h>
+#include <AknFepGlobalEnums.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+
+// RESOURCE INCLUDES
+#include <peninputhwrfscreencn.rsg>
+#include <peninputhwrfscn.mbg>
+#include <peninputlayoutinputmodechoice.h>
+
+// USER INCLUDES
+#include "peninputhwrfscn.hrh"
+#include "peninputhwrfscnlayout.h"
+#include "peninputhwrfscnfunctionpanel.h"
+#include "peninputhwrfscncontrolid.h"
+#include "peninputhwrfscnevent.h"
+#include "peninputhwrfscndatastore.h"
+#include "peninputhwrfscnlafmanager.h"
+
+#include "peninputhwrfscnbkgnd.h"
+
+// CONSTANTS
+//_LIT( KBMPFileName, "\\resource\\apps\\peninputhwrfscn.mbm" );
+const TUint8 KSymbolTableColumnCount = 6;
+const TUint8 KSymbolTableRowCount = 5;
+const TInt KEnterWidthUintNum = 2;
+const TInt KSpaceWidthUintNum = 2;
+const TInt KWidthSwitcherBtnWidthUintNum = 2;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::NewL()
+// .
+// -----------------------------------------------------------------------------
+//
+CPeninputHwrfscnFunctionPanel* CPeninputHwrfscnFunctionPanel::NewL( 
+    CPeninputHwrfscnLayout* aLayout )
+    {
+    CPeninputHwrfscnFunctionPanel* self = 
+               new ( ELeave ) CPeninputHwrfscnFunctionPanel( aLayout );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::CPeninputHwrfscnFunctionPanel()
+// .
+// -----------------------------------------------------------------------------
+//
+CPeninputHwrfscnFunctionPanel::CPeninputHwrfscnFunctionPanel( 
+    CPeninputHwrfscnLayout* aLayout )
+    :CPeninputHwrfscnBasePanel( aLayout )
+    {
+    // Initialze iPos
+    iPos.SetXY( 0, 0 );
+
+    // Initialize to be EFullWidth
+    iLangWidthState = EFullWidth;
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::~CPeninputHwrfscnFunctionPanel()
+// .
+// -----------------------------------------------------------------------------
+//
+CPeninputHwrfscnFunctionPanel::~CPeninputHwrfscnFunctionPanel()
+    {
+    delete iVkbLayout;  
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::Show()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::Show( TBool aVisible )
+    {
+	iVisible = aVisible;
+	iSymbolTableGroup->Hide( !aVisible );
+   	iMoreFuncBtnGroup->Hide( !aVisible );
+	
+	const RPointerArray<CFepUiBaseCtrl>& moreFuncBtnList = 
+	    iMoreFuncBtnGroup->ControlList();
+
+    for ( TInt i = 0; i < EMoreFuncBtnCount; i++ )
+	    {
+	    moreFuncBtnList[i]->Hide( !aVisible );
+	    }
+	    
+   	iVkbCtrl->Hide( !aVisible );
+    
+    
+    // Added for error when hide vkb calls for dimkey function
+    if ( aVisible )
+        {
+        CAknFepCtrlCommonButton* butonFullHalf = static_cast<CAknFepCtrlCommonButton*>( 
+        iMoreFuncBtnGroup->ControlById( EHwrCtrlIdLanguageWidthFullHalf ) );
+        
+        CAknFepCtrlCommonButton* butonHalfFull = static_cast<CAknFepCtrlCommonButton*>( 
+        iMoreFuncBtnGroup->ControlById( EHwrCtrlIdLanguageWidthHalfFull ) );
+        
+            
+        if ( iLayout->DataStore().PermittedRanges().Find( ERangeNative ) 
+            == KErrNotFound )
+            {
+            iLangWidthState = EHalfWidth;
+
+           	iVkbLayout->ChangeVkbLayout( EAknFepVkbSymbolHalfWidth );
+            
+            butonHalfFull->Hide(EFalse);
+            butonFullHalf->Hide(ETrue);
+            butonHalfFull->SetDimmed( ETrue );
+            
+            //butonFullHalf->SetHighlight( ETrue );
+            
+            //butonFullHalf->SetDimmed( ETrue );
+            }
+        else
+            {
+            if ( iLayout->DataStore().IsChinesePrimaryRange() )
+                {
+                iLangWidthState = EFullWidth;
+
+               	iVkbLayout->ChangeVkbLayout( EAknFepVkbSymbolFullWidth );
+                
+                //butonFullHalf->SetHighlight( EFalse );
+	            butonHalfFull->Hide(ETrue);
+	            butonFullHalf->Hide(EFalse);
+                }
+            else
+                {
+                iLangWidthState = EHalfWidth;
+
+               	iVkbLayout->ChangeVkbLayout( EAknFepVkbSymbolHalfWidth );
+	            butonHalfFull->Hide(EFalse);
+	            butonFullHalf->Hide(ETrue);                
+                //butonFullHalf->SetHighlight( ETrue );
+                }
+            //butonFullHalf->SetDimmed( EFalse );
+            butonHalfFull->SetDimmed( EFalse );
+            }
+            
+        TVirtualKeyDrawInfo vkbBoardDrawInfo(KAknsIIDQsnFrItutButtonCandiSideL, 
+									KAknsIIDQsnFrItutButtonCandiMiddle,
+								    KAknsIIDQsnFrItutButtonCandiSideR,
+						            KAknsIIDQsnFrItutButtonCandiSideL,
+						            KAknsIIDQsnFrItutButtonCandiMiddle,
+						            KAknsIIDQsnFrItutButtonCandiSideR,
+                                    KAknsIIDQsnFrItutButtonCandiPressedSideL,
+                                    KAknsIIDQsnFrItutButtonCandiPressedMiddle,
+                                    KAknsIIDQsnFrItutButtonCandiPressedSideR,
+						            TRgb(194, 221, 242),
+						            ETrue);
+        iVkbCtrl->SetVirtualKeyImgID(vkbBoardDrawInfo); 
+            
+        // reset rect and dim
+		iVkbCtrl->SetRect( SymbolTableRect() );
+		TRAP_IGNORE( NumberModeDimKeysL() );
+		Draw();
+        }
+    // End
+   
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::Draw()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::Draw()
+    {
+	iSymbolTableGroup->Draw();
+    TRect rect = iSymbolTableGroup->Rect();
+    iLayout->UpdateArea( iSymbolTableGroup, rect, EFalse,EFalse );
+
+    iMoreFuncBtnGroup->Draw();
+    rect = iMoreFuncBtnGroup->Rect();
+    iLayout->UpdateArea( iMoreFuncBtnGroup, rect, EFalse,EFalse );
+    }
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::HandleControlEvent()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::HandleControlEvent( 
+    TInt aEventType, 
+    CFepUiBaseCtrl* aCtrl, 
+	const TDesC& aEventData )
+    {
+    switch( aEventType )
+        {
+        case EEventButtonUp:
+            {
+            OnControlEvent_ButtonUp( aEventType, aCtrl, aEventData );
+	        }
+            break;
+
+        case EEventVirtualKeyUp:
+			{
+            Show( EFalse );
+            const RPointerArray<CFepUiBaseCtrl>& FsFuncBtnList = 
+                iMoreFuncBtnGroup->ControlList();            
+            for (TInt i = 0; i < EMoreFuncBtnCount; i++)
+                {
+                FsFuncBtnList[i]->UpdateAreaImmed(FsFuncBtnList[i]->Rect(),
+                        EFalse);
+                }            
+            ReportEvent( aEventType, aCtrl, aEventData );
+    		}
+            break;
+
+        default:
+        	break;
+	    }
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::HandleCommand()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::HandleCommand( 
+    TInt /*aCommand*/, TUint8* /*aData*/ )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::BeforePropertyChangedL()
+// .
+// -----------------------------------------------------------------------------
+//
+TBool CPeninputHwrfscnFunctionPanel::BeforePropertyChangedL( 
+    MPeninputHwrfscnPropertySubscriber::TPeninputHwrfscnProperty /*aProptery*/ )
+    {
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::PropertyChangedL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::PropertyChangedL( 
+	MPeninputHwrfscnPropertySubscriber::TPeninputHwrfscnProperty /*aProptery*/ )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::ConstructL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::ConstructL()
+    {
+    iLayout->DataStore().AddSubscriber( this );
+    
+    ReadLAFInfo();
+    
+    CreateSymbolTableL();
+
+    CreateMoreFuncBtnListL();
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::SizeChanged()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::SizeChanged()
+    {
+    ReadLAFInfo();
+    
+	iMoreFuncBtnGroup->SetRect( MoreFuncBtnGroupRect() );
+    iSymbolTableGroup->SetRect( SymbolTableRect() );
+
+    ResetMoreFuncBtnsSize();
+	ResetSymbolTableSize();
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::LafChanged()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::LafChanged()
+    {
+    ReadLAFInfo();
+    ResetSymbolTableSize();
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::CreateSymbolTableL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::CreateSymbolTableL()
+	{
+    const CFont* font = PeninputHwrfscnLAFManager::SymbolTableFont();
+
+    iVkbCtrl = CPeninputVkbCtrlExt::NewL( SymbolTableRect(), 
+        iLayout, 
+        EHwrCtrlIdSymbolTableVkb,
+        font );
+        
+    //This modification is for EVWG-7VW2Z7, change another smaller layout font 
+    TAknTextLineLayout keypadText =
+		//AknLayoutScalable_Avkon::cell_hwr_fs_pane_t1().LayoutLine();  
+        AknLayoutScalable_Avkon::cell_vkb_candidate_pane_t1().LayoutLine();
+    //Modification for EVWG-7VW2Z7 end  
+    iVkbCtrl->SetTextLineLayout(keypadText);
+	iVkbCtrl->SetKeyTextColorGroup( EAknsCIQsnTextColorsCG60 );
+	iVkbLayout = CAknFepCtrlVkbLayout::NewL();
+    // Add VKB control to the VKB layout
+    iVkbLayout->SetVkbKeyboard( iVkbCtrl );
+
+    // Construct VKB layout from resource
+    iVkbLayout->SetResourceId( R_AKN_FEP_VKB_VKB_LAYOUT_LIST );
+    iVkbLayout->ConstructFromResourceL();
+	
+	iVkbCtrl->SetIrregularKeyBoard(EFalse);
+	iVkbLayout->SetNonIrregularResourceId(R_AKN_FEP_VKB_NONIRREGULAR_BITMAP);
+	iVkbLayout->ConstructFromNonIrregularResourceL();
+    // Change the current VKB layout
+    iVkbLayout->ChangeVkbLayout( EAknFepVkbSymbolFullWidth );
+    
+	TVirtualKeyDrawInfo vkbBoardDrawInfo(KAknsIIDQsnFrItutButtonCandiSideL, 
+    									KAknsIIDQsnFrItutButtonCandiMiddle,
+    								    KAknsIIDQsnFrItutButtonCandiSideR,
+    						            KAknsIIDQsnFrItutButtonCandiSideL,
+    						            KAknsIIDQsnFrItutButtonCandiMiddle,
+    						            KAknsIIDQsnFrItutButtonCandiSideR,
+                                        KAknsIIDQsnFrItutButtonCandiPressedSideL,
+                                        KAknsIIDQsnFrItutButtonCandiPressedMiddle,
+                                        KAknsIIDQsnFrItutButtonCandiPressedSideR,
+    						            TRgb(194, 221, 242),
+    						            ETrue);
+    iVkbCtrl->SetVirtualKeyImgID(vkbBoardDrawInfo);
+
+    ResetSymbolTableSize();
+    iVkbCtrl->AddEventObserver( this );
+
+    // Create a control group, and put vkb in it, to avoid the problem that, 
+    // Root control will add all vkbs on the top of the control list.
+    iSymbolTableGroup = CControlGroup::NewL( iLayout, 
+        EHwrCtrlIdSymbolTableVkbGroup );
+    AddToRootControlL( iSymbolTableGroup );
+
+   	iSymbolTableGroup->AddControlL( iVkbCtrl );
+    iSymbolTableGroup->SetActiveCtrl( iVkbCtrl );
+	}
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::CreateMoreFuncBtnListL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::CreateMoreFuncBtnListL()
+	{
+    // Create container
+    iMoreFuncBtnGroup = CPeninputHwrfscnBkgnd::NewL( iLayout, EHwrCtrlIdMoreFuncGroup );
+    iMoreFuncBtnGroup->SetResourceId( R_PENINPUT_LAYOUT_WINDOW_BACKGROUND );
+    iMoreFuncBtnGroup->ConstructFromResourceL();    
+    
+    AddToRootControlL( iMoreFuncBtnGroup );
+
+    // Add btns to the container
+    // Since the language width switch btn is a latched btn which diff with other btns, 
+    // it should be created separately
+    /*AddBtnToMoreFuncGrpL( WidthSwitcherBtnRect(),
+        EHwrCtrlIdLanguageWidthFullHalf,
+        EMbmPeninputhwrfscnQgn_indi_fep_button_full_half_width,
+        EMbmPeninputhwrfscnQgn_indi_fep_button_full_half_width_mask,
+        EMbmPeninputhwrfscnQgn_indi_fep_button_half_full_width,
+        EMbmPeninputhwrfscnQgn_indi_fep_button_half_full_width_mask );*/
+
+    CAknFepCtrlCommonButton* langFullHalfWidthBtn = 
+        CAknFepCtrlCommonButton::NewL( iLayout, EHwrCtrlIdLanguageWidthFullHalf,
+            								  KAknsIIDQsnFrFunctionButtonNormal,
+        									  KAknsIIDQsnFrFunctionButtonPressed,
+        									  KAknsIIDQsnFrFunctionButtonInactive );
+
+	TResourceReader reader;
+    
+    CCoeEnv::Static()->CreateResourceReaderLC( reader,
+    	 			   R_AKN_FEP_HWR_SCT_PAGE_1 );  
+    langFullHalfWidthBtn->SetResourceId( R_AKN_FEP_HWR_SCT_PAGE_1 );      
+    langFullHalfWidthBtn->ConstructFromResourceL(); 
+    
+    // Pop and destroy reader
+    CleanupStack::PopAndDestroy( 1 );
+
+    langFullHalfWidthBtn->AddEventObserver( this );
+	iMoreFuncBtnGroup->AddControlL( langFullHalfWidthBtn );
+
+
+
+    CAknFepCtrlCommonButton* langHalfFullWidthBtn = 
+        CAknFepCtrlCommonButton::NewL( iLayout, EHwrCtrlIdLanguageWidthHalfFull,
+            								  KAknsIIDQsnFrFunctionButtonNormal,
+        									  KAknsIIDQsnFrFunctionButtonPressed,
+        									  KAknsIIDQsnFrFunctionButtonInactive );
+
+    
+    CCoeEnv::Static()->CreateResourceReaderLC( reader,
+    	 			   R_AKN_FEP_HWR_SCT_PAGE_2 );  
+    langHalfFullWidthBtn->SetResourceId( R_AKN_FEP_HWR_SCT_PAGE_2 );      
+    langHalfFullWidthBtn->ConstructFromResourceL(); 
+    
+    // Pop and destroy reader
+    CleanupStack::PopAndDestroy( 1 );
+
+    langHalfFullWidthBtn->AddEventObserver( this );
+	iMoreFuncBtnGroup->AddControlL( langHalfFullWidthBtn );
+
+
+
+
+   	AddBtnToMoreFuncGrpL( SpaceBtnRect(), 
+   	    EHwrCtrlIdSpace, 
+   	    R_AKN_FEP_HWR_SPACE );
+	// Space button          
+    CAknFepCtrlEventButton* spaceButton = 
+    	static_cast<CAknFepCtrlEventButton*>(iMoreFuncBtnGroup->ControlById(EHwrCtrlIdSpace));
+    // Create 3-pieces color icon for space button
+	CPenInput3PiecesColorIcons* colorIcons = 
+				CPenInput3PiecesColorIcons::NewL( R_AKN_FEP_VKB_SPACE_ICON1,
+												  R_AKN_FEP_VKB_SPACE_ICON2,
+												  R_AKN_FEP_VKB_SPACE_ICON3 );
+	spaceButton->Set3PiecesColorIcons( colorIcons );
+
+	
+   	AddBtnToMoreFuncGrpL( EnterBtnRect(), 
+   	    EHwrCtrlIdEnter, 
+   	    R_AKN_FEP_HWR_RETURN );
+	}
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::AddBtnToMoreFuncGrpL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::AddBtnToMoreFuncGrpL( 
+    const TRect aRect, 
+    TInt aCtrlId, 
+    TInt aResID )
+		{
+		CAknFepCtrlEventButton* moreFuncBtn = 
+		  CAknFepCtrlEventButton::NewL( iLayout, aCtrlId,
+		  									0xFFFF,
+											  0,
+		      								  KAknsIIDQsnFrFunctionButtonNormal,
+		  									  KAknsIIDQsnFrFunctionButtonPressed,
+		  									  KAknsIIDQsnFrFunctionButtonInactive );
+		moreFuncBtn->SetResourceId( aResID );
+		moreFuncBtn->ConstructFromResourceL();
+		TRect innerRect;
+		AknPenImageUtils::CalculateGraphicRect( aRect, innerRect );   	
+		moreFuncBtn->SizeChanged( aRect, innerRect, ETrue );
+		moreFuncBtn->SetRect( aRect );
+		moreFuncBtn->AddEventObserver( this );
+		
+		
+		iMoreFuncBtnGroup->AddControlL( moreFuncBtn );
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::OnControlEvent_ButtonUp()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::OnControlEvent_ButtonUp( 
+    TInt aEventType, 
+    CFepUiBaseCtrl* aCtrl, 
+	const TDesC& aEventData )
+    {
+    if( aCtrl->ControlId() == EHwrCtrlIdLanguageWidthFullHalf 
+      || aCtrl->ControlId() == EHwrCtrlIdLanguageWidthHalfFull)
+        {
+        if( iLayout->DataStore().PermittedRanges().Find( ERangeNative ) != 
+            KErrNotFound )
+            {
+            // Switch language width state
+            iLangWidthState == EFullWidth? iLangWidthState = EHalfWidth:
+                                           iLangWidthState = EFullWidth;
+            
+            // Show VKB layout corresponding to current language width state
+            iLangWidthState == EFullWidth ? 
+            	iVkbLayout->ChangeVkbLayout( EAknFepVkbSymbolFullWidth ) : 
+            	iVkbLayout->ChangeVkbLayout( EAknFepVkbSymbolHalfWidth );
+            
+            TVirtualKeyDrawInfo vkbBoardDrawInfo(KAknsIIDQsnFrItutButtonCandiSideL, 
+    									KAknsIIDQsnFrItutButtonCandiMiddle,
+    								    KAknsIIDQsnFrItutButtonCandiSideR,
+    						            KAknsIIDQsnFrItutButtonCandiSideL,
+    						            KAknsIIDQsnFrItutButtonCandiMiddle,
+    						            KAknsIIDQsnFrItutButtonCandiSideR,
+                                        KAknsIIDQsnFrItutButtonCandiPressedSideL,
+                                        KAknsIIDQsnFrItutButtonCandiPressedMiddle,
+                                        KAknsIIDQsnFrItutButtonCandiPressedSideR,
+    						            TRgb(194, 221, 242),
+    						            ETrue);
+            iVkbCtrl->SetVirtualKeyImgID(vkbBoardDrawInfo);
+            
+	        CAknFepCtrlCommonButton* butonFullHalf = static_cast<CAknFepCtrlCommonButton*>( 
+	        iMoreFuncBtnGroup->ControlById( EHwrCtrlIdLanguageWidthFullHalf ) );
+	        
+	        CAknFepCtrlCommonButton* butonHalfFull = static_cast<CAknFepCtrlCommonButton*>( 
+	        iMoreFuncBtnGroup->ControlById( EHwrCtrlIdLanguageWidthHalfFull ) );  
+	        
+            iLangWidthState == EFullWidth? butonFullHalf->Hide(EFalse):
+                                           butonHalfFull->Hide(EFalse);
+                                           
+            iLangWidthState == EFullWidth? butonHalfFull->Hide(ETrue):
+                                           butonFullHalf->Hide(ETrue);
+            
+            // reset rect and dim
+	        iVkbCtrl->SetRect( SymbolTableRect() );
+		    TRAP_IGNORE( NumberModeDimKeysL() );
+		    iLayout->LayoutOwner()->UpdateArea( SymbolTableRect(), EFalse, EFalse );
+            }
+        }
+    /*
+    else if( aCtrl->ControlId() == EHwrCtrlIdVkbSwitcher )
+        {
+        TRect rect = aCtrl->Rect();   
+        TRAP_IGNORE( iInputModeSwitch->PopUpSwitchListL( rect ) );        
+        }
+    */
+    else
+        {
+        Show( EFalse );
+        ReportEvent( aEventType, aCtrl, aEventData );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::NumberModeDimKeysL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::NumberModeDimKeysL()
+    {
+   	iVkbCtrl->CancelDims();
+
+    if( iLayout->DataStore().PermittedRanges().Count() == 1
+        && iLayout->DataStore().PermittedRanges()[0] == ERangeNumber )
+        {
+        HBufC* rs = iLayout->DataStore().KeyMappingStringL();
+        iVkbCtrl->DimKeys( rs );
+        delete rs;
+        rs = NULL;
+        }
+
+    iVkbCtrl->Draw();
+    }
+
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::ReadLAFInfo()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::ReadLAFInfo()
+    {
+	TRect rect( PeninputHwrfscnLAFManager::ControlBarUnitRect() );
+	iUnitWidth = rect.Width();
+	iUnitHeight = rect.Height();
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::ResetMoreFuncBtnsSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::ResetMoreFuncBtnsSize()
+	{
+	const CFont* font = PeninputHwrfscnLAFManager::SymbolTableFont();
+	
+	RPointerArray<CFepUiBaseCtrl> moreFuncBtnList = 
+	    iMoreFuncBtnGroup->ControlList();
+
+    for ( int i = 0; i < EMoreFuncBtnCount; i++ )
+	    {
+	    CAknFepCtrlCommonButton* button = 
+	        static_cast<CAknFepCtrlCommonButton*>( moreFuncBtnList[i] );
+	    
+        switch( button->ControlId() )
+            {
+            case EHwrCtrlIdLanguageWidthFullHalf:
+            case EHwrCtrlIdLanguageWidthHalfFull:
+                {
+        	    TRect rect( WidthSwitcherBtnRect() );
+				TRect innerRect;
+				AknPenImageUtils::CalculateLongBtnGraphicRect( rect, innerRect );
+				button->SizeChanged( rect, innerRect, ETrue );
+        	    button->SetRect( rect );
+    	        }
+                break;
+
+            case EHwrCtrlIdSpace:
+    			{
+        	    TRect rect( SpaceBtnRect() );
+				TRect innerRect;
+				innerRect = rect;
+				innerRect.Shrink(10, 0);
+        	    button->SizeChanged( rect, innerRect, ETrue );
+			    TRect spaceIconRect = innerRect;
+			    spaceIconRect.Shrink(10, 0);
+				button->SetDraw3PieceFrameInfo(TDraw3PiecesFrame(KAknsIIDQgnIndiInputSpaceL,
+																  KAknsIIDQgnIndiInputSpaceMiddle,
+																  KAknsIIDQgnIndiInputSpaceR,
+																  spaceIconRect));         	    
+        	    button->SetRect( rect );
+        	    button->SetFont( font );            
+        		}
+                break;
+            
+            case EHwrCtrlIdEnter:
+                {
+        	    TRect rect( EnterBtnRect() );
+				TRect innerRect;
+				AknPenImageUtils::CalculateGraphicRect( rect, innerRect );   	    
+        	    button->SizeChanged( rect, innerRect, ETrue );
+        	    button->SetRect( rect );
+        	    button->SetFont( font );            
+                }
+                break;
+            default:
+            	break;
+    	    }
+	    }
+	
+	// Bitmap should be resized by the first time construct
+	TSize bitMapSize( iUnitWidth, iUnitHeight );
+	AknIconUtils::SetSize( iSvgLatched, bitMapSize, EAspectRatioNotPreserved );
+	AknIconUtils::SetSize( iSvgUnLatched, bitMapSize, EAspectRatioNotPreserved );
+    
+	}
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::ResetSymbolTableSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnFunctionPanel::ResetSymbolTableSize()
+    {
+    const CFont* font = PeninputHwrfscnLAFManager::SymbolTableFont();
+    
+    TPoint charLeftTop( 0, 0 );
+    
+    TSize size( PeninputHwrfscnLAFManager::GetSymbolTableCharSizeOffset() );
+    
+    TInt unitCharWidth = iUnitWidth - 2*size.iWidth;
+    TInt unitCharHeight = iUnitHeight - 2*size.iHeight;
+
+    // Get all VKB layout information and resize them
+    RPointerArray<CPeninputVkbLayoutInfo> vkbList = 
+        iVkbLayout->VkbLayoutInfoList();
+    
+    TInt count = vkbList.Count();
+    
+    for ( TInt i = 0; i < count; i++ )
+        {
+        vkbList[i]->ResetSize( iUnitWidth, 
+                               iUnitHeight, 
+                               unitCharWidth, 
+                               unitCharHeight, 
+                               charLeftTop, 
+                               font );
+        }
+	
+  	TSize curSize = TSize( iUnitWidth, iUnitHeight );
+    size = iVkbCtrl->NonIrregularKeyBitmap(EKeyBmpNormal)->SizeInPixels();
+	if( curSize != size )	
+		{
+        for ( TInt i = 0; i <= EKeyBmpLastType; i++ )
+            {
+            if( iVkbCtrl->NonIrregularKeyBitmap((TVirtualKeyBmpType)i) )
+            	{
+                AknIconUtils::SetSize( iVkbCtrl->NonIrregularKeyBitmap((TVirtualKeyBmpType)i), 
+                                       curSize, EAspectRatioNotPreserved );                    		
+            	}
+            }
+		}	
+	iVkbCtrl->SetRect( SymbolTableRect() );
+    iVkbCtrl->SetFont( font );
+    
+    //This modification is for EVWG-7VW2Z7, change another smaller layout font 
+    TAknTextLineLayout keypadText =
+		//AknLayoutScalable_Avkon::cell_hwr_candidate_pane_t1().LayoutLine();
+        AknLayoutScalable_Avkon::cell_vkb_candidate_pane_t1().LayoutLine();
+    //Modification for EVWG-7VW2Z7 end
+    iVkbCtrl->SetTextLineLayout(keypadText);
+    }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::MoreFuncBtnGroupRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnFunctionPanel::MoreFuncBtnGroupRect()
+	{
+	TSize size( KSymbolTableColumnCount * iUnitWidth, iUnitHeight );
+	
+	return TRect( iPos, size );
+	}
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::WidthSwitcherBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnFunctionPanel::WidthSwitcherBtnRect( )
+	{
+	TPoint pos( iPos );
+	
+	TSize size( iUnitWidth * KWidthSwitcherBtnWidthUintNum, iUnitHeight );
+	
+	return TRect ( pos, size );
+	}
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::SpaceBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnFunctionPanel::SpaceBtnRect( )
+	{
+	TRect funcRect(WidthSwitcherBtnRect());
+	
+	TPoint pos( funcRect.iBr.iX, funcRect.iTl.iY );
+	
+	TSize size( iUnitWidth * KSpaceWidthUintNum, iUnitHeight );
+	
+	return TRect ( pos, size );
+	}
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::EnterBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnFunctionPanel::EnterBtnRect( )
+	{
+	TRect funcRect( SpaceBtnRect() );
+	
+	TPoint pos( funcRect.iBr.iX, funcRect.iTl.iY );
+	
+	TSize size( iUnitWidth * KEnterWidthUintNum, iUnitHeight );
+	
+	return TRect ( pos, size );
+	}
+		
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::SymbolTableRect()
+// .
+// -----------------------------------------------------------------------------
+// 
+TRect CPeninputHwrfscnFunctionPanel::SymbolTableRect()
+	{
+    TSize size( KSymbolTableColumnCount * iUnitWidth,
+        KSymbolTableRowCount * iUnitHeight );
+    
+    return TRect( TPoint( iPos.iX, iPos.iY+iUnitHeight ), size );
+	}
+	
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnFunctionPanel::HandleSkinChanged()
+// .
+// -----------------------------------------------------------------------------
+// 
+void CPeninputHwrfscnFunctionPanel::HandleSkinChanged()
+	{
+	TRAP_IGNORE(iVkbLayout->ConstructFromNonIrregularResourceL());
+	ResetSymbolTableSize();
+	TInt newValue = iLayout->DataStore().GetPenTrailColor();
+	iLayout->DataStore().SetBoxPenColor(TRgb(newValue));
+	
+	}
+
+//End of file