textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp
branchRCL_3
changeset 10 6defe5d1bd39
parent 8 6ceef9a83b1a
child 19 5e18d8c489d6
--- a/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.cpp	Mon Mar 15 12:42:02 2010 +0200
+++ b/textinput/peninputfingerhwrar/src/peninputfingerhwrarwnd.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"
@@ -43,9 +43,9 @@
 #include "peninputfingerhwrarmultipagevkb.h"
 #include "peninputfingerhwrarlayout.h"
 #include "peninputfingerhwrardatastore.h"
-#include "peninputlayouthwrwnd.h"
 #include "peninputfingerhwrarsymboltable.h"
 #include "peninputfingerhwrarindicator.h"
+#include "peninputfingerhwrarwritingwnd.h"
 
 const TUint32 KDefaultTextColor          = 0x000000;
 const TUint   KDefaultFrameColor         = 0x000000;
@@ -84,7 +84,11 @@
 // ---------------------------------------------------------------------------
 //
 CPeninputFingerHwrArWnd::~CPeninputFingerHwrArWnd()
-    {    
+    {
+    #ifdef RD_TACTILE_FEEDBACK    
+	UiLayout()->DeRegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
+	                                 iWritingBox->Rect());
+	#endif								 
     delete iLafManager;
     }
 
@@ -125,7 +129,6 @@
   
         ReadWritingBoxInfoL( boxwndResId );
         ReadBackgroundInfoL( bgImageResId );
-		//iHandwritingIndicator->ConstructFromResourceL(R_AKN_FEP_HWR_INDICATOR_ICON);
         }
     else
         {
@@ -167,12 +170,7 @@
 			 
 		CControlGroup::Draw();
 		
-		// Set guide line
-		DrawGuideLine();
-		
-		//iHandwritingIndicator->BringToTop();
-		iHandwritingIndicator->Draw();
-		// update whole area
+		// Update whole area
 		UpdateArea( Rect(), EFalse );
 		}
     }
@@ -209,10 +207,21 @@
             iLafManager->IcfTextHeight(),
             iLafManager->IcfFont()->FontMaxHeight(),
             iLafManager->IcfFont() );
+    
+    CalculateGuideLinePos();
     Draw();
 }
 
 // ---------------------------------------------------------------------------
+// Handle window open
+// ---------------------------------------------------------------------------
+//
+void CPeninputFingerHwrArWnd::HandleWindowOpenCommandL()
+    {
+    CalculateGuideLinePos();
+    }
+
+// ---------------------------------------------------------------------------
 // accept editor's text alignment.
 // ---------------------------------------------------------------------------
 //
@@ -371,10 +380,12 @@
 // set writing speed hwr writing.
 // ---------------------------------------------------------------------------
 //
-void CPeninputFingerHwrArWnd::SetBoxWritingSpeed( const TTimeIntervalMicroSeconds32& aCharDelay )
+void CPeninputFingerHwrArWnd::SetBoxWritingSpeed( TTimeIntervalMicroSeconds32& aCharDelay )
     {
     iWritingBox->SetCharacterDelay( aCharDelay );
-    iWritingBox->SetStrokeDelay( 90000 );   
+    TInt strokeDelay = aCharDelay.Int()/5;
+    TTimeIntervalMicroSeconds32 sDelay(strokeDelay);
+    iWritingBox->SetStrokeDelay( sDelay);   
     }
 
 // ---------------------------------------------------------------------------
@@ -438,34 +449,34 @@
 //	
 void CPeninputFingerHwrArWnd::OpenCandidateList()
     {
-	typedef CFepCtrlDropdownList::TListType TDropListType;
-        
 	CPeninputFingerHwrArLayout* hwrLayout = NULL;
 	hwrLayout = static_cast<CPeninputFingerHwrArLayout*>( UiLayout() );
 	CPeninputFingerHwrArDataStore& datastore = hwrLayout->DataStore();
 	
 	const RPointerArray<HBufC>& candidates = datastore.Candidate();
 	
-													 
-	TDropListType unexpandable = CFepCtrlDropdownList::EListExpandableMultiRowWithoutIconWithBubble;
+	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);	
+		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);
+		}	
 	}
 
 // ---------------------------------------------------------------------------
@@ -521,10 +532,11 @@
 	
     //crate writing 
     CreateWritingBoxL();
-    
+	
 	//create the handwriting indicator
 	iHandwritingIndicator = CPeninputArabicFingerHwrIndicator::NewL(UiLayout(),EHwrCtrlIdHandwringIndicator);
-	AddControlL(iHandwritingIndicator);
+	iWritingBox->InstallIndicator(iHandwritingIndicator);
+	iWritingBox->ShowIndicator(ETrue);
 	
     //create icf 
     CreateContextFieldL();
@@ -544,6 +556,15 @@
 	//set controls postion and extent
     SizeChangedL();
 	
+	#ifdef RD_TACTILE_FEEDBACK
+	if (UiLayout()->SupportTactileFeedback())
+		{
+	    UiLayout()->RegisterFeedbackArea(reinterpret_cast<TInt>(iWritingBox),
+	                                     iWritingBox->Rect(),
+	                                     iWritingBox->TactileFeedbackType());
+		}
+    #endif
+	
 	//switch to standby view
     SwitchToStandbyView();
     }
