textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp
branchRCL_3
changeset 12 5e18d8c489d6
parent 7 6defe5d1bd39
child 16 857bebeecec0
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp	Tue May 11 16:31:42 2010 +0300
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp	Tue May 25 13:03:44 2010 +0300
@@ -21,11 +21,11 @@
 
 #include <aknlayoutscalable_apps.cdl.h>
 #include <aknlayoutscalable_avkon.cdl.h>
-#include <aknlayoutdef.h>
-#include <aknutils.h>
-#include <aknsutils.h>
+#include <AknLayoutDef.h>
+#include <AknUtils.h>
+#include <AknsUtils.h>
 #include <akniconutils.h>
-#include <aknfepglobalenums.h>
+#include <AknFepGlobalEnums.h>
 #include <aknfeppeninputenums.h>
 
 #include <peninputfingerhwrarwnd.rsg>
@@ -44,6 +44,7 @@
 #include "peninputfingerhwrarlayout.h"
 #include "peninputfingerhwrardatastore.h"
 #include "peninputfingerhwrarsymboltable.h"
+#include "peninputfingerhwrarnumsymboltable.h"
 #include "peninputfingerhwrarindicator.h"
 #include "peninputfingerhwrarwritingwnd.h"
 
@@ -85,9 +86,12 @@
 //
 CPeninputFingerHwrArWnd::~CPeninputFingerHwrArWnd()
     {
-    #ifdef RD_TACTILE_FEEDBACK    
-	UiLayout()->DeRegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
+    #ifdef RD_TACTILE_FEEDBACK
+    if(UiLayout())
+        {
+		UiLayout()->DeRegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
 	                                 iWritingBox->Rect());
+		}
 	#endif								 
     delete iLafManager;
     }
@@ -141,6 +145,38 @@
         }    
 
     CleanupStack::PopAndDestroy(); // reader
+
+    // read keypad image info
+    if ( iNumSymbolTable )
+        {
+        TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
+        iNumSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_NUMPAD_IMAGE, keysize );
+        
+        RArray<TRect> rects;
+        CleanupClosePushL( rects );
+        iLafManager->GetVirtualKeyRects( rects );
+        LoadNumSymbolVirtualKeysL( R_FINGER_HWR_NUMPAD, rects );
+        CleanupStack::PopAndDestroy(); //rects
+        }
+    
+    if ( iSymbolTable )
+        {
+        TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
+        iSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize );
+        
+        RArray<TRect> rects;
+        CleanupClosePushL( rects );
+        iLafManager->GetVirtualKeyRects( rects );
+        if(iLafManager->IsLandscape())
+            {
+            LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_LANDSCAPE_SYMBOL_TABLE, rects);
+            }
+        else
+            {
+            LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_PORTRAIT_SYMBOL_TABLE, rects);
+            }        
+        CleanupStack::PopAndDestroy(); //rects
+        }
     
     if (!iFirstTimeConstruct)
     	{
@@ -191,12 +227,6 @@
             iLafManager->CandidateLTPos(), 
             3/*KCandidateCountPerRow*/,
             2 );
