diff -r ebd48d2de13c -r ecbabf52600f textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp --- /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 +#include +#include + +#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(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( 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 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& 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& 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& 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