textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp
branchRCL_3
changeset 7 6defe5d1bd39
parent 6 6ceef9a83b1a
child 12 5e18d8c489d6
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp	Mon Mar 15 12:42:02 2010 +0200
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp	Wed Mar 31 22:08:20 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -24,8 +24,14 @@
 #include "peninputfingerhwrarlafmanager.h"
 #include "peninputfingerhwrarcontrolid.h"
 
-#define LAF_MODIFY 1
-#define HackerVersion 
+//#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;
 
 // ---------------------------------------------------------------------------
 // Symbian Constructor
@@ -51,24 +57,40 @@
     }
 
 // ---------------------------------------------------------------------------
+// c++ constructor
+// ---------------------------------------------------------------------------
+//
+CPeninputFingerHwrArLafManager::CPeninputFingerHwrArLafManager()
+    {
+    
+    }
+    
+// ---------------------------------------------------------------------------
+// Symbian second-phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArLafManager::ConstructL()
+    {
+    }
+	
+// ---------------------------------------------------------------------------
 // c++ destructor
 // ---------------------------------------------------------------------------
 //
 CPeninputFingerHwrArLafManager::~CPeninputFingerHwrArLafManager()
     {
-    //nothing
-    iSCTrectArray.Reset();
     iSCTrectArray.Close();
+	iSymBtnRectArray.Close();
     }
 
-
 // ---------------------------------------------------------------------------
-// read laf data.
+// CPeninputFingerHwrArLafManager::RetrieveLayoutData()
+// Retrieve layout data
 // ---------------------------------------------------------------------------
-//
-void CPeninputFingerHwrArLafManager::ReadLafInfo()
+//	
+void CPeninputFingerHwrArLafManager::RetrieveLayoutData()
     {
-    // Screen
+	// Screen
     TRect rect;
     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect);
     iScreenSize = rect.Size();
@@ -86,288 +108,424 @@
 
     iLayoutRect = fshwrRect.Rect();
     iLayoutOffset = iLayoutRect.iTl;
-    
-    // ICF & Keypad
-    TAknWindowLineLayout icflayoutcn,icflayoutbgcn;
-    TAknTextLineLayout icflefttext;    
-    TAknTextLineLayout icflefttext1, icflefttext2, icflefttext3; 
-    TAknLayoutRect icfrectlatin, icfrectcn;
+	}
 
-    if (iIsLandscape)
-        {
-        icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(1).LayoutLine();
-        }
-    else
-        {
-        icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(0).LayoutLine();
-        }
-    
-    icfrectcn.LayoutRect(fshwrRect.Rect(), icflayoutcn);
+// ---------------------------------------------------------------------------
+// CPeninputFingerHwrArLafManager::RetrieveLafDataForICF()
+// Retrieve laf data for ICF editor
+// ---------------------------------------------------------------------------
+//	
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForICF()
+    {
+	// ICF laf data
+    TAknWindowLineLayout icfLayout;
+    TAknLayoutRect icfLayoutRect;
 	
-    TAknLayoutScalableParameterLimits entryPaneVariety = 
-                AknLayoutScalable_Avkon::fshwr2_icf_pane_t1_ParamLimits(0);
-    TInt maxRow = entryPaneVariety.LastRow();
-    
-    icflefttext = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 0).LayoutLine();
+    // read the icf layout 
+    icfLayout = AknLayoutScalable_Avkon::fshwr2_icf_pane(1).LayoutLine();
+
+    icfLayoutRect.LayoutRect(iLayoutRect, icfLayout);
+	iRectIcf = icfLayoutRect.Rect();
     
-    icflefttext1 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 1).LayoutLine();
-    icflefttext2 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 2).LayoutLine();
-    icflefttext3 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, maxRow).LayoutLine();
-    iIcfTextLeftMarginCn = icflefttext.il;
-    iIcfTextRightMarginCn = iIcfTextLeftMarginCn;
+	// 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();
     