-    iNumCandidateList->SizeChanged( iLafManager->CandidateUnitWidth(),
-            iLafManager->CandidateUnitHeight(), 
-            iLafManager->CandidateUnitWidth(), 
-            iLafManager->CandidateLTPos(), 
-            3/*KCandidateCountPerRow*/,
-            1 );
     iContextField->SetTextMargin ( iLafManager->IcfLeftMargin(),
             iLafManager->IcfRightMargin(),
             iLafManager->IcfTopMargin(),
@@ -434,14 +464,6 @@
     {
     return iCandidateList;
     }
-// ---------------------------------------------------------------------------
-// retrieve the number candicate list control.
-// ---------------------------------------------------------------------------
-//
-CFepCtrlDropdownList* CPeninputFingerHwrArWnd::NumCandidateList()
-    {
-    return iNumCandidateList;
-    }
 
 // ---------------------------------------------------------------------------
 // Open the candidate list
@@ -449,34 +471,24 @@
 //	
 void CPeninputFingerHwrArWnd::OpenCandidateList()
     {
-	CPeninputFingerHwrArLayout* hwrLayout = NULL;
-	hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );
-	CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
-	
-	const RPointerArray<HBufC>& candidates = datastore.Candidate();
-	
-	if(candidates.Count() > 0)
+    CPeninputFingerHwrArLayout* hwrLayout = NULL;
+    hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );
+    CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
+    
+    const RPointerArray<HBufC>& candidates = datastore.Candidate();
+    
+    if(candidates.Count() > 0)
         {
-		CFepCtrlDropdownList::TListType unexpandable = CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble;
-	
-		if ( datastore.PrimaryRange() == ERangeNative )
-			{
-			iCandidateList->Hide( EFalse );
-			TRAP_IGNORE(iCandidateList->SetCandidatesL( candidates, unexpandable ));
-			iCandidateList->SetHighlightCell( 0, datastore.Highlight() ); 		   
-			}
-		else
-			{
-			iNumCandidateList->Hide( EFalse );
-			TRAP_IGNORE(iNumCandidateList->SetCandidatesL( candidates, unexpandable ));
-			iNumCandidateList->SetHighlightCell( 0, datastore.Highlight() );         
-			}
-			
-		iArrowLeftBtn->Hide(ETrue);
-		iArrowRightBtn->Hide(ETrue);
-		iArrowUpBtn->Hide(ETrue);
-		iArrowDownBtn->Hide(ETrue);
-		}	
+        CFepCtrlDropdownList::TListType unexpandable = CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble;
+    
+        iCandidateList->Hide( EFalse );
+        TRAP_IGNORE(iCandidateList->SetCandidatesL( candidates, unexpandable ));
+        iCandidateList->SetHighlightCell( 0, datastore.Highlight() ); 		   
+        iArrowLeftBtn->Hide(ETrue);
+        iArrowRightBtn->Hide(ETrue);
+        iSpaceBtn->Hide(ETrue);
+        iEnterBtn->Hide(ETrue);
+        }	
 	}
 
 // ---------------------------------------------------------------------------
@@ -486,15 +498,12 @@
 void CPeninputFingerHwrArWnd::CloseCandidateList()
     {
 	iCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble);
-	iNumCandidateList->ResetAndClear(CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble);
 	// hide all the dropdown list in standby state
 	iCandidateList->Hide( ETrue );
-	iNumCandidateList->Hide( ETrue );          
-    
     iArrowLeftBtn->Hide(EFalse);
     iArrowRightBtn->Hide(EFalse);
-    iArrowUpBtn->Hide(EFalse);
-    iArrowDownBtn->Hide(EFalse);
+    iSpaceBtn->Hide(EFalse);
+    iEnterBtn->Hide(EFalse);
 	}
 
 // ---------------------------------------------------------------------------
@@ -505,8 +514,8 @@
    {
    iArrowLeftBtn->SetDimmed( aDimArrow );   
    iArrowRightBtn->SetDimmed( aDimArrow );   
-   iArrowUpBtn->SetDimmed( aDimArrow );   
-   iArrowDownBtn->SetDimmed( aDimArrow ); 
+   iSpaceBtn->SetDimmed( aDimArrow );   
+   iEnterBtn->SetDimmed( aDimArrow ); 
    }
 
 // ---------------------------------------------------------------------------
@@ -544,11 +553,11 @@
     //create candidate lists
     CreateCandidateListL();
     
-    //create number candidate lists.
-    CreateNumCandidateListL();
-    
     //create virtual sct pad
     CreateSymbolTableL();
+    
+    //create number mode virtual sct pad
+    CreateNumSymbolTableL();
 
     //create control buttons
     CreateButtonsL();   
@@ -675,58 +684,6 @@
     }
     
 // ---------------------------------------------------------------------------