@@ -711,7 +732,7 @@
 //
 void CPeninputFingerHwrArWnd::CreateWritingBoxL()
     {
-    iWritingBox = CTransparentHwrWndExt::NewL( TRect( 0,0,0,0 ), UiLayout(), 
+    iWritingBox = CPeninputArabicFingerHwrWritingWnd::NewL( TRect( 0,0,0,0 ), UiLayout(), 
                                             EHwrCtrlIdWritingBox, EFalse );
     
     AddControlL( iWritingBox );
@@ -722,7 +743,6 @@
     iWritingBox->AddEventObserver( UiLayout() );
     iWritingBox->EnableTraceOutsideWindow( EFalse );
     iWritingBox->SetWndTransparencyFactor( 0 );
-
     iWritingBox->InstallPenTraceDecoratorL( KNullDesC,EFalse);
     }
 
@@ -757,6 +777,8 @@
     {
     iSymbolTable = CPeninputArabicFingerHwrSymbolTable::NewL(UiLayout(),EHwrCtrlIdSymbolTableVkbGroup);
 	iSymbolTable->Hide(ETrue);
+	iSymbolTable->SetResourceId(R_FINGERHWR_ARABIC_SYMBOLTABLE);
+	iSymbolTable->ConstructFromResourceL();
     AddControlL( iSymbolTable );
 	iSymbolTable->AddEventObserver( UiLayout() );
     }
@@ -837,7 +859,7 @@
     //Move Writing box
     rect = iLafManager->CtrlRect( iWritingBox->ControlId() );
     iWritingBox->SetRect( rect );
-    
+		
 	//resize indicator
 	iHandwritingIndicator->ConstructFromResourceL(R_AKN_FEP_HWR_INDICATOR_ICON);
 	iHandwritingIndicator->SizeChanged(iLafManager->GetIndicatorRect(),ETrue);
@@ -873,7 +895,7 @@
 
     rect = iLafManager->CtrlRect( iArrowDownBtn->ControlId() );
     MoveIconButton( iArrowDownBtn, rect,  pdx, pdy, ETrue );
-	
+		
     // load vkb key image
     TSize keysize = iLafManager->VirtualSctpadCellSize().Size();
     iSymbolTable->LoadVkbKeyImageL(R_FINGER_HWR_SCTPAD_IMAGE, keysize );
@@ -882,7 +904,7 @@
     RArray<TRect> rects;
 	CleanupClosePushL( rects );
     iLafManager->GetVirtualKeyRects( rects );
-    
+	
     // load keys
 	if(iLafManager->IsLandscape())
 	    {
@@ -892,6 +914,7 @@
 	    {
 		LoadSymbolVirtualKeysL(R_ARABIC_FINGER_HWR_PORTRAIT_SYMBOL_TABLE, rects);
 		}
+		
     CleanupStack::PopAndDestroy();//rects
     
 	//move virtual Sctpad
@@ -901,8 +924,9 @@
 	rect = iLafManager->CtrlRect(iSymbolTable->ControlId());
 	iSymbolTable->SetRect(rect);
 	
-	TSize symButtonSize = iLafManager->SymbolGroupButtonSize();
-	iSymbolTable->SizeChanged(TSize(),symButtonSize,rows,cols,iLafManager->IsLandscape());
+	iSymbolTable->SizeChanged(iLafManager->GetVirtualKeyRect(),
+	                          iLafManager->GetSymBtnArray(), rows, cols,
+							  iLafManager->IsLandscape());
     }
 
 
@@ -1289,6 +1313,8 @@
       
       iGuideLineBottomBr.iX = rect.iBr.iX - leftrightmargin;
       iGuideLineBottomBr.iY = rect.iTl.iY + bottommargin;
+      
+      iWritingBox->SetBottomGuideLinePosition(iGuideLineBottomTl, iGuideLineBottomBr);
       }
 
 // --------------------------------------------------------------------------
@@ -1298,21 +1324,21 @@
 //
 void CPeninputFingerHwrArWnd::DrawGuideLine()
     {
-    if(!iGuideLineOn)
+    if(iGuideLineOn)
         {
-        iWritingBox->HideGuideLine(ETrue);
-        }
-    else
-        {
-        iWritingBox->HideGuideLine(EFalse);
         TInt style = CTransparentHwrWndExt::EGuideLineBottom;    
         iWritingBox->SetGuideLineStyle( style );
     
         // if size changing, or guide line pos has not been set
         CalculateGuideLinePos();
         
-        iWritingBox->SetBottomGuideLinePosition(iGuideLineBottomTl, iGuideLineBottomBr);
+        iWritingBox->HideGuideLine(ETrue);
         }
+    else
+        {
+        iWritingBox->HideGuideLine(EFalse);
+        }
+		
 	iWritingBox->RefreshUI();	
     }
 
@@ -1375,11 +1401,7 @@
 //	
 void CPeninputFingerHwrArWnd::HideIndicator()
     {
-	if(!iHandwritingIndicator->Hiden())
-	    {
-		iHandwritingIndicator->Hide(ETrue);
-	    Draw();
-		}
+    iWritingBox->ShowIndicator(EFalse);
 	}
 
 // --------------------------------------------------------------------------
@@ -1391,15 +1413,15 @@
     {
 	TBuf<1> dataBeforeCursor;
 	iContextField->ExtractText( dataBeforeCursor, aCharPos, 1 );
+	
+	TBool isFound = EFalse;
 	if(dataBeforeCursor!= KNullDesC)
 	    {
 		aCharBeforeCursor = dataBeforeCursor[0];
-		return ETrue;
+		isFound = ETrue;
 		}
-	else
-	    {
-		return EFalse;
-		}
+	
+	return isFound;
 	}
 	
 //  End Of File