-    TAknLayoutText ctxt, ctxt1, ctxt2, ctxt3;
-    ctxt.LayoutText( icfrectcn.Rect(), icflefttext );
-    ctxt1.LayoutText( icfrectcn.Rect(), icflefttext1 );
-    ctxt2.LayoutText( icfrectcn.Rect(), icflefttext2 );
-    ctxt3.LayoutText( icfrectcn.Rect(), icflefttext3 );
+	// read icf layout text
+	TAknLayoutText icfLayoutText1;
+	TAknLayoutText icfLayoutText2;
+	TAknLayoutText icfLayoutTextLastRow;
+  
+    icfLayoutText1.LayoutText( iRectIcf, icfTextLineLayoutRow1 );
+    icfLayoutText2.LayoutText( iRectIcf, icfTextLineLayoutRow2 );
+    icfLayoutTextLastRow.LayoutText( iRectIcf, icfTextLineLayoutLastRow );
 	
-    iIcfTextTopMarginCn = ctxt.TextRect().iTl.iY - icfrectcn.Rect().iTl.iY;
-    iIcfTextLineSpaceMarginCn = ctxt1.TextRect().iTl.iY - ctxt.TextRect().iBr.iY;
-    iIcfTextBottomMarginCn = icfrectcn.Rect().iBr.iY - ctxt3.TextRect().iBr.iY 
-                                                     - iIcfTextLineSpaceMarginCn;
-    iIcfTextHeightCn = ctxt.TextRect().Height();    
+	// 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();    
  	
-    iIcfFont = const_cast<CFont*>(AknLayoutUtils::FontFromId(icflefttext.iFont, NULL));
+	// get font for text
+    iIcfFont = const_cast<CFont*>(AknLayoutUtils::FontFromId(icfTextLineLayoutRow1.iFont, NULL));
+	}
 
-    iRectIcf = icfrectcn.Rect();
-    
+// ---------------------------------------------------------------------------
+// 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 candrowpane, candrowpane2, candlistpane, cellpane, candbgpane;
-    TAknLayoutRect candpaneRect, candrowpaneRect, candrowpaneRect2, cellpaneRect1, cellpaneRect2;
-    TAknLayoutRect cellpaneRect3, cellpaneRect;
+	TAknWindowLineLayout candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).LayoutLine();        
+    
+	TAknLayoutRect candpaneRect;
+    candpaneRect.LayoutRect( iLayoutRect, candlistpane );
+    TRect rect = candpaneRect.Rect();
 	
-    if (iIsLandscape)
-        {
-		candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).
-										LayoutLine();        
-        }
-    else
-        {
-       	candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(0).
-										LayoutLine();
-        }
-    candpaneRect.LayoutRect( fshwrRect.Rect(), candlistpane );
-    rect = candpaneRect.Rect();
-    candrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
-										LayoutLine();
-    candrowpaneRect.LayoutRect( rect, candrowpane );
-    
-    candrowpane2 = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2).
+	// get candiate row1 pane
+    TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
 										LayoutLine();
-    candrowpaneRect2.LayoutRect( rect, candrowpane2 );
+    TAknLayoutRect candrow1paneRect;
+	candrow1paneRect.LayoutRect( rect, candRow1Pane );
      
-	
-    cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 0 ).
-										LayoutLine();
-    cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane );
-    
-    candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
-    cellpaneRect1.LayoutRect( cellpaneRect.Rect(), candbgpane );   
-    
-    cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 1 , 0 ).
+	// get candidate cell pane with row 1 and col 0
+    TAknWindowLineLayout cellPane1Row1 = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 1 ).
 										LayoutLine();
