diff -r 000000000000 -r eb1f2e154e89 textinput/peninputhwrfscn/src/peninputhwrfscncontrolbar.cpp --- /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 +#include +#include +#include +#include +#include +#include + +// 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( 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 + ( 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 + ( 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& 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( + 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( 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(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