textinput/peninputfingerhwrar/src/peninputfingerhwrarlafmanager.cpp
branchRCL_3
changeset 3 f5a1e66df979
child 5 a47de9135b21
equal deleted inserted replaced
0:eb1f2e154e89 3:f5a1e66df979
       
     1 /*
       
     2 * Copyright (c) 2005-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Implementation of LAF manager.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDES
       
    20 #include <aknlayoutscalable_avkon.cdl.h>
       
    21 #include <aknlayoutscalable_apps.cdl.h>
       
    22 #include <AknUtils.h>
       
    23 
       
    24 #include "peninputfingerhwrarlafmanager.h"
       
    25 #include "peninputfingerhwrarcontrolid.h"
       
    26 
       
    27 #define LAF_MODIFY 1
       
    28 #define HackerVersion 
       
    29 
       
    30 // ---------------------------------------------------------------------------
       
    31 // Symbian Constructor
       
    32 // ---------------------------------------------------------------------------
       
    33 //
       
    34 CPeninputFingerHwrArLafManager* CPeninputFingerHwrArLafManager::NewL()
       
    35     {
       
    36     CPeninputFingerHwrArLafManager* self = CPeninputFingerHwrArLafManager::NewLC();
       
    37     CleanupStack::Pop(); // self;
       
    38     return self;   
       
    39     }
       
    40 
       
    41 // ---------------------------------------------------------------------------
       
    42 // Symbian Constructor
       
    43 // ---------------------------------------------------------------------------
       
    44 //
       
    45 CPeninputFingerHwrArLafManager* CPeninputFingerHwrArLafManager::NewLC()
       
    46     {
       
    47     CPeninputFingerHwrArLafManager* self = new( ELeave ) CPeninputFingerHwrArLafManager();
       
    48     CleanupStack::PushL( self );
       
    49     self->ConstructL();
       
    50     return self;
       
    51     }
       
    52 
       
    53 // ---------------------------------------------------------------------------
       
    54 // c++ destructor
       
    55 // ---------------------------------------------------------------------------
       
    56 //
       
    57 CPeninputFingerHwrArLafManager::~CPeninputFingerHwrArLafManager()
       
    58     {
       
    59     //nothing
       
    60     iSCTrectArray.Reset();
       
    61     iSCTrectArray.Close();
       
    62     }
       
    63 
       
    64 
       
    65 // ---------------------------------------------------------------------------
       
    66 // read laf data.
       
    67 // ---------------------------------------------------------------------------
       
    68 //
       
    69 void CPeninputFingerHwrArLafManager::ReadLafInfo()
       
    70     {
       
    71     // Screen
       
    72     TRect rect;
       
    73     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect);
       
    74     iScreenSize = rect.Size();
       
    75 
       
    76     iIsLandscape = iScreenSize.iWidth < iScreenSize.iHeight ? EFalse : ETrue;
       
    77     
       
    78     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow, rect);
       
    79 
       
    80     // finger Layout
       
    81     TAknWindowLineLayout fshwrlayout;
       
    82     TAknLayoutRect fshwrRect;
       
    83         
       
    84     fshwrlayout = AknLayoutScalable_Avkon::main_fep_fshwr2_pane(0).LayoutLine();
       
    85     fshwrRect.LayoutRect(rect, fshwrlayout);
       
    86 
       
    87     iLayoutRect = fshwrRect.Rect();
       
    88     iLayoutOffset = iLayoutRect.iTl;
       
    89     
       
    90     // ICF & Keypad
       
    91     TAknWindowLineLayout icflayoutcn,icflayoutbgcn;
       
    92     TAknTextLineLayout icflefttext;    
       
    93     TAknTextLineLayout icflefttext1, icflefttext2, icflefttext3; 
       
    94     TAknLayoutRect icfrectlatin, icfrectcn;
       
    95 
       
    96     if (iIsLandscape)
       
    97         {
       
    98         icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(1).LayoutLine();
       
    99         }
       
   100     else
       
   101         {
       
   102         icflayoutcn = AknLayoutScalable_Avkon::fshwr2_icf_pane(0).LayoutLine();
       
   103         }
       
   104     
       
   105     icfrectcn.LayoutRect(fshwrRect.Rect(), icflayoutcn);
       
   106 	
       
   107     TAknLayoutScalableParameterLimits entryPaneVariety = 
       
   108                 AknLayoutScalable_Avkon::fshwr2_icf_pane_t1_ParamLimits(0);
       
   109     TInt maxRow = entryPaneVariety.LastRow();
       
   110     
       
   111     icflefttext = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 0).LayoutLine();
       
   112     
       
   113     icflefttext1 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 1).LayoutLine();
       
   114     icflefttext2 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, 2).LayoutLine();
       
   115     icflefttext3 = AknLayoutScalable_Avkon::fshwr2_icf_pane_t1(0, 0, maxRow).LayoutLine();
       
   116     iIcfTextLeftMarginCn = icflefttext.il;
       
   117     iIcfTextRightMarginCn = iIcfTextLeftMarginCn;
       
   118     
       
   119     TAknLayoutText ctxt, ctxt1, ctxt2, ctxt3;
       
   120     ctxt.LayoutText( icfrectcn.Rect(), icflefttext );
       
   121     ctxt1.LayoutText( icfrectcn.Rect(), icflefttext1 );
       
   122     ctxt2.LayoutText( icfrectcn.Rect(), icflefttext2 );
       
   123     ctxt3.LayoutText( icfrectcn.Rect(), icflefttext3 );
       
   124 	
       
   125     iIcfTextTopMarginCn = ctxt.TextRect().iTl.iY - icfrectcn.Rect().iTl.iY;
       
   126     iIcfTextLineSpaceMarginCn = ctxt1.TextRect().iTl.iY - ctxt.TextRect().iBr.iY;
       
   127     iIcfTextBottomMarginCn = icfrectcn.Rect().iBr.iY - ctxt3.TextRect().iBr.iY 
       
   128                                                      - iIcfTextLineSpaceMarginCn;
       
   129     iIcfTextHeightCn = ctxt.TextRect().Height();    
       
   130  	
       
   131     iIcfFont = const_cast<CFont*>(AknLayoutUtils::FontFromId(icflefttext.iFont, NULL));
       
   132 
       
   133     iRectIcf = icfrectcn.Rect();
       
   134     
       
   135 	// candidate list
       
   136     TAknWindowLineLayout candrowpane, candrowpane2, candlistpane, cellpane, candbgpane;
       
   137     TAknLayoutRect candpaneRect, candrowpaneRect, candrowpaneRect2, cellpaneRect1, cellpaneRect2;
       
   138     TAknLayoutRect cellpaneRect3, cellpaneRect;
       
   139 	
       
   140     if (iIsLandscape)
       
   141         {
       
   142 		candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(1).
       
   143 										LayoutLine();        
       
   144         }
       
   145     else
       
   146         {
       
   147        	candlistpane = AknLayoutScalable_Avkon::fshwr2_func_candi_pane(0).
       
   148 										LayoutLine();
       
   149         }
       
   150     candpaneRect.LayoutRect( fshwrRect.Rect(), candlistpane );
       
   151     rect = candpaneRect.Rect();
       
   152     candrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
       
   153 										LayoutLine();
       
   154     candrowpaneRect.LayoutRect( rect, candrowpane );
       
   155     
       
   156     candrowpane2 = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2).
       
   157 										LayoutLine();
       
   158     candrowpaneRect2.LayoutRect( rect, candrowpane2 );
       
   159      
       
   160 	
       
   161     cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 0 ).
       
   162 										LayoutLine();
       
   163     cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane );
       
   164     
       
   165     candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
       
   166     cellpaneRect1.LayoutRect( cellpaneRect.Rect(), candbgpane );   
       
   167     
       
   168     cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 1 , 0 ).
       
   169 										LayoutLine();
       
   170     cellpaneRect.LayoutRect( candrowpaneRect.Rect(), cellpane );
       
   171     
       
   172     candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
       
   173     cellpaneRect2.LayoutRect( cellpaneRect.Rect(), candbgpane );   
       
   174     
       
   175     
       
   176     
       
   177     cellpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 3 , 0 , 1 ).
       
   178 										LayoutLine();
       
   179     cellpaneRect.LayoutRect( candrowpaneRect2.Rect(), cellpane );
       
   180     
       
   181     candbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(3).LayoutLine();
       
   182     cellpaneRect3.LayoutRect( cellpaneRect.Rect(), candbgpane );   
       
   183     
       
   184 									
       
   185     iCandsHorizontalMargin = cellpaneRect2.Rect().iTl.iX - cellpaneRect1.Rect().iBr.iX;
       
   186     iCandsVerticalMargin = cellpaneRect3.Rect().iTl.iY - cellpaneRect1.Rect().iBr.iY;
       
   187 	
       
   188     iCandsUnitWidth = cellpaneRect1.Rect().Width();
       
   189     iCandsUnitHeight = cellpaneRect1.Rect().Height() ;
       
   190     
       
   191     iCandsNaviHeight = cellpaneRect1.Rect().Height();
       
   192     iCandidateLTPos = candrowpaneRect.Rect().iTl;
       
   193     iPredictiveLTPos = candrowpaneRect2.Rect().iTl;
       
   194     
       
   195     TAknTextLineLayout candstxtlayout = 
       
   196                      AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane_t1(3).LayoutLine();
       
   197     TAknLayoutText candstxt;
       
   198     candstxt.LayoutText( cellpaneRect1.Rect(), candstxtlayout );
       
   199     iCandsFont = const_cast<CFont*>( AknLayoutUtils::FontFromId( candstxtlayout.iFont, NULL ) );
       
   200     iCandsTextMargin = candstxt.TextRect().iTl.iX - cellpaneRect1.Rect().iTl.iX;
       
   201     
       
   202     
       
   203     TAknWindowLineLayout btnrowpane, btnpane, btnbgpane;
       
   204     TAknLayoutRect btnrowRect, btnRect, btnbgRect;
       
   205     
       
   206     // Get the first row rect *************************************************
       
   207     btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 0).
       
   208                                             LayoutLine();
       
   209     btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane);
       
   210     // Close Button
       
   211     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 0 , 0 ).
       
   212 										LayoutLine();    
       
   213     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   214     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
       
   215 										LayoutLine();
       
   216     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
       
   217     iRectBtnClose = btnbgRect.Rect();
       
   218     
       
   219     // Range Button with mark
       
   220     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 1 , 0 ).
       
   221 										LayoutLine();
       
   222     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   223     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
       
   224 										LayoutLine();
       
   225     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
       
   226     iRectBtnRangeChn = btnbgRect.Rect();
       
   227     iRectBtnRangeEng = iRectBtnRangeChn;
       
   228     iRectBtnRangeNum = iRectBtnRangeEng;
       
   229     
       
   230     // SCT button
       
   231     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 2 , 0 ).
       
   232 										LayoutLine();
       
   233     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   234     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
       
   235 										LayoutLine();
       
   236     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
       
   237     iRectBtnRangeSmb = btnbgRect.Rect();
       
   238     
       
   239     // Backspace button
       
   240     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 2 , 3 , 0 ).
       
   241 										LayoutLine();
       
   242     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   243     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(2).
       
   244 										LayoutLine();
       
   245     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);
       
   246     iRectBtnBackspace = btnbgRect.Rect();    
       
   247     
       
   248     // Get the second row rect **************************************************
       
   249     btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 1).
       
   250                                             LayoutLine();
       
   251     btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane);
       
   252     
       
   253     // Option button
       
   254     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ).
       
   255 										LayoutLine();
       
   256     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   257     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
       
   258 										LayoutLine();
       
   259     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);
       
   260     iRectBtnOption = btnbgRect.Rect();     
       
   261     
       
   262     // Switch mode button
       
   263     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ).
       
   264 										LayoutLine();
       
   265     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   266     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
       
   267 										LayoutLine();
       
   268     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
       
   269     iRectBtnImeSwitch = btnbgRect.Rect();
       
   270     
       
   271     // Arrow up button
       
   272     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ).
       
   273 										LayoutLine();
       
   274     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   275     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
       
   276 										LayoutLine();
       
   277     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);  
       
   278     iRectBtnArrowUp = btnbgRect.Rect();
       
   279     iRectBtnSctPage = iRectBtnArrowUp;  
       
   280 
       
   281 
       
   282     // Get the third row rect **************************************************
       
   283     btnrowpane = AknLayoutScalable_Avkon::fshwr2_func_candi_row_pane(0, 0, 2).
       
   284                                             LayoutLine();
       
   285     btnrowRect.LayoutRect(candpaneRect.Rect(), btnrowpane);
       
   286 
       
   287     // Arrow left button
       
   288     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 0 , 0 ).
       
   289 										LayoutLine();									
       
   290     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   291     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
       
   292 										LayoutLine();
       
   293     btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane); 
       
   294     iRectBtnArrowLeft = btnbgRect.Rect();    
       
   295     
       
   296     // Arrow right button
       
   297     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 1 , 0 ).
       
   298 										LayoutLine();
       
   299     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   300     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
       
   301 										LayoutLine();
       
   302 	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);									    
       
   303     iRectBtnArrowRight = btnbgRect.Rect();
       
   304     
       
   305     // Arrow down button
       
   306     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 1 , 2 , 0 ).
       
   307 										LayoutLine();
       
   308     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   309     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(1).
       
   310 										LayoutLine();
       
   311 	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);									    
       
   312     iRectBtnArrowDown = btnbgRect.Rect();
       
   313     
       
   314     // Space button
       
   315     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 0 , 0 ).
       
   316 										LayoutLine();
       
   317     btnRect.LayoutRect(btnrowRect.Rect(), btnpane);
       
   318     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0).
       
   319 										LayoutLine();
       
   320 	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);									    
       
   321     
       
   322     iRectFixSctpad = btnrowRect.Rect();
       
   323     iSizeFixSctpadCell = btnRect.Rect().Size();
       
   324     iRectSpase = btnbgRect.Rect();
       
   325     iRectSpase.Move(-iRectFixSctpad.iTl );
       
   326 
       
   327     // Enter button
       
   328     btnpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_pane( 0 , 1 , 0 ).
       
   329 										LayoutLine();
       
   330 	btnRect.LayoutRect(btnrowRect.Rect(), btnpane);																		
       
   331     btnbgpane = AknLayoutScalable_Avkon::fshwr2_func_candi_cell_bg_pane(0).
       
   332 										LayoutLine();									
       
   333 	btnbgRect.LayoutRect(btnRect.Rect(), btnbgpane);
       
   334 										    
       
   335     iRectEnter = btnbgRect.Rect();
       
   336     iRectEnter.Move(-iRectFixSctpad.iTl);
       
   337 
       
   338     
       
   339     // Writing box
       
   340     TAknWindowLineLayout writingboxpane;
       
   341     TAknLayoutRect boxRect;
       
   342     writingboxpane = AknLayoutScalable_Avkon::fshwr2_hwr_syb_pane(0).LayoutLine();
       
   343     boxRect.LayoutRect(fshwrRect.Rect(), writingboxpane);
       
   344     iRectWritingBox = boxRect.Rect();
       
   345     iRectNumpad = iRectWritingBox;
       
   346     iRectSctpad = iRectWritingBox;
       
   347     
       
   348     // virtual key size
       
   349     TAknWindowLineLayout keypane, keybgpane;
       
   350     TAknLayoutRect keyRect, keybgRect;
       
   351   
       
   352     TAknLayoutScalableParameterLimits sctPaneVariety =
       
   353         AknLayoutScalable_Avkon::cell_fshwr2_syb_pane_ParamLimits(0);
       
   354     
       
   355     iSctpadRowCount = sctPaneVariety.LastRow() + 1;
       
   356     iSctpadColCount = sctPaneVariety.LastColumn() + 1;    
       
   357   
       
   358     iSizeBtnPadding = TSize(6, 6);
       
   359   
       
   360     iSCTrectArray.Reset();
       
   361     for(TInt i = 0; i < iSctpadRowCount; i++)
       
   362         {
       
   363         for ( TInt j = 0; j < iSctpadColCount; j++ )
       
   364             {
       
   365             keypane = AknLayoutScalable_Avkon::cell_fshwr2_syb_pane(0, j, i).LayoutLine();
       
   366             keyRect.LayoutRect(boxRect.Rect(), keypane);
       
   367             keybgpane = AknLayoutScalable_Avkon::cell_fshwr2_syb_bg_pane(0).LayoutLine();
       
   368             keybgRect.LayoutRect(keyRect.Rect(), keybgpane);
       
   369             iSCTrectArray.Append( keybgRect.Rect());
       
   370             }
       
   371         }
       
   372     iSizeNumpadCell = keybgRect.Rect().Size();
       
   373     iSizeSctpadCell = iSizeNumpadCell;
       
   374     
       
   375     // preview popup window 
       
   376   	TAknWindowLineLayout previewWnd, previewWndInner;
       
   377   	TAknLayoutRect previewWndRect, previewWndInnerRect;
       
   378   	TAknLayoutText previewWndText;
       
   379   	previewWnd = AknLayoutScalable_Avkon::popup_fep_char_preview_window(0).LayoutLine();
       
   380   	previewWndRect.LayoutRect( TRect(0,0,50,50), previewWnd );
       
   381   	previewWndInner = AknLayoutScalable_Avkon::bg_popup_fep_char_preview_window_g9().LayoutLine();
       
   382   	previewWndInnerRect.LayoutRect( previewWndRect.Rect(), previewWndInner );
       
   383   	iPreviewWndRect = previewWndRect.Rect();
       
   384   	iPreviewWndInnerRect = previewWndInnerRect.Rect();
       
   385   	iPreviewWndText = 
       
   386         AknLayoutScalable_Avkon::popup_fep_char_preview_window_t1(0).LayoutLine();
       
   387     previewWndText.LayoutText(previewWndRect.Rect(), iPreviewWndText);
       
   388     iBubbleFont = previewWndText.Font();
       
   389     //==========================================================================
       
   390     // going to be removed if the LAF data is ready
       
   391     //
       
   392     #ifdef HackerVersion
       
   393 	
       
   394 	// hardcode those and remove them after the laf data is ready
       
   395 	// do we really need to read ui data from laf system?
       
   396 	// icf margins
       
   397 	iIcfTextLeftMarginCn = 14;
       
   398 	iIcfTextRightMarginCn = 14;
       
   399     iIcfTextTopMarginCn = 14;
       
   400     iIcfTextBottomMarginCn = 20;
       
   401     iIcfTextLineSpaceMarginCn = 5;	
       
   402 	
       
   403 	// candiate margin
       
   404 	iCandsHorizontalMargin = 1;
       
   405     iCandsVerticalMargin = 1;
       
   406 	
       
   407     if(iIsLandscape)
       
   408     	{
       
   409     	TInt buttonHight = (iLayoutRect.Height()-20)/6;//-6; // 1mm ~= 6 pixls
       
   410         TInt buttonWidth = (iLayoutRect.Width()-20)/8;//-8;
       
   411     	
       
   412     	iRectBtnClose = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(buttonWidth+10,buttonHight+10));
       
   413     	
       
   414     	iRectBtnOption = iRectBtnClose;
       
   415     	iRectBtnOption.Move(TPoint(buttonWidth,0));
       
   416     	
       
   417     	iRectBtnRangeSmb = iRectBtnOption;
       
   418     	iRectBtnRangeSmb.Move(TPoint(buttonWidth,0));
       
   419     	
       
   420     	iRectBtnBackspace = iRectBtnRangeSmb;
       
   421     	iRectBtnBackspace.Move(TPoint(buttonWidth,0));
       
   422     	
       
   423     	// button on second row
       
   424         iRectBtnArrowUp = iRectBtnClose;
       
   425         iRectBtnArrowUp.Move(TPoint(0,buttonHight));
       
   426         
       
   427         iRectBtnArrowDown = iRectBtnArrowUp;
       
   428         iRectBtnArrowDown.Move(TPoint(buttonWidth,0));
       
   429         
       
   430         iRectBtnArrowLeft = iRectBtnArrowDown;
       
   431         iRectBtnArrowLeft.Move(TPoint(buttonWidth,0));
       
   432         
       
   433         iRectBtnArrowRight = iRectBtnArrowLeft;
       
   434         iRectBtnArrowRight.Move(TPoint(buttonWidth,0));
       
   435         
       
   436         // fix symbol table
       
   437         TPoint fixSctTl = iRectBtnClose.iTl+TPoint(0,buttonHight);
       
   438         iRectFixSctpad = TRect(fixSctTl,fixSctTl+TPoint(4*buttonWidth,buttonHight));
       
   439 	    
       
   440 	    iRectSpase = iRectBtnClose;
       
   441 	    iRectSpase.Move(TPoint(0,buttonHight));
       
   442 	    
       
   443 	    iRectEnter = iRectSpase;
       
   444 	    iRectEnter.Move(TPoint(buttonWidth,0));
       
   445 	            
       
   446 	    iRectSpase.Move(-iRectFixSctpad.iTl );
       
   447 	    iRectEnter.Move(-iRectFixSctpad.iTl );
       
   448 	    
       
   449 	    iSizeFixSctpadCell = iRectSpase.Size();
       
   450 	    
       
   451         // candate position
       
   452         iCandidateLTPos = iRectBtnClose.iTl + TPoint(0,buttonHight);
       
   453     	iCandsUnitWidth = buttonWidth-iCandsVerticalMargin;
       
   454         iCandsUnitHeight = buttonHight;
       
   455 		
       
   456     	// icf editor rect
       
   457     	iRectIcf = TRect(TPoint(4*buttonWidth+10,10),TPoint(iLayoutRect.iBr.iX-10,2*buttonHight+10));
       
   458     	
       
   459     	// iwriting box
       
   460     	iRectWritingBox	= TRect(TPoint(10,2*buttonHight+10),iLayoutRect.iBr-TPoint(10,10));
       
   461     	
       
   462     	// construct symbol table
       
   463     	iRectOfSymbolTable = iRectWritingBox;
       
   464     	iRectOfSymbolTable.Move(TPoint(buttonWidth,-buttonHight));
       
   465     	iRectOfSymbolTable.SetHeight(5*buttonHight);
       
   466     	iRectOfSymbolTable.SetWidth(6*buttonWidth);
       
   467     	
       
   468     	iRectSctpad = iRectOfSymbolTable;
       
   469     	iRectSctpad.Move(TPoint(0,buttonHight));
       
   470     	iRectSctpad.SetHeight(4*buttonHight);
       
   471     	iRectSctpad.SetWidth(6*buttonWidth);
       
   472 		
       
   473 		// the button size for symbol table control 
       
   474 		iSymButtonSize = TSize(2*buttonWidth,buttonHight);
       
   475 		iSctpadRowCount = 4;
       
   476 		iSctpadColCount = 6;
       
   477 		
       
   478     	iSCTrectArray.Reset();
       
   479     	for(TInt i = 0; i <  iSctpadRowCount; i++)
       
   480     	    {	
       
   481     	    for(TInt j = 0; j < iSctpadColCount; j++)
       
   482     	        {
       
   483     	        TPoint rectTl = iRectSctpad.iTl+TPoint(j*buttonWidth,i*buttonHight);
       
   484     	        TPoint rectBr = rectTl+ TPoint(buttonWidth,buttonHight);
       
   485     	        iSCTrectArray.Append(TRect(rectTl,rectBr));
       
   486     	        }
       
   487     	    }
       
   488         }
       
   489     else
       
   490     	{
       
   491         // icf rect
       
   492         iRectIcf = TRect(iLayoutRect.iTl+TPoint(10,10),TPoint(iLayoutRect.iBr.iX-10,22.5*9));
       
   493         TPoint backSpaceTl = iRectIcf.iTl+TPoint(0,iRectIcf.Height());
       
   494         
       
   495 		TInt buttonHight = (iLayoutRect.Height()-iRectIcf.Height()-20)/6;//(15*9)/2; // 1mm ~= 9pixls
       
   496         TInt buttonWidth = (iLayoutRect.Width()-20)/4;
       
   497 		
       
   498         // the button on second row
       
   499         iRectBtnBackspace = TRect(backSpaceTl,backSpaceTl+TPoint(buttonWidth,buttonHight));
       
   500         iRectBtnOption = iRectBtnBackspace;
       
   501         iRectBtnOption.Move(TPoint(buttonWidth,0));
       
   502         iRectBtnRangeSmb = iRectBtnOption;
       
   503         iRectBtnRangeSmb.Move(TPoint(buttonWidth,0));
       
   504         iRectBtnClose = iRectBtnRangeSmb;
       
   505         iRectBtnClose.Move(TPoint(buttonWidth,0));
       
   506         
       
   507         // arrow button: on third row
       
   508         iRectBtnArrowUp = iRectBtnBackspace;
       
   509         iRectBtnArrowUp.Move(TPoint(0,buttonHight));
       
   510         
       
   511         iRectBtnArrowDown = iRectBtnArrowUp;
       
   512         iRectBtnArrowDown.Move(TPoint(buttonWidth,0));
       
   513         
       
   514         iRectBtnArrowLeft = iRectBtnArrowDown;
       
   515         iRectBtnArrowLeft.Move(TPoint(buttonWidth,0));
       
   516         
       
   517         iRectBtnArrowRight = iRectBtnArrowLeft;
       
   518         iRectBtnArrowRight.Move(TPoint(buttonWidth,0));
       
   519        
       
   520         // candate position
       
   521         iCandidateLTPos = iRectBtnBackspace.iTl + TPoint(0,buttonHight);
       
   522         iCandsUnitWidth = buttonWidth-iCandsVerticalMargin;
       
   523         iCandsUnitHeight = buttonHight;
       
   524 		
       
   525         // HWR Box Rect
       
   526         iRectWritingBox = TRect(TPoint(iRectBtnArrowUp.iTl.iX,iRectBtnArrowUp.iBr.iY),iLayoutRect.iBr-TPoint(10,10));
       
   527 		
       
   528 		// construct symbol table
       
   529     	iRectOfSymbolTable = iRectWritingBox;
       
   530     	iRectOfSymbolTable.Move(TPoint(0,-buttonHight));
       
   531     	iRectOfSymbolTable.SetHeight(5*buttonHight);
       
   532     	iRectOfSymbolTable.SetWidth(4*buttonWidth);
       
   533     	
       
   534     	iRectSctpad = iRectOfSymbolTable;
       
   535     	iRectSctpad.Move(TPoint(0,buttonHight));
       
   536     	iRectSctpad.SetHeight(4*buttonHight);
       
   537     	iRectSctpad.SetWidth(4*buttonWidth);
       
   538 		
       
   539 		// the button size for symbol table control 
       
   540 		iSymButtonSize = TSize((4*buttonWidth)/3,buttonHight);
       
   541 		
       
   542 		iSctpadRowCount = 4;
       
   543 		iSctpadColCount = 4;
       
   544 		iSCTrectArray.Reset();
       
   545     	for(TInt i = 0; i <  iSctpadRowCount; i++)
       
   546     	    {	
       
   547     	    for(TInt j = 0; j < iSctpadColCount; j++)
       
   548     	        {
       
   549     	        TPoint rectTl = iRectSctpad.iTl+TPoint(j*buttonWidth,i*buttonHight);
       
   550     	        TPoint rectBr = rectTl+ TPoint(buttonWidth,buttonHight);
       
   551     	        iSCTrectArray.Append(TRect(rectTl,rectBr));
       
   552     	        }
       
   553     	    }
       
   554         }
       
   555     #endif        
       
   556     //
       
   557     //==========================================================================
       
   558     
       
   559     }
       
   560         
       
   561 
       
   562 // ---------------------------------------------------------------------------
       
   563 // get screen orientation.
       
   564 // ---------------------------------------------------------------------------
       
   565 //
       
   566 TBool CPeninputFingerHwrArLafManager::IsLandscape()
       
   567     {
       
   568     return iIsLandscape;
       
   569     }
       
   570     
       
   571     
       
   572 // ---------------------------------------------------------------------------
       
   573 // get rect of layout.
       
   574 // ---------------------------------------------------------------------------
       
   575 //    
       
   576 TRect CPeninputFingerHwrArLafManager::LayoutRect()
       
   577     {        
       
   578     return iLayoutRect;
       
   579     }
       
   580 
       
   581 
       
   582 // ---------------------------------------------------------------------------
       
   583 // get rect of specified control.
       
   584 // ---------------------------------------------------------------------------
       
   585 //  
       
   586 TRect CPeninputFingerHwrArLafManager::CtrlRect( TInt aCtrlId )
       
   587     {
       
   588     switch ( aCtrlId )
       
   589         {
       
   590         case EHwrCtrlIdInputContextField:
       
   591             {
       
   592             return iRectIcf;
       
   593             }
       
   594         case EHwrCtrlIdWritingBox:
       
   595             {
       
   596             return iRectWritingBox;
       
   597             }
       
   598 		case EHwrCtrlIdSymbolTableVkbGroup:	
       
   599 		    {
       
   600 			return iRectOfSymbolTable;
       
   601 			}         
       
   602         case EHwrCtrlIdClose:
       
   603             {
       
   604             return iRectBtnClose;
       
   605             }          
       
   606         case EHwrCtrlIdSymbolButton:
       
   607             {
       
   608             return iRectBtnRangeSmb;
       
   609             }
       
   610         case EHwrCtrlIdBackspace:
       
   611             {
       
   612             return iRectBtnBackspace;
       
   613             }
       
   614         case EHwrCtrlIdArrowUp:
       
   615             {
       
   616             return iRectBtnArrowUp;
       
   617             }
       
   618         case EHwrCtrlIdArrowDown:
       
   619             {
       
   620             return iRectBtnArrowDown;
       
   621             }  
       
   622         case EHwrCtrlIdArrowLeft:
       
   623             {
       
   624             return iRectBtnArrowLeft;
       
   625             }
       
   626         case EHwrCtrlIdArrowRight:
       
   627             {
       
   628             return iRectBtnArrowRight;
       
   629             }
       
   630         case EHwrCtrlIdLanguageOption:
       
   631             {
       
   632             return iRectBtnOption;
       
   633             }
       
   634         case EHwrCtrlIdVkbSwitcher:
       
   635             {
       
   636             return iRectBtnImeSwitch;
       
   637             }
       
   638         case EHwrCtrlId3Page1Btn:
       
   639         case EHwrCtrlId3Page2Btn:
       
   640         case EHwrCtrlId3Page3Btn:
       
   641 		case EHwrCtrlId2Page1Btn:
       
   642         case EHwrCtrlId2Page2Btn:
       
   643             {
       
   644             return iRectBtnSctPage;
       
   645             }    
       
   646         }
       
   647     return TRect();
       
   648     }
       
   649 
       
   650 // ---------------------------------------------------------------------------
       
   651 // get rect of ICF control.
       
   652 // ---------------------------------------------------------------------------
       
   653 // 
       
   654 TRect CPeninputFingerHwrArLafManager::IcfRect()
       
   655     {    
       
   656     return iRectIcf;    
       
   657     }
       
   658 
       
   659 // ---------------------------------------------------------------------------
       
   660 // get left margin of icf.
       
   661 // ---------------------------------------------------------------------------
       
   662 // 
       
   663 TInt CPeninputFingerHwrArLafManager::IcfLeftMargin()
       
   664     {
       
   665     return iIcfTextLeftMarginCn;
       
   666     }
       
   667     
       
   668 // ---------------------------------------------------------------------------
       
   669 // get right margin of icf.
       
   670 // ---------------------------------------------------------------------------
       
   671 // 
       
   672 TInt CPeninputFingerHwrArLafManager::IcfRightMargin()
       
   673     { 
       
   674     return iIcfTextRightMarginCn;
       
   675     }    
       
   676 
       
   677 // ---------------------------------------------------------------------------
       
   678 // get top margin of icf.
       
   679 // ---------------------------------------------------------------------------
       
   680 // 
       
   681 TInt CPeninputFingerHwrArLafManager::IcfTopMargin()
       
   682     {
       
   683     return iIcfTextTopMarginCn;
       
   684     }
       
   685     
       
   686 // ---------------------------------------------------------------------------
       
   687 // get bottom margin of icf.
       
   688 // ---------------------------------------------------------------------------
       
   689 // 
       
   690 TInt CPeninputFingerHwrArLafManager::IcfBottomMargin()
       
   691     {      
       
   692     return iIcfTextBottomMarginCn;
       
   693     }
       
   694     
       
   695 // ---------------------------------------------------------------------------
       
   696 // get line spacing of icf.
       
   697 // ---------------------------------------------------------------------------
       
   698 // 
       
   699 TInt CPeninputFingerHwrArLafManager::IcfLineSpaceMargin()
       
   700     {  
       
   701     return iIcfTextLineSpaceMarginCn;
       
   702     }    
       
   703     
       
   704 // ---------------------------------------------------------------------------
       
   705 // get font of icf.
       
   706 // ---------------------------------------------------------------------------
       
   707 // 
       
   708 CFont* CPeninputFingerHwrArLafManager::IcfFont()
       
   709     {
       
   710 //    //workaround
       
   711 //    TAknTextLineLayout textPaneTextLayout;
       
   712 //    TAknLayoutText txt;
       
   713 //    textPaneTextLayout = 
       
   714 //        AknLayoutScalable_Avkon::fep_hwr_top_text_pane_t1().LayoutLine();
       
   715 //    const CFont* icffont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL );
       
   716 //    
       
   717 //    return const_cast<CFont*>(icffont);
       
   718     return iIcfFont;
       
   719     }
       
   720    
       
   721 // ---------------------------------------------------------------------------
       
   722 // get text height of icf.
       
   723 // ---------------------------------------------------------------------------
       
   724 // 
       
   725 TInt CPeninputFingerHwrArLafManager::IcfTextHeight()
       
   726     { 
       
   727     return iIcfTextHeightCn;
       
   728     }
       
   729        
       
   730 
       
   731 // ---------------------------------------------------------------------------
       
   732 // get inner padding of buttons.
       
   733 // ---------------------------------------------------------------------------
       
   734 //
       
   735 TSize CPeninputFingerHwrArLafManager::ButtonInnerPadding()
       
   736     {
       
   737     return iSizeBtnPadding;
       
   738     }
       
   739 
       
   740 
       
   741 // ---------------------------------------------------------------------------
       
   742 // get cell size of virtual numpad.
       
   743 // ---------------------------------------------------------------------------
       
   744 //
       
   745 TRect CPeninputFingerHwrArLafManager::VirtualNumpadCellSize()
       
   746     {
       
   747     return iSizeNumpadCell;
       
   748     }
       
   749     
       
   750 
       
   751 // ---------------------------------------------------------------------------
       
   752 // get text layout of virtual numpad.
       
   753 // ---------------------------------------------------------------------------
       
   754 //
       
   755 TAknTextLineLayout CPeninputFingerHwrArLafManager::NumpadKeyTxtLayout()
       
   756     {
       
   757     TAknTextLineLayout layout = AknLayoutScalable_Avkon::
       
   758         cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
       
   759     return layout;    
       
   760     }
       
   761 
       
   762 // ---------------------------------------------------------------------------
       
   763 // get row count of virtual sctpad.
       
   764 // ---------------------------------------------------------------------------
       
   765 //
       
   766 TInt CPeninputFingerHwrArLafManager::VirtualSctpadRowCount()
       
   767     {
       
   768     return iSctpadRowCount;
       
   769     }
       
   770 
       
   771 // ---------------------------------------------------------------------------
       
   772 // get column count of virtual sctpad.
       
   773 // ---------------------------------------------------------------------------
       
   774 //
       
   775 TInt CPeninputFingerHwrArLafManager::VirtualSctpadColCount()
       
   776     {
       
   777     return iSctpadColCount;
       
   778     }
       
   779 
       
   780 // ---------------------------------------------------------------------------
       
   781 // get cell size of virtual sctpad.
       
   782 // ---------------------------------------------------------------------------
       
   783 //
       
   784 TRect CPeninputFingerHwrArLafManager::VirtualSctpadCellSize()
       
   785     {
       
   786     return iSizeSctpadCell;
       
   787     }
       
   788 
       
   789 // ---------------------------------------------------------------------------
       
   790 // get cell size of virtual sctpad.
       
   791 // ---------------------------------------------------------------------------
       
   792 //
       
   793 TRect CPeninputFingerHwrArLafManager::FixVirtualSctpadCellSize()
       
   794     {
       
   795     return iSizeFixSctpadCell;
       
   796     }
       
   797     
       
   798     
       
   799 // ---------------------------------------------------------------------------
       
   800 // get preview bubble rect.
       
   801 // ---------------------------------------------------------------------------
       
   802 //
       
   803 TRect CPeninputFingerHwrArLafManager::PreviewBubbleRect()
       
   804     {
       
   805     return iPreviewWndRect;
       
   806     }
       
   807 
       
   808 // ---------------------------------------------------------------------------
       
   809 // get preview bubble inner rect
       
   810 // ---------------------------------------------------------------------------
       
   811 //
       
   812 TRect CPeninputFingerHwrArLafManager::PreviewBubbleInnerRect()
       
   813     {
       
   814     return iPreviewWndInnerRect;
       
   815     }
       
   816  
       
   817 // ---------------------------------------------------------------------------
       
   818 // get preview bubble font
       
   819 // ---------------------------------------------------------------------------
       
   820 //
       
   821 const CFont* CPeninputFingerHwrArLafManager::PreviewBubbleFont()
       
   822     {
       
   823     return iBubbleFont;
       
   824     }
       
   825 
       
   826 // ---------------------------------------------------------------------------
       
   827 // get preview bubble text layout
       
   828 // ---------------------------------------------------------------------------
       
   829 //
       
   830 TAknTextLineLayout CPeninputFingerHwrArLafManager::PreviewBubbleTextLayout()
       
   831     {
       
   832     return iPreviewWndText;
       
   833     }
       
   834 
       
   835 // ---------------------------------------------------------------------------
       
   836 // get cell rect of virtual sctpad.
       
   837 // ---------------------------------------------------------------------------
       
   838 //
       
   839 void CPeninputFingerHwrArLafManager::GetVirtualKeyRects( RArray<TRect>& aArrayRects )
       
   840     {   
       
   841     aArrayRects.Reset();
       
   842     
       
   843     for(TInt i = 0; i < iSCTrectArray.Count(); i++)
       
   844         {
       
   845         TRect absoluteRect = iSCTrectArray[i];
       
   846         absoluteRect.Move(-iRectSctpad.iTl.iX, -iRectSctpad.iTl.iY);
       
   847         aArrayRects.Append(absoluteRect);
       
   848         } 
       
   849     }
       
   850 
       
   851 // ---------------------------------------------------------------------------
       
   852 // get space and enter key rect.
       
   853 // ---------------------------------------------------------------------------
       
   854 //
       
   855 void CPeninputFingerHwrArLafManager::GetFixVirtualKeyRects( RArray<TRect>& aArrayRects )
       
   856     {   
       
   857     aArrayRects.Reset();
       
   858     aArrayRects.Append( iRectSpase );
       
   859     aArrayRects.Append( iRectEnter );
       
   860     }
       
   861 
       
   862 // ---------------------------------------------------------------------------
       
   863 // get text layout of virtual sctpad.
       
   864 // ---------------------------------------------------------------------------
       
   865 //
       
   866 TAknTextLineLayout CPeninputFingerHwrArLafManager::SctpadKeyTxtLayout()
       
   867     {
       
   868     TAknTextLineLayout layout = AknLayoutScalable_Avkon::
       
   869         cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
       
   870     return layout;
       
   871     }
       
   872 
       
   873 // ---------------------------------------------------------------------------
       
   874 // get text layout of space and enter.
       
   875 // ---------------------------------------------------------------------------
       
   876 //
       
   877 TAknTextLineLayout CPeninputFingerHwrArLafManager::FixSctpadKeyTxtLayout()
       
   878     {
       
   879     TAknTextLineLayout layout = AknLayoutScalable_Avkon::
       
   880         cell_fshwr2_syb_bg_pane_t1(0).LayoutLine();
       
   881     return layout;
       
   882     }
       
   883 
       
   884 // ---------------------------------------------------------------------------
       
   885 // get width unit of candidate list.
       
   886 // ---------------------------------------------------------------------------
       
   887 //
       
   888 TInt CPeninputFingerHwrArLafManager::CandidateUnitWidth()
       
   889     {
       
   890     return iCandsUnitWidth;
       
   891     }
       
   892 
       
   893 // ---------------------------------------------------------------------------
       
   894 // get height unit of candidate list.
       
   895 // ---------------------------------------------------------------------------
       
   896 //
       
   897 TInt CPeninputFingerHwrArLafManager::CandidateUnitHeight()
       
   898     {
       
   899     return iCandsUnitHeight;
       
   900     }
       
   901 
       
   902 // ---------------------------------------------------------------------------
       
   903 // get horizontal margin of candidate list.
       
   904 // ---------------------------------------------------------------------------
       
   905 //
       
   906 TInt CPeninputFingerHwrArLafManager::CandidateHorizontalMargin()
       
   907     {
       
   908     return iCandsHorizontalMargin;
       
   909     }    
       
   910 
       
   911 // ---------------------------------------------------------------------------
       
   912 // get vertical margin of candidate list.
       
   913 // ---------------------------------------------------------------------------
       
   914 //
       
   915 TInt CPeninputFingerHwrArLafManager::CandidateVerticalMargin()
       
   916     {
       
   917     return iCandsVerticalMargin;
       
   918     }    
       
   919    
       
   920 // ---------------------------------------------------------------------------
       
   921 // get top-left position of candidate list.
       
   922 // ---------------------------------------------------------------------------
       
   923 //
       
   924 TPoint CPeninputFingerHwrArLafManager::CandidateLTPos()
       
   925     {
       
   926     return iCandidateLTPos;
       
   927     }
       
   928 
       
   929 // ---------------------------------------------------------------------------
       
   930 // get top-left position of predictive list.
       
   931 // ---------------------------------------------------------------------------
       
   932 //
       
   933 TPoint CPeninputFingerHwrArLafManager::PredictiveLTPos()
       
   934     {
       
   935     return iPredictiveLTPos;
       
   936     }
       
   937    
       
   938 // ---------------------------------------------------------------------------
       
   939 // get font of candidate list.
       
   940 // ---------------------------------------------------------------------------
       
   941 //
       
   942 const CFont* CPeninputFingerHwrArLafManager::CandidateFont()
       
   943     {   
       
   944     return iCandsFont;
       
   945     }
       
   946 
       
   947 
       
   948 // ---------------------------------------------------------------------------
       
   949 // get text layout of sct paging button.
       
   950 // ---------------------------------------------------------------------------
       
   951 //
       
   952 TAknTextLineLayout CPeninputFingerHwrArLafManager::SctPageBtnTxtLayout()
       
   953     {
       
   954     TAknTextLineLayout layout =  AknLayoutScalable_Apps::
       
   955         field_vitu2_entry_pane_t1(0, 0, 0).LayoutLine();
       
   956     return layout;
       
   957     }
       
   958 
       
   959 // ---------------------------------------------------------------------------
       
   960 // c++ constructor
       
   961 // ---------------------------------------------------------------------------
       
   962 //
       
   963 CPeninputFingerHwrArLafManager::CPeninputFingerHwrArLafManager()
       
   964     {
       
   965     
       
   966     }
       
   967     
       
   968 // ---------------------------------------------------------------------------
       
   969 // Symbian second-phase constructor
       
   970 // ---------------------------------------------------------------------------
       
   971 //
       
   972 void CPeninputFingerHwrArLafManager::ConstructL()
       
   973     {
       
   974     }
       
   975 
       
   976 TSize CPeninputFingerHwrArLafManager::SymbolGroupButtonSize()
       
   977    {
       
   978    return iSymButtonSize;
       
   979    }
       
   980 // End Of File