-    cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane );
-    
-    candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
-    cellpaneRect2.LayoutRect( cellpaneRect.Rect(), candbgpane );   
-    
-    
-    
-    cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 1 ).
-										LayoutLine();
-    cellpaneRect.LayoutRect( candrowpaneRect2.Rect(), cellpane );
-    
-    candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
-    cellpaneRect3.LayoutRect( cellpaneRect.Rect(), candbgpane );   
-    
-									
-    iCandsHorizontalMargin = cellpaneRect2.Rect().iTl.iX - cellpaneRect1.Rect().iBr.iX;
-    iCandsVerticalMargin = cellpaneRect3.Rect().iTl.iY - cellpaneRect1.Rect().iBr.iY;
-	
-    iCandsUnitWidth = cellpaneRect1.Rect().Width();
-    iCandsUnitHeight = cellpaneRect1.Rect().Height() ;
+    TAknLayoutRect cellPane1Row1Rect;
+	cellPane1Row1Rect.LayoutRect( candrow1paneRect.Rect(), cellPane1Row1 );
     
-    iCandsNaviHeight = cellpaneRect1.Rect().Height();
-    iCandidateLTPos = candrowpaneRect.Rect().iTl;
-    iPredictiveLTPos = candrowpaneRect2.Rect().iTl;
-    
-    TAknTextLineLayout candstxtlayout = 
-                     AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane_t1(3).LayoutLine();
-    TAknLayoutText candstxt;
-    candstxt.LayoutText( cellpaneRect1.Rect(), candstxtlayout );
-    iCandsFont = const_cast<CFont*>( AknLayoutUtils::FontFromId( candstxtlayout.iFont, NULL ) );
-    iCandsTextMargin = candstxt.TextRect().iTl.iX - cellpaneRect1.Rect().iTl.iX;
-    
-    
-    TAknWindowLineLayout btnrowpane, btnpane, btnbgpane;
-    TAknLayoutRect btnrowRect, btnRect, btnbgRect;
+	// get 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 first row rect *************************************************
-    btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 0).
-                                            LayoutLine();
-    btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane);
-    // Close Button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 0 ).
-										LayoutLine();    
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
-    iRectBtnClose = btnbgRect.Rect();
+	// 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;
     
-    // Range Button with mark
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 1 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
-    iRectBtnRangeChn = btnbgRect.Rect();
-    iRectBtnRangeEng = iRectBtnRangeChn;
-    iRectBtnRangeNum = iRectBtnRangeEng;
+	// 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();        
     
-    // SCT button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 2 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
-    iRectBtnRangeSmb = btnbgRect.Rect();
-    
-    // Backspace button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 3 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);
-    iRectBtnBackspace = btnbgRect.Rect();    
-    
-    // Get the second row rect **************************************************
-    btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
-                                            LayoutLine();
-    btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane);
-    
-    // Option button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);
-    iRectBtnOption = btnbgRect.Rect();     
+	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++];
+	iRectBtnArrowUp =    buttonRect[i++];
+	iRectBtnArrowDown =  buttonRect[i++];
+	iRectBtnArrowLeft =  buttonRect[i++];
+	iRectBtnArrowRight = buttonRect[i++];
+	buttonRect.Close();
+	
+	// padding size of Btn
+	iSizeBtnPadding = TSize(6, 6);
+	
+	// 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::RetrieveLandscapeLafDataForSymbolTable()
+// Retrieve the landscape laf data for symbol table area
+// ---------------------------------------------------------------------------
+//	
+void CPeninputFingerHwrArLafManager::RetrieveLandscapeLafDataForSymbolTable()
+    {
+	TAknLayoutScalableParameterLimits candiPaneVariety = AknLayoutScalable_Avkon::fshwr2_func_candi_pane_ParamLimits(2);
     
-    // Switch mode button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
-    
-    // Arrow up button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);  
-    iRectBtnArrowUp = btnbgRect.Rect();
-    iRectBtnSctPage = iRectBtnArrowUp;  
+	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 candidate row1 pane
+	TAknWindowLineLayout candRow1Pane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(1, 0, 0).LayoutLine();
+	TAknLayoutRect candrow1paneRect;
+	candrow1paneRect.LayoutRect( iRectOfSymbolTable, candRow1Pane );
+	
+	iSymBtnRectArray.Reset();
+	for(TInt i = 0; i < 2; i++)
+		{
+		// get candidate cell pane with row 0 and col i
+		TAknWindowLineLayout cellPane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0, i , 0 ).
+											LayoutLine();
+		TAknLayoutRect cellPaneRect;
+		cellPaneRect.LayoutRect( candrow1paneRect.Rect(), cellPane );
 
-    // Get the third row rect **************************************************
-    btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2).
-                                            LayoutLine();
-    btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane);
+		// 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());
+		}
+	
+	TInt xGap = iSymBtnRectArray[1].iTl.iX - iSymBtnRectArray[0].iBr.iX;
+	TRect thirdBtn(iSymBtnRectArray[1]);
+	thirdBtn.Move(TPoint(iSymBtnRectArray[1].Width(),0));
+	iSymBtnRectArray.Append(thirdBtn);
+	
+	TAknWindowLineLayout rowPane, key1bgpane, keypane;
+	TAknLayoutRect rowRect, key1bgRect, keyRect;
+	
+	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;
+	
+	keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 0 , 0 ).
+																LayoutLine();
+	keyRect.LayoutRect(row1Rect.Rect(), keypane);
+	
+	key1bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
+	key1bgRect.LayoutRect(keyRect.Rect(), key1bgpane);
+	
+	keypane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3, 1 , 0 ).
+																		LayoutLine();
+	keyRect.LayoutRect(row1Rect.Rect(), keypane);
+	
+	TAknWindowLineLayout key2bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).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( 3, 0 , 0 ).LayoutLine();
+	keyRect.LayoutRect(row2Rect.Rect(), keypane);
+	
+	TAknWindowLineLayout key3bgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).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);
+			}
+		}
+	}
 
