diff -r eb1f2e154e89 -r f5a1e66df979 textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Fri Feb 19 23:09:27 2010 +0200 @@ -0,0 +1,980 @@ +/* +* Copyright (c) 2005-2008 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 of LAF manager. +* +*/ + + +// INCLUDES +#include +#include +#include + +#include "peninputfingerhwrarlafmanager.h" +#include "peninputfingerhwrarcontrolid.h" + +#define LAF_MODIFY 1 +#define HackerVersion + +// --------------------------------------------------------------------------- +// Symbian Constructor +// --------------------------------------------------------------------------- +// +CPeninputFingerHwrArLafManager* CPeninputFingerHwrArLafManager::NewL() + { + CPeninputFingerHwrArLafManager* self = CPeninputFingerHwrArLafManager::NewLC(); + CleanupStack::Pop(); // self; + return self; + } + +// --------------------------------------------------------------------------- +// Symbian Constructor +// --------------------------------------------------------------------------- +// +CPeninputFingerHwrArLafManager* CPeninputFingerHwrArLafManager::NewLC() + { + CPeninputFingerHwrArLafManager* self = new( ELeave ) CPeninputFingerHwrArLafManager(); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// c++ destructor +// --------------------------------------------------------------------------- +// +CPeninputFingerHwrArLafManager::~CPeninputFingerHwrArLafManager() + { + //nothing + iSCTrectArray.Reset(); + iSCTrectArray.Close(); + } + + +// --------------------------------------------------------------------------- +// read laf data. +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::ReadLafInfo() + { + // Screen + TRect rect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect); + iScreenSize = rect.Size(); + + iIsLandscape = iScreenSize.iWidth < iScreenSize.iHeight ? EFalse : ETrue; + + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect); + + // finger Layout + TAknWindowLineLayout fshwrlayout; + TAknLayoutRect fshwrRect; + + fshwrlayout = AknLayoutScalable_Avkon::main_fep_fshwr2_pane(0).LayoutLine(); + fshwrRect.LayoutRect(rect, fshwrlayout); + + iLayoutRect = fshwrRect.Rect(); + iLayoutOffset = iLayoutRect.iTl; + + // ICF & Keypad + TAknWindowLineLayout icflayoutcn,icflayoutbgcn; + TAknTextLineLayout icflefttext; + TAknTextLineLayout icflefttext1, icflefttext2, icflefttext3; + TAknLayoutRect icfrectlatin, icfrectcn; + + if (iIsLandscape) + { + icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(1).LayoutLine(); + } + else + { + icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(0).LayoutLine(); + } + + icfrectcn.LayoutRect(fshwrRect.Rect(), icflayoutcn); + + TAknLayoutScalableParameterLimits entryPaneVariety = + AknLayoutScalable_Avkon::fshwr2_icf_pane_t1_ParamLimits(0); + TInt maxRow = entryPaneVariety.LastRow(); + + icflefttext = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 0).LayoutLine(); + + icflefttext1 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 1).LayoutLine(); + icflefttext2 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 2).LayoutLine(); + icflefttext3 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, maxRow).LayoutLine(); + iIcfTextLeftMarginCn = icflefttext.il; + iIcfTextRightMarginCn = iIcfTextLeftMarginCn; + + TAknLayoutText ctxt, ctxt1, ctxt2, ctxt3; + ctxt.LayoutText( icfrectcn.Rect(), icflefttext ); + ctxt1.LayoutText( icfrectcn.Rect(), icflefttext1 ); + ctxt2.LayoutText( icfrectcn.Rect(), icflefttext2 ); + ctxt3.LayoutText( icfrectcn.Rect(), icflefttext3 ); + + iIcfTextTopMarginCn = ctxt.TextRect().iTl.iY - icfrectcn.Rect().iTl.iY; + iIcfTextLineSpaceMarginCn = ctxt1.TextRect().iTl.iY - ctxt.TextRect().iBr.iY; + iIcfTextBottomMarginCn = icfrectcn.Rect().iBr.iY - ctxt3.TextRect().iBr.iY + - iIcfTextLineSpaceMarginCn; + iIcfTextHeightCn = ctxt.TextRect().Height(); + + iIcfFont = const_cast(AknLayoutUtils::FontFromId(icflefttext.iFont, NULL)); + + iRectIcf = icfrectcn.Rect(); + + // candidate list + TAknWindowLineLayout candrowpane, candrowpane2, candlistpane, cellpane, candbgpane; + TAknLayoutRect candpaneRect, candrowpaneRect, candrowpaneRect2, cellpaneRect1, cellpaneRect2; + TAknLayoutRect cellpaneRect3, cellpaneRect; + + if (iIsLandscape) + { + candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1). + LayoutLine(); + } + else + { + candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(0). + LayoutLine(); + } + candpaneRect.LayoutRect( fshwrRect.Rect(), candlistpane ); + rect = candpaneRect.Rect(); + candrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1). + LayoutLine(); + candrowpaneRect.LayoutRect( rect, candrowpane ); + + candrowpane2 = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2). + LayoutLine(); + candrowpaneRect2.LayoutRect( rect, candrowpane2 ); + + + cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 0 ). + LayoutLine(); + cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane ); + + candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); + cellpaneRect1.LayoutRect( cellpaneRect.Rect(), candbgpane ); + + cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 1 , 0 ). + LayoutLine(); + cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane ); + + candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); + cellpaneRect2.LayoutRect( cellpaneRect.Rect(), candbgpane ); + + + + cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 1 ). + LayoutLine(); + cellpaneRect.LayoutRect( candrowpaneRect2.Rect(), cellpane ); + + candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine(); + cellpaneRect3.LayoutRect( cellpaneRect.Rect(), candbgpane ); + + + iCandsHorizontalMargin = cellpaneRect2.Rect().iTl.iX - cellpaneRect1.Rect().iBr.iX; + iCandsVerticalMargin = cellpaneRect3.Rect().iTl.iY - cellpaneRect1.Rect().iBr.iY; + + iCandsUnitWidth = cellpaneRect1.Rect().Width(); + iCandsUnitHeight = cellpaneRect1.Rect().Height() ; + + iCandsNaviHeight = cellpaneRect1.Rect().Height(); + iCandidateLTPos = candrowpaneRect.Rect().iTl; + iPredictiveLTPos = candrowpaneRect2.Rect().iTl; + + TAknTextLineLayout candstxtlayout = + AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane_t1(3).LayoutLine(); + TAknLayoutText candstxt; + candstxt.LayoutText( cellpaneRect1.Rect(), candstxtlayout ); + iCandsFont = const_cast( AknLayoutUtils::FontFromId( candstxtlayout.iFont, NULL ) ); + iCandsTextMargin = candstxt.TextRect().iTl.iX - cellpaneRect1.Rect().iTl.iX; + + + TAknWindowLineLayout btnrowpane, btnpane, btnbgpane; + TAknLayoutRect btnrowRect, btnRect, btnbgRect; + + // Get the first row rect ************************************************* + btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 0). + LayoutLine(); + btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane); + // Close Button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnClose = btnbgRect.Rect(); + + // Range Button with mark + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 1 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnRangeChn = btnbgRect.Rect(); + iRectBtnRangeEng = iRectBtnRangeChn; + iRectBtnRangeNum = iRectBtnRangeEng; + + // SCT button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 2 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnRangeSmb = btnbgRect.Rect(); + + // Backspace button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 3 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnBackspace = btnbgRect.Rect(); + + // Get the second row rect ************************************************** + btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1). + LayoutLine(); + btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane); + + // Option button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnOption = btnbgRect.Rect(); + + // Switch mode button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnImeSwitch = btnbgRect.Rect(); + + // Arrow up button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnArrowUp = btnbgRect.Rect(); + iRectBtnSctPage = iRectBtnArrowUp; + + + // Get the third row rect ************************************************** + btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2). + LayoutLine(); + btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane); + + // Arrow left button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnArrowLeft = btnbgRect.Rect(); + + // Arrow right button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnArrowRight = btnbgRect.Rect(); + + // Arrow down button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + iRectBtnArrowDown = btnbgRect.Rect(); + + // Space button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 0 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + + iRectFixSctpad = btnrowRect.Rect(); + iSizeFixSctpadCell = btnRect.Rect().Size(); + iRectSpase = btnbgRect.Rect(); + iRectSpase.Move(-iRectFixSctpad.iTl ); + + // Enter button + btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 1 , 0 ). + LayoutLine(); + btnRect.LayoutRect(btnrowRect.Rect(), btnpane); + btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0). + LayoutLine(); + btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); + + iRectEnter = btnbgRect.Rect(); + iRectEnter.Move(-iRectFixSctpad.iTl); + + + // Writing box + TAknWindowLineLayout writingboxpane; + TAknLayoutRect boxRect; + writingboxpane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine(); + boxRect.LayoutRect(fshwrRect.Rect(), writingboxpane); + iRectWritingBox = boxRect.Rect(); + iRectNumpad = iRectWritingBox; + iRectSctpad = iRectWritingBox; + + // virtual key size + TAknWindowLineLayout keypane, keybgpane; + TAknLayoutRect keyRect, keybgRect; + + TAknLayoutScalableParameterLimits sctPaneVariety = + AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0); + + iSctpadRowCount = sctPaneVariety.LastRow() + 1; + iSctpadColCount = sctPaneVariety.LastColumn() + 1; + + iSizeBtnPadding = TSize(6, 6); + + iSCTrectArray.Reset(); + for(TInt i = 0; i < iSctpadRowCount; i++) + { + for ( TInt j = 0; j < iSctpadColCount; j++ ) + { + keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(0, j, i).LayoutLine(); + keyRect.LayoutRect(boxRect.Rect(), keypane); + keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine(); + keybgRect.LayoutRect(keyRect.Rect(), keybgpane); + iSCTrectArray.Append( keybgRect.Rect()); + } + } + iSizeNumpadCell = keybgRect.Rect().Size(); + iSizeSctpadCell = iSizeNumpadCell; + + // preview popup window + TAknWindowLineLayout previewWnd, previewWndInner; + TAknLayoutRect previewWndRect, previewWndInnerRect; + TAknLayoutText previewWndText; + previewWnd = AknLayoutScalable_Avkon::popup_fep_char_preview_window(0).LayoutLine(); + previewWndRect.LayoutRect( TRect(0,0,50,50), previewWnd ); + previewWndInner = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_g9().LayoutLine(); + previewWndInnerRect.LayoutRect( previewWndRect.Rect(), previewWndInner ); + iPreviewWndRect = previewWndRect.Rect(); + iPreviewWndInnerRect = previewWndInnerRect.Rect(); + iPreviewWndText = + AknLayoutScalable_Avkon::popup_fep_char_preview_window_t1(0).LayoutLine(); + previewWndText.LayoutText(previewWndRect.Rect(), iPreviewWndText); + iBubbleFont = previewWndText.Font(); + //========================================================================== + // going to be removed if the LAF data is ready + // + #ifdef HackerVersion + + // hardcode those and remove them after the laf data is ready + // do we really need to read ui data from laf system? + // icf margins + iIcfTextLeftMarginCn = 14; + iIcfTextRightMarginCn = 14; + iIcfTextTopMarginCn = 14; + iIcfTextBottomMarginCn = 20; + iIcfTextLineSpaceMarginCn = 5; + + // candiate margin + iCandsHorizontalMargin = 1; + iCandsVerticalMargin = 1; + + if(iIsLandscape) + { + TInt buttonHight = (iLayoutRect.Height()-20)/6;//-6; // 1mm ~= 6 pixls + TInt buttonWidth = (iLayoutRect.Width()-20)/8;//-8; + + iRectBtnClose = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(buttonWidth+10,buttonHight+10)); + + iRectBtnOption = iRectBtnClose; + iRectBtnOption.Move(TPoint(buttonWidth,0)); + + iRectBtnRangeSmb = iRectBtnOption; + iRectBtnRangeSmb.Move(TPoint(buttonWidth,0)); + + iRectBtnBackspace = iRectBtnRangeSmb; + iRectBtnBackspace.Move(TPoint(buttonWidth,0)); + + // button on second row + iRectBtnArrowUp = iRectBtnClose; + iRectBtnArrowUp.Move(TPoint(0,buttonHight)); + + iRectBtnArrowDown = iRectBtnArrowUp; + iRectBtnArrowDown.Move(TPoint(buttonWidth,0)); + + iRectBtnArrowLeft = iRectBtnArrowDown; + iRectBtnArrowLeft.Move(TPoint(buttonWidth,0)); + + iRectBtnArrowRight = iRectBtnArrowLeft; + iRectBtnArrowRight.Move(TPoint(buttonWidth,0)); + + // fix symbol table + TPoint fixSctTl = iRectBtnClose.iTl+TPoint(0,buttonHight); + iRectFixSctpad = TRect(fixSctTl,fixSctTl+TPoint(4*buttonWidth,buttonHight)); + + iRectSpase = iRectBtnClose; + iRectSpase.Move(TPoint(0,buttonHight)); + + iRectEnter = iRectSpase; + iRectEnter.Move(TPoint(buttonWidth,0)); + + iRectSpase.Move(-iRectFixSctpad.iTl ); + iRectEnter.Move(-iRectFixSctpad.iTl ); + + iSizeFixSctpadCell = iRectSpase.Size(); + + // candate position + iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight); + iCandsUnitWidth = buttonWidth-iCandsVerticalMargin; + iCandsUnitHeight = buttonHight; + + // icf editor rect + iRectIcf = TRect(TPoint(4*buttonWidth+10,10),TPoint(iLayoutRect.iBr.iX-10,2*buttonHight+10)); + + // iwriting box + iRectWritingBox = TRect(TPoint(10,2*buttonHight+10),iLayoutRect.iBr-TPoint(10,10)); + + // construct symbol table + iRectOfSymbolTable = iRectWritingBox; + iRectOfSymbolTable.Move(TPoint(buttonWidth,-buttonHight)); + iRectOfSymbolTable.SetHeight(5*buttonHight); + iRectOfSymbolTable.SetWidth(6*buttonWidth); + + iRectSctpad = iRectOfSymbolTable; + iRectSctpad.Move(TPoint(0,buttonHight)); + iRectSctpad.SetHeight(4*buttonHight); + iRectSctpad.SetWidth(6*buttonWidth); + + // the button size for symbol table control + iSymButtonSize = TSize(2*buttonWidth,buttonHight); + iSctpadRowCount = 4; + iSctpadColCount = 6; + + iSCTrectArray.Reset(); + for(TInt i = 0; i < iSctpadRowCount; i++) + { + for(TInt j = 0; j < iSctpadColCount; j++) + { + TPoint rectTl = iRectSctpad.iTl+TPoint(j*buttonWidth,i*buttonHight); + TPoint rectBr = rectTl+ TPoint(buttonWidth,buttonHight); + iSCTrectArray.Append(TRect(rectTl,rectBr)); + } + } + } + else + { + // icf rect + iRectIcf = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(iLayoutRect.iBr.iX-10,22.5*9)); + TPoint backSpaceTl = iRectIcf.iTl+TPoint(0,iRectIcf.Height()); + + TInt buttonHight = (iLayoutRect.Height()-iRectIcf.Height()-20)/6;//(15*9)/2; // 1mm ~= 9pixls + TInt buttonWidth = (iLayoutRect.Width()-20)/4; + + // the button on second row + iRectBtnBackspace = TRect(backSpaceTl,backSpaceTl+TPoint(buttonWidth,buttonHight)); + iRectBtnOption = iRectBtnBackspace; + iRectBtnOption.Move(TPoint(buttonWidth,0)); + iRectBtnRangeSmb = iRectBtnOption; + iRectBtnRangeSmb.Move(TPoint(buttonWidth,0)); + iRectBtnClose = iRectBtnRangeSmb; + iRectBtnClose.Move(TPoint(buttonWidth,0)); + + // arrow button: on third row + iRectBtnArrowUp = iRectBtnBackspace; + iRectBtnArrowUp.Move(TPoint(0,buttonHight)); + + iRectBtnArrowDown = iRectBtnArrowUp; + iRectBtnArrowDown.Move(TPoint(buttonWidth,0)); + + iRectBtnArrowLeft = iRectBtnArrowDown; + iRectBtnArrowLeft.Move(TPoint(buttonWidth,0)); + + iRectBtnArrowRight = iRectBtnArrowLeft; + iRectBtnArrowRight.Move(TPoint(buttonWidth,0)); + + // candate position + iCandidateLTPos = iRectBtnBackspace.iTl + TPoint(0,buttonHight); + iCandsUnitWidth = buttonWidth-iCandsVerticalMargin; + iCandsUnitHeight = buttonHight; + + // HWR Box Rect + iRectWritingBox = TRect(TPoint(iRectBtnArrowUp.iTl.iX,iRectBtnArrowUp.iBr.iY),iLayoutRect.iBr-TPoint(10,10)); + + // construct symbol table + iRectOfSymbolTable = iRectWritingBox; + iRectOfSymbolTable.Move(TPoint(0,-buttonHight)); + iRectOfSymbolTable.SetHeight(5*buttonHight); + iRectOfSymbolTable.SetWidth(4*buttonWidth); + + iRectSctpad = iRectOfSymbolTable; + iRectSctpad.Move(TPoint(0,buttonHight)); + iRectSctpad.SetHeight(4*buttonHight); + iRectSctpad.SetWidth(4*buttonWidth); + + // the button size for symbol table control + iSymButtonSize = TSize((4*buttonWidth)/3,buttonHight); + + iSctpadRowCount = 4; + iSctpadColCount = 4; + iSCTrectArray.Reset(); + for(TInt i = 0; i < iSctpadRowCount; i++) + { + for(TInt j = 0; j < iSctpadColCount; j++) + { + TPoint rectTl = iRectSctpad.iTl+TPoint(j*buttonWidth,i*buttonHight); + TPoint rectBr = rectTl+ TPoint(buttonWidth,buttonHight); + iSCTrectArray.Append(TRect(rectTl,rectBr)); + } + } + } + #endif + // + //========================================================================== + + } + + +// --------------------------------------------------------------------------- +// get screen orientation. +// --------------------------------------------------------------------------- +// +TBool CPeninputFingerHwrArLafManager::IsLandscape() + { + return iIsLandscape; + } + + +// --------------------------------------------------------------------------- +// get rect of layout. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::LayoutRect() + { + return iLayoutRect; + } + + +// --------------------------------------------------------------------------- +// get rect of specified control. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::CtrlRect( TInt aCtrlId ) + { + switch ( aCtrlId ) + { + case EHwrCtrlIdInputContextField: + { + return iRectIcf; + } + case EHwrCtrlIdWritingBox: + { + return iRectWritingBox; + } + case EHwrCtrlIdSymbolTableVkbGroup: + { + return iRectOfSymbolTable; + } + case EHwrCtrlIdClose: + { + return iRectBtnClose; + } + case EHwrCtrlIdSymbolButton: + { + return iRectBtnRangeSmb; + } + case EHwrCtrlIdBackspace: + { + return iRectBtnBackspace; + } + case EHwrCtrlIdArrowUp: + { + return iRectBtnArrowUp; + } + case EHwrCtrlIdArrowDown: + { + return iRectBtnArrowDown; + } + case EHwrCtrlIdArrowLeft: + { + return iRectBtnArrowLeft; + } + case EHwrCtrlIdArrowRight: + { + return iRectBtnArrowRight; + } + case EHwrCtrlIdLanguageOption: + { + return iRectBtnOption; + } + case EHwrCtrlIdVkbSwitcher: + { + return iRectBtnImeSwitch; + } + case EHwrCtrlId3Page1Btn: + case EHwrCtrlId3Page2Btn: + case EHwrCtrlId3Page3Btn: + case EHwrCtrlId2Page1Btn: + case EHwrCtrlId2Page2Btn: + { + return iRectBtnSctPage; + } + } + return TRect(); + } + +// --------------------------------------------------------------------------- +// get rect of ICF control. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::IcfRect() + { + return iRectIcf; + } + +// --------------------------------------------------------------------------- +// get left margin of icf. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::IcfLeftMargin() + { + return iIcfTextLeftMarginCn; + } + +// --------------------------------------------------------------------------- +// get right margin of icf. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::IcfRightMargin() + { + return iIcfTextRightMarginCn; + } + +// --------------------------------------------------------------------------- +// get top margin of icf. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::IcfTopMargin() + { + return iIcfTextTopMarginCn; + } + +// --------------------------------------------------------------------------- +// get bottom margin of icf. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::IcfBottomMargin() + { + return iIcfTextBottomMarginCn; + } + +// --------------------------------------------------------------------------- +// get line spacing of icf. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::IcfLineSpaceMargin() + { + return iIcfTextLineSpaceMarginCn; + } + +// --------------------------------------------------------------------------- +// get font of icf. +// --------------------------------------------------------------------------- +// +CFont* CPeninputFingerHwrArLafManager::IcfFont() + { +// //workaround +// TAknTextLineLayout textPaneTextLayout; +// TAknLayoutText txt; +// textPaneTextLayout = +// AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine(); +// const CFont* icffont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL ); +// +// return const_cast(icffont); + return iIcfFont; + } + +// --------------------------------------------------------------------------- +// get text height of icf. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::IcfTextHeight() + { + return iIcfTextHeightCn; + } + + +// --------------------------------------------------------------------------- +// get inner padding of buttons. +// --------------------------------------------------------------------------- +// +TSize CPeninputFingerHwrArLafManager::ButtonInnerPadding() + { + return iSizeBtnPadding; + } + + +// --------------------------------------------------------------------------- +// get cell size of virtual numpad. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::VirtualNumpadCellSize() + { + return iSizeNumpadCell; + } + + +// --------------------------------------------------------------------------- +// get text layout of virtual numpad. +// --------------------------------------------------------------------------- +// +TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout() + { + TAknTextLineLayout layout = AknLayoutScalable_Avkon:: + cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); + return layout; + } + +// --------------------------------------------------------------------------- +// get row count of virtual sctpad. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::VirtualSctpadRowCount() + { + return iSctpadRowCount; + } + +// --------------------------------------------------------------------------- +// get column count of virtual sctpad. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::VirtualSctpadColCount() + { + return iSctpadColCount; + } + +// --------------------------------------------------------------------------- +// get cell size of virtual sctpad. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::VirtualSctpadCellSize() + { + return iSizeSctpadCell; + } + +// --------------------------------------------------------------------------- +// get cell size of virtual sctpad. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::FixVirtualSctpadCellSize() + { + return iSizeFixSctpadCell; + } + + +// --------------------------------------------------------------------------- +// get preview bubble rect. +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::PreviewBubbleRect() + { + return iPreviewWndRect; + } + +// --------------------------------------------------------------------------- +// get preview bubble inner rect +// --------------------------------------------------------------------------- +// +TRect CPeninputFingerHwrArLafManager::PreviewBubbleInnerRect() + { + return iPreviewWndInnerRect; + } + +// --------------------------------------------------------------------------- +// get preview bubble font +// --------------------------------------------------------------------------- +// +const CFont* CPeninputFingerHwrArLafManager::PreviewBubbleFont() + { + return iBubbleFont; + } + +// --------------------------------------------------------------------------- +// get preview bubble text layout +// --------------------------------------------------------------------------- +// +TAknTextLineLayout CPeninputFingerHwrArLafManager::PreviewBubbleTextLayout() + { + return iPreviewWndText; + } + +// --------------------------------------------------------------------------- +// get cell rect of virtual sctpad. +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::GetVirtualKeyRects( RArray& aArrayRects ) + { + aArrayRects.Reset(); + + for(TInt i = 0; i < iSCTrectArray.Count(); i++) + { + TRect absoluteRect = iSCTrectArray[i]; + absoluteRect.Move(-iRectSctpad.iTl.iX, -iRectSctpad.iTl.iY); + aArrayRects.Append(absoluteRect); + } + } + +// --------------------------------------------------------------------------- +// get space and enter key rect. +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::GetFixVirtualKeyRects( RArray& aArrayRects ) + { + aArrayRects.Reset(); + aArrayRects.Append( iRectSpase ); + aArrayRects.Append( iRectEnter ); + } + +// --------------------------------------------------------------------------- +// get text layout of virtual sctpad. +// --------------------------------------------------------------------------- +// +TAknTextLineLayout CPeninputFingerHwrArLafManager::SctpadKeyTxtLayout() + { + TAknTextLineLayout layout = AknLayoutScalable_Avkon:: + cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); + return layout; + } + +// --------------------------------------------------------------------------- +// get text layout of space and enter. +// --------------------------------------------------------------------------- +// +TAknTextLineLayout CPeninputFingerHwrArLafManager::FixSctpadKeyTxtLayout() + { + TAknTextLineLayout layout = AknLayoutScalable_Avkon:: + cell_fshwr2_syb_bg_pane_t1(0).LayoutLine(); + return layout; + } + +// --------------------------------------------------------------------------- +// get width unit of candidate list. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::CandidateUnitWidth() + { + return iCandsUnitWidth; + } + +// --------------------------------------------------------------------------- +// get height unit of candidate list. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::CandidateUnitHeight() + { + return iCandsUnitHeight; + } + +// --------------------------------------------------------------------------- +// get horizontal margin of candidate list. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::CandidateHorizontalMargin() + { + return iCandsHorizontalMargin; + } + +// --------------------------------------------------------------------------- +// get vertical margin of candidate list. +// --------------------------------------------------------------------------- +// +TInt CPeninputFingerHwrArLafManager::CandidateVerticalMargin() + { + return iCandsVerticalMargin; + } + +// --------------------------------------------------------------------------- +// get top-left position of candidate list. +// --------------------------------------------------------------------------- +// +TPoint CPeninputFingerHwrArLafManager::CandidateLTPos() + { + return iCandidateLTPos; + } + +// --------------------------------------------------------------------------- +// get top-left position of predictive list. +// --------------------------------------------------------------------------- +// +TPoint CPeninputFingerHwrArLafManager::PredictiveLTPos() + { + return iPredictiveLTPos; + } + +// --------------------------------------------------------------------------- +// get font of candidate list. +// --------------------------------------------------------------------------- +// +const CFont* CPeninputFingerHwrArLafManager::CandidateFont() + { + return iCandsFont; + } + + +// --------------------------------------------------------------------------- +// get text layout of sct paging button. +// --------------------------------------------------------------------------- +// +TAknTextLineLayout CPeninputFingerHwrArLafManager::SctPageBtnTxtLayout() + { + TAknTextLineLayout layout = AknLayoutScalable_Apps:: + field_vitu2_entry_pane_t1(0, 0, 0).LayoutLine(); + return layout; + } + +// --------------------------------------------------------------------------- +// c++ constructor +// --------------------------------------------------------------------------- +// +CPeninputFingerHwrArLafManager::CPeninputFingerHwrArLafManager() + { + + } + +// --------------------------------------------------------------------------- +// Symbian second-phase constructor +// --------------------------------------------------------------------------- +// +void CPeninputFingerHwrArLafManager::ConstructL() + { + } + +TSize CPeninputFingerHwrArLafManager::SymbolGroupButtonSize() + { + return iSymButtonSize; + } +// End Of File