-// create candidate lists.
-// ---------------------------------------------------------------------------
-//
-void CPeninputFingerHwrArWnd::CreateNumCandidateListL()
-    {
-    TDropdownListDrawInfo candiDrawInfo( 
-            KAknsIIDQsnFrFunctionButtonInactive, 
-            KAknsIIDQsnFrFunctionButtonNormal,
-            KAknsIIDQsnFrFunctionButtonPressed,
-            KAknsIIDQsnFrItutButtonCandiSideL,
-            KAknsIIDQsnFrItutButtonCandiMiddle,
-            KAknsIIDQsnFrItutButtonCandiSideR,
-            KAknsIIDQsnFrItutButtonCandiPressedSideL,
-            KAknsIIDQsnFrItutButtonCandiPressedMiddle,
-            KAknsIIDQsnFrItutButtonCandiPressedSideR,
-            TRgb( 194, 221, 242 ),
-            ETrue );
-
-    TInt unitWidth = iLafManager->CandidateUnitWidth();
-    TInt unitHeight = iLafManager->CandidateUnitHeight();
-    TPoint ltPosition = iLafManager->CandidateLTPos();
-    const CFont *font = iLafManager->CandidateFont();
-    TInt horizontalMargin = iLafManager->CandidateHorizontalMargin();
-    TInt verticalMargin = iLafManager->CandidateVerticalMargin();
-
-    iNumCandidateList = CFepCtrlDropdownList::NewL(UiLayout(),
-            EHwrCtrlIdNumCandidateList,
-            R_FSHWR_CANDIDATE_DROP_DOWN_LIST,                                            
-            ltPosition,                                               
-            font ,
-            TSize(unitWidth,unitHeight),
-            unitWidth,
-            3,1,
-            unitHeight,
-            0,
-            0,
-            CFepCtrlDropdownList::ECandFromRToL,
-            EFalse);            
-    AddControlL( iNumCandidateList );
-    iNumCandidateList->SetCellMargin( horizontalMargin, verticalMargin );
-    iNumCandidateList->SetFont( font );
-    
-    // set the needed events
-    iNumCandidateList->SetEventIdForCandidateSelected( EHwrEventCandidateSelected );
-    iNumCandidateList->AddEventObserver( UiLayout() );
-    
-    // hide the candidate list
-    iNumCandidateList->Hide( ETrue );
-    iNumCandidateList->SetDropdownListImgID( candiDrawInfo );
-
-    }
-// ---------------------------------------------------------------------------
 // create writing box.
 // ---------------------------------------------------------------------------
 //
@@ -762,10 +719,14 @@
         EHwrEventNavKeyClicked, EKeyLeftArrow );
     iArrowRightBtn = CreateRepBtnL( EHwrCtrlIdArrowRight, R_AKN_FEP_HWR_ARROWRIGHT, 
         EHwrEventNavKeyClicked, EKeyRightArrow );
-    iArrowUpBtn = CreateRepBtnL( EHwrCtrlIdArrowUp, R_AKN_FEP_HWR_ARROWUP, 
-        EHwrEventNavKeyClicked, EKeyUpArrow );
-    iArrowDownBtn = CreateRepBtnL( EHwrCtrlIdArrowDown, R_AKN_FEP_HWR_ARROWDOWN, 
-        EHwrEventNavKeyClicked, EKeyDownArrow );
+    iEnterBtn = CreateEventBtnL(EHwrCtrlIdBtnEnter,R_AKN_FEP_HWR_ENTER);
+    iSpaceBtn = CreateEventBtnL(EHwrCtrlIdBtnSpace,R_AKN_FEP_HWR_SPACE);
+    // Create 3-pieces color icon for space button
+    CPenInput3PiecesColorIcons* colorIcons = 
+                CPenInput3PiecesColorIcons::NewL( R_AKN_FEP_VKB_SPACE_ICON1,
+                                                  R_AKN_FEP_VKB_SPACE_ICON2,
+                                                  R_AKN_FEP_VKB_SPACE_ICON3 );
+    iSpaceBtn->Set3PiecesColorIcons( colorIcons );                                                
 	iSymbolTableBtn = CreateEventBtnL( EHwrCtrlIdSymbolButton, R_AKN_FEP_HWR_SYMBOL_TABLE_BUTTON );	
     }
 
@@ -784,6 +745,20 @@
     }
 
 // ---------------------------------------------------------------------------
+// create virtual number mode sct pad.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::CreateNumSymbolTableL()
+    {
+    iNumSymbolTable = CPeninputArabicFingerHwrNumSymbolTable::NewL(UiLayout(),EHwrCtrlIdNumSymbolTableVkbGroup);
+    iNumSymbolTable->Hide(ETrue);
+    iNumSymbolTable->SetResourceId(R_FINGERHWR_ARABIC_SYMBOLTABLE);
+    iNumSymbolTable->ConstructFromResourceL();
+    AddControlL( iNumSymbolTable );
+    iNumSymbolTable->AddEventObserver( UiLayout() );
+    }
+
+// ---------------------------------------------------------------------------
 // EventButton creation helper.
 // ---------------------------------------------------------------------------
 //