-    // Arrow left button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ).
-										LayoutLine();									
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
-										LayoutLine();
-    btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
-    iRectBtnArrowLeft = btnbgRect.Rect();    
-    
-    // Arrow right button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
+// ---------------------------------------------------------------------------
+// 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();
-	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);									    
-    iRectBtnArrowRight = btnbgRect.Rect();
-    
-    // Arrow down button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
-										LayoutLine();
-	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);									    
-    iRectBtnArrowDown = btnbgRect.Rect();
-    
-    // Space button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 0 , 0 ).
-										LayoutLine();
-    btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0).
-										LayoutLine();
-	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);									    
-    
-
-
-    // Enter button
-    btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 1 , 0 ).
-										LayoutLine();
-	btnRect.LayoutRect(btnrowRect.Rect(), btnpane);																		
-    btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0).
-										LayoutLine();									
-	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);
-										    
-    iRectEnter = btnbgRect.Rect();
+	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 );
 
-    
-    // Writing box
-    TAknWindowLineLayout writingboxpane;
-    TAknLayoutRect boxRect;
-    writingboxpane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine();
-    boxRect.LayoutRect(fshwrRect.Rect(), writingboxpane);
-    iRectWritingBox = boxRect.Rect();
-    iRectNumpad = iRectWritingBox;
-    iRectSctpad = iRectWritingBox;
-    
-    // virtual key size
-    TAknWindowLineLayout keypane, keybgpane;
-    TAknLayoutRect keyRect, keybgRect;
+		// 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;    
   
