--- /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 <aknlayoutscalable_avkon.cdl.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <AknUtils.h>
+
+#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<CFont*>(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<CFont*>( 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<CFont*>(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<TRect>& 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<TRect>& 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