@@ -842,6 +817,23 @@
     }
 
 // ---------------------------------------------------------------------------
+// load virtual number mode sct keys.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::LoadNumSymbolVirtualKeysL( const TInt aResId, 
+    const RArray<TRect>& aCellRects )
+    {
+    TAknTextLineLayout txtlayout = iLafManager->NumpadKeyTxtLayout();
+    iNumSymbolTable->KeyPad()->SetTextLineLayout( txtlayout );
+    
+    TInt fontid = txtlayout.FontId();
+    const CFont* font = AknLayoutUtils::FontFromId( fontid );
+    iNumSymbolTable->KeyPad()->SetFont( font );
+    
+    iNumSymbolTable->LoadVirtualKeypadKeyL(aResId,aCellRects);
+    }
+
+// ---------------------------------------------------------------------------
 //  relayout full ui, reset all controls position. 
 // ---------------------------------------------------------------------------
 //
@@ -884,18 +876,31 @@
 	pdx = iLafManager->GetArrowPaddingSize().iWidth;
 	pdy = iLafManager->GetArrowPaddingSize().iHeight;
 	
-	rect = iLafManager->CtrlRect( iArrowUpBtn->ControlId() );
-    MoveIconButton( iArrowUpBtn, rect, pdx, pdy, ETrue );
-    
     rect = iLafManager->CtrlRect( iArrowLeftBtn->ControlId() );
     MoveIconButton( iArrowLeftBtn, rect, pdx, pdy, ETrue );
     
     rect = iLafManager->CtrlRect( iArrowRightBtn->ControlId() );
     MoveIconButton( iArrowRightBtn, rect, pdx, pdy, ETrue );
 
-    rect = iLafManager->CtrlRect( iArrowDownBtn->ControlId() );
-    MoveIconButton( iArrowDownBtn, rect,  pdx, pdy, ETrue );
-		
+    rect = iLafManager->CtrlRect( iSpaceBtn->ControlId() );
+    MoveIconButton( iSpaceBtn, rect, pdx, pdy, ETrue );
+
+    TRect pieceInnerRect = rect;
+    pieceInnerRect.Shrink(pdx*2,pdy);
+    
+    // that's a not good algrithm in funciton AknPenInputDrawUtils::Draw3PiecesColorIcon for drawing 3Pieces icons 
+    // as when the  outter rect's height was not equal to the inter rect's height, the target rects the left icons and right icons 
+    // would be bitblited onto are set to be Rect(0.0.0.0.0) [[which should not be that behavior]].
+    // Please theck the codes: AknPenInputDrawUtils::Draw3PiecesColorIcon: this function should be Updated.
+    iSpaceBtn->SetDraw3PieceFrameInfo(
+                                      TDraw3PiecesFrame(KAknsIIDQgnIndiInputSpaceL,
+                                      KAknsIIDQgnIndiInputSpaceMiddle,
+                                      KAknsIIDQgnIndiInputSpaceR,
+                                      pieceInnerRect));
+    
+    rect = iLafManager->CtrlRect( iEnterBtn->ControlId() );
+    MoveIconButton( iEnterBtn, rect, pdx, pdy, ETrue );
+
     // load vkb key image
     TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
     iSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize );
@@ -927,6 +932,31 @@
 	iSymbolTable->SizeChanged(iLafManager->GetVirtualKeyRect(),
 	                          iLafManager->GetSymBtnArray(), rows, cols,
 							  iLafManager->IsLandscape());