-    TAknLayoutScalableParameterLimits sctPaneVariety =
-        AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0);
-    
-    iSctpadRowCount = sctPaneVariety.LastRow() + 1;
-    iSctpadColCount = sctPaneVariety.LastColumn() + 1;    
-  
-    iSizeBtnPadding = TSize(6, 6);
-  
-    iSCTrectArray.Reset();
-    for(TInt i = 0; i < iSctpadRowCount; i++)
-        {
-        for ( TInt j = 0; j < iSctpadColCount; j++ )
-            {
-            keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(0, j, i).LayoutLine();
-            keyRect.LayoutRect(boxRect.Rect(), keypane);
-            keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine();
-            keybgRect.LayoutRect(keyRect.Rect(), keybgpane);
-            iSCTrectArray.Append( keybgRect.Rect());
-            }
-        }
-    iSizeNumpadCell = keybgRect.Rect().Size();
-    iSizeSctpadCell = iSizeNumpadCell;
-    
-    // preview popup window 
+	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::RetrieveLafDataForPreviewBubble()
+// Retrieve the laf data for preview bubble
+// ---------------------------------------------------------------------------
+//	
+void CPeninputFingerHwrArLafManager::RetrieveLafDataForPreviewBubble()
+    {
+	// preview popup window 
   	TAknWindowLineLayout previewWnd, previewWndInner;
   	TAknLayoutRect previewWndRect, previewWndInnerRect;
   	TAknLayoutText previewWndText;
@@ -381,20 +539,54 @@
         AknLayoutScalable_Avkon::popup_fep_char_preview_window_t1(0).LayoutLine();
     previewWndText.LayoutText(previewWndRect.Rect(), iPreviewWndText);
     iBubbleFont = previewWndText.Font();
-	iArrowPaddingSize = TSize(10,10);
+	}
+   
+// ---------------------------------------------------------------------------
+// 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 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
-	iIcfTextLeftMarginCn = 14;
-	iIcfTextRightMarginCn = 14;
-    iIcfTextTopMarginCn = 14;
-    iIcfTextBottomMarginCn = 20;
-    iIcfTextLineSpaceMarginCn = 5;	
+	iIcfTextLeftMargin = 14;
+	iIcfTextRightMargin = 14;
+    iIcfTextTopMargin = 14;
+    iIcfTextBottomMargin = 20;
+    iIcfTextLineSpaceMargin = 5;	
 	
 	// candiate margin
 	iCandsHorizontalMargin = 1;
@@ -437,8 +629,6 @@
 	    
 	    iRectEnter = iRectSpase;
 	    iRectEnter.Move(TPoint(buttonWidth,0));
-	            
-
 	    
         // candate position
         iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight);
@@ -467,7 +657,18 @@
     	iRectSctpad.SetWidth(6*buttonWidth);
 		
 		// the button size for symbol table control 
-		iSymButtonSize = TSize(2*buttonWidth,buttonHight);
+		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;
 		
@@ -544,7 +745,17 @@
     	iRectSctpad.SetWidth(4*buttonWidth);
 		
 		// the button size for symbol table control 
-		iSymButtonSize = TSize((4*buttonWidth)/3,buttonHight);
+		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;
@@ -564,7 +775,6 @@
     //==========================================================================
     
     }
-        
 
 // ---------------------------------------------------------------------------
 // get screen orientation.
@@ -573,8 +783,7 @@
 TBool CPeninputFingerHwrArLafManager::IsLandscape()
     {
     return iIsLandscape;
-    }
-    
+    }    
     
 // ---------------------------------------------------------------------------
 // get rect of layout.
@@ -585,7 +794,6 @@
     return iLayoutRect;
     }
 
-
 // ---------------------------------------------------------------------------
 // get rect of specified control.
 // ---------------------------------------------------------------------------
@@ -665,7 +873,7 @@
 // 
 TInt CPeninputFingerHwrArLafManager::IcfLeftMargin()
     {
-    return iIcfTextLeftMarginCn;
+    return iIcfTextLeftMargin;
     }
     
 // ---------------------------------------------------------------------------
@@ -674,7 +882,7 @@
 // 
 TInt CPeninputFingerHwrArLafManager::IcfRightMargin()
     { 
-    return iIcfTextRightMarginCn;
+    return iIcfTextRightMargin;
     }    
 
 // ---------------------------------------------------------------------------
@@ -683,7 +891,7 @@
 // 
 TInt CPeninputFingerHwrArLafManager::IcfTopMargin()
     {
-    return iIcfTextTopMarginCn;
+    return iIcfTextTopMargin;
     }
     
 // ---------------------------------------------------------------------------
@@ -692,7 +900,7 @@
 // 
 TInt CPeninputFingerHwrArLafManager::IcfBottomMargin()
     {      
-    return iIcfTextBottomMarginCn;
+    return iIcfTextBottomMargin;
     }
     
 // ---------------------------------------------------------------------------
