diff -r 000000000000 -r eb1f2e154e89 textinput/peninputhwrfscn/src/peninputhwrfscnfunctionpanel.cpp --- /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 +#include +#include +#include +#include +#include + +// RESOURCE INCLUDES +#include +#include +#include + +// 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& 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( + iMoreFuncBtnGroup->ControlById( EHwrCtrlIdLanguageWidthFullHalf ) ); + + CAknFepCtrlCommonButton* butonHalfFull = static_cast( + 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& 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(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( + iMoreFuncBtnGroup->ControlById( EHwrCtrlIdLanguageWidthFullHalf ) ); + + CAknFepCtrlCommonButton* butonHalfFull = static_cast( + 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 moreFuncBtnList = + iMoreFuncBtnGroup->ControlList(); + + for ( int i = 0; i < EMoreFuncBtnCount; i++ ) + { + CAknFepCtrlCommonButton* button = + static_cast( 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 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