+	//number mode symbol table
+    // load number mode vkb key image
+    TSize numkeysize = iLafManager->VirtualSctpadCellSize().Size();
+    iNumSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_NUMPAD_IMAGE, numkeysize );
+    
+    // get the key rect
+    RArray<TRect> numrects;
+    CleanupClosePushL( numrects );
+    iLafManager->GetNumVirtualKeyRects( numrects );
+    
+    // load keys
+    LoadNumSymbolVirtualKeysL(R_FINGER_HWR_NUMPAD, numrects);
+        
+    CleanupStack::PopAndDestroy();//rects
+    
+    //move virtual Sctpad
+    TInt numpadrows = iLafManager->VirtualNumSctpadRowCount();
+    TInt numpadcols = iLafManager->VirtualNumSctpadColCount();       
+    
+    rect = iLafManager->CtrlRect(iNumSymbolTable->ControlId());
+    iNumSymbolTable->SetRect(rect);
+    
+    iNumSymbolTable->SizeChanged(iLafManager->GetVirtualNumKeyRect(),
+                              iLafManager->GetSymBtnArray(), numpadrows, numpadcols,
+                              iLafManager->IsLandscape());
     }
 
 
@@ -938,14 +968,14 @@
     {
 	// hide following controls
     iCandidateList->Hide( ETrue );
-    iNumCandidateList->Hide( ETrue );
     iSymbolTable->Hide( ETrue);
+    iNumSymbolTable->Hide(ETrue);
     
 	// show following controls
     iArrowLeftBtn->Hide( EFalse );
     iArrowRightBtn->Hide( EFalse );
-    iArrowUpBtn->Hide( EFalse );
-    iArrowDownBtn->Hide( EFalse );
+    iSpaceBtn->Hide( EFalse );
+    iEnterBtn->Hide( EFalse );
     iOptionBtn->Hide( EFalse );
     iSymbolTableBtn->SetHighlight( EFalse);
     iContextField->SetReady(ETrue);
@@ -958,18 +988,30 @@
 //
 void CPeninputFingerHwrArWnd::SwitchToSymbolTableView()
     {
+    CPeninputFingerHwrArLayout* hwrLayout = NULL;
+    hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );    
+    CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
+    TBool IsNumberOnly = datastore.IsNumberOnlyMode();
 	// show following controls
     iWritingBox->Hide( EFalse );
-    iSymbolTable->Hide( EFalse );
+    if(IsNumberOnly)
+        {
+        iSymbolTable->Hide( ETrue );
+        iNumSymbolTable->Hide(EFalse);
+        }
+    else
+        {
+        iSymbolTable->Hide( EFalse );
+        iNumSymbolTable->Hide(ETrue);
+        }
     iOptionBtn->Hide( EFalse );
 	
 	// hide follwing controls
 	iCandidateList->Hide( ETrue );
-    iNumCandidateList->Hide( ETrue );
     iArrowLeftBtn->Hide( ETrue );
     iArrowRightBtn->Hide( ETrue );
-    iArrowUpBtn->Hide( ETrue );
-    iArrowDownBtn->Hide( ETrue );
+    iSpaceBtn->Hide( ETrue );
+    iEnterBtn->Hide( ETrue );
     
 	// set the symboltable button highlighted
     iSymbolTableBtn->SetHighlight( ETrue );
@@ -978,8 +1020,16 @@
 	// so set this control to be not ready
     iContextField->SetReady(EFalse);
     
-    iSymbolTable->OpenSymbolTable();
-    iSymbolTable->BringToTop();
+    if(IsNumberOnly)
+        {
+        iNumSymbolTable->OpenSymbolTable();
+        iNumSymbolTable->BringToTop();    
+        }
+    else
+        {
+        iSymbolTable->OpenSymbolTable();
+        iSymbolTable->BringToTop();
+        }
     }
 
 
