--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputhwrfscn/src/peninputhwrfscncontrolbar.cpp Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,1456 @@
+/*
+* 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 <AknsUtils.h>
+#include <AknUtils.h>
+#include <peninputhwrfscn.mbg>
+#include <peninputhwrfscreencn.rsg>
+#include <peninputcmd.h>
+#include <AknFepGlobalEnums.h>
+#include <peninputlayoutinputmodechoice.h>
+
+// USER INCLUDES
+#include "peninputhwrfscnlayout.h"
+#include "peninputhwrfscncontrolbar.h"
+#include "peninputhwrfscncontrolid.h"
+#include "peninputhwrfscndatastore.h"
+#include "peninputhwrfscnevent.h"
+#include "peninputhwrfscnlafmanager.h"
+
+#include "peninputhwrfscnbkgnd.h"
+
+// CONSTANTS
+
+//Range defination
+const TInt Ranges[3] = {ERangeNative, ERangeEnglish, ERangeNumber};
+
+const TUint8 KControlBarWidthUnitNum = 4;
+const TUint8 KUnitNumDiffOfMoreFuncAndControlBar = 2;
+const TUint8 KBackspaceWidthUintNum = 2;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::NewL()
+// .
+// -----------------------------------------------------------------------------
+//
+CPeninputHwrfscnControlBar* CPeninputHwrfscnControlBar::NewL(
+ CPeninputHwrfscnLayout* aLayout )
+ {
+ CPeninputHwrfscnControlBar* self = new
+ ( ELeave ) CPeninputHwrfscnControlBar( aLayout );
+ CleanupStack::PushL( self );
+ self->ConstructL( );
+ CleanupStack::Pop( );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::CPeninputHwrfscnControlBar()
+// .
+// -----------------------------------------------------------------------------
+//
+CPeninputHwrfscnControlBar::CPeninputHwrfscnControlBar(
+ CPeninputHwrfscnLayout* aLayout )
+ :CPeninputHwrfscnBasePanel( aLayout ),
+ iRangeSwitchExpanded( EFalse ),
+ iCurrentActiveRange( ERangeInvalid )
+ {
+ // Temp use
+ iPos = TPoint( 0, 0 );
+
+ // Use the iCurrentActiveRange to record which Range is active now
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::~CPeninputHwrfscnControlBar()
+// .
+// -----------------------------------------------------------------------------
+//
+CPeninputHwrfscnControlBar::~CPeninputHwrfscnControlBar( )
+ {
+ delete iFunctionPanel;
+ iCurrentRangeList.Close( );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ConstructL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ConstructL( )
+ {
+ // First set all Range available
+ iLayout->DataStore( ).SetPermittedRanges(
+ ERangeNative | ERangeEnglish | ERangeNumber );
+ iLayout->DataStore( ).AddSubscriber( this );
+
+ UpdateCurrentActiveRangeList( );
+
+ ReadLAFInfo( );
+
+ iBkgndWnd1 = CPeninputHwrfscnBkgnd::NewL( iLayout, EHwrCtrlIdBkgndWnd1 );
+ iBkgndWnd1->SetResourceId( R_PENINPUT_LAYOUT_WINDOW_BACKGROUND );
+ iBkgndWnd1->ConstructFromResourceL();
+ AddToRootControlL( iBkgndWnd1 );
+
+ iBkgndWnd2 = CPeninputHwrfscnBkgnd::NewL( iLayout, EHwrCtrlIdBkgndWnd2 );
+ iBkgndWnd2->SetResourceId( R_PENINPUT_LAYOUT_WINDOW_BACKGROUND );
+ iBkgndWnd2->ConstructFromResourceL();
+ AddToRootControlL( iBkgndWnd2 );
+
+ CreateCloseBtnL();
+
+ CreateOptionBtnL();
+
+ CreateVkbSwitcherBtnL();
+
+ CreateRangeSwitchBtnGroupL( );
+
+ // Create the a button group which cover the first Range switch btn
+ // It is to say, when the Range switch group expanded it use the
+ // real Range btn, when rolled-up, it will display this cover btn
+ CreateRangeSwitchCoverBtnGroupL( );
+
+ CreateMoreFuncBtnL( );
+
+ CreateMoreFuncPanelL( );
+
+ CreateBackSpaceBtnL( );
+
+ iInputModeSwitch = CPeninputLayoutInputmodelChoice::NewL(
+ iLayout,
+ EHwrCtrlIdInputModeSwitcher,
+ EPluginInputModeFSc );
+ iInputModeSwitch->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub );
+ iLayout->AddControlL( iInputModeSwitch );
+ iInputModeSwitch->AddEventObserver( iLayout );
+
+ // resize iBkgndWnd1, cover following buttons: close, option, switcher
+ TRect rect = ControlBarBtnRect( ECloseBtn );
+ rect.BoundingRect( ControlBarBtnRect( EOptionBtn ) );
+ rect.BoundingRect( ControlBarBtnRect( EVkbSwitcherBtn ) );
+ iBkgndWnd1->SetRect( rect );
+
+ // resize iBkgndWnd2, cover following buttons: more, backspace
+ rect = MoreFuncBtnRect();
+ rect.BoundingRect( BackSpaceBtnRect() );
+ iBkgndWnd2->SetRect( rect );
+
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::Show()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::Show( TBool /*aVisible*/ )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::Draw()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::Draw( )
+ {
+ TRect rect( iMoreFuncBtn->Rect( ) );
+
+ iMoreFuncBtn->Draw( );
+ iLayout->LayoutOwner( )->UpdateArea( rect, EFalse,EFalse );
+
+
+ rect = iCoverRangeSwitchBtnGroup->Rect();
+ iCoverRangeSwitchBtnGroup->Draw( );
+ iLayout->LayoutOwner( )->UpdateArea( rect, EFalse,EFalse );
+
+ rect = iRangeSwitchBtnGroup->Rect( );
+ iRangeSwitchBtnGroup->Draw( );
+ iLayout->LayoutOwner( )->UpdateArea( rect, EFalse,EFalse );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::HandleControlEvent()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::HandleControlEvent(
+ TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData )
+ {
+ switch( aEventType )
+ {
+ // This event is passed from the symbol list
+ case EEventVirtualKeyUp:
+ {
+ iMoreFuncBtn->SetHighlight( EFalse );
+ ReportEvent( aEventType, aCtrl, aEventData );
+ Draw( );
+ }
+ break;
+
+ case EEventButtonUp:
+ {
+ OnControlEvent_ButtonUp( aEventType, aCtrl, aEventData );
+ }
+ break;
+
+ case EEventButtonDown:
+ {
+ OnControlEvent_ButtonDown( aEventType, aCtrl, aEventData );
+ }
+ break;
+ case EHwrEventKeyBack:
+ ReportEvent( aEventType, aCtrl, aEventData );
+ break;
+ default:
+ break;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::HandleCommand()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::HandleCommand( TInt aCommand, TUint8* /*aData*/ )
+ {
+ if ( aCommand == EHwrEventPointerOutsideWnd )
+ {
+ // Hide the range list if it is extended
+ if( iRangeSwitchExpanded )
+ {
+ CloseRangeSwitchList( );
+ }
+
+ // Hide the function panel if it is visible
+ if( iFunctionPanel->IsVisible( ) )
+ {
+ ShowMoreFuncList( EFalse );
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::BeforePropertyChangedL()
+// .
+// -----------------------------------------------------------------------------
+//
+TBool CPeninputHwrfscnControlBar::BeforePropertyChangedL(
+ MPeninputHwrfscnPropertySubscriber::TPeninputHwrfscnProperty /*aProptery*/ )
+ {
+ return EFalse;
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::PropertyChangedL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::PropertyChangedL(
+ MPeninputHwrfscnPropertySubscriber::TPeninputHwrfscnProperty aProptery )
+ {
+ // If the permitted range changed, it should reorganized the Range switch btn
+ if ( EPeninputHwrfscnPropertyPermittedRange == aProptery )
+ {
+ //close the range switch list if it was expended before
+ if( iRangeSwitchExpanded )
+ {
+ CloseRangeSwitchList( );
+ }
+
+ //remove all buttons on range switch and cover range switch group
+ RemoveAllSwitchBtns( );
+
+ UpdateCurrentActiveRangeList( );
+
+ UpdateRangeSwitchL( );
+
+ UpdateCoverRangeSwitchL( );
+
+ SetActiveCoverRangeBtn( );
+
+ Draw();
+ }
+ else if( EPeninputHwrfscnPropertyRange == aProptery )
+ {
+ UpdateCurrentActiveRange( );
+
+ HideCoverRangeSwitchBtns( );
+
+ SetActiveCoverRangeBtn( );
+ Draw();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::SizeChanged()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::SizeChanged( )
+ {
+ // read related LAF information
+ ReadLAFInfo( );
+
+ // set the function panel position
+ iFunctionPanel->SetPostion(
+ TPoint( iPos.iX-KUnitNumDiffOfMoreFuncAndControlBar*iUnitWidth,
+ iPos.iY+iUnitHeight ) );
+
+ // change the cover range buttons size
+ ResetCoverRangeSwitchSize( );
+
+ // change the range list buttons size
+ ResetRangeSwitchSize( );
+
+ // change the more function button size
+ ResetMoreFuncBtnSize( );
+
+ // change the backspce button size
+ ResetBackSpaceBtnSize( );
+
+ // change option, vkbswitcher, close buttons size
+ ResetControlBarBtnSize();
+
+ // resize iBkgndWnd1, cover following buttons: close, option, switcher
+ TRect rect = ControlBarBtnRect( ECloseBtn );
+ rect.BoundingRect( ControlBarBtnRect( EOptionBtn ) );
+ rect.BoundingRect( ControlBarBtnRect( EVkbSwitcherBtn ) );
+ iBkgndWnd1->SetRect( rect );
+
+ // resize iBkgndWnd2, cover following buttons: more, backspace
+ rect = MoreFuncBtnRect();
+ rect.BoundingRect( BackSpaceBtnRect() );
+ iBkgndWnd2->SetRect( rect );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::LafChanged()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::LafChanged( )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::OnControlEvent_ButtonDown()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::OnControlEvent_ButtonDown( TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData )
+ {
+ // When Range switch list shown, click on btn and not release mouse until
+ // move the mouse outside the btn, the display status should not changed, i.e.
+ // the latched status keeps the same
+ if( iRangeSwitchExpanded && ClickIsInRangeSwitchGrp( aCtrl ) )
+ {
+ ShowRangeSwitchBtnsLatched( );
+
+ static_cast<CAknFepCtrlCommonButton*>( aCtrl )->SetHighlight( ETrue );
+
+ Draw( );
+ }
+
+ ReportEvent( aEventType, aCtrl, aEventData );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::EventTypeByCtrlId()
+// .
+// -----------------------------------------------------------------------------
+//
+TInt CPeninputHwrfscnControlBar::EventTypeByCtrlId( TInt aCtrlId )
+{
+ TInt eventType = 0;
+
+ switch ( aCtrlId )
+ {
+ case EHwrCtrlIdBackspace:
+ eventType = EHwrEventKeyBack;
+ break;
+
+ case EHwrCtrlIdEnter:
+ eventType = EHwrEventKeyEnter;
+ break;
+
+ case EHwrCtrlIdSpace:
+ eventType = EHwrEventKeySpace;
+ break;
+
+ case EHwrCtrlIdMoreFunc:
+ eventType = EHwrEventBtnMoreFunction;
+ break;
+
+ case EHwrCtrlIdVkbSwitcher:
+ eventType = EHwrEventVkbSwitch;
+ break;
+
+ case EHwrCtrlIdLanguageOption:
+ eventType = EHwrEventTouchInputOption;
+ break;
+
+ case EHwrCtrlIdChineseButton:
+ eventType = EHwrEventSetRangeChinese;
+ break;
+
+ case EHwrCtrlIdEnglishButton:
+ eventType = EHwrEventSetRangeEnglish;
+ break;
+
+ case EHwrCtrlIdNumberButton:
+ eventType = EHwrEventSetRangeNumber;
+ break;
+
+ case EHwrCtrlIdCoverChineseButton:
+ case EHwrCtrlIdCoverEnglishButton:
+ case EHwrCtrlIdCoverNumberButton:
+ case EHwrCtrlIdCoverSymbolButton:
+ eventType = EHwrEventRangeClick;
+ break;
+
+ case EHwrCtrlIdClose:
+ eventType = EHwrEventClose;
+ break;
+ default:
+ break;
+ }
+
+ return eventType;
+}
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::OnControlEvent_ButtonUp
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::OnControlEvent_ButtonUp(
+ TInt aEventType,
+ CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData )
+ {
+ TBool handled = EFalse;
+
+ // if the rangelist is expanded and then close it
+
+ if( aCtrl == iBackSpaceBtn )
+ {
+ handled = ETrue;
+ }
+
+ if( iRangeSwitchExpanded )
+ {
+ if( aCtrl == iBackSpaceBtn )
+ {
+ handled = ETrue;
+ }
+ CloseRangeSwitchList( );
+ }
+
+ // check which control was pressed
+ // event sent by backspace button
+ if( aCtrl == iBackSpaceBtn )
+ {
+ if( iFunctionPanel->IsVisible( ) )
+ {
+ handled = ETrue;
+ ShowMoreFuncList( EFalse );
+ }
+ }
+
+ // event sent by the button on rang list
+ else if( ClickIsInRangeSwitchGrp( aCtrl ) )
+ {
+ // Set clicked btn as the active control
+ iRangeSwitchBtnGroup->SetActiveCtrl( aCtrl );
+ }
+ // event sent by more function button
+ else if( aCtrl == iMoreFuncBtn )
+ {
+ ShowMoreFuncList( !iFunctionPanel->IsVisible( ) );
+ }
+ // event sent by the button on cover range group
+ else if( aCtrl == iCoverRangeSwitchBtnGroup->ActiveControl( ) )
+ {
+ // Hide the more function panel if it is visible
+ if( iFunctionPanel->IsVisible( ) )
+ {
+ ShowMoreFuncList( EFalse );
+ }
+
+ // if the rang number is more than 1, then open ranglist
+ if( iCurrentRangeList.Count( ) > 1 )
+ {
+ OpenRangeSwitchList( );
+ }
+ }
+ else if( aCtrl->ControlId() == EHwrCtrlIdVkbSwitcher )
+ {
+ iLayout->ClearScreen();
+ if( iFunctionPanel->IsVisible( ) )
+ {
+ ShowMoreFuncList( EFalse );
+ }
+ else
+ {
+ TRect rect = aCtrl->Rect();
+ TRAP_IGNORE( iInputModeSwitch->PopUpSwitchListL( rect ) );
+ }
+ }
+ else if( aCtrl->ControlId() == EHwrCtrlIdLanguageOption )
+ {
+ if( iFunctionPanel->IsVisible( ) )
+ {
+ ShowMoreFuncList( EFalse );
+ }
+ }
+ //the events sent by function panel
+ else
+ {
+ iMoreFuncBtn->SetHighlight( EFalse );
+ Draw( );
+ }
+
+ // Give the event to layout if the event was not consumed by this panel
+ if( !handled )
+ {
+ // convert to eventtype by the control ID
+ aEventType = EventTypeByCtrlId( aCtrl->ControlId( ) );
+
+ //sent to layout
+ ReportEvent( aEventType, aCtrl, aEventData );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateCloseBtnL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateCloseBtnL( )
+ {
+ iCloseBtn = CAknFepCtrlEventButton::NewL( iLayout, EHwrCtrlIdClose,
+ 0xFFFF,
+ 0,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ iCloseBtn->SetResourceId( R_AKN_FEP_HWR_CLOSE );
+ iCloseBtn->ConstructFromResourceL( );
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( ControlBarBtnRect( ECloseBtn ), innerRect );
+ iCloseBtn->SizeChanged( ControlBarBtnRect( ECloseBtn ), innerRect, ETrue );
+ iCloseBtn->SetRect( ControlBarBtnRect( ECloseBtn ) );
+ iBkgndWnd1->AddControlL( iCloseBtn );
+ iCloseBtn->AddEventObserver( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateOptionBtnL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateOptionBtnL( )
+ {
+ iOptionBtn = CAknFepCtrlEventButton::NewL( iLayout, EHwrCtrlIdLanguageOption,
+ 0xFFFF,
+ 0,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ iOptionBtn->SetResourceId( R_AKN_FEP_HWR_OPTION );
+ iOptionBtn->ConstructFromResourceL( );
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( ControlBarBtnRect( EOptionBtn ), innerRect );
+
+ iOptionBtn->SizeChanged( ControlBarBtnRect( EOptionBtn ), innerRect, ETrue );
+ iOptionBtn->SetRect( ControlBarBtnRect( EOptionBtn ) );
+ iBkgndWnd1->AddControlL( iOptionBtn );
+ iOptionBtn->AddEventObserver( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateVkbSwitcherBtnL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateVkbSwitcherBtnL( )
+ {
+ iVkbSwitcherBtn = CAknFepCtrlEventButton::NewL( iLayout, EHwrCtrlIdVkbSwitcher,
+ 0xFFFF,
+ 0,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ iVkbSwitcherBtn->SetResourceId( R_AKN_FEP_HWR_VKB );
+ iVkbSwitcherBtn->ConstructFromResourceL( );
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( ControlBarBtnRect( EVkbSwitcherBtn ), innerRect );
+ iVkbSwitcherBtn->SizeChanged( ControlBarBtnRect( EVkbSwitcherBtn ), innerRect, ETrue );
+ iVkbSwitcherBtn->SetRect( ControlBarBtnRect( EVkbSwitcherBtn ) );
+ iBkgndWnd1->AddControlL( iVkbSwitcherBtn );
+ iVkbSwitcherBtn->AddEventObserver( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateRangeSwitchBtnGroupL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateRangeSwitchBtnGroupL( )
+ {
+ iRangeSwitchBtnGroup = CPeninputHwrfscnBkgnd::NewL( iLayout, EHwrCtrlIdRangeBar );
+ iRangeSwitchBtnGroup->SetResourceId( R_PENINPUT_LAYOUT_WINDOW_BACKGROUND );
+ iRangeSwitchBtnGroup->ConstructFromResourceL();
+
+ UpdateRangeSwitchL( );
+ AddToRootControlL( iRangeSwitchBtnGroup );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateRangeSwitchCoverBtnGroupL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateRangeSwitchCoverBtnGroupL( )
+ {
+ iCoverRangeSwitchBtnGroup = CPeninputHwrfscnBkgnd::NewL( iLayout, EHwrCtrlIdCoverRangeBar );
+ iCoverRangeSwitchBtnGroup->SetResourceId( R_PENINPUT_LAYOUT_WINDOW_BACKGROUND );
+ iCoverRangeSwitchBtnGroup->ConstructFromResourceL();
+
+ UpdateCoverRangeSwitchL( );
+
+ iCoverRangeSwitchBtnGroup->HideControl( ActiveRangeIndex( ), EFalse );
+
+ iCoverRangeSwitchBtnGroup->
+ SetActiveCtrl( iCoverRangeSwitchBtnGroup->At( ActiveRangeIndex( ) ) );
+
+ AddToRootControlL( iCoverRangeSwitchBtnGroup );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateMoreFuncBtnL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateMoreFuncBtnL( )
+ {
+ iMoreFuncBtn = CAknFepCtrlCommonButton::NewL( iLayout, EHwrCtrlIdMoreFunc,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ TResourceReader reader;
+
+ CCoeEnv::Static()->CreateResourceReaderLC( reader,
+ R_AKN_FEP_HWR_MORE_FUNC );
+ iMoreFuncBtn->SetResourceId( R_AKN_FEP_HWR_MORE_FUNC );
+ iMoreFuncBtn->ConstructFromResourceL();
+
+ // Pop and destroy reader
+ CleanupStack::PopAndDestroy( 1 );
+
+ TRect innerRect;
+ TRect rect(MoreFuncBtnRect());
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ iMoreFuncBtn->SizeChanged( rect, innerRect, ETrue );
+ iMoreFuncBtn->SetRect( rect );
+
+ /*iMoreFuncBtn->SetBmpStretchable( );
+
+ CFbsBitmap* svgMaskLatched = NULL;
+ CFbsBitmap* svgMaskUnLatched = NULL;
+
+ TLatchPicIndex index = ELatchPicError;
+ GetLatchedIndexByCtrlID( EHwrCtrlIdMoreFunc,index );
+ CreateBitMapL( EMbmPeninputhwrfscnQgn_indi_fep_button_morefunction,
+ iLatchedBtnPic[index].iSvgLatchedBMP,
+ svgMaskLatched );
+
+ CreateBitMapL( EMbmPeninputhwrfscnQgn_indi_fep_button_morefunction_sel,
+ iLatchedBtnPic[index].iSvgUnLatchedBMP,
+ svgMaskUnLatched );
+
+ iMoreFuncBtn->SetLatchedBitmap(
+ iLatchedBtnPic[index].iSvgLatchedBMP, svgMaskLatched );
+ iMoreFuncBtn->SetUnLatchedBitmap(
+ iLatchedBtnPic[index].iSvgUnLatchedBMP, svgMaskUnLatched );
+
+ iMoreFuncBtn->SetLatched( ETrue );*/
+
+ iMoreFuncBtn->AddEventObserver( this );
+
+ iBkgndWnd2->AddControlL( iMoreFuncBtn );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateMoreFuncPanelL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateMoreFuncPanelL( )
+ {
+ iFunctionPanel = CPeninputHwrfscnFunctionPanel::NewL( iLayout );
+ iFunctionPanel->Show( EFalse );
+ iFunctionPanel->SetPostion(
+ TPoint( iPos.iX-KUnitNumDiffOfMoreFuncAndControlBar*iUnitWidth,
+ iPos.iY+iUnitHeight ) );
+ iFunctionPanel->AddEventObserver( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateBackSpaceBtnL()
+// .
+// ----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CreateBackSpaceBtnL( )
+ {
+ iBackSpaceBtn = CAknFepCtrlRepeatButton::NewL( iLayout, EHwrCtrlIdBackspace,
+ EHwrEventKeyBack,
+ EKeyBackspace,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+ iBackSpaceBtn->SetResourceId( R_AKN_FEP_HWR_BACK_SPACE );
+ iBackSpaceBtn->ConstructFromResourceL( );
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( BackSpaceBtnRect( ), innerRect );
+ iBackSpaceBtn->SizeChanged( BackSpaceBtnRect( ), innerRect, ETrue );
+ iBackSpaceBtn->SetRect( BackSpaceBtnRect( ) );
+ iBkgndWnd2->AddControlL( iBackSpaceBtn );
+ iBackSpaceBtn->AddEventObserver( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CChineseFullScreenLayout::CreateLatchedBtnLC
+// .
+// ----------------------------------------------------------------------------
+//
+CAknFepCtrlCommonButton* CPeninputHwrfscnControlBar::CreateLatchedBtnLC(
+ const TRect aRect,
+ TInt aCtrlId,
+ TInt aLatchedPicID,
+ TInt /*aUnLatchedID*/ )
+ {
+ CAknFepCtrlMultiImageButton* rangeBtn = CAknFepCtrlMultiImageButton::NewL( iLayout, aCtrlId,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+
+ rangeBtn->SetResourceId( aLatchedPicID );
+ rangeBtn->ConstructFromResourceL();
+
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( aRect, innerRect );
+ rangeBtn->SizeChanged( aRect, innerRect, ETrue );
+ rangeBtn->SetRect( aRect );
+ rangeBtn->AddEventObserver( this );
+ return rangeBtn;
+ }
+
+// ----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::CreateNormalBtnLC
+// .
+// ----------------------------------------------------------------------------
+//
+CAknFepCtrlCommonButton* CPeninputHwrfscnControlBar::CreateNormalBtnLC( const TRect aRect,
+ TInt aCtrlId,
+ TInt aResID )
+ {
+ CAknFepCtrlCommonButton* coverRangeSwitchBtn =
+ CAknFepCtrlCommonButton::NewL( iLayout, aCtrlId,
+ KAknsIIDQsnFrFunctionButtonNormal,
+ KAknsIIDQsnFrFunctionButtonPressed,
+ KAknsIIDQsnFrFunctionButtonInactive );
+
+ coverRangeSwitchBtn->SetResourceId( aResID );
+ coverRangeSwitchBtn->ConstructFromResourceL( );
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( aRect, innerRect );
+ coverRangeSwitchBtn->SizeChanged( aRect, innerRect, ETrue );
+ coverRangeSwitchBtn->SetRect( aRect );
+ coverRangeSwitchBtn->Hide(ETrue);
+ coverRangeSwitchBtn->AddEventObserver( this );
+
+ return coverRangeSwitchBtn;
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::CloseRangeSwitchList()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::CloseRangeSwitchList( )
+ {
+ // Hide all Range btns
+ HideRangeSwitchBtns( ETrue );
+
+ // Hide all cover range btns
+ HideCoverRangeSwitchBtns( );
+
+ // set the active cover range button
+ SetActiveCoverRangeBtn( );
+
+ // set the switch expanded state to be false
+ iRangeSwitchExpanded = EFalse;
+
+ // Redraw them
+ Draw( );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::HideCoverRangeSwitchBtns()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::HideCoverRangeSwitchBtns( )
+ {
+ TInt count = iCoverRangeSwitchBtnGroup->NumOfControls( );
+
+ for( TInt i = 0; i < count; i++ )
+ {
+ iCoverRangeSwitchBtnGroup->HideControl( i );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::HideCoverRangeSwitchBtns()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::SetActiveCoverRangeBtn( )
+ {
+ TInt curActiveRange = ActiveRangeIndex( );
+ iCoverRangeSwitchBtnGroup->HideControl( curActiveRange, EFalse );
+ iCoverRangeSwitchBtnGroup->SetActiveCtrl( curActiveRange );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::HideCoverRangeSwitchBtns()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::HideRangeSwitchBtns( TBool aHide )
+ {
+ TInt count = iRangeSwitchBtnGroup->NumOfControls( );
+ iRangeSwitchBtnGroup->Hide( aHide );
+ for( TInt i = 0; i < count; i++ )
+ {
+ iRangeSwitchBtnGroup->HideControl( i,aHide );
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::RemoveAllSwitchBtns()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::RemoveAllSwitchBtns( )
+ {
+ TInt count = iRangeSwitchBtnGroup->NumOfControls( );
+
+ for ( int i = 0; i < count; i++ )
+ {
+ iRangeSwitchBtnGroup->RemoveControl( iRangeSwitchBtnGroup->At( 0 ) );
+ iCoverRangeSwitchBtnGroup->RemoveControl(
+ iCoverRangeSwitchBtnGroup->At( 0 ) );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::OpenRangeSwitchList()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::OpenRangeSwitchList( )
+ {
+ // Show all items in the Range switch list
+ HideRangeSwitchBtns( EFalse );
+
+ // set the buttons to be latched
+ ShowRangeSwitchBtnsLatched( );
+
+ // Hide all items of the btns used to cover the Range switch list
+ HideCoverRangeSwitchBtns( );
+
+ // Highlight the previous selected item
+ static_cast<CAknFepCtrlCommonButton*>
+ ( iRangeSwitchBtnGroup->At( ActiveRangeIndex( ) ) )->SetHighlight( ETrue );
+
+ iRangeSwitchExpanded = ETrue;
+
+ Draw( );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ShowRangeSwitchBtnsLatched()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ShowRangeSwitchBtnsLatched( )
+ {
+ // Show all items in the Range switch list
+ TInt count = iRangeSwitchBtnGroup->NumOfControls( );
+
+ for( TInt i = 0; i < count; i++ )
+ {
+ static_cast<CAknFepCtrlCommonButton*>
+ ( iRangeSwitchBtnGroup->At( i ) )->SetHighlight( EFalse );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ShowMoreFuncList()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ShowMoreFuncList( TBool aShowNow )
+ {
+ iFunctionPanel->Show( aShowNow );
+ iMoreFuncBtn->SetHighlight( aShowNow );
+ Draw( );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ClickIsInRangeSwitchGrp()
+// .
+// -----------------------------------------------------------------------------
+//
+TBool CPeninputHwrfscnControlBar::ClickIsInRangeSwitchGrp( CFepUiBaseCtrl* aCtrl )
+ {
+ TInt count = iRangeSwitchBtnGroup->NumOfControls( );
+
+ for ( int i = 0; i < count; i++ )
+ {
+ if ( aCtrl == iRangeSwitchBtnGroup->At( i ) )
+ {
+ return ETrue;
+ }
+ }
+
+ return EFalse;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateRangeSwitchL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::UpdateRangeSwitchL( )
+ {
+ for( int i = 0; i < iCurrentRangeList.Count( ); ++i )
+ {
+ CAknFepCtrlCommonButton* tempControl = NULL;
+ TBool handled = EFalse;
+
+ if ( iCurrentRangeList[i] == ERangeNative )
+ {
+ tempControl = CreateNormalBtnLC(
+ RangeSwitchBtnRect( i ),
+ EHwrCtrlIdChineseButton,
+ R_AKN_FEP_HWR_COVER_CHINESE);
+
+ handled = ETrue;
+ }
+ else if ( iCurrentRangeList[i] == ERangeEnglish )
+ {
+ tempControl = CreateNormalBtnLC(
+ RangeSwitchBtnRect( i ),
+ EHwrCtrlIdEnglishButton,
+ R_AKN_FEP_HWR_COVER_LATIN);
+
+ handled = ETrue;
+ }
+ else if ( iCurrentRangeList[i] == ERangeNumber )
+ {
+ tempControl = CreateNormalBtnLC(
+ RangeSwitchBtnRect( i ),
+ EHwrCtrlIdNumberButton,
+ R_AKN_FEP_HWR_COVER_NUM);
+
+ handled = ETrue;
+ }
+
+/* TRect innerRect;
+ TRect rect(RangeSwitchBtnRect(i));
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ tempControl->SizeChanged( rect, innerRect, ETrue );
+ tempControl->SetRect( rect ); */
+
+ if ( handled )
+ {
+ iRangeSwitchBtnGroup->AddControlL( tempControl );
+ iRangeSwitchBtnGroup->HideControl( i );
+ //CleanupStack::Pop( tempControl );
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateCoverRangeSwitchL()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::UpdateCoverRangeSwitchL( )
+ {
+ // When only one Range available, use the picture without small
+ // triangle mark
+ if ( 1 == iCurrentRangeList.Count( ) )
+ {
+ UpdateWithoutMarkL( );
+ }
+ else
+ {
+ UpdateWithMarkL( );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateWithoutMarkL
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::UpdateWithoutMarkL( )
+ {
+ TBool handled = EFalse;
+ CFepUiBaseCtrl* tempControl = NULL;
+ if ( iCurrentActiveRange == ERangeNative )
+ {
+ tempControl = CreateNormalBtnLC( CoverRangeSwitchRect( ),
+ EHwrCtrlIdCoverChineseButton,
+ R_AKN_FEP_HWR_COVER_CHINESE );
+
+ handled = ETrue;
+ }
+ else if ( iCurrentActiveRange == ERangeEnglish )
+ {
+ tempControl = CreateNormalBtnLC( CoverRangeSwitchRect( ),
+ EHwrCtrlIdCoverEnglishButton,
+ R_AKN_FEP_HWR_COVER_LATIN );
+
+ handled = ETrue;
+ }
+ else if ( iCurrentActiveRange == ERangeNumber )
+ {
+ tempControl = CreateNormalBtnLC( CoverRangeSwitchRect( ),
+ EHwrCtrlIdCoverNumberButton,
+ R_AKN_FEP_HWR_COVER_NUM );
+
+ handled = ETrue;
+ }
+
+ if ( handled )
+ {
+ iCoverRangeSwitchBtnGroup->AddControlL( tempControl );
+ iCoverRangeSwitchBtnGroup->HideControl( 0 );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateWithMarkL
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::UpdateWithMarkL( )
+ {
+ TRect rect( CoverRangeSwitchRect( ) );
+
+ TInt rangeCount = iCurrentRangeList.Count( );
+
+ for( int i = 0; i < rangeCount; ++i )
+ {
+ CFepUiBaseCtrl* tempControl = NULL;
+ TBool handled = EFalse;
+
+ if ( iCurrentRangeList[i] == ERangeNative )
+ {
+ tempControl = CreateLatchedBtnLC( rect,
+ EHwrCtrlIdCoverChineseButton,
+ R_AKN_FEP_HWR_CHINESE,
+ EMbmPeninputhwrfscnQgn_indi_fep_button_chinese_sel );
+
+ handled = ETrue;
+ }
+ else if ( iCurrentRangeList[i] == ERangeEnglish )
+ {
+ tempControl = CreateLatchedBtnLC( rect,
+ EHwrCtrlIdCoverEnglishButton,
+ R_AKN_FEP_HWR_LATIN,
+ EMbmPeninputhwrfscnQgn_indi_fep_button_chinese_sel );
+
+ handled = ETrue;
+ }
+ else if ( iCurrentRangeList[i] == ERangeNumber )
+ {
+ tempControl = CreateLatchedBtnLC( rect,
+ EHwrCtrlIdCoverNumberButton,
+ R_AKN_FEP_HWR_NUM,
+ EMbmPeninputhwrfscnQgn_indi_fep_button_chinese_sel );
+
+
+ handled = ETrue;
+ }
+
+ if ( handled )
+ {
+ iCoverRangeSwitchBtnGroup->AddControlL( tempControl );
+ iCoverRangeSwitchBtnGroup->HideControl( i );
+ }
+ }
+ }
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateCoverRangeSwitchL()
+// .
+// -----------------------------------------------------------------------------
+//
+TInt CPeninputHwrfscnControlBar::ActiveRangeIndex( )
+ {
+ return iCurrentRangeList.Find( iCurrentActiveRange );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateCurrentActiveRangeList()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::UpdateCurrentActiveRangeList( )
+ {
+ // Use this list to store the temp permitted Range list, as the list got
+ // from DataStore will change when some functions were called
+ iCurrentRangeList.Reset( );
+
+ // Check whether the three Ranges we cared about were exist in the list from DataSore,
+ // If so, add corresponding Range in the iCurrentRangeList follow the sequence:
+ // ERangeNative -> ERangeEnglish -> ERangeNumber
+ TInt rangeCount = sizeof( Ranges ) / sizeof( TInt );
+
+ const RArray<TInt>& rangeArray = iLayout->DataStore( ).PermittedRanges( );
+
+ for ( int i = 0; i < rangeCount; i++ )
+ {
+ if( rangeArray.Find( Ranges[i] ) != KErrNotFound )
+ {
+ iCurrentRangeList.Append( Ranges[i] );
+ }
+ }
+
+ UpdateCurrentActiveRange( );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::UpdateCurrentActiveRange()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::UpdateCurrentActiveRange( )
+ {
+ iCurrentActiveRange =
+ static_cast<TAknFepPenInputRange>(
+ iLayout->DataStore( ).PermittedRanges( )[0] );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::GetLatchedIndexByCtrlID()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::GetLatchedIndexByCtrlID( TInt aCtrlID,
+ TLatchPicIndex& aIndex )
+ {
+ TLatchPicIndex latchedPicID = ELatchPicError;
+
+ switch ( aCtrlID )
+ {
+ case EHwrCtrlIdMoreFunc:
+ latchedPicID = ELatchPicMoreFunc;
+ break;
+
+ case EHwrCtrlIdChineseButton:
+ latchedPicID = ELatchPicChineseButton;
+ break;
+
+ case EHwrCtrlIdEnglishButton:
+ latchedPicID = ELatchPicEnglishButton;
+ break;
+
+ case EHwrCtrlIdNumberButton:
+ latchedPicID = ELatchPicNumberButton;
+ break;
+
+ default:
+ break;
+ }
+
+ aIndex = latchedPicID;
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ReadLAFInfo()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ReadLAFInfo( )
+ {
+ TRect rect( PeninputHwrfscnLAFManager::ControlBarUnitRect( ) );
+ iUnitWidth = rect.Width( );
+ iUnitHeight = rect.Height( );
+
+ iPos = PeninputHwrfscnLAFManager::ControlBarLeftTopPosition( );
+
+ // Offset lefttop position for fixing bug
+ TPoint offsetPt( iUnitWidth*EControlBarBtnCount, 0 );
+ iPos += offsetPt;
+
+ // In case that the control bar and more function panel can not be fully shown
+ if( ( iPos.iX - KUnitNumDiffOfMoreFuncAndControlBar * iUnitWidth ) < 0 )
+ {
+ iPos.iX = KUnitNumDiffOfMoreFuncAndControlBar * iUnitWidth;
+ }
+ else if( ( iPos.iX + KControlBarWidthUnitNum * iUnitWidth ) >
+ iLayout->ScreenSize( ).iWidth )
+ {
+ iPos.iX = iLayout->ScreenSize( ).iWidth - KControlBarWidthUnitNum * iUnitWidth;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ResetCoverRangeSwitchSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ResetCoverRangeSwitchSize( )
+ {
+ // Get the rect
+ TRect rect( CoverRangeSwitchRect( ) );
+
+ // change the button group rect
+ iCoverRangeSwitchBtnGroup->SetRect( rect );
+
+ TInt count = iCoverRangeSwitchBtnGroup->NumOfControls( );
+
+ for ( int i = 0; i < count; i++ )
+ {
+ CAknFepCtrlCommonButton* button =
+ static_cast<CAknFepCtrlCommonButton*>( iCoverRangeSwitchBtnGroup->At( i ) );
+
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ button->SizeChanged( rect, innerRect, ETrue );
+
+ button->SetRect( rect );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ResetRangeSwitchSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ResetRangeSwitchSize( )
+ {
+ TInt count = iRangeSwitchBtnGroup->NumOfControls( );
+
+ for( int i = 0; i < count; ++i )
+ {
+ CAknFepCtrlCommonButton* button =
+ static_cast<CAknFepCtrlCommonButton*>(iRangeSwitchBtnGroup->At( i ));
+ /*
+ TLatchPicIndex index = ELatchPicError;
+
+ GetLatchedIndexByCtrlID( button->ControlId( ), index );
+
+ // Bitmap should be resized by the first time construct
+ TSize sizeBitMap( iUnitWidth, iUnitHeight );
+
+ AknIconUtils::SetSize( iLatchedBtnPic[index].iSvgLatchedBMP,
+ sizeBitMap, EAspectRatioNotPreserved );
+
+ AknIconUtils::SetSize( iLatchedBtnPic[index].iSvgUnLatchedBMP,
+ sizeBitMap, EAspectRatioNotPreserved );*/
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( RangeSwitchBtnRect( i ), innerRect );
+ button->SizeChanged(RangeSwitchBtnRect( i ), innerRect, ETrue);
+
+ button->SetRect( RangeSwitchBtnRect( i ) );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ResetMoreFuncBtnSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ResetMoreFuncBtnSize( )
+ {
+ TLatchPicIndex index = ELatchPicError;
+ GetLatchedIndexByCtrlID( EHwrCtrlIdMoreFunc, index );
+
+ // Bitmap should be resized by the first time construct
+ /*TSize sizeBitMap( iUnitWidth, iUnitHeight );
+
+ AknIconUtils::SetSize( iLatchedBtnPic[index].iSvgLatchedBMP,
+ sizeBitMap, EAspectRatioNotPreserved );
+
+ AknIconUtils::SetSize( iLatchedBtnPic[index].iSvgUnLatchedBMP,
+ sizeBitMap, EAspectRatioNotPreserved );*/
+
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( MoreFuncBtnRect(), innerRect );
+ iMoreFuncBtn->SizeChanged(MoreFuncBtnRect(), innerRect, ETrue);
+ iMoreFuncBtn->SetRect( MoreFuncBtnRect( ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ResetBackSpaceBtnSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ResetBackSpaceBtnSize( )
+ {
+ TRect rect( BackSpaceBtnRect( ) );
+ TRect innerRect;
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ iBackSpaceBtn->SizeChanged( rect, innerRect, ETrue );
+ iBackSpaceBtn->SetRect( rect );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ResetControlBarBtnSize()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::ResetControlBarBtnSize( )
+ {
+ TRect innerRect;
+ TRect rect(ControlBarBtnRect(ECloseBtn));
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ iCloseBtn->SizeChanged( rect, innerRect, ETrue );
+ iCloseBtn->SetRect( rect );
+
+ rect = ControlBarBtnRect(EOptionBtn);
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ iOptionBtn->SizeChanged(rect, innerRect, ETrue);
+ iOptionBtn->SetRect(rect);
+
+ rect = ControlBarBtnRect(EVkbSwitcherBtn);
+ AknPenImageUtils::CalculateGraphicRect( rect, innerRect );
+ iVkbSwitcherBtn->SizeChanged(rect, innerRect, ETrue);
+ iVkbSwitcherBtn->SetRect(rect);
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::CoverRangeSwitchRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnControlBar::CoverRangeSwitchRect( )
+ {
+ return TRect ( iPos, TSize( iUnitWidth, iUnitHeight ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::RangeSwitchBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnControlBar::RangeSwitchBtnRect( TInt aIndex )
+ {
+ TPoint pos( iPos.iX, iPos.iY + iUnitHeight * aIndex );
+
+ return TRect( pos, TSize( iUnitWidth, iUnitHeight ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::MoreFuncBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnControlBar::MoreFuncBtnRect( )
+ {
+ TRect coverRect( CoverRangeSwitchRect( ) );
+
+ TPoint pos( coverRect.iBr.iX, coverRect.iTl.iY );
+
+ return TRect ( pos, TSize( iUnitWidth,iUnitHeight ) );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::BackSpaceBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnControlBar::BackSpaceBtnRect( )
+ {
+ TRect funcRect( MoreFuncBtnRect( ) );
+
+ TPoint pos( funcRect.iBr.iX, funcRect.iTl.iY );
+
+ TSize size( iUnitWidth * KBackspaceWidthUintNum, iUnitHeight );
+
+ return TRect ( pos, size );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::ControlBarBtnRect()
+// .
+// -----------------------------------------------------------------------------
+//
+TRect CPeninputHwrfscnControlBar::ControlBarBtnRect( TInt aIndex )
+ {
+ TSize size( iUnitWidth, iUnitHeight );
+
+ return TRect( TPoint( iPos.iX - iUnitWidth * (EControlBarBtnCount - aIndex), iPos.iY ), size );
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::HandleSkinChanged()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::HandleSkinChanged()
+ {
+ iFunctionPanel->HandleSkinChanged();
+ }
+
+// -----------------------------------------------------------------------------
+// CPeninputHwrfscnControlBar::SetEnableSettingBtn()
+// .
+// -----------------------------------------------------------------------------
+//
+void CPeninputHwrfscnControlBar::SetEnableSettingBtn(TBool aEnable)
+ {
+ if ( aEnable )
+ {
+ iOptionBtn->SetDimmed(EFalse);
+ }
+ else
+ {
+ iOptionBtn->SetDimmed(ETrue);
+ iOptionBtn->SetActive(EFalse);
+ }
+ }
+
+//End of file