--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp Wed Sep 01 12:23:33 2010 +0100
@@ -0,0 +1,1377 @@
+/*
+* Copyright (c) 2009-2010 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 HackerVersion
+#define ARABIC_LAF
+
+const TInt KSymButtonNum = 3;
+const TInt KFuncButtonRowNum = 2;
+const TInt KFuncButtonColNum = 4;
+const TInt KLandscapeVirtualKeypadRow = 4;
+const TInt KLandscapeVirtualKeypadCol = 6;
+const TInt KLandscapeNumpadRow = 4;
+const TInt KLandscapeNumpadCol = 4;
+
+// ---------------------------------------------------------------------------
+// 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++ constructor
+// ---------------------------------------------------------------------------
+//
+CPeninputFingerHwrArLafManager::CPeninputFingerHwrArLafManager()
+ {
+
+ }
+
+// ---------------------------------------------------------------------------
+// Symbian second-phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::ConstructL()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// c++ destructor
+// ---------------------------------------------------------------------------
+//
+CPeninputFingerHwrArLafManager::~CPeninputFingerHwrArLafManager()
+ {
+ iSCTrectArray.Close();
+ iSymBtnRectArray.Close();
+ iNumSCTrectArray.Close();
+// iNumSymBtnRectArray.Close();
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLayoutData()
+// Retrieve layout data
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLayoutData()
+ {
+ // 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;
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForICF()
+// Retrieve laf data for ICF editor
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForICF()
+ {
+ // ICF laf data
+ TAknWindowLineLayout icfLayout;
+ TAknLayoutRect icfLayoutRect;
+
+ // read the icf layout
+ icfLayout = AknLayoutScalable_Avkon::fshwr2_icf_pane(1).LayoutLine();
+
+ icfLayoutRect.LayoutRect(iLayoutRect, icfLayout);
+ iRectIcf = icfLayoutRect.Rect();
+
+ // read icf text line layout
+ TAknTextLineLayout icfTextLineLayoutRow1 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 0).LayoutLine();
+ TAknTextLineLayout icfTextLineLayoutRow2 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 1).LayoutLine();
+ TInt maxRow = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1_ParamLimits(0).LastRow();
+ TAknTextLineLayout icfTextLineLayoutLastRow = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, maxRow-1).LayoutLine();
+
+ // read icf layout text
+ TAknLayoutText icfLayoutText1;
+ TAknLayoutText icfLayoutText2;
+ TAknLayoutText icfLayoutTextLastRow;
+
+ icfLayoutText1.LayoutText( iRectIcf, icfTextLineLayoutRow1 );
+ icfLayoutText2.LayoutText( iRectIcf, icfTextLineLayoutRow2 );
+ icfLayoutTextLastRow.LayoutText( iRectIcf, icfTextLineLayoutLastRow );
+
+ // get the margins
+ iIcfTextLeftMargin = icfTextLineLayoutRow1.il;
+ iIcfTextRightMargin = iIcfTextLeftMargin;
+ iIcfTextTopMargin = icfLayoutText1.TextRect().iTl.iY - iRectIcf.iTl.iY;
+ iIcfTextLineSpaceMargin = icfLayoutText2.TextRect().iTl.iY - icfLayoutText1.TextRect().iBr.iY;
+ iIcfTextBottomMargin = iRectIcf.iBr.iY - icfLayoutTextLastRow.TextRect().iBr.iY - iIcfTextLineSpaceMargin;
+ iIcfTextHeight = icfLayoutText1.TextRect().Height();
+
+ // get font for text
+ iIcfFont = const_cast<CFont*>(AknLayoutUtils::FontFromId(icfTextLineLayoutRow1.iFont, NULL));
+
+ //indicator bubble.
+#ifdef ARABIC_LAF
+ if(iIsLandscape)
+ {
+ iRectIndicatorBubble.SetRect(543,17,624,41);
+ }
+ else
+ {
+ iRectIndicatorBubble.SetRect(263,17,344,41);
+ }
+#endif
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForCandidateList()
+// Retrieve the laf data for candidate list
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForCandidateList()
+ {
+ // retrieve the cell flow:
+ // fshwr2_func_candi_pane->fshwr2_func_candi_row_pane->fshwr2_func_candi_cell_pane
+ // ->fshwr2_func_candi_cell_bg_pane
+
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).LayoutLine();
+
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ TRect rect = candpaneRect.Rect();
+
+ // get candiate row1 pane
+ TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
+ LayoutLine();
+ TAknLayoutRect candrow1paneRect;
+ candrow1paneRect.LayoutRect( rect, candRow1Pane );
+
+ // get candidate cell pane with row 1 and col 0
+ TAknWindowLineLayout cellPane1Row1 = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 1 ).
+ LayoutLine();
+ TAknLayoutRect cellPane1Row1Rect;
+ cellPane1Row1Rect.LayoutRect( candrow1paneRect.Rect(), cellPane1Row1 );
+
+ // get candidate cell bg pane
+ TAknWindowLineLayout candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).LayoutLine();
+ TAknLayoutRect cellPane1Row1BgRect;
+ cellPane1Row1BgRect.LayoutRect( cellPane1Row1Rect.Rect(), candbgpane );
+
+ // get candidate cell pane with row 1 and col 1
+ TAknWindowLineLayout cellPane2Row1 = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 1 , 1 ).
+ LayoutLine();
+ TAknLayoutRect cellPane2Row1Rect;
+ cellPane2Row1Rect.LayoutRect( candrow1paneRect.Rect(), cellPane2Row1 );
+
+ // get candidate cell2 bg pane
+ candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).LayoutLine();
+ TAknLayoutRect cellPane2Row1BgRect;
+ cellPane2Row1BgRect.LayoutRect( cellPane2Row1Rect.Rect(), candbgpane );
+
+ // ====================================================================================================
+ // get candidate row2 pane
+ TAknWindowLineLayout candRow2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2).
+ LayoutLine();
+ TAknLayoutRect candrow2paneRect;
+ candrow2paneRect.LayoutRect( rect, candRow2Pane );
+
+ // get candidate cell pane with row 2 and col 0
+ TAknWindowLineLayout cellPane1Row2 = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 0 ).
+ LayoutLine();
+ TAknLayoutRect cellPane1Row2Rect;
+ cellPane1Row2Rect.LayoutRect( candrow2paneRect.Rect(), cellPane1Row2 );
+
+ // get the candidate cell bg pane with row 2 and col 0
+ candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).LayoutLine();
+ TAknLayoutRect cellPane1Row2BgRect;
+ cellPane1Row2BgRect.LayoutRect( cellPane1Row2Rect.Rect(), candbgpane );
+
+ // calculate the margins
+ iCandsHorizontalMargin = cellPane2Row1BgRect.Rect().iTl.iX - cellPane1Row1BgRect.Rect().iBr.iX;
+ iCandsVerticalMargin = cellPane1Row2BgRect.Rect().iTl.iY - cellPane1Row1BgRect.Rect().iBr.iY;
+
+ iCandsUnitWidth = cellPane1Row1BgRect.Rect().Width();
+ iCandsUnitHeight = cellPane1Row1BgRect.Rect().Height();
+
+ iCandidateLTPos = candrow1paneRect.Rect().iTl;
+
+ // get candidate text laf data
+ TAknTextLineLayout candsTextLayout =
+ AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane_t1(1).LayoutLine();
+ TAknLayoutText candsText;
+ candsText.LayoutText( cellPane1Row1Rect.Rect(), candsTextLayout );
+ iCandsFont = const_cast<CFont*>( AknLayoutUtils::FontFromId( candsTextLayout.iFont, NULL ) );
+ iCandsTextMargin = candsText.TextRect().iTl.iX - cellPane1Row1Rect.Rect().iTl.iX;
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForFunctionalButton()
+// Retrieve the laf data for functional group
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForFunctionalButton()
+ {
+ // retrieve the button laf flow:
+ // fshwr2_func_candi_pane->fshwr2_func_candi_row_pane->fshwr2_func_candi_cell_pane
+ // ->fshwr2_func_candi_cell_bg_pane
+
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).LayoutLine();
+
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ TRect rect = candpaneRect.Rect();
+
+ TAknWindowLineLayout candRowPane;
+ TAknLayoutRect candRowPaneRect;
+
+ TAknWindowLineLayout cellPane;
+ TAknLayoutRect cellPaneRect;
+
+ TAknWindowLineLayout buttonBgPane;
+ TAknLayoutRect cellPaneRowBgRect;
+
+ RArray<TRect> buttonRect;
+ for(TInt row = 0; row < KFuncButtonRowNum; row++)
+ {
+ candRowPane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, row).LayoutLine();
+ candRowPaneRect.LayoutRect( rect, candRowPane );
+
+ for(TInt col = 0; col < KFuncButtonColNum; col++)
+ {
+ // cell pane
+ cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , col , row ).LayoutLine();
+ cellPaneRect.LayoutRect(candRowPaneRect.Rect(),cellPane);
+
+ // cell bg pane
+ buttonBgPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).LayoutLine();
+ cellPaneRowBgRect.LayoutRect( cellPaneRect.Rect(), buttonBgPane );
+ buttonRect.Append(cellPaneRowBgRect.Rect());
+ }
+ }
+
+ // assign the functional button
+ TInt i = 0;
+ iRectBtnClose = buttonRect[i++];
+ iRectBtnOption = buttonRect[i++];
+ iRectBtnRangeSmb = buttonRect[i++];
+ iRectBtnBackspace = buttonRect[i++];
+ iRectBtnArrowLeft = buttonRect[i++];
+ iRectBtnArrowRight = buttonRect[i++];
+ iRectBtnSpace = buttonRect[i++];
+ iRectBtnEnter = buttonRect[i++];
+ buttonRect.Close();
+
+ // padding size of Btn
+ TInt xpad = (iRectBtnOption.iTl.iX - iRectBtnClose.iBr.iX)/2;
+ TInt ypad = (iRectBtnArrowLeft.iTl.iY - iRectBtnClose.iBr.iY)/2;
+
+ iSizeBtnPadding = TSize(xpad, ypad);
+
+ // padding size of arrow button
+ if(iIsLandscape)
+ {
+ iArrowPaddingSize = TSize(8,8);
+ }
+ else
+ {
+ iArrowPaddingSize = TSize(12,12);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForHwrBox()
+// Retrieve the laf data for hwr writing area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForHwrBox()
+ {
+ TAknWindowLineLayout writingBoxPane;
+ TAknLayoutRect boxRect;
+ writingBoxPane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(1).LayoutLine();
+ boxRect.LayoutRect(iLayoutRect, writingBoxPane);
+ iRectWritingBox = boxRect.Rect();
+
+ // need read laf data?
+ iIndicatorRect.iTl = iRectWritingBox.iTl;
+ iIndicatorRect.iTl = iIndicatorRect.iTl + TPoint(20,20);
+ iIndicatorRect.SetSize(TSize(80,80));
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForSymbolTable()
+// Retrieve the laf data for symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForSymbolTable()
+ {
+ if(iIsLandscape)
+ {
+ RetrieveLandscapeLafDataForSymbolTable();
+ }
+ else
+ {
+ RetrievePortraitLafDataForSymbolTable();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForNumSymbolTable()
+// Retrieve the laf data for number symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForNumSymbolTable()
+ {
+ if(iIsLandscape)
+ {
+ RetrieveLandscapeLafDataForNumSymbolTable();
+ }
+ else
+ {
+ RetrievePortraitLafDataForNumSymbolTable();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForSymbolTable()
+// Retrieve the landscape laf data for symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForSymbolTable()
+ {
+ TAknLayoutScalableParameterLimits candiPaneVariety = AknLayoutScalable_Avkon::fshwr2_func_candi_pane_ParamLimits(2);
+
+ iSctpadRowCount = KLandscapeVirtualKeypadRow;//candiPaneVariety.LastRow();
+ iSctpadColCount = KLandscapeVirtualKeypadCol;//candiPaneVariety.LastColumn() + 1;
+
+ // get the functional buttons laf data for symbol table
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(2).LayoutLine();
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ iRectOfSymbolTable = candpaneRect.Rect();
+
+ // get 1st row pane in button area
+ TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 0).LayoutLine();
+ TAknLayoutRect candrow1paneRect;
+ candrow1paneRect.LayoutRect( iRectOfSymbolTable, candRow1Pane );
+
+ iSymBtnRectArray.Reset();
+ TAknWindowLineLayout cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 5, 0, 0 ).
+ LayoutLine();
+ TAknLayoutRect cellPaneRect;
+ cellPaneRect.LayoutRect( candrow1paneRect.Rect(), cellPane );
+
+ // get the candidate cell bg pane with row 0 and col i
+ TAknWindowLineLayout cellbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(5).LayoutLine();
+ TAknLayoutRect cellbgRect;
+ cellbgRect.LayoutRect( cellPaneRect.Rect(), cellbgpane );
+ iSymBtnRectArray.Append(cellbgRect.Rect());
+ //get 1st row pane in SCT area
+ TAknWindowLineLayout row1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 1).LayoutLine();
+ TAknLayoutRect row1Rect;
+ row1Rect.LayoutRect(iRectOfSymbolTable,row1Pane);
+ iRectSctpad.iTl = row1Rect.Rect().iTl;
+// iRectSctpad.iBr = iRectOfSymbolTable.iBr;
+
+ TAknWindowLineLayout key1bgpane, keypane;
+ TAknLayoutRect key1bgRect, keyRect;
+
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 0 , 0 ).
+ LayoutLine();
+ keyRect.LayoutRect(row1Rect.Rect(), keypane);
+
+ key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine();
+ key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane);
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 1 , 0 ).
+ LayoutLine();
+ keyRect.LayoutRect(row1Rect.Rect(), keypane);
+
+ TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine();
+ TAknLayoutRect key2bgRect;
+ key2bgRect.LayoutRect(keyRect.Rect(), key2bgpane);
+
+ TAknWindowLineLayout row2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 2).LayoutLine();
+ TAknLayoutRect row2Rect;
+ row2Rect.LayoutRect(iRectOfSymbolTable,row2Pane);
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 4, 0 , 0 ).LayoutLine();
+ keyRect.LayoutRect(row2Rect.Rect(), keypane);
+
+ TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(4).LayoutLine();
+ TAknLayoutRect key3bgRect;
+ key3bgRect.LayoutRect(keyRect.Rect(), key3bgpane);
+
+ TInt keyHorizontalGap = key2bgRect.Rect().iTl.iX - key1bgRect.Rect().iBr.iX;
+ TInt keyVerticalGap = key3bgRect.Rect().iTl.iY - key1bgRect.Rect().iBr.iY;
+
+ TRect cursorRect(key1bgRect.Rect());
+ TRect originRect(key1bgRect.Rect());
+ TInt rectHeight = cursorRect.Height();
+ TInt rectWidth = cursorRect.Width();
+
+ iSCTrectArray.Reset();
+ for(TInt i = 0; i < iSctpadRowCount; i++)
+ {
+ cursorRect = originRect;
+ cursorRect.Move(0,i*(rectHeight+keyVerticalGap));
+ iSCTrectArray.Append(cursorRect);
+ for(TInt j = 1; j < iSctpadColCount; j++)
+ {
+ cursorRect.Move((rectWidth+keyHorizontalGap),0);
+ iSCTrectArray.Append(cursorRect);
+ }
+ }
+ iRectOfSymbolTable.iBr = cursorRect.iBr;
+ iRectSctpad.iBr = iRectOfSymbolTable.iBr;
+
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForSymbolTable()
+// Retrieve the portrait laf data for symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForSymbolTable()
+ {
+ // get the functional buttons laf data for symbol table
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).LayoutLine();
+
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ TRect rect = candpaneRect.Rect();
+
+ // get candidate row2 pane
+ TAknWindowLineLayout candRow2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
+ LayoutLine();
+ TAknLayoutRect candrow2paneRect;
+ candrow2paneRect.LayoutRect( rect, candRow2Pane );
+ iRectOfSymbolTable.iTl = candrow2paneRect.Rect().iTl;
+
+ iSymBtnRectArray.Reset();
+ for(TInt i = 0; i < KSymButtonNum; i++)
+ {
+ // get candidate cell pane with row 0 and col i
+ TAknWindowLineLayout cellPaneRow = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1, i , 0 ).
+ LayoutLine();
+ TAknLayoutRect cellPaneRect;
+ cellPaneRect.LayoutRect( candrow2paneRect.Rect(), cellPaneRow );
+
+ // get the candidate cell bg pane with row 0 and col i
+ TAknWindowLineLayout candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).LayoutLine();
+ TAknLayoutRect BgRect;
+ BgRect.LayoutRect( cellPaneRect.Rect(), candbgpane );
+ iSymBtnRectArray.Append(BgRect.Rect());
+ }
+
+ // get the virtual key rects
+ TAknWindowLineLayout writingBoxPane;
+ TAknLayoutRect boxRect;
+ writingBoxPane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine();
+ boxRect.LayoutRect(iLayoutRect, writingBoxPane);
+ iRectSctpad = boxRect.Rect();
+
+ TAknWindowLineLayout keypane, keybgpane;
+ TAknLayoutRect keyRect, keybgRect;
+
+ TAknLayoutScalableParameterLimits sctPaneVariety =
+ AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0);
+
+ iSctpadRowCount = sctPaneVariety.LastRow() + 1;
+ iSctpadColCount = sctPaneVariety.LastColumn() + 1;
+
+ 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(iRectSctpad, keypane);
+ keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine();
+ keybgRect.LayoutRect(keyRect.Rect(), keybgpane);
+ iSCTrectArray.Append( keybgRect.Rect());
+ }
+ }
+ iSizeSctpadCell = keybgRect.Rect().Size();
+
+ // calculate the symbol table rect
+ iRectOfSymbolTable.iBr = iRectSctpad.iBr;
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForNumSymbolTable()
+// Retrieve the landscape laf data for number symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForNumSymbolTable()
+ {
+// TAknLayoutScalableParameterLimits candiPaneVariety = AknLayoutScalable_Avkon::fshwr2_func_candi_pane_ParamLimits(2);
+
+ iNumSctpadRowCount = KLandscapeNumpadRow;
+ iNumSctpadColCount = KLandscapeNumpadCol;
+
+ // get the functional buttons laf data for symbol table
+ // candidate list
+ TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(2).LayoutLine();
+ TAknLayoutRect candpaneRect;
+ candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+ iRectOfNumSymbolTable = candpaneRect.Rect();
+
+ // get candidate row1 pane
+ TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(2, 0, 0).LayoutLine();
+ TAknLayoutRect candrow1paneRect;
+ candrow1paneRect.LayoutRect( candpaneRect.Rect(), candRow1Pane );
+
+ TAknWindowLineLayout rowPane, key1bgpane, keypane;
+ TAknLayoutRect rowRect, key1bgRect, keyRect;
+
+ iRectNumpad.iTl = candpaneRect.Rect().iTl;
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 0 , 0 ).
+ LayoutLine();
+ keyRect.LayoutRect(candrow1paneRect.Rect(), keypane);
+
+ key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine();
+ key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane);
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 1 , 0 ).
+ LayoutLine();
+ keyRect.LayoutRect(candrow1paneRect.Rect(), keypane);
+
+ TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine();
+ TAknLayoutRect key2bgRect;
+ key2bgRect.LayoutRect(keyRect.Rect(), key2bgpane);
+
+ TAknWindowLineLayout row2Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(2, 0, 1).LayoutLine();
+ TAknLayoutRect row2Rect;
+ row2Rect.LayoutRect(candpaneRect.Rect(),row2Pane);
+
+ keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 6, 1, 0 ).LayoutLine();
+ keyRect.LayoutRect(row2Rect.Rect(), keypane);
+
+ TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(6).LayoutLine();
+ TAknLayoutRect key3bgRect;
+ key3bgRect.LayoutRect(keyRect.Rect(), key3bgpane);
+
+ TInt keyHorizontalGap = key2bgRect.Rect().iTl.iX - key1bgRect.Rect().iBr.iX;
+ TInt keyVerticalGap = key3bgRect.Rect().iTl.iY - key1bgRect.Rect().iBr.iY;
+
+ TRect cursorRect(key1bgRect.Rect());
+ TRect originRect(key1bgRect.Rect());
+ TInt rectHeight = cursorRect.Height();
+ TInt rectWidth = cursorRect.Width();
+
+ iNumSCTrectArray.Reset();
+ for(TInt i = 0; i < iNumSctpadRowCount; i++)
+ {
+ cursorRect = originRect;
+ cursorRect.Move(0,i*(rectHeight+keyVerticalGap));
+ iNumSCTrectArray.Append(cursorRect);
+ for(TInt j = 1; j < iNumSctpadColCount; j++)
+ {
+ cursorRect.Move((rectWidth+keyHorizontalGap),0);
+ iNumSCTrectArray.Append(cursorRect);
+ }
+ }
+
+ // calculate the symbol table rect
+ iRectOfNumSymbolTable.iBr = cursorRect.iBr;
+ iRectNumpad.iBr = iRectOfNumSymbolTable.iBr;
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForNumSymbolTable()
+// Retrieve the portrait laf data for number symbol table area
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrievePortraitLafDataForNumSymbolTable()
+ {
+
+ // get the virtual key rects
+ TAknWindowLineLayout writingBoxPane;
+ TAknLayoutRect boxRect;
+ writingBoxPane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(2).LayoutLine();
+ boxRect.LayoutRect(iLayoutRect, writingBoxPane);
+ iRectNumpad = boxRect.Rect();
+ iRectOfNumSymbolTable.iTl = iRectNumpad.iTl;
+
+
+ TAknWindowLineLayout keypane, keybgpane;
+ TAknLayoutRect keyRect, keybgRect;
+
+ TAknLayoutScalableParameterLimits sctPaneVariety =
+ AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0);
+
+ iNumSctpadRowCount = sctPaneVariety.LastRow() + 1;
+ iNumSctpadColCount = sctPaneVariety.LastColumn() + 1;
+
+ iNumSCTrectArray.Reset();
+ for(TInt i = 0; i < iNumSctpadRowCount; i++)
+ {
+ for ( TInt j = 0; j < iNumSctpadColCount; j++ )
+ {
+ keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(1, j, i).LayoutLine();
+ keyRect.LayoutRect(iRectNumpad, keypane);
+ keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(1).LayoutLine();
+ keybgRect.LayoutRect(keyRect.Rect(), keybgpane);
+ TRect rect = keybgRect.Rect();
+ iNumSCTrectArray.Append( rect);
+ }
+ }
+ iSizeNumSctpadCell = keybgRect.Rect().Size();
+
+ // calculate the symbol table rect
+ iRectOfNumSymbolTable.iBr = iRectNumpad.iBr;
+ }
+
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForPreviewBubble()
+// Retrieve the laf data for preview bubble
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForPreviewBubble()
+ {
+ // 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();
+ }
+
+// ---------------------------------------------------------------------------
+// read laf data.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::ReadLafInfo()
+ {
+ // retrieve the layout rect
+ RetrieveLayoutData();
+
+ // retrieve the laf data of icf
+ RetrieveLafDataForICF();
+
+ #ifdef HackerVersion
+ #else
+ // retrieve the laf data of functional button
+ RetrieveLafDataForFunctionalButton();
+ #endif
+ // retrieve the laf data of candidate list
+ RetrieveLafDataForCandidateList();
+
+ #ifdef HackerVersion
+ #else
+ // retrieve the laf data of symbol table
+ RetrieveLafDataForSymbolTable();
+
+ // retrieve the laf data of number symbol table
+ RetrieveLafDataForNumSymbolTable();
+
+ // retrieve the laf data of hwr box
+ RetrieveLafDataForHwrBox();
+ #endif
+
+ // retrieve the laf data of preview bubble
+ RetrieveLafDataForPreviewBubble();
+
+ //==========================================================================
+ // going to be removed if the LAF data is ready
+ //
+ #ifdef HackerVersion
+
+ const TUint KMarginLayout = 4;
+ // hardcode those and remove them after the laf data is ready
+ // do we really need to read ui data from laf system?
+ // icf margins
+ iIcfTextLeftMargin = 14;
+ iIcfTextRightMargin = 14;
+ iIcfTextTopMargin = 14;
+ iIcfTextBottomMargin = 20;
+ iIcfTextLineSpaceMargin = 5;
+
+ // candiate margin
+ iCandsHorizontalMargin = 1;
+ iCandsVerticalMargin = 1;
+
+ if(iIsLandscape)
+ {
+ TInt buttonHight = (iLayoutRect.Height()-2*KMarginLayout)/6;//-6; // 1mm ~= 6 pixls
+ TInt buttonWidth = (iLayoutRect.Width()-2*KMarginLayout)/8;//-8;
+
+ iRectBtnClose = TRect(iLayoutRect.iTl+TPoint(KMarginLayout,KMarginLayout),TPoint(buttonWidth+KMarginLayout,buttonHight+KMarginLayout));
+
+ 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));
+
+ iSizeBtnPadding = TSize(6,6);
+ iArrowPaddingSize = TSize(8,8);
+
+ iRectBtnSpace = iRectBtnClose;
+ iRectBtnSpace.Move(TPoint(0,buttonHight));
+
+ iRectBtnEnter = iRectBtnSpace;
+ iRectBtnEnter.Move(TPoint(buttonWidth,0));
+
+ // candate position
+ iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight);
+ iCandsUnitWidth = buttonWidth-iCandsVerticalMargin;
+ iCandsUnitHeight = buttonHight;
+
+ // icf editor rect
+ iRectIcf = TRect(TPoint(4*buttonWidth+KMarginLayout,KMarginLayout),TPoint(iLayoutRect.iBr.iX-KMarginLayout,2*buttonHight+KMarginLayout));
+
+ // iwriting box
+ iRectWritingBox = TRect(TPoint(KMarginLayout,2*buttonHight+KMarginLayout),iLayoutRect.iBr-TPoint(KMarginLayout,KMarginLayout));
+
+ iIndicatorRect.iTl = iRectWritingBox.iTl;
+ iIndicatorRect.iTl = iIndicatorRect.iTl + TPoint(20,20);
+ iIndicatorRect.SetSize(TSize(80,80));
+
+ // 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
+ iSymBtnRectArray.Reset();
+ TRect btnRect;
+ btnRect.iTl = iRectOfSymbolTable.iTl;
+ btnRect.SetSize(TSize(2*buttonWidth,buttonHight));
+ iSymBtnRectArray.Append(btnRect);
+
+ btnRect.Move(TPoint(btnRect.Width(),0));
+ iSymBtnRectArray.Append(btnRect);
+
+ btnRect.Move(TPoint(btnRect.Width(),0));
+ iSymBtnRectArray.Append(btnRect);
+
+ 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(KMarginLayout,KMarginLayout),TPoint(iLayoutRect.iBr.iX-KMarginLayout,22.5*9));
+
+ TInt buttonHight = (iLayoutRect.Height()-iRectIcf.Height()-2*KMarginLayout)/6;//(15*9)/2; // 1mm ~= 9pixls
+ TInt buttonWidth = (iLayoutRect.Width()-2*KMarginLayout)/4;
+
+ // the button on second row
+ TPoint firstButtonTl = iRectIcf.iTl+TPoint(0,iRectIcf.Height());
+ iRectBtnClose = TRect(firstButtonTl,firstButtonTl+TPoint(buttonWidth,buttonHight));
+
+ iRectBtnOption = iRectBtnClose;
+ iRectBtnOption.Move(TPoint(buttonWidth,0));
+
+ iRectBtnRangeSmb = iRectBtnOption;
+ iRectBtnRangeSmb.Move(TPoint(buttonWidth,0));
+
+ iRectBtnBackspace = iRectBtnRangeSmb;
+ iRectBtnBackspace.Move(TPoint(buttonWidth,0));
+
+ // arrow button: on third 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));
+
+ // button padding
+ iSizeBtnPadding = TSize(6,6);
+ iArrowPaddingSize = TSize(12,12);
+
+ // candate position
+ iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight);
+ iCandsUnitWidth = buttonWidth-iCandsVerticalMargin;
+ iCandsUnitHeight = buttonHight;
+
+ // HWR Box Rect
+ iRectWritingBox = TRect(TPoint(iRectBtnArrowUp.iTl.iX,iRectBtnArrowUp.iBr.iY),iLayoutRect.iBr-TPoint(KMarginLayout,KMarginLayout));
+
+ iIndicatorRect.iTl = iRectWritingBox.iTl;
+ iIndicatorRect.iTl = iIndicatorRect.iTl + TPoint(20,20);
+ iIndicatorRect.SetSize(TSize(80,80));
+
+ // 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
+ iSymBtnRectArray.Reset();
+ TRect btnRect;
+ btnRect.iTl = iRectOfSymbolTable.iTl;
+ btnRect.SetSize(TSize((4*buttonWidth)/3,buttonHight));
+ iSymBtnRectArray.Append(btnRect);
+
+ btnRect.Move(TPoint(btnRect.Width(),0));
+ iSymBtnRectArray.Append(btnRect);
+
+ btnRect.Move(TPoint(btnRect.Width(),0));
+ iSymBtnRectArray.Append(btnRect);
+
+ 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 EHwrCtrlIdNumSymbolTableVkbGroup:
+ {
+ return iRectOfNumSymbolTable;
+ }
+ case EHwrCtrlIdClose:
+ {
+ return iRectBtnClose;
+ }
+ case EHwrCtrlIdSymbolButton:
+ {
+ return iRectBtnRangeSmb;
+ }
+ case EHwrCtrlIdBackspace:
+ {
+ return iRectBtnBackspace;
+ }
+ case EHwrCtrlIdArrowLeft:
+ {
+ return iRectBtnArrowLeft;
+ }
+ case EHwrCtrlIdArrowRight:
+ {
+ return iRectBtnArrowRight;
+ }
+ case EHwrCtrlIdBtnEnter:
+ {
+ return iRectBtnEnter;
+ }
+ case EHwrCtrlIdBtnSpace:
+ {
+ return iRectBtnSpace;
+ }
+ case EHwrCtrlIdLanguageOption:
+ {
+ return iRectBtnOption;
+ }
+ 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 iIcfTextLeftMargin;
+ }
+
+// ---------------------------------------------------------------------------
+// get right margin of icf.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::IcfRightMargin()
+ {
+ return iIcfTextRightMargin;
+ }
+
+// ---------------------------------------------------------------------------
+// get top margin of icf.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::IcfTopMargin()
+ {
+ return iIcfTextTopMargin;
+ }
+
+// ---------------------------------------------------------------------------
+// get bottom margin of icf.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::IcfBottomMargin()
+ {
+ return iIcfTextBottomMargin;
+ }
+
+// ---------------------------------------------------------------------------
+// get line spacing of icf.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::IcfLineSpaceMargin()
+ {
+ return iIcfTextLineSpaceMargin;
+ }
+
+// ---------------------------------------------------------------------------
+// get font of icf.
+// ---------------------------------------------------------------------------
+//
+CFont* CPeninputFingerHwrArLafManager::IcfFont()
+ {
+ return iIcfFont;
+ }
+
+// ---------------------------------------------------------------------------
+// get text height of icf.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::IcfTextHeight()
+ {
+ return iIcfTextHeight;
+ }
+
+// ---------------------------------------------------------------------------
+// get indicator bubble rect.
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::IndicatorBubbleRect()
+ {
+ return iRectIndicatorBubble;
+ }
+
+// ---------------------------------------------------------------------------
+// get inner padding of buttons.
+// ---------------------------------------------------------------------------
+//
+TSize CPeninputFingerHwrArLafManager::ButtonInnerPadding()
+ {
+ return iSizeBtnPadding;
+ }
+
+
+// ---------------------------------------------------------------------------
+// get row count of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::VirtualSctpadRowCount()
+ {
+ return iSctpadRowCount;
+ }
+
+// ---------------------------------------------------------------------------
+// get column count of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::VirtualSctpadColCount()
+ {
+ return iSctpadColCount;
+ }
+
+// ---------------------------------------------------------------------------
+// get row count of virtual number sctpad.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::VirtualNumSctpadRowCount()
+ {
+ return iNumSctpadRowCount;
+ }
+
+// ---------------------------------------------------------------------------
+// get column count of virtual number sctpad.
+// ---------------------------------------------------------------------------
+//
+TInt CPeninputFingerHwrArLafManager::VirtualNumSctpadColCount()
+ {
+ return iNumSctpadColCount;
+ }
+
+// ---------------------------------------------------------------------------
+// get cell size of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::VirtualSctpadCellSize()
+ {
+ return iSizeSctpadCell;
+ }
+
+// ---------------------------------------------------------------------------
+// get cell size of virtual numpad.
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::VirtualNumpadCellSize()
+ {
+ return iSizeNumSctpadCell;
+ }
+
+// ---------------------------------------------------------------------------
+// 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 cell rect of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::GetNumVirtualKeyRects( RArray<TRect>& aArrayRects )
+ {
+ aArrayRects.Reset();
+
+ for(TInt i = 0; i < iNumSCTrectArray.Count(); i++)
+ {
+ TRect absoluteRect = iNumSCTrectArray[i];
+ absoluteRect.Move(-iRectNumpad.iTl.iX, -iRectNumpad.iTl.iY);
+ aArrayRects.Append(absoluteRect);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// get text layout of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+TAknTextLineLayout CPeninputFingerHwrArLafManager::SctpadKeyTxtLayout()
+ {
+ TAknTextLineLayout layout;
+ if(iIsLandscape)
+ {
+ layout = AknLayoutScalable_Avkon::
+ fshwr2_func_candi_cell_pane_t1(4).LayoutLine();
+ }
+ else
+ {
+ layout = AknLayoutScalable_Avkon::
+ cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
+ }
+ return layout;
+ }
+
+// ---------------------------------------------------------------------------
+// get text layout of virtual sctpad.
+// ---------------------------------------------------------------------------
+//
+TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout()
+ {
+ TAknTextLineLayout layout;
+ if(iIsLandscape)
+ {
+ layout = AknLayoutScalable_Avkon::
+ fshwr2_func_candi_cell_pane_t1(6).LayoutLine();
+ }
+ else
+ {
+ layout = AknLayoutScalable_Avkon::
+ cell_fshwr2_syb_bg_pane_t1(1).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 font for candidate list.
+// ---------------------------------------------------------------------------
+//
+const CFont* CPeninputFingerHwrArLafManager::CandidateFont()
+ {
+ return iCandsFont;
+ }
+
+// ---------------------------------------------------------------------------
+// get rects for symbol buttons
+// ---------------------------------------------------------------------------
+//
+RArray<TRect>& CPeninputFingerHwrArLafManager::GetSymBtnArray()
+ {
+ return iSymBtnRectArray;
+ }
+
+// ---------------------------------------------------------------------------
+// get rect for virtual key
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::GetVirtualKeyRect()
+ {
+ return iRectSctpad;
+ }
+
+// ---------------------------------------------------------------------------
+// get rect for virtual number keypad
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::GetVirtualNumKeyRect()
+ {
+ return iRectNumpad;
+ }
+
+// ---------------------------------------------------------------------------
+// get rect for hwr indicator
+// ---------------------------------------------------------------------------
+//
+TRect CPeninputFingerHwrArLafManager::GetIndicatorRect()
+ {
+ return iIndicatorRect;
+ }
+
+// ---------------------------------------------------------------------------
+// get padding size for arrow button
+// ---------------------------------------------------------------------------
+//
+TSize CPeninputFingerHwrArLafManager::GetArrowPaddingSize()
+ {
+ return iArrowPaddingSize;
+ }
+
+// End Of File