@@ -1256,39 +1306,26 @@
     {
     if (aShow > 0)
         {
-    	TRect outrect,innerrect;                  
+        TRect outrect,innerrect;                  
         iCandidateList->ShowBubble(ETrue);
-
-     	// Set priview popup size
+    
+        // Set priview popup size
         iCandidateList->SetBubbleBitmapParam(NULL,NULL,KAknsIIDQsnFrInputCharPreview);
-
-    	outrect = iLafManager->PreviewBubbleRect();  
-    	innerrect = iLafManager->PreviewBubbleInnerRect();
-    	iCandidateList->SetTextFormat(iLafManager->PreviewBubbleTextLayout());
-    	iCandidateList->SetBubbleTextFont(iLafManager->PreviewBubbleFont());
-    	iCandidateList->SetBubbleSize(TSize(outrect.Width(),outrect.Height()));  // Read laf
-    	iCandidateList->SetFrameDiff(innerrect.iTl.iX - outrect.iTl.iX,
-    	               innerrect.iTl.iY - outrect.iTl.iY,
-    	               outrect.iBr.iX - innerrect.iBr.iX,
-    	               outrect.iBr.iY - innerrect.iBr.iY);
-    	
-        iNumCandidateList->ShowBubble(ETrue);
-
-        // Set priview popup size
-        iNumCandidateList->SetBubbleBitmapParam(NULL,NULL,KAknsIIDQsnFrInputCharPreview);
-        iNumCandidateList->SetTextFormat(iLafManager->PreviewBubbleTextLayout());
-        iNumCandidateList->SetBubbleTextFont(iLafManager->PreviewBubbleFont());
-        iNumCandidateList->SetBubbleSize(TSize(outrect.Width(),outrect.Height()));  // Read laf
-        iNumCandidateList->SetFrameDiff(innerrect.iTl.iX - outrect.iTl.iX,
+    
+        outrect = iLafManager->PreviewBubbleRect();  
+        innerrect = iLafManager->PreviewBubbleInnerRect();
+        iCandidateList->SetTextFormat(iLafManager->PreviewBubbleTextLayout());
+        iCandidateList->SetBubbleTextFont(iLafManager->PreviewBubbleFont());
+        iCandidateList->SetBubbleSize(TSize(outrect.Width(),outrect.Height()));  // Read laf
+        iCandidateList->SetFrameDiff(innerrect.iTl.iX - outrect.iTl.iX,
                        innerrect.iTl.iY - outrect.iTl.iY,
                        outrect.iBr.iX - innerrect.iBr.iX,
                        outrect.iBr.iY - innerrect.iBr.iY);
- 
+        
         }
     else
         {
         iCandidateList->ShowBubble(EFalse);           
-        iNumCandidateList->ShowBubble(EFalse);           
         }
     }
 
@@ -1349,7 +1386,7 @@
 //	
 void CPeninputFingerHwrArWnd::OpenSymbolTable()
 	{
-    if(!iSymbolTable->IsPopup())
+    if(!iSymbolTable->IsPopup() && !iNumSymbolTable->IsPopup())
     	{
     	SwitchToSymbolTableView();  
         }
@@ -1367,7 +1404,13 @@
 	    iSymbolTable->CloseSymbolTable();
 	    iSymbolTable->BringToBack();
 	    SwitchToStandbyView();		
-	    }	
+	    }
+	else if(iNumSymbolTable->IsPopup())
+	    {
+        iNumSymbolTable->CloseSymbolTable();
+        iNumSymbolTable->BringToBack();
+        SwitchToStandbyView();      	    
+	    }
     }
 
 // --------------------------------------------------------------------------
@@ -1377,7 +1420,8 @@
 //	    
 TBool CPeninputFingerHwrArWnd::IsSymbolTableShowingUp()
 	{
-    return iSymbolTable->IsPopup();
+    TBool ret = iSymbolTable->IsPopup() | iNumSymbolTable->IsPopup();  
+    return ret;
     }
 
 // --------------------------------------------------------------------------
@@ -1387,7 +1431,7 @@
 //	
 TBool CPeninputFingerHwrArWnd::IsCandidateShowup()
     {
-	if(!iCandidateList->Hiden() || !iNumCandidateList->Hiden())
+	if(!iCandidateList->Hiden())
 	    {
 		return ETrue;
 		}
@@ -1423,5 +1467,30 @@
 	
 	return isFound;
 	}
-	
+
+// ---------------------------------------------------------------------------
+// accept editor's number mapping restriction.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::SetNumericMapping( const TDesC& aNumMapping )
+    {
+    iNumSymbolTable->SetNumericMapping(aNumMapping);
+    }
+// ---------------------------------------------------------------------------
+//  set native number mode on or off.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::SetNativeNumMode(const TBool aIsNativeNumMode)
+    {
+    iNumSymbolTable->SetNativeNumMode(aIsNativeNumMode);
+    }
+// ---------------------------------------------------------------------------
+//  set icf language.
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::SetIcfLanguage( TInt aLang )
+    {
+    iContextField->SetLanguageId(aLang);
+    }
+
 //  End Of File