@@ -701,7 +909,7 @@
 // 
 TInt CPeninputFingerHwrArLafManager::IcfLineSpaceMargin()
     {  
-    return iIcfTextLineSpaceMarginCn;
+    return iIcfTextLineSpaceMargin;
     }    
     
 // ---------------------------------------------------------------------------
@@ -710,14 +918,6 @@
 // 
 CFont* CPeninputFingerHwrArLafManager::IcfFont()
     {
-//    //workaround
-//    TAknTextLineLayout textPaneTextLayout;
-//    TAknLayoutText txt;
-//    textPaneTextLayout = 
-//        AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine();
-//    const CFont* icffont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL );
-//    
-//    return const_cast<CFont*>(icffont);
     return iIcfFont;
     }
    
@@ -727,7 +927,7 @@
 // 
 TInt CPeninputFingerHwrArLafManager::IcfTextHeight()
     { 
-    return iIcfTextHeightCn;
+    return iIcfTextHeight;
     }
        
 
@@ -833,17 +1033,6 @@
     }
 
 // ---------------------------------------------------------------------------
-// get text layout of space and enter.
-// ---------------------------------------------------------------------------
-//
-TAknTextLineLayout CPeninputFingerHwrArLafManager::FixSctpadKeyTxtLayout()
-    {
-    TAknTextLineLayout layout = AknLayoutScalable_Avkon::
-        cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
-    return layout;
-    }
-
-// ---------------------------------------------------------------------------
 // get width unit of candidate list.
 // ---------------------------------------------------------------------------
 //
@@ -887,18 +1076,9 @@
     {
     return iCandidateLTPos;
     }
-
-// ---------------------------------------------------------------------------
-// get top-left position of predictive list.
-// ---------------------------------------------------------------------------
-//
-TPoint CPeninputFingerHwrArLafManager::PredictiveLTPos()
-    {
-    return iPredictiveLTPos;
-    }
    
 // ---------------------------------------------------------------------------
-// get font of candidate list.
+// get font for candidate list.
 // ---------------------------------------------------------------------------
 //
 const CFont* CPeninputFingerHwrArLafManager::CandidateFont()
@@ -906,45 +1086,37 @@
     return iCandsFont;
     }
 
-
 // ---------------------------------------------------------------------------
-// get text layout of sct paging button.
+// get rects for symbol buttons
 // ---------------------------------------------------------------------------
-//
-TAknTextLineLayout CPeninputFingerHwrArLafManager::SctPageBtnTxtLayout()
+//	
+RArray<TRect>& CPeninputFingerHwrArLafManager::GetSymBtnArray()
     {
-    TAknTextLineLayout layout =  AknLayoutScalable_Apps::
-        field_vitu2_entry_pane_t1(0, 0, 0).LayoutLine();
-    return layout;
-    }
+	return iSymBtnRectArray;
+	}
 
 // ---------------------------------------------------------------------------
-// c++ constructor
-// ---------------------------------------------------------------------------
-//
-CPeninputFingerHwrArLafManager::CPeninputFingerHwrArLafManager()
-    {
-    
-    }
-    
-// ---------------------------------------------------------------------------
-// Symbian second-phase constructor
+// get rect for virtual key
 // ---------------------------------------------------------------------------
-//
-void CPeninputFingerHwrArLafManager::ConstructL()
+//	
+TRect CPeninputFingerHwrArLafManager::GetVirtualKeyRect()
     {
-    }
-
-TSize CPeninputFingerHwrArLafManager::SymbolGroupButtonSize()
-    {
-    return iSymButtonSize;
-    }
-
+	return iRectSctpad;
+	} 	
+    	
+// ---------------------------------------------------------------------------
+// get rect for hwr indicator
+// ---------------------------------------------------------------------------
+//		
 TRect CPeninputFingerHwrArLafManager::GetIndicatorRect()
     {
     return iIndicatorRect;
     }
 
+// ---------------------------------------------------------------------------
+// get padding size for arrow button
+// ---------------------------------------------------------------------------
+//	
 TSize CPeninputFingerHwrArLafManager::GetArrowPaddingSize()
     {
 	return iArrowPaddingSize;