textinput/peninputfingerhwr/src/peninputfingerhwrstatemanager.cpp
changeset 0 eb1f2e154e89
child 12 4eb1ae11334f
equal deleted inserted replaced
-1:000000000000 0:eb1f2e154e89
       
     1 /*
       
     2 * Copyright (c) 2009 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 for chinese peninput finger hwr
       
    15 *
       
    16 */
       
    17 #include <peninputcmd.h>
       
    18 
       
    19 #include "peninputfingerhwrlayout.h"
       
    20 #include "peninputfingerhwrwnd.h"
       
    21 #include "peninputfingerhwrstatemanager.h"
       
    22 #include "peninputfingerhwrdatastore.h"
       
    23 #include "peninputfingerhwrevent.h"
       
    24 #include "peninputfingerhwrtriggerstr.h"
       
    25 
       
    26 
       
    27 // ============================ MEMBER FUNCTIONS ===============================
       
    28 //                     CPeninputFingerHwrStateHandlerBase class
       
    29 // -----------------------------------------------------------------------------
       
    30 // CPeninputFingerHwrStateHandlerBase::CPeninputFingerHwrStateHandlerBase()
       
    31 // .
       
    32 // -----------------------------------------------------------------------------
       
    33 //
       
    34 CPeninputFingerHwrStateHandlerBase::CPeninputFingerHwrStateHandlerBase( 
       
    35     CPeninputFingerHwrStateManagerBase& aStateManager )
       
    36     :iStateManager( aStateManager ),
       
    37     iDataStore( aStateManager.HwrLayout().DataStore() )
       
    38     {
       
    39     
       
    40     }
       
    41 
       
    42 // -----------------------------------------------------------------------------
       
    43 // CPeninputFingerHwrStateHandlerBase::~CPeninputFingerHwrStateHandlerBase()
       
    44 // .
       
    45 // -----------------------------------------------------------------------------
       
    46 //
       
    47 CPeninputFingerHwrStateHandlerBase::~CPeninputFingerHwrStateHandlerBase()
       
    48     {
       
    49     
       
    50     }
       
    51 
       
    52 
       
    53 // ============================ MEMBER FUNCTIONS ===============================
       
    54 //                     CPeninputFingerHwrStateManager class
       
    55 // -----------------------------------------------------------------------------
       
    56 // CPeninputFingerHwrStateManager::CPeninputFingerHwrStateManager()
       
    57 // .
       
    58 // -----------------------------------------------------------------------------
       
    59 //
       
    60 CPeninputFingerHwrStateManagerBase::CPeninputFingerHwrStateManagerBase( 
       
    61     CPeninputFingerHwrLayout* aLayout )
       
    62     :iLayout(aLayout)
       
    63     {
       
    64     
       
    65     }
       
    66 
       
    67 // -----------------------------------------------------------------------------
       
    68 // CPeninputFingerHwrStateManager::~CPeninputFingerHwrStateManager()
       
    69 // .
       
    70 // -----------------------------------------------------------------------------
       
    71 //
       
    72 CPeninputFingerHwrStateManagerBase::~CPeninputFingerHwrStateManagerBase()
       
    73     {
       
    74     }
       
    75 
       
    76 // -----------------------------------------------------------------------------
       
    77 // CPeninputFingerHwrStateManager::CosntructL()
       
    78 // .
       
    79 // -----------------------------------------------------------------------------
       
    80 //
       
    81 void CPeninputFingerHwrStateManagerBase::BaseConstructL()
       
    82     {
       
    83 
       
    84     }
       
    85     
       
    86 // -----------------------------------------------------------------------------
       
    87 // CPeninputFingerHwrStateManagerBase::SetState()
       
    88 // .
       
    89 // -----------------------------------------------------------------------------
       
    90 //    
       
    91 void CPeninputFingerHwrStateManagerBase::SetState( TInt /*aState*/ )
       
    92     {
       
    93 
       
    94     }
       
    95 
       
    96 // -----------------------------------------------------------------------------
       
    97 // CPeninputFingerHwrStateManagerBase::IsStandbyState()
       
    98 // .
       
    99 // -----------------------------------------------------------------------------
       
   100 //
       
   101 TBool CPeninputFingerHwrStateManagerBase::IsStandbyState()
       
   102     {
       
   103     if(iCurrentState == 0)
       
   104         {
       
   105         return ETrue;
       
   106         }
       
   107 
       
   108     return EFalse;
       
   109     }
       
   110 
       
   111 
       
   112 // -----------------------------------------------------------------------------
       
   113 // CPeninputFingerHwrStateManagerBase::HandleEventL()
       
   114 // .
       
   115 // -----------------------------------------------------------------------------
       
   116 //    
       
   117 void CPeninputFingerHwrStateManagerBase::HandleEventL( const TInt /*aEventType*/,
       
   118     const TDesC& /*aEventData*/)
       
   119     {
       
   120 
       
   121     }
       
   122 
       
   123 CPeninputFingerHwrLayout& CPeninputFingerHwrStateManagerBase::HwrLayout()
       
   124     {
       
   125     return *iLayout;
       
   126     }
       
   127 
       
   128  
       
   129 // ============================ MEMBER FUNCTIONS ===============================
       
   130 //                     CPeninputFingerHwrStateManager class
       
   131 // -----------------------------------------------------------------------------
       
   132 // CPeninputFingerHwrStateManagerCn::NewL()
       
   133 // .
       
   134 // -----------------------------------------------------------------------------
       
   135 //
       
   136 CPeninputFingerHwrStateManagerCn* CPeninputFingerHwrStateManagerCn::NewL( 
       
   137     CPeninputFingerHwrLayout* aLayout )
       
   138     {
       
   139     CPeninputFingerHwrStateManagerCn* self = new( ELeave ) 
       
   140         CPeninputFingerHwrStateManagerCn( aLayout );
       
   141     CleanupStack::PushL( self );
       
   142     self->ConstructL();
       
   143     CleanupStack::Pop();
       
   144     return self;
       
   145     }
       
   146 
       
   147 // -----------------------------------------------------------------------------
       
   148 // CPeninputFingerHwrStateManagerCn::CPeninputFingerHwrStateManager()
       
   149 // .
       
   150 // -----------------------------------------------------------------------------
       
   151 //
       
   152 CPeninputFingerHwrStateManagerCn::CPeninputFingerHwrStateManagerCn( 
       
   153     CPeninputFingerHwrLayout* aLayout )
       
   154     :CPeninputFingerHwrStateManagerBase( aLayout )
       
   155     {
       
   156     
       
   157     }
       
   158 
       
   159 // -----------------------------------------------------------------------------
       
   160 // CPeninputFingerHwrStateManagerCn::~CPeninputFingerHwrStateManager()
       
   161 // .
       
   162 // -----------------------------------------------------------------------------
       
   163 //
       
   164 CPeninputFingerHwrStateManagerCn::~CPeninputFingerHwrStateManagerCn()
       
   165     {
       
   166 	for( int i = 0; i < EPeninputFingerHwrStateCountCn; ++i )
       
   167 		{
       
   168 		delete iStateHandlers[i];
       
   169 		}
       
   170     }
       
   171 
       
   172 // -----------------------------------------------------------------------------
       
   173 // CPeninputFingerHwrStateManagerCn::CosntructL()
       
   174 // .
       
   175 // -----------------------------------------------------------------------------
       
   176 //
       
   177 void CPeninputFingerHwrStateManagerCn::ConstructL()
       
   178     {
       
   179     BaseConstructL();
       
   180     
       
   181     TInt i = 0;
       
   182     
       
   183     iStates[i] = EPeninputFingerHwrStateStandbyCn;
       
   184     iStateHandlers[i] = CPeninputFingerHwrChineseStateStandby::NewL( *this );
       
   185 
       
   186 	iStates[++i] = EPeninputFingerHwrStateWritingCn;
       
   187     iStateHandlers[i] = CPeninputFingerHwrChineseStateWriting::NewL( *this );
       
   188     
       
   189 	iStates[++i] = EPeninputFingerHwrStateCandidateSelectingCn;
       
   190     iStateHandlers[i] = 
       
   191         CPeninputFingerHwrChineseStateCandidateSelecting::NewL( *this );
       
   192 	
       
   193 	iStates[++i] = EPeninputFingerHwrStatePredictSelectingCn;
       
   194     iStateHandlers[i] = 
       
   195         CPeninputFingerHwrChineseStatePredictSelecting::NewL( *this );              
       
   196   
       
   197     iCurrentStateHandler = iStateHandlers[0];
       
   198     iCurrentState = EPeninputFingerHwrStateStandbyCn;
       
   199     }
       
   200     
       
   201 // -----------------------------------------------------------------------------
       
   202 // CPeninputFingerHwrStateManagerCn::SetState()
       
   203 // .
       
   204 // -----------------------------------------------------------------------------
       
   205 //    
       
   206 void CPeninputFingerHwrStateManagerCn::SetState( TInt aState )
       
   207     {
       
   208     if( iCurrentState == aState )        
       
   209         {
       
   210         return;    
       
   211         }
       
   212         
       
   213     CPeninputFingerHwrStateHandlerBase* newStateHandler = Find( (TPeninputFingerHwrStateCn)aState );
       
   214     if( newStateHandler )
       
   215         {
       
   216         iCurrentState = (TPeninputFingerHwrStateCn)aState;
       
   217         iCurrentStateHandler->OnExit();
       
   218         iCurrentStateHandler = newStateHandler;
       
   219         iCurrentStateHandler->OnEntry();
       
   220         }
       
   221     }
       
   222 
       
   223 // -----------------------------------------------------------------------------
       
   224 // CPeninputFingerHwrStateManagerCn::Find()
       
   225 // .
       
   226 // -----------------------------------------------------------------------------
       
   227 //  
       
   228 CPeninputFingerHwrStateHandlerBase* CPeninputFingerHwrStateManagerCn::Find( 
       
   229     TPeninputFingerHwrStateCn aState )
       
   230     {
       
   231     for( TInt i = 0; i < EPeninputFingerHwrStateCountCn; i++ )
       
   232         {
       
   233         if( iStates[i] == aState )
       
   234             {
       
   235             return iStateHandlers[i];
       
   236             }
       
   237         }
       
   238     return NULL;
       
   239     }
       
   240 
       
   241 // -----------------------------------------------------------------------------
       
   242 // CPeninputFingerHwrStateManagerCn::HandleEventL()
       
   243 // .
       
   244 // -----------------------------------------------------------------------------
       
   245 //    
       
   246 void CPeninputFingerHwrStateManagerCn::HandleEventL( const TInt aEventType, 
       
   247     const TDesC& aEventData )
       
   248     {
       
   249     iCurrentStateHandler->HandleEventL( aEventType, aEventData );
       
   250     }
       
   251 
       
   252 
       
   253 // ============================ MEMBER FUNCTIONS ===============================
       
   254 //                     CPeninputFingerHwrStateManagerEn class
       
   255 // -----------------------------------------------------------------------------
       
   256 // CPeninputFingerHwrStateManagerEn::NewL()
       
   257 // .
       
   258 // -----------------------------------------------------------------------------
       
   259 //
       
   260 CPeninputFingerHwrStateManagerEn* CPeninputFingerHwrStateManagerEn::NewL( 
       
   261     CPeninputFingerHwrLayout* aLayout )
       
   262     {
       
   263     CPeninputFingerHwrStateManagerEn* self = new( ELeave ) 
       
   264         CPeninputFingerHwrStateManagerEn( aLayout );
       
   265     CleanupStack::PushL( self );
       
   266     self->ConstructL();
       
   267     CleanupStack::Pop();
       
   268     return self;
       
   269     }
       
   270 
       
   271 // -----------------------------------------------------------------------------
       
   272 // CPeninputFingerHwrStateManagerEn::CPeninputFingerHwrStateManager()
       
   273 // .
       
   274 // -----------------------------------------------------------------------------
       
   275 //
       
   276 CPeninputFingerHwrStateManagerEn::CPeninputFingerHwrStateManagerEn( 
       
   277     CPeninputFingerHwrLayout* aLayout )
       
   278     :CPeninputFingerHwrStateManagerBase( aLayout )
       
   279     {
       
   280     
       
   281     }
       
   282 
       
   283 // -----------------------------------------------------------------------------
       
   284 // CPeninputFingerHwrStateManagerEn::~CPeninputFingerHwrStateManager()
       
   285 // .
       
   286 // -----------------------------------------------------------------------------
       
   287 //
       
   288 CPeninputFingerHwrStateManagerEn::~CPeninputFingerHwrStateManagerEn()
       
   289     {
       
   290 	for( int i = 0; i < EPeninputFingerHwrStateCountEn; ++i )
       
   291 		{
       
   292 		delete iStateHandlers[i];
       
   293 		}
       
   294     }
       
   295 
       
   296 // -----------------------------------------------------------------------------
       
   297 // CPeninputFingerHwrStateManagerEn::CosntructL()
       
   298 // .
       
   299 // -----------------------------------------------------------------------------
       
   300 //
       
   301 void CPeninputFingerHwrStateManagerEn::ConstructL()
       
   302     {
       
   303     BaseConstructL();
       
   304     
       
   305     TInt i = 0;
       
   306     
       
   307     iStates[i] = EPeninputFingerHwrStateStandbyEn;
       
   308     iStateHandlers[i] = CPeninputFingerHwrEnglishStateStandby::NewL( *this );
       
   309 
       
   310 	iStates[++i] = EPeninputFingerHwrStateWritingEn;
       
   311     iStateHandlers[i] = CPeninputFingerHwrEnglishStateWriting::NewL( *this );
       
   312     
       
   313 	iStates[++i] = EPeninputFingerHwrStateCandidateSelectingEn;
       
   314     iStateHandlers[i] = 
       
   315         CPeninputFingerHwrEnglishStateCandidateSelecting::NewL( *this );
       
   316 	
       
   317 #ifdef RD_INTELLIGENT_TEXT_INPUT	
       
   318 	iStates[++i] = EPeninputFingerHwrStatePredictSelectingEn;
       
   319     iStateHandlers[i] = 
       
   320         CPeninputFingerHwrEnglishStatePredictSelecting::NewL( *this );
       
   321 #endif // RD_INTELLIGENT_TEXT_INPUT
       
   322   
       
   323     iCurrentStateHandler = iStateHandlers[0];
       
   324     iCurrentState = EPeninputFingerHwrStateStandbyEn;
       
   325     }
       
   326     
       
   327 // -----------------------------------------------------------------------------
       
   328 // CPeninputFingerHwrStateManagerEn::SetState()
       
   329 // .
       
   330 // -----------------------------------------------------------------------------
       
   331 //    
       
   332 void CPeninputFingerHwrStateManagerEn::SetState( TInt aState )
       
   333     {
       
   334     if( iCurrentState == aState )        
       
   335         {
       
   336         return;    
       
   337         }
       
   338         
       
   339     CPeninputFingerHwrStateHandlerBase* newStateHandler = 
       
   340             Find((TPeninputFingerHwrStateEn)aState);
       
   341     if( newStateHandler )
       
   342         {
       
   343         iCurrentState = (TPeninputFingerHwrStateEn)aState;
       
   344         iCurrentStateHandler->OnExit();
       
   345         iCurrentStateHandler = newStateHandler;
       
   346         iCurrentStateHandler->OnEntry();
       
   347         }
       
   348     }
       
   349 
       
   350 // -----------------------------------------------------------------------------
       
   351 // CPeninputFingerHwrStateManagerEn::Find()
       
   352 // .
       
   353 // -----------------------------------------------------------------------------
       
   354 //  
       
   355 CPeninputFingerHwrStateHandlerBase* CPeninputFingerHwrStateManagerEn::Find( 
       
   356     TPeninputFingerHwrStateEn aState )
       
   357     {
       
   358     for( TInt i = 0; i < EPeninputFingerHwrStateCountEn; i++ )
       
   359         {
       
   360         if( iStates[i] == aState )
       
   361             {
       
   362             return iStateHandlers[i];
       
   363             }
       
   364         }
       
   365     return NULL;
       
   366     }
       
   367         
       
   368 
       
   369 // -----------------------------------------------------------------------------
       
   370 // CPeninputFingerHwrStateManagerEn::HandleEventL()
       
   371 // .
       
   372 // -----------------------------------------------------------------------------
       
   373 //    
       
   374 void CPeninputFingerHwrStateManagerEn::HandleEventL( const TInt aEventType, 
       
   375     const TDesC& aEventData )
       
   376     {
       
   377     iCurrentStateHandler->HandleEventL( aEventType, aEventData );
       
   378     }
       
   379 
       
   380 
       
   381 // ============================ MEMBER FUNCTIONS ===============================
       
   382 //                     CPeninputFingerHwrStateManagerNum class
       
   383 // -----------------------------------------------------------------------------
       
   384 // CPeninputFingerHwrStateManagerNum::NewL()
       
   385 // .
       
   386 // -----------------------------------------------------------------------------
       
   387 //
       
   388 CPeninputFingerHwrStateManagerNum* CPeninputFingerHwrStateManagerNum::NewL( 
       
   389     CPeninputFingerHwrLayout* aLayout )
       
   390     {
       
   391     CPeninputFingerHwrStateManagerNum* self = new( ELeave ) 
       
   392         CPeninputFingerHwrStateManagerNum( aLayout );
       
   393     CleanupStack::PushL( self );
       
   394     self->ConstructL();
       
   395     CleanupStack::Pop();
       
   396     return self;
       
   397     }
       
   398 
       
   399 // -----------------------------------------------------------------------------
       
   400 // CPeninputFingerHwrStateManagerNum::CPeninputFingerHwrStateManagerNum()
       
   401 // .
       
   402 // -----------------------------------------------------------------------------
       
   403 //
       
   404 CPeninputFingerHwrStateManagerNum::CPeninputFingerHwrStateManagerNum( 
       
   405     CPeninputFingerHwrLayout* aLayout )
       
   406     :CPeninputFingerHwrStateManagerBase( aLayout )
       
   407     {
       
   408     
       
   409     }
       
   410 
       
   411 // -----------------------------------------------------------------------------
       
   412 // CPeninputFingerHwrStateManagerNum::~CPeninputFingerHwrStateManagerNum()
       
   413 // .
       
   414 // -----------------------------------------------------------------------------
       
   415 //
       
   416 CPeninputFingerHwrStateManagerNum::~CPeninputFingerHwrStateManagerNum()
       
   417     {
       
   418 	for( int i = 0; i < EPeninputFingerHwrStateCountNum; ++i )
       
   419 		{
       
   420 		delete iStateHandlers[i];
       
   421 		}
       
   422     }
       
   423 
       
   424 // -----------------------------------------------------------------------------
       
   425 // CPeninputFingerHwrStateManagerNum::CosntructL()
       
   426 // .
       
   427 // -----------------------------------------------------------------------------
       
   428 //
       
   429 void CPeninputFingerHwrStateManagerNum::ConstructL()
       
   430     {
       
   431     BaseConstructL();
       
   432     
       
   433     TInt i = 0;
       
   434     
       
   435     iStates[i] = EPeninputFingerHwrStateStandbyNum;
       
   436     iStateHandlers[i] = CPeninputFingerHwrNumericStateStandby::NewL( *this );
       
   437   
       
   438     iCurrentStateHandler = iStateHandlers[0];
       
   439     iCurrentState = EPeninputFingerHwrStateStandbyNum;
       
   440     }
       
   441     
       
   442 // -----------------------------------------------------------------------------
       
   443 // CPeninputFingerHwrStateManagerNum::SetState()
       
   444 // .
       
   445 // -----------------------------------------------------------------------------
       
   446 //    
       
   447 void CPeninputFingerHwrStateManagerNum::SetState( TInt aState )
       
   448     {
       
   449     if( iCurrentState == aState )        
       
   450         {
       
   451         return;    
       
   452         }
       
   453         
       
   454     CPeninputFingerHwrStateHandlerBase* newStateHandler = 
       
   455             Find((TPeninputFingerHwrStateNum)aState );
       
   456     if( newStateHandler )
       
   457         {
       
   458         iCurrentState = (TPeninputFingerHwrStateNum)aState;
       
   459         iCurrentStateHandler->OnExit();
       
   460         iCurrentStateHandler = newStateHandler;
       
   461         iCurrentStateHandler->OnEntry();
       
   462         }
       
   463     }
       
   464 
       
   465 // -----------------------------------------------------------------------------
       
   466 // CPeninputFingerHwrStateManagerNum::Find()
       
   467 // .
       
   468 // -----------------------------------------------------------------------------
       
   469 //  
       
   470 CPeninputFingerHwrStateHandlerBase* CPeninputFingerHwrStateManagerNum::Find( 
       
   471     TPeninputFingerHwrStateNum aState )
       
   472     {
       
   473     for( TInt i = 0; i < EPeninputFingerHwrStateCountNum; i++ )
       
   474         {
       
   475         if( iStates[i] == aState )
       
   476             {
       
   477             return iStateHandlers[i];
       
   478             }
       
   479         }
       
   480     return NULL;
       
   481     }
       
   482 
       
   483 // -----------------------------------------------------------------------------
       
   484 // CPeninputFingerHwrStateManagerNum::HandleEventL()
       
   485 // .
       
   486 // -----------------------------------------------------------------------------
       
   487 //    
       
   488 void CPeninputFingerHwrStateManagerNum::HandleEventL( const TInt aEventType, 
       
   489     const TDesC& aEventData )
       
   490     {
       
   491     iCurrentStateHandler->HandleEventL( aEventType, aEventData );
       
   492     }    
       
   493     
       
   494 
       
   495 // ============================ MEMBER FUNCTIONS ===============================
       
   496 //                     CPeninputFingerHwrStateHandlerStandby class
       
   497 // -----------------------------------------------------------------------------
       
   498 // CPeninputFingerHwrStateHandlerStandby::CPeninputFingerHwrStateHandlerStandby()
       
   499 // .
       
   500 // -----------------------------------------------------------------------------
       
   501 // 
       
   502 CPeninputFingerHwrChineseStateStandby::CPeninputFingerHwrChineseStateStandby( 
       
   503 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
   504 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
   505     {
       
   506     
       
   507     }
       
   508 
       
   509 // -----------------------------------------------------------------------------
       
   510 // CPeninputFingerHwrStateHandlerStandby::NewL()
       
   511 // .
       
   512 // -----------------------------------------------------------------------------
       
   513 // 
       
   514 CPeninputFingerHwrChineseStateStandby* CPeninputFingerHwrChineseStateStandby::NewL( 
       
   515 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
   516     {
       
   517     CPeninputFingerHwrChineseStateStandby* self = new( ELeave ) 
       
   518         CPeninputFingerHwrChineseStateStandby( aStateManager );
       
   519     
       
   520     return self;
       
   521                                                                                 
       
   522     }
       
   523     
       
   524 
       
   525 // -----------------------------------------------------------------------------
       
   526 // CPeninputFingerHwrStateHandlerStandby::HandleEventL()
       
   527 // .
       
   528 // -----------------------------------------------------------------------------
       
   529 //
       
   530 void CPeninputFingerHwrChineseStateStandby::HandleEventL( const TInt aEventType, 
       
   531     const TDesC& /*aEventData*/ )
       
   532     {
       
   533     switch( aEventType )
       
   534         {
       
   535         case EEventHwrStrokeStarted:
       
   536             {
       
   537             iStateManager.SetState( 
       
   538                 CPeninputFingerHwrStateManagerCn::EPeninputFingerHwrStateWritingCn );
       
   539             }
       
   540             break;
       
   541         default:
       
   542             break;
       
   543         }
       
   544     }
       
   545 
       
   546 // -----------------------------------------------------------------------------
       
   547 // CPeninputFingerHwrStateHandlerStandby::OnEntry()
       
   548 // .
       
   549 // -----------------------------------------------------------------------------
       
   550 //
       
   551 void CPeninputFingerHwrChineseStateStandby::OnEntry()
       
   552     {
       
   553     iDataStore.TriggerStr()->DeleteAll();
       
   554     
       
   555 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
   556     // Set start position flag to false and disable part relace function
       
   557     iStateManager.HwrLayout().SubmitStartPosToFep(EFalse);
       
   558 #endif // RD_INTELLIGENT_TEXT_INPUT    
       
   559     }
       
   560 
       
   561 // -----------------------------------------------------------------------------
       
   562 // CPeninputFingerHwrStateHandlerStandby::OnExit()
       
   563 // .
       
   564 // -----------------------------------------------------------------------------
       
   565 //
       
   566 void CPeninputFingerHwrChineseStateStandby::OnExit()
       
   567     {
       
   568 
       
   569     }
       
   570 
       
   571 // ============================ MEMBER FUNCTIONS ===============================
       
   572 //                     CPeninputFingerHwrStateHandlerWriting class
       
   573 // -----------------------------------------------------------------------------
       
   574 // CPeninputFingerHwrChineseStateWriting::CPeninputFingerHwrStateHandlerWriting()
       
   575 // .
       
   576 // -----------------------------------------------------------------------------
       
   577 // 
       
   578 CPeninputFingerHwrChineseStateWriting::CPeninputFingerHwrChineseStateWriting( 
       
   579 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
   580 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
   581     {
       
   582     
       
   583     }
       
   584 
       
   585 // -----------------------------------------------------------------------------
       
   586 // CPeninputFingerHwrChineseStateWriting::NewL()
       
   587 // .
       
   588 // -----------------------------------------------------------------------------
       
   589 // 
       
   590 CPeninputFingerHwrChineseStateWriting* CPeninputFingerHwrChineseStateWriting::NewL( 
       
   591 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
   592     {
       
   593     CPeninputFingerHwrChineseStateWriting* self = new( ELeave ) 
       
   594         CPeninputFingerHwrChineseStateWriting( aStateManager );
       
   595     
       
   596     return self;
       
   597                                                                                 
       
   598     }
       
   599     
       
   600 
       
   601 // -----------------------------------------------------------------------------
       
   602 // CPeninputFingerHwrChineseStateWriting::HandleEventL()
       
   603 // .
       
   604 // -----------------------------------------------------------------------------
       
   605 //
       
   606 void CPeninputFingerHwrChineseStateWriting::HandleEventL( const TInt aEventType, 
       
   607     const TDesC& aEventData )
       
   608     {
       
   609     switch( aEventType )
       
   610         {
       
   611         case EEventHwrStrokeFinished:
       
   612             {
       
   613             OnEndStrokeL(aEventData);
       
   614             }
       
   615             break;
       
   616         case EEventHwrCharacterTimerOut:
       
   617             {
       
   618             OnEndWritingL( aEventData );
       
   619             }
       
   620             break;
       
   621         case EHwrEventCandidateSelected:
       
   622             {
       
   623             OnSelectedCandidatesL(aEventData);
       
   624             }    
       
   625             break;
       
   626         case EHwrEventPredictiveSelected:
       
   627             {
       
   628             OnSelectedPredictivesL(aEventData);
       
   629             }
       
   630             break;
       
   631         case EHwrEventKeyBack:
       
   632             {
       
   633             OnClickBackSpaceL();
       
   634             }
       
   635             break;
       
   636         default:
       
   637             break;
       
   638         }
       
   639     }
       
   640 
       
   641 // -----------------------------------------------------------------------------
       
   642 // CPeninputFingerHwrChineseStateWriting::OnEndStrokeL()
       
   643 // .
       
   644 // -----------------------------------------------------------------------------
       
   645 //
       
   646 void CPeninputFingerHwrChineseStateWriting::OnEndStrokeL( const TDesC& aEventData )
       
   647 	{
       
   648 	const RArray<TPoint>* aTraceData = ( RArray<TPoint>* )aEventData.Ptr();
       
   649     iDataStore.DoChineseRecognizeL( *aTraceData );
       
   650     
       
   651     if(iDataStore.PredictiveCount() <= 0)
       
   652         {
       
   653         iDataStore.SetFixChinesePredictiveL();
       
   654         }
       
   655 	}
       
   656 
       
   657 
       
   658 // -----------------------------------------------------------------------------
       
   659 // CPeninputFingerHwrChineseStateWriting::OnEndWriting()
       
   660 // .
       
   661 // -----------------------------------------------------------------------------
       
   662 //
       
   663 void CPeninputFingerHwrChineseStateWriting::OnEndWritingL( const TDesC& /*aEventData*/ )
       
   664 	{
       
   665     // record the default cell highlight flag.
       
   666     iDataStore.SetHighlight(ETrue);
       
   667     
       
   668     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
   669     if ( candidates.Count() > 0 )
       
   670         {
       
   671         HBufC* defaultCandiate = candidates[0];
       
   672         
       
   673         if( iDataStore.IsSpecialDisplayChars( *defaultCandiate ) )
       
   674             {
       
   675             HBufC* realCandidate = iDataStore.ConvertDisplayChars( *defaultCandiate );
       
   676             iStateManager.HwrLayout().SubmitStringToFep( *realCandidate );
       
   677             delete realCandidate;
       
   678             }
       
   679         else
       
   680             {
       
   681             iStateManager.HwrLayout().SubmitStringToFep( *defaultCandiate );
       
   682             }
       
   683             
       
   684         //check if the default candidate is need to be sent directly
       
   685         if( iDataStore.IsDirectlySentCandidate( *defaultCandiate ) )
       
   686             {
       
   687             iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
   688                 EPeninputFingerHwrStateStandbyCn );
       
   689             }
       
   690         else
       
   691             {
       
   692             if(iDataStore.PredictiveCount() <= 0)
       
   693                 {
       
   694                 iDataStore.TriggerStr()->DeleteAll();
       
   695                 iDataStore.SetFixChinesePredictiveL();
       
   696                 }            
       
   697             
       
   698             iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
   699                 EPeninputFingerHwrStateCandidateSelectingCn );  
       
   700             }        
       
   701         
       
   702         } 
       
   703 	}
       
   704 	
       
   705 // -----------------------------------------------------------------------------
       
   706 // CPeninputFingerHwrChineseStateWriting::OnClickBackSpaceL()
       
   707 // .
       
   708 // -----------------------------------------------------------------------------
       
   709 //	
       
   710 void CPeninputFingerHwrChineseStateWriting::OnClickBackSpaceL()
       
   711     {
       
   712     iDataStore.SetHighlight(EFalse);                                                        
       
   713     iDataStore.TriggerStr()->DeleteLast();
       
   714     iDataStore.SetChineseSymbolL();
       
   715     iDataStore.SetFixChinesePredictiveL();
       
   716     iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
   717             EPeninputFingerHwrStatePredictSelectingCn );
       
   718     }
       
   719 	
       
   720 
       
   721 // -----------------------------------------------------------------------------
       
   722 // CPeninputFingerHwrChineseStateWriting::OnSelectedCandidatesL()
       
   723 // .
       
   724 // -----------------------------------------------------------------------------
       
   725 //	
       
   726 void CPeninputFingerHwrChineseStateWriting::OnSelectedCandidatesL( 
       
   727     const TDesC& aEventData )
       
   728     {
       
   729     const TInt cellNo = aEventData[aEventData.Length() - 1];
       
   730     if (!iDataStore.IsValidCandidate( cellNo ))
       
   731         {
       
   732         iStateManager.SetState(CPeninputFingerHwrStateManagerCn::
       
   733                         EPeninputFingerHwrStateStandbyCn );
       
   734         return;
       
   735         }    
       
   736     
       
   737     TPtrC ptr;
       
   738     ptr.Set(( aEventData.Left( aEventData.Length() - 1 ) ) );
       
   739     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
   740 
       
   741     //handle special display char
       
   742     if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
   743         {
       
   744         HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
   745         iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
   746         delete realCandidate;
       
   747         }
       
   748     else
       
   749         {
       
   750         iStateManager.HwrLayout().SubmitStringToFep( ptr );         
       
   751         }        
       
   752         
       
   753     iDataStore.TriggerStr()->Set( ptr );     
       
   754         
       
   755     iDataStore.DoPredictiveL();
       
   756     iDataStore.SetChineseSymbolL();
       
   757     
       
   758     // record the default cell highlight flag
       
   759     iDataStore.SetHighlight(EFalse);
       
   760     
       
   761     if( iDataStore.PredictiveCount() <= 0 )
       
   762         {
       
   763         iDataStore.TriggerStr()->DeleteAll();
       
   764         iDataStore.SetFixChinesePredictiveL();
       
   765         }
       
   766     
       
   767     iStateManager.SetState( 
       
   768         CPeninputFingerHwrStateManagerCn::
       
   769         EPeninputFingerHwrStatePredictSelectingCn );     
       
   770     }
       
   771     
       
   772 // -----------------------------------------------------------------------------
       
   773 // CPeninputFingerHwrChineseStateWriting::OnSelectedPredictivesL()
       
   774 // .
       
   775 // -----------------------------------------------------------------------------
       
   776 //	
       
   777 void CPeninputFingerHwrChineseStateWriting::OnSelectedPredictivesL( 
       
   778     const TDesC& aEventData )
       
   779     {
       
   780     // 1. submit the default candidate
       
   781     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
   782     HBufC* defaultCandidate = candidates[0];
       
   783        
       
   784     if( iDataStore.IsSpecialDisplayChars( *defaultCandidate ) )
       
   785         {
       
   786         // convert special display chars
       
   787         HBufC* realCandidate = iDataStore.ConvertDisplayChars( *defaultCandidate );
       
   788         if( defaultCandidate->Compare( KDisplayBackspace ) != 0 )
       
   789             {
       
   790             iStateManager.HwrLayout().SubmitStringToFep( realCandidate->Des());
       
   791             }
       
   792         else
       
   793             {
       
   794             // to delete the last char in ICF
       
   795             iStateManager.HwrLayout().Replace(*defaultCandidate, *realCandidate);
       
   796             }    
       
   797         delete realCandidate;
       
   798         }
       
   799     else
       
   800         {
       
   801         iStateManager.HwrLayout().SubmitStringToFep( *defaultCandidate );
       
   802         }
       
   803        
       
   804     // 2. submit the selected prediction
       
   805     TPtrC ptr;
       
   806     ptr.Set( aEventData.Left( aEventData.Length() - 1 ) );   
       
   807     iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
   808     
       
   809     // 3. update trigger string
       
   810     iDataStore.TriggerStr()->Append( ptr );    
       
   811     
       
   812     // 4. update predictive   
       
   813     iDataStore.DoPredictiveL();
       
   814     iDataStore.SetChineseSymbolL();
       
   815     iDataStore.SetHighlight(EFalse);
       
   816     
       
   817     if( iDataStore.PredictiveCount() <= 0 )
       
   818         {
       
   819         iDataStore.TriggerStr()->DeleteAll();
       
   820         iDataStore.SetFixChinesePredictiveL();   
       
   821         }
       
   822     
       
   823     iStateManager.SetState( 
       
   824         CPeninputFingerHwrStateManagerCn::
       
   825         EPeninputFingerHwrStatePredictSelectingCn );     
       
   826     }
       
   827 	
       
   828 
       
   829 // -----------------------------------------------------------------------------
       
   830 // CPeninputFingerHwrChineseStateWriting::OnEntry()
       
   831 // .
       
   832 // -----------------------------------------------------------------------------
       
   833 //
       
   834 void CPeninputFingerHwrChineseStateWriting::OnEntry()
       
   835     {
       
   836      
       
   837     }
       
   838 
       
   839 // -----------------------------------------------------------------------------
       
   840 // CPeninputFingerHwrChineseStateWriting::OnExit()
       
   841 // .
       
   842 // -----------------------------------------------------------------------------
       
   843 //
       
   844 void CPeninputFingerHwrChineseStateWriting::OnExit()
       
   845     {
       
   846     
       
   847     }
       
   848 
       
   849 // ============================ MEMBER FUNCTIONS ===============================
       
   850 //                     CPeninputFingerHwrStateHandlerCandidateSelecting class
       
   851 // -----------------------------------------------------------------------------
       
   852 // CPeninputFingerHwrChineseStateCandidateSelecting::
       
   853 //                              CPeninputFingerHwrChineseStateCandidateSelecting()
       
   854 // .
       
   855 // -----------------------------------------------------------------------------
       
   856 // 
       
   857 CPeninputFingerHwrChineseStateCandidateSelecting::
       
   858     CPeninputFingerHwrChineseStateCandidateSelecting( 
       
   859 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
   860 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
   861     {
       
   862     
       
   863     }
       
   864 
       
   865 // -----------------------------------------------------------------------------
       
   866 // CPeninputFingerHwrChineseStateCandidateSelecting::NewL()
       
   867 // .
       
   868 // -----------------------------------------------------------------------------
       
   869 // 
       
   870 CPeninputFingerHwrChineseStateCandidateSelecting* 
       
   871     CPeninputFingerHwrChineseStateCandidateSelecting::NewL( 
       
   872 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
   873     {
       
   874     CPeninputFingerHwrChineseStateCandidateSelecting* self = new( ELeave ) 
       
   875         CPeninputFingerHwrChineseStateCandidateSelecting( aStateManager );
       
   876     
       
   877     return self;                                                                                
       
   878     }
       
   879 
       
   880 
       
   881 // -----------------------------------------------------------------------------
       
   882 // CPeninputFingerHwrChineseStateCandidateSelecting::HandleEventL()
       
   883 // .
       
   884 // -----------------------------------------------------------------------------
       
   885 //
       
   886 void CPeninputFingerHwrChineseStateCandidateSelecting::HandleEventL( const TInt aEventType, 
       
   887     const TDesC& aEventData )
       
   888     {
       
   889     switch( aEventType )
       
   890         {
       
   891         case EHwrEventCandidateSelected:
       
   892             {
       
   893             OnSelectedCandidatesL( aEventData );
       
   894             }
       
   895             break;
       
   896         case EHwrEventPredictiveSelected:
       
   897             {
       
   898             OnSelectedPredictivesL( aEventData );
       
   899             }
       
   900             break;
       
   901         case EHwrEventKeyBack:
       
   902             {
       
   903             OnClickBackSpaceL();
       
   904             }
       
   905             break;
       
   906         case EEventHwrStrokeStarted:
       
   907             {
       
   908             iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
   909                 EPeninputFingerHwrStateWritingCn );
       
   910             }
       
   911             break;                     
       
   912         default:
       
   913             break;
       
   914         }
       
   915     
       
   916     }
       
   917 
       
   918 // -----------------------------------------------------------------------------
       
   919 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnSelectedCandidatesL()
       
   920 // .
       
   921 // -----------------------------------------------------------------------------
       
   922 //    
       
   923 void CPeninputFingerHwrChineseStateCandidateSelecting::OnSelectedCandidatesL( 
       
   924     const TDesC& aEventData )
       
   925     {
       
   926     //get the candidate index
       
   927     const TInt cellNo = aEventData[aEventData.Length()-1];
       
   928     if (!iDataStore.IsValidCandidate( cellNo ))
       
   929         {
       
   930         iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
   931                         EPeninputFingerHwrStateStandbyCn );
       
   932         return;
       
   933         }    
       
   934     
       
   935     TPtrC ptr;
       
   936     ptr.Set( ( aEventData.Left( aEventData.Length() - 1 ) ) );
       
   937     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
   938     //the selected char is not same as default
       
   939     //replace the default candidate
       
   940     HBufC* defaultCandidate = candidates[0];
       
   941     if( *defaultCandidate != ptr )
       
   942         {
       
   943         if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
   944             {
       
   945             HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
   946             iStateManager.HwrLayout().Replace( *defaultCandidate, 
       
   947                 *realCandidate );
       
   948             delete realCandidate;
       
   949             }
       
   950         else
       
   951             {
       
   952             iStateManager.HwrLayout().Replace( *defaultCandidate, ptr );         
       
   953             }        
       
   954         }
       
   955     OnSelectedPredictivesL( aEventData, EFalse );
       
   956     
       
   957     }
       
   958 
       
   959 // -----------------------------------------------------------------------------
       
   960 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnSelectedCandidatesL()
       
   961 // .
       
   962 // -----------------------------------------------------------------------------
       
   963 // 
       
   964 void CPeninputFingerHwrChineseStateCandidateSelecting::OnSelectedPredictivesL( 
       
   965     const TDesC& aEventData,
       
   966     TBool aAppend )
       
   967     {                                                        
       
   968     TPtrC ptr;
       
   969     ptr.Set( aEventData.Left( aEventData.Length() - 1 ) );
       
   970     // aAppend means we need append the prt to current trigger string and submit 
       
   971     // ptr to forground app    
       
   972     if( aAppend )
       
   973         {
       
   974         iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
   975         iDataStore.TriggerStr()->Append( ptr );    
       
   976         }
       
   977     else
       
   978         {
       
   979         iDataStore.TriggerStr()->Set( ptr );
       
   980         }
       
   981         
       
   982     iDataStore.DoPredictiveL();
       
   983     iDataStore.SetChineseSymbolL();
       
   984     iDataStore.SetHighlight(EFalse);
       
   985     
       
   986     if( iDataStore.PredictiveCount() <= 0 )
       
   987         {
       
   988         iDataStore.TriggerStr()->DeleteAll();
       
   989         iDataStore.SetFixChinesePredictiveL();   
       
   990         }
       
   991     
       
   992     iStateManager.SetState( 
       
   993         CPeninputFingerHwrStateManagerCn::
       
   994         EPeninputFingerHwrStatePredictSelectingCn );     
       
   995     
       
   996     }
       
   997     
       
   998 // -----------------------------------------------------------------------------
       
   999 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnClickBackSpaceL()
       
  1000 // .
       
  1001 // -----------------------------------------------------------------------------
       
  1002 // 
       
  1003 void CPeninputFingerHwrChineseStateCandidateSelecting::OnClickBackSpaceL()
       
  1004     {
       
  1005     iDataStore.SetHighlight(EFalse);                                                        
       
  1006     iDataStore.TriggerStr()->DeleteLast();
       
  1007     iDataStore.SetChineseSymbolL();
       
  1008     iDataStore.SetFixChinesePredictiveL();
       
  1009     iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
  1010             EPeninputFingerHwrStatePredictSelectingCn );
       
  1011     }
       
  1012     
       
  1013     
       
  1014         
       
  1015 // -----------------------------------------------------------------------------
       
  1016 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnEntry()
       
  1017 // .
       
  1018 // -----------------------------------------------------------------------------
       
  1019 //
       
  1020 void CPeninputFingerHwrChineseStateCandidateSelecting::OnEntry()
       
  1021     {
       
  1022     }
       
  1023 
       
  1024 // -----------------------------------------------------------------------------
       
  1025 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnExit()
       
  1026 // .
       
  1027 // -----------------------------------------------------------------------------
       
  1028 //
       
  1029 void CPeninputFingerHwrChineseStateCandidateSelecting::OnExit()
       
  1030     {
       
  1031     
       
  1032     }
       
  1033 
       
  1034 
       
  1035 // ============================ MEMBER FUNCTIONS ===============================
       
  1036 //                     CPeninputFingerHwrStateHandlerPredictSelecting class
       
  1037 // -----------------------------------------------------------------------------
       
  1038 // CPeninputFingerHwrChineseStatePredictSelecting::
       
  1039 //                                CPeninputFingerHwrStateHandlerPredictSelecting()
       
  1040 // .
       
  1041 // -----------------------------------------------------------------------------
       
  1042 // 
       
  1043 CPeninputFingerHwrChineseStatePredictSelecting::
       
  1044     CPeninputFingerHwrChineseStatePredictSelecting( 
       
  1045 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
  1046 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
  1047     {
       
  1048     
       
  1049     }
       
  1050 
       
  1051 // -----------------------------------------------------------------------------
       
  1052 // CPeninputFingerHwrChineseStatePredictSelecting::NewL()
       
  1053 // .
       
  1054 // -----------------------------------------------------------------------------
       
  1055 // 
       
  1056 CPeninputFingerHwrChineseStatePredictSelecting*  
       
  1057     CPeninputFingerHwrChineseStatePredictSelecting::NewL( 
       
  1058 	CPeninputFingerHwrStateManagerCn& aStateManager )
       
  1059     {
       
  1060     CPeninputFingerHwrChineseStatePredictSelecting* self = new( ELeave ) 
       
  1061         CPeninputFingerHwrChineseStatePredictSelecting( aStateManager );
       
  1062     
       
  1063     return self;
       
  1064                                                                                 
       
  1065     }
       
  1066 
       
  1067 
       
  1068 // -----------------------------------------------------------------------------
       
  1069 // CPeninputFingerHwrChineseStatePredictSelecting::HandleEventL()
       
  1070 // .
       
  1071 // -----------------------------------------------------------------------------
       
  1072 //
       
  1073 void CPeninputFingerHwrChineseStatePredictSelecting::HandleEventL( const TInt aEventType, 
       
  1074     const TDesC& aEventData )
       
  1075     {
       
  1076     switch( aEventType )
       
  1077         {
       
  1078         case EHwrEventCandidateSelected:
       
  1079             {
       
  1080             OnSelectedCandidatesL(aEventData);
       
  1081             }
       
  1082             break;
       
  1083         case EHwrEventPredictiveSelected:
       
  1084             {
       
  1085             OnSelectedPredictivesL( aEventData );
       
  1086             }
       
  1087             break;
       
  1088         case EHwrEventKeyBack:
       
  1089             {
       
  1090             OnClickBackSpaceL();
       
  1091             }
       
  1092             break;
       
  1093         case EEventHwrStrokeStarted:
       
  1094             {
       
  1095             iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
  1096                 EPeninputFingerHwrStateWritingCn );
       
  1097             }
       
  1098             break;            
       
  1099         default:
       
  1100             break;
       
  1101         }    
       
  1102     }
       
  1103 
       
  1104 // -----------------------------------------------------------------------------
       
  1105 // CPeninputFingerHwrChineseStatePredictSelecting::OnSelectedCandidatesL()
       
  1106 // .
       
  1107 // -----------------------------------------------------------------------------
       
  1108 //
       
  1109 void CPeninputFingerHwrChineseStatePredictSelecting::OnSelectedCandidatesL( 
       
  1110     const TDesC& aEventData )
       
  1111     {
       
  1112     TPtrC ptr;
       
  1113     ptr.Set( aEventData.Left( aEventData.Length() - 1 ) );
       
  1114     iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
  1115     
       
  1116     // When select offen-use symbol, clear trigger string
       
  1117     iDataStore.TriggerStr()->DeleteAll();
       
  1118     }
       
  1119 
       
  1120 // -----------------------------------------------------------------------------
       
  1121 // CPeninputFingerHwrChineseStatePredictSelecting::OnSelectedCandidatesL()
       
  1122 // .
       
  1123 // -----------------------------------------------------------------------------
       
  1124 // 
       
  1125 void CPeninputFingerHwrChineseStatePredictSelecting::OnSelectedPredictivesL( 
       
  1126     const TDesC& aEventData )
       
  1127     {                                                        
       
  1128     TPtrC ptr;
       
  1129     ptr.Set( aEventData.Left( aEventData.Length() - 1 ) );
       
  1130     if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1131         {
       
  1132         HBufC* str = iDataStore.ConvertDisplayChars( ptr );
       
  1133         iStateManager.HwrLayout().SubmitStringToFep( *str );
       
  1134         delete str;
       
  1135         }
       
  1136     else
       
  1137         {
       
  1138         iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
  1139         }
       
  1140     
       
  1141     iDataStore.TriggerStr()->Append( ptr );
       
  1142     iDataStore.DoPredictiveL();
       
  1143     if( iDataStore.PredictiveCount() <= 0 )
       
  1144         {
       
  1145         iDataStore.TriggerStr()->DeleteAll();
       
  1146         iDataStore.SetFixChinesePredictiveL();     
       
  1147         }        
       
  1148     }
       
  1149 
       
  1150 // -----------------------------------------------------------------------------
       
  1151 // CPeninputFingerHwrChineseStatePredictSelecting::OnClickBackSpaceL()
       
  1152 // .
       
  1153 // -----------------------------------------------------------------------------
       
  1154 // 
       
  1155 void CPeninputFingerHwrChineseStatePredictSelecting::OnClickBackSpaceL()
       
  1156     {
       
  1157     iDataStore.TriggerStr()->DeleteLast();
       
  1158     if (iDataStore.TriggerStr()->IsEmpty())
       
  1159         {
       
  1160         iDataStore.SetChineseSymbolL();
       
  1161         iDataStore.SetFixChinesePredictiveL();
       
  1162         iStateManager.SetState( CPeninputFingerHwrStateManagerCn::
       
  1163                 EPeninputFingerHwrStatePredictSelectingCn );
       
  1164         }
       
  1165     else
       
  1166         {
       
  1167         iDataStore.DoPredictiveL();
       
  1168         if( iDataStore.PredictiveCount() <= 0 )
       
  1169                 {
       
  1170                 iDataStore.TriggerStr()->DeleteAll();
       
  1171                 iDataStore.SetFixChinesePredictiveL();     
       
  1172                 }
       
  1173         }
       
  1174     }
       
  1175 
       
  1176    
       
  1177 // -----------------------------------------------------------------------------
       
  1178 // CPeninputFingerHwrChineseStatePredictSelecting::OnEntry()
       
  1179 // .
       
  1180 // -----------------------------------------------------------------------------
       
  1181 //
       
  1182 void CPeninputFingerHwrChineseStatePredictSelecting::OnEntry()
       
  1183     {
       
  1184 
       
  1185     }
       
  1186 
       
  1187 // -----------------------------------------------------------------------------
       
  1188 // CPeninputFingerHwrChineseStatePredictSelecting::OnExit()
       
  1189 // .
       
  1190 // -----------------------------------------------------------------------------
       
  1191 //
       
  1192 void CPeninputFingerHwrChineseStatePredictSelecting::OnExit()
       
  1193     {
       
  1194     
       
  1195     }
       
  1196 
       
  1197 
       
  1198 
       
  1199 
       
  1200 // ============================ MEMBER FUNCTIONS ===============================
       
  1201 //                     CPeninputFingerHwrEnglishStateStandby class
       
  1202 // -----------------------------------------------------------------------------
       
  1203 // CPeninputFingerHwrEnglishStateStandby::CPeninputFingerHwrEnglishStateStandby()
       
  1204 // .
       
  1205 // -----------------------------------------------------------------------------
       
  1206 // 
       
  1207 CPeninputFingerHwrEnglishStateStandby::CPeninputFingerHwrEnglishStateStandby( 
       
  1208 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1209 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
  1210     {
       
  1211     
       
  1212     }
       
  1213 
       
  1214 // -----------------------------------------------------------------------------
       
  1215 // CPeninputFingerHwrEnglishStateStandby::NewL()
       
  1216 // .
       
  1217 // -----------------------------------------------------------------------------
       
  1218 // 
       
  1219 CPeninputFingerHwrEnglishStateStandby* CPeninputFingerHwrEnglishStateStandby::NewL( 
       
  1220 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1221     {
       
  1222     CPeninputFingerHwrEnglishStateStandby* self = new( ELeave ) 
       
  1223         CPeninputFingerHwrEnglishStateStandby( aStateManager );
       
  1224     
       
  1225     return self;                                                                           
       
  1226     }
       
  1227     
       
  1228 
       
  1229 // -----------------------------------------------------------------------------
       
  1230 // CPeninputFingerHwrEnglishStateStandby::HandleEventL()
       
  1231 // .
       
  1232 // -----------------------------------------------------------------------------
       
  1233 //
       
  1234 void CPeninputFingerHwrEnglishStateStandby::HandleEventL( const TInt aEventType, 
       
  1235     const TDesC& /*aEventData*/ )
       
  1236     {
       
  1237     switch( aEventType )
       
  1238         {
       
  1239         case EEventHwrStrokeStarted:
       
  1240             {
       
  1241             iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1242                 EPeninputFingerHwrStateWritingEn );
       
  1243             }
       
  1244             break;
       
  1245         default:
       
  1246             break;
       
  1247         }
       
  1248     }
       
  1249 
       
  1250 // -----------------------------------------------------------------------------
       
  1251 // CPeninputFingerHwrEnglishStateStandby::OnEntry()
       
  1252 // .
       
  1253 // -----------------------------------------------------------------------------
       
  1254 //
       
  1255 void CPeninputFingerHwrEnglishStateStandby::OnEntry()
       
  1256     {
       
  1257     iDataStore.TriggerStr()->DeleteAll();    
       
  1258     }
       
  1259 
       
  1260 // -----------------------------------------------------------------------------
       
  1261 // CPeninputFingerHwrEnglishStateStandby::OnExit()
       
  1262 // .
       
  1263 // -----------------------------------------------------------------------------
       
  1264 //
       
  1265 void CPeninputFingerHwrEnglishStateStandby::OnExit()
       
  1266     {
       
  1267     }
       
  1268 
       
  1269 
       
  1270 // ============================ MEMBER FUNCTIONS ===============================
       
  1271 //                     CPeninputFingerHwrEnglishStateWriting class
       
  1272 // -----------------------------------------------------------------------------
       
  1273 // CPeninputFingerHwrEnglishStateWriting::CPeninputFingerHwrEnglishStateWriting()
       
  1274 // .
       
  1275 // -----------------------------------------------------------------------------
       
  1276 // 
       
  1277 CPeninputFingerHwrEnglishStateWriting::CPeninputFingerHwrEnglishStateWriting( 
       
  1278 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1279 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
  1280     {
       
  1281     
       
  1282     }
       
  1283 
       
  1284 // -----------------------------------------------------------------------------
       
  1285 // CPeninputFingerHwrEnglishStateWriting::NewL()
       
  1286 // .
       
  1287 // -----------------------------------------------------------------------------
       
  1288 // 
       
  1289 CPeninputFingerHwrEnglishStateWriting* CPeninputFingerHwrEnglishStateWriting::NewL( 
       
  1290 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1291     {
       
  1292     CPeninputFingerHwrEnglishStateWriting* self = new( ELeave ) 
       
  1293         CPeninputFingerHwrEnglishStateWriting( aStateManager );
       
  1294     
       
  1295     return self;                                                                            
       
  1296     }
       
  1297     
       
  1298 
       
  1299 // -----------------------------------------------------------------------------
       
  1300 // CPeninputFingerHwrStateHandlerWriting::HandleEventL()
       
  1301 // .
       
  1302 // -----------------------------------------------------------------------------
       
  1303 //
       
  1304 void CPeninputFingerHwrEnglishStateWriting::HandleEventL( const TInt aEventType, 
       
  1305     const TDesC& aEventData )
       
  1306     {
       
  1307     switch( aEventType )
       
  1308         {
       
  1309         case EEventHwrStrokeFinished:
       
  1310             {
       
  1311             OnEndStrokeL( aEventData );           
       
  1312             }
       
  1313             break;       
       
  1314         case EEventHwrCharacterTimerOut:
       
  1315             {
       
  1316             OnEndWritingL( aEventData );
       
  1317             }
       
  1318             break;
       
  1319         case EHwrEventCandidateSelected:
       
  1320             {
       
  1321             OnSelectedCandidatesL(aEventData);
       
  1322             }    
       
  1323             break;             
       
  1324         case EHwrEventPredictiveSelected:
       
  1325             {
       
  1326             OnSelectedPredictivesL(aEventData);
       
  1327             }
       
  1328             break;    
       
  1329         case EHwrEventKeyBack:
       
  1330             {
       
  1331             OnClickBackSpaceL();
       
  1332             }
       
  1333             break;
       
  1334         default:
       
  1335             break;
       
  1336         }
       
  1337     }
       
  1338 
       
  1339 // -----------------------------------------------------------------------------
       
  1340 // CPeninputFingerHwrEnglishStateWriting::OnEndStrokeL()
       
  1341 // .
       
  1342 // -----------------------------------------------------------------------------
       
  1343 //
       
  1344 void CPeninputFingerHwrEnglishStateWriting::OnEndStrokeL( const TDesC& aEventData )
       
  1345 	{
       
  1346 	const RArray<TPoint>* aTraceData = ( RArray<TPoint>* )aEventData.Ptr();
       
  1347     iDataStore.DoEngRecognizeL( *aTraceData );
       
  1348 	}
       
  1349 
       
  1350 // -----------------------------------------------------------------------------
       
  1351 // CPeninputFingerHwrEnglishStateWriting::OnEndWriting()
       
  1352 // .
       
  1353 // -----------------------------------------------------------------------------
       
  1354 //
       
  1355 void CPeninputFingerHwrEnglishStateWriting::OnEndWritingL( const TDesC& aEventData )
       
  1356 	{
       
  1357 	const RArray<TPoint>* aTraceData = ( RArray<TPoint>* )aEventData.Ptr();
       
  1358     
       
  1359     // set the default cell highlight flag
       
  1360     iDataStore.SetHighlight(ETrue);
       
  1361     
       
  1362 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1363     // the first dropdown list will show writing candidate
       
  1364     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
  1365 #else
       
  1366     // the second dropdown list will show writing canidate
       
  1367     RPointerArray<HBufC> candidates = iDataStore.Predictive();
       
  1368 #endif //RD_INTELLIGENT_TEXT_INPUT
       
  1369     
       
  1370     if ( candidates.Count() > 0 )
       
  1371         {
       
  1372         HBufC* defaultCandiate = candidates[0];
       
  1373         
       
  1374         if( iDataStore.IsSpecialDisplayChars( *defaultCandiate ) )
       
  1375             {
       
  1376             HBufC* realCandidate = iDataStore.ConvertDisplayChars( *defaultCandiate );
       
  1377             iStateManager.HwrLayout().SubmitStringToFep( *realCandidate );
       
  1378             delete realCandidate;
       
  1379             }
       
  1380         else
       
  1381             {
       
  1382             iStateManager.HwrLayout().SubmitStringToFep( *defaultCandiate );
       
  1383             }
       
  1384         //check if the default candidate is need to be sent directly
       
  1385         if( iDataStore.IsDirectlySentCandidate( *defaultCandiate ) )
       
  1386             {               
       
  1387             iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1388                 EPeninputFingerHwrStateStandbyEn );
       
  1389             }
       
  1390         else
       
  1391             {                                
       
  1392             iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1393                 EPeninputFingerHwrStateCandidateSelectingEn );  
       
  1394             }        
       
  1395         
       
  1396         }    
       
  1397 	}
       
  1398 
       
  1399 // -----------------------------------------------------------------------------
       
  1400 // CPeninputFingerHwrEnglishStateWriting::OnClickBackSpaceL()
       
  1401 // .
       
  1402 // -----------------------------------------------------------------------------
       
  1403 //	
       
  1404 void CPeninputFingerHwrEnglishStateWriting::OnClickBackSpaceL()
       
  1405     {
       
  1406 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1407     // delete the last char in trigger string
       
  1408     iDataStore.TriggerStr()->DeleteLast();
       
  1409     
       
  1410     // Get auto complete candidate from engine 
       
  1411     // by the new trigger string
       
  1412     iDataStore.DoPredictiveL();
       
  1413     
       
  1414     // Show fix symbol in the first dropdown list
       
  1415     iDataStore.SetFixEnglishSymbolL(ERowOne);
       
  1416     iDataStore.SetHighlight(EFalse);        
       
  1417     
       
  1418     iStateManager.SetState( 
       
  1419             CPeninputFingerHwrStateManagerEn::EPeninputFingerHwrStatePredictSelectingEn );       
       
  1420 #else
       
  1421     // Show two row fix symbol
       
  1422     iDataStore.SetFixEnglishSymbolL(ERowTwo);
       
  1423     iStateManager.HwrLayout().HideTwoRowEngSymbolList(EFalse);
       
  1424 #endif
       
  1425     }
       
  1426 
       
  1427 
       
  1428 	
       
  1429 // -----------------------------------------------------------------------------
       
  1430 // CPeninputFingerHwrEnglishStateWriting::OnSelectedCandidatesL()
       
  1431 // .
       
  1432 // -----------------------------------------------------------------------------
       
  1433 //	
       
  1434 void CPeninputFingerHwrEnglishStateWriting::OnSelectedCandidatesL( 
       
  1435     const TDesC& aEventData )
       
  1436     {
       
  1437     TPtrC ptr;
       
  1438     ptr.Set( ( aEventData.Left( aEventData.Length() - 1 ) ) );   
       
  1439     
       
  1440 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1441     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
  1442     HBufC* defaultCandidate = candidates[0];
       
  1443 
       
  1444     if( *defaultCandidate != ptr )
       
  1445         {
       
  1446         if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1447             {
       
  1448             HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
  1449             iStateManager.HwrLayout().SubmitStringToFep(realCandidate->Des());
       
  1450 
       
  1451             delete realCandidate;
       
  1452             }
       
  1453         else
       
  1454             {
       
  1455             iStateManager.HwrLayout().SubmitStringToFep(ptr);        
       
  1456             }        
       
  1457         
       
  1458         // Set the trigger string in different condition
       
  1459         if(!iDataStore.IsEnglishLetter(ptr))
       
  1460             {
       
  1461             iStateManager.HwrLayout().SubmitStartPosToFep(ETrue);            
       
  1462             iDataStore.TriggerStr()->Set(ptr);
       
  1463             }
       
  1464         else
       
  1465             {
       
  1466             iDataStore.TriggerStr()->DeleteLast();
       
  1467             iDataStore.TriggerStr()->Append(ptr);
       
  1468             }
       
  1469         
       
  1470         // according to new trigger string to get auto complete candidate.
       
  1471         iDataStore.DoPredictiveL();
       
  1472         
       
  1473         }
       
  1474     // Set the first dropdown list content
       
  1475     iDataStore.SetFixEnglishSymbolL();
       
  1476     
       
  1477     // Not highlight the default writing candidate.
       
  1478     iDataStore.SetHighlight(EFalse);
       
  1479     
       
  1480     iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1481     EPeninputFingerHwrStatePredictSelectingEn );         
       
  1482         
       
  1483 #else
       
  1484     if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1485         {
       
  1486         HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
  1487         iStateManager.HwrLayout().SubmitStringToFep( realCandidate->Des() );
       
  1488         delete realCandidate;
       
  1489         }    
       
  1490     else
       
  1491         {
       
  1492         iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
  1493         }
       
  1494     
       
  1495     // Set two dropdown list content and show them
       
  1496     iDataStore.SetFixEnglishSymbolL(ERowTwo);
       
  1497     iStateManager.HwrLayout().HideTwoRowEngSymbolList(EFalse);
       
  1498     
       
  1499     iStateManager.SetState( 
       
  1500         CPeninputFingerHwrStateManagerEn::
       
  1501         EPeninputFingerHwrStateCandidateSelectingEn );
       
  1502 #endif //  RD_INTELLIGENT_TEXT_INPUT
       
  1503     
       
  1504     }	
       
  1505 
       
  1506 // -----------------------------------------------------------------------------
       
  1507 // CPeninputFingerHwrEnglishStateWriting::OnSelectedPredictivesL()
       
  1508 // .
       
  1509 // -----------------------------------------------------------------------------
       
  1510 //	
       
  1511 void CPeninputFingerHwrEnglishStateWriting::OnSelectedPredictivesL(
       
  1512     const TDesC& aEventData )
       
  1513     {    
       
  1514     TPtrC ptr;
       
  1515     ptr.Set( ( aEventData.Left( aEventData.Length() - 1 ) ) );
       
  1516     
       
  1517 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1518     TPtrC string = iDataStore.TriggerStr()->GetString();
       
  1519     // replace all the trigger string that has been submitted into ICF
       
  1520     iStateManager.HwrLayout().Replace(string, ptr);
       
  1521     iStateManager.HwrLayout().SubmitStringToFep(KDisplaySpace);
       
  1522     
       
  1523     // Set the first dropdown list content and not hightlight the
       
  1524     // first cell
       
  1525     iDataStore.SetFixEnglishSymbolL();
       
  1526     iDataStore.SetHighlight(EFalse);
       
  1527     
       
  1528     iDataStore.ClearPredictive();
       
  1529     iDataStore.TriggerStr()->DeleteAll();
       
  1530     
       
  1531     iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1532         EPeninputFingerHwrStatePredictSelectingEn );
       
  1533 
       
  1534 #else
       
  1535     RPointerArray<HBufC> candidates = iDataStore.Predictive();
       
  1536 
       
  1537     //handle special display char
       
  1538     if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1539         {
       
  1540         HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
  1541         iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
  1542         delete realCandidate;
       
  1543         }
       
  1544     else
       
  1545         {
       
  1546         iStateManager.HwrLayout().SubmitStringToFep( ptr );         
       
  1547         } 
       
  1548     
       
  1549     // Set the two dropdown list content
       
  1550     iDataStore.SetFixEnglishSymbolL(ERowTwo);
       
  1551     iStateManager.HwrLayout().HideTwoRowEngSymbolList(EFalse);
       
  1552     
       
  1553     iStateManager.SetState( 
       
  1554         CPeninputFingerHwrStateManagerEn::
       
  1555         EPeninputFingerHwrStateCandidateSelectingEn );     
       
  1556 #endif
       
  1557     }
       
  1558 
       
  1559 
       
  1560 
       
  1561 // -----------------------------------------------------------------------------
       
  1562 // CPeninputFingerHwrStateHandlerWriting::OnEntry()
       
  1563 // .
       
  1564 // -----------------------------------------------------------------------------
       
  1565 //
       
  1566 void CPeninputFingerHwrEnglishStateWriting::OnEntry()
       
  1567     {
       
  1568      
       
  1569     }
       
  1570 
       
  1571 // -----------------------------------------------------------------------------
       
  1572 // CPeninputFingerHwrStateHandlerWriting::OnExit()
       
  1573 // .
       
  1574 // -----------------------------------------------------------------------------
       
  1575 //
       
  1576 void CPeninputFingerHwrEnglishStateWriting::OnExit()
       
  1577     {
       
  1578     
       
  1579     }
       
  1580 
       
  1581 
       
  1582 // ============================ MEMBER FUNCTIONS ===============================
       
  1583 //                     CPeninputFingerHwrEnglishStateCandidateSelecting class
       
  1584 // -----------------------------------------------------------------------------
       
  1585 // CPeninputFingerHwrEnglishStateCandidateSelecting::
       
  1586 //                              CPeninputFingerHwrEnglishStateCandidateSelecting()
       
  1587 // .
       
  1588 // -----------------------------------------------------------------------------
       
  1589 // 
       
  1590 CPeninputFingerHwrEnglishStateCandidateSelecting::
       
  1591     CPeninputFingerHwrEnglishStateCandidateSelecting( 
       
  1592 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1593 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
  1594     {
       
  1595     
       
  1596     }
       
  1597 
       
  1598 // -----------------------------------------------------------------------------
       
  1599 // CPeninputFingerHwrEnglishStateCandidateSelecting::NewL()
       
  1600 // .
       
  1601 // -----------------------------------------------------------------------------
       
  1602 // 
       
  1603 CPeninputFingerHwrEnglishStateCandidateSelecting* 
       
  1604     CPeninputFingerHwrEnglishStateCandidateSelecting::NewL( 
       
  1605 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1606     {
       
  1607     CPeninputFingerHwrEnglishStateCandidateSelecting* self = new( ELeave ) 
       
  1608         CPeninputFingerHwrEnglishStateCandidateSelecting( aStateManager );
       
  1609     
       
  1610     return self;                                                                                
       
  1611     }
       
  1612     
       
  1613 
       
  1614 // -----------------------------------------------------------------------------
       
  1615 // CPeninputFingerHwrEnglishStateCandidateSelecting::HandleEventL()
       
  1616 // .
       
  1617 // -----------------------------------------------------------------------------
       
  1618 //
       
  1619 void CPeninputFingerHwrEnglishStateCandidateSelecting::HandleEventL( const TInt aEventType, 
       
  1620     const TDesC& aEventData )
       
  1621     {
       
  1622     switch( aEventType )
       
  1623         {
       
  1624         case EHwrEventCandidateSelected:
       
  1625             {
       
  1626             OnSelectedCandidatesL( aEventData );
       
  1627             }
       
  1628             break;     
       
  1629         case EHwrEventPredictiveSelected:
       
  1630             {
       
  1631             OnSelectedPredictivesL( aEventData );
       
  1632             }
       
  1633             break;
       
  1634         case EHwrEventKeyBack:
       
  1635             {
       
  1636             OnClickBackSpaceL();
       
  1637             }
       
  1638             break;            
       
  1639         case EEventHwrStrokeStarted: 
       
  1640             {
       
  1641             iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1642                 EPeninputFingerHwrStateWritingEn );
       
  1643             }
       
  1644             break;
       
  1645         default:
       
  1646             break;
       
  1647         }
       
  1648     
       
  1649     }
       
  1650 
       
  1651 // -----------------------------------------------------------------------------
       
  1652 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnSelectedCandidatesL()
       
  1653 // .
       
  1654 // -----------------------------------------------------------------------------
       
  1655 //    
       
  1656 void CPeninputFingerHwrEnglishStateCandidateSelecting::OnSelectedCandidatesL( 
       
  1657     const TDesC& aEventData )
       
  1658     {
       
  1659     TPtrC ptr;
       
  1660     ptr.Set( aEventData.Left( aEventData.Length() - 1 ) );
       
  1661 
       
  1662 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1663     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
  1664     HBufC* defaultCandidate = candidates[0];
       
  1665 
       
  1666     if( *defaultCandidate != ptr )
       
  1667         {
       
  1668         if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1669             {
       
  1670             HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
  1671             iStateManager.HwrLayout().Replace( *defaultCandidate, 
       
  1672                 *realCandidate, ETrue );
       
  1673             delete realCandidate;
       
  1674             }
       
  1675         else
       
  1676             {
       
  1677             iStateManager.HwrLayout().Replace( *defaultCandidate, ptr, ETrue );         
       
  1678             }        
       
  1679         
       
  1680         // update trigger string in different condition
       
  1681         if(!iDataStore.IsEnglishLetter(ptr))
       
  1682             {
       
  1683             iStateManager.HwrLayout().SubmitStartPosToFep(ETrue);            
       
  1684             iDataStore.TriggerStr()->Set(ptr);
       
  1685             }
       
  1686         else
       
  1687             {
       
  1688             iDataStore.TriggerStr()->DeleteLast();
       
  1689             iDataStore.TriggerStr()->Append(ptr);
       
  1690             }
       
  1691         
       
  1692         iDataStore.DoPredictiveL();
       
  1693         
       
  1694         }
       
  1695     // Set the first dropdown list content and not highlight 
       
  1696     // the first cell
       
  1697     iDataStore.SetFixEnglishSymbolL();
       
  1698     iDataStore.SetHighlight(EFalse);
       
  1699     
       
  1700     iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1701     EPeninputFingerHwrStatePredictSelectingEn );         
       
  1702         
       
  1703 
       
  1704 #else
       
  1705     if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1706         {
       
  1707         HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
  1708         iStateManager.HwrLayout().SubmitStringToFep( realCandidate->Des() );
       
  1709         delete realCandidate;
       
  1710         }
       
  1711     else
       
  1712         {
       
  1713         iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
  1714         }
       
  1715     
       
  1716     iDataStore.SetFixEnglishSymbolL(ERowTwo);
       
  1717     iStateManager.HwrLayout().HideTwoRowEngSymbolList(EFalse);
       
  1718     
       
  1719 #endif     
       
  1720     }
       
  1721 
       
  1722 // -----------------------------------------------------------------------------
       
  1723 // CPeninputFingerHwrEnglishStateCandidateSelecting::OnSelectedPredictivesL()
       
  1724 // .
       
  1725 // -----------------------------------------------------------------------------
       
  1726 // 
       
  1727 void CPeninputFingerHwrEnglishStateCandidateSelecting::OnSelectedPredictivesL( 
       
  1728     const TDesC& aEventData)
       
  1729     {                                                        
       
  1730     TPtrC ptr;
       
  1731     ptr.Set(( aEventData.Left( aEventData.Length() - 1 )));
       
  1732     
       
  1733 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1734     // for auto complete, replace all the trigger string    
       
  1735     TPtrC string = iDataStore.TriggerStr()->GetString();
       
  1736     iStateManager.HwrLayout().Replace(string, ptr);
       
  1737     iStateManager.HwrLayout().SubmitStringToFep(KDisplaySpace);
       
  1738     iDataStore.SetFixEnglishSymbolL();
       
  1739     iDataStore.SetHighlight(EFalse);
       
  1740     
       
  1741     iDataStore.ClearPredictive();
       
  1742     iDataStore.TriggerStr()->DeleteAll();
       
  1743     
       
  1744     iStateManager.SetState( CPeninputFingerHwrStateManagerEn::
       
  1745         EPeninputFingerHwrStatePredictSelectingEn );    
       
  1746 #else
       
  1747     // for normal English recognition, the second dropdownlist show candidates
       
  1748     RPointerArray<HBufC> candidates = iDataStore.Candidate();
       
  1749     HBufC* defaultCandidate = candidates[0];
       
  1750     
       
  1751     if( *defaultCandidate != ptr )
       
  1752         {
       
  1753         //handle special display char
       
  1754         if( iDataStore.IsSpecialDisplayChars( ptr ) )
       
  1755             {
       
  1756             HBufC* realCandidate = iDataStore.ConvertDisplayChars( ptr );
       
  1757             iStateManager.HwrLayout().Replace( *defaultCandidate, 
       
  1758                 *realCandidate );
       
  1759             delete realCandidate;
       
  1760             }
       
  1761         else
       
  1762             {
       
  1763             iStateManager.HwrLayout().Replace( *defaultCandidate, ptr );         
       
  1764             }
       
  1765         }
       
  1766              
       
  1767      iDataStore.SetFixEnglishSymbolL(ERowTwo);
       
  1768      iStateManager.HwrLayout().HideTwoRowEngSymbolList(EFalse);         
       
  1769 #endif // RD_INTELLIGENT_TEXT_INPUT
       
  1770 
       
  1771     }
       
  1772 
       
  1773 // -----------------------------------------------------------------------------
       
  1774 // CPeninputFingerHwrEnglishStateCandidateSelecting::OnClickBackSpaceL()
       
  1775 // .
       
  1776 // -----------------------------------------------------------------------------
       
  1777 // 
       
  1778 void CPeninputFingerHwrEnglishStateCandidateSelecting::OnClickBackSpaceL()
       
  1779     {
       
  1780 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1781     // delete the last char in trigger string
       
  1782     iDataStore.TriggerStr()->DeleteLast();
       
  1783     
       
  1784     // Get auto complete candidate from engine 
       
  1785     // by the new trigger string
       
  1786     iDataStore.DoPredictiveL();
       
  1787     
       
  1788     // Show fix symbol in the first dropdown list
       
  1789     iDataStore.SetFixEnglishSymbolL(ERowOne);
       
  1790     iDataStore.SetHighlight(EFalse);        
       
  1791     
       
  1792     iStateManager.SetState( 
       
  1793             CPeninputFingerHwrStateManagerEn::EPeninputFingerHwrStatePredictSelectingEn );       
       
  1794 #else
       
  1795     // Show two row fix symbol
       
  1796     iDataStore.SetFixEnglishSymbolL(ERowTwo);
       
  1797     iStateManager.HwrLayout().HideTwoRowEngSymbolList(EFalse);
       
  1798 #endif
       
  1799     }
       
  1800   
       
  1801       
       
  1802 // -----------------------------------------------------------------------------
       
  1803 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnEntry()
       
  1804 // .
       
  1805 // -----------------------------------------------------------------------------
       
  1806 //
       
  1807 void CPeninputFingerHwrEnglishStateCandidateSelecting::OnEntry()
       
  1808     {
       
  1809     
       
  1810     }
       
  1811 
       
  1812 // -----------------------------------------------------------------------------
       
  1813 // CPeninputFingerHwrStateHandlerCandidateSelecting::OnExit()
       
  1814 // .
       
  1815 // -----------------------------------------------------------------------------
       
  1816 //
       
  1817 void CPeninputFingerHwrEnglishStateCandidateSelecting::OnExit()
       
  1818     {
       
  1819     
       
  1820     }
       
  1821 
       
  1822 #ifdef RD_INTELLIGENT_TEXT_INPUT
       
  1823 
       
  1824 // ============================ MEMBER FUNCTIONS ===============================
       
  1825 //                     CPeninputFingerHwrEnglishStatePredictSelecting class
       
  1826 // -----------------------------------------------------------------------------
       
  1827 // CPeninputFingerHwrEnglishStatePredictSelecting::
       
  1828 //                                CPeninputFingerHwrEnglishStatePredictSelecting()
       
  1829 // .
       
  1830 // -----------------------------------------------------------------------------
       
  1831 // 
       
  1832 CPeninputFingerHwrEnglishStatePredictSelecting::
       
  1833     CPeninputFingerHwrEnglishStatePredictSelecting( 
       
  1834 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1835 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
  1836     {
       
  1837     
       
  1838     }
       
  1839 
       
  1840 // -----------------------------------------------------------------------------
       
  1841 // CPeninputFingerHwrEnglishStatePredictSelecting::NewL()
       
  1842 // .
       
  1843 // -----------------------------------------------------------------------------
       
  1844 // 
       
  1845 CPeninputFingerHwrEnglishStatePredictSelecting*  
       
  1846     CPeninputFingerHwrEnglishStatePredictSelecting::NewL( 
       
  1847 	CPeninputFingerHwrStateManagerEn& aStateManager )
       
  1848     {
       
  1849     CPeninputFingerHwrEnglishStatePredictSelecting* self = new( ELeave ) 
       
  1850         CPeninputFingerHwrEnglishStatePredictSelecting( aStateManager );
       
  1851     
       
  1852     return self;                                                                      
       
  1853     }
       
  1854     
       
  1855 
       
  1856 // -----------------------------------------------------------------------------
       
  1857 // CPeninputFingerHwrEnglishStatePredictSelecting::HandleEventL()
       
  1858 // .
       
  1859 // -----------------------------------------------------------------------------
       
  1860 //
       
  1861 void CPeninputFingerHwrEnglishStatePredictSelecting::HandleEventL( const TInt aEventType, 
       
  1862     const TDesC& aEventData )
       
  1863     {
       
  1864     switch( aEventType )
       
  1865         {
       
  1866         case EHwrEventCandidateSelected:
       
  1867             {
       
  1868             OnSelectedCandidatesL(aEventData);
       
  1869             }
       
  1870             break;
       
  1871         case EHwrEventPredictiveSelected:
       
  1872             {
       
  1873             OnSelectedPredictivesL( aEventData );
       
  1874             }
       
  1875             break;
       
  1876         case EHwrEventKeyBack:
       
  1877             {            
       
  1878             OnClickBackSpaceL();   
       
  1879             }
       
  1880             break;   
       
  1881         case EEventHwrStrokeStarted:  
       
  1882             {
       
  1883             iStateManager.SetState( 
       
  1884                 CPeninputFingerHwrStateManagerEn::EPeninputFingerHwrStateWritingEn );
       
  1885             }
       
  1886             break;
       
  1887         default:
       
  1888             break;
       
  1889         }    
       
  1890     }
       
  1891 
       
  1892 // -----------------------------------------------------------------------------
       
  1893 // CPeninputFingerHwrEnglishStatePredictSelecting::OnSelectedCandidatesL()
       
  1894 // .
       
  1895 // -----------------------------------------------------------------------------
       
  1896 //
       
  1897 void CPeninputFingerHwrEnglishStatePredictSelecting::OnSelectedCandidatesL( 
       
  1898     const TDesC& aEventData )
       
  1899     {
       
  1900     TPtrC ptr;
       
  1901     ptr.Set(( aEventData.Left( aEventData.Length() - 1 )));      
       
  1902     iStateManager.HwrLayout().SubmitStringToFep( ptr );
       
  1903     iStateManager.HwrLayout().SubmitStartPosToFep(EFalse);
       
  1904     
       
  1905     
       
  1906     // in fact, just get an empty auto complete candidate
       
  1907     // because the prt is punc.
       
  1908     iDataStore.TriggerStr()->Set(ptr);
       
  1909     iDataStore.DoPredictiveL();        
       
  1910     }
       
  1911 
       
  1912 // -----------------------------------------------------------------------------
       
  1913 // CPeninputFingerHwrEnglishStatePredictSelecting::OnSelectedPredictivesL()
       
  1914 // .
       
  1915 // -----------------------------------------------------------------------------
       
  1916 // 
       
  1917 void CPeninputFingerHwrEnglishStatePredictSelecting::OnSelectedPredictivesL( 
       
  1918     const TDesC& aEventData )
       
  1919     {
       
  1920     TPtrC ptr;
       
  1921     ptr.Set(( aEventData.Left( aEventData.Length() - 1 )));
       
  1922 
       
  1923     TPtrC string = iDataStore.TriggerStr()->GetString();
       
  1924     // replace all the trigger string that have been submitted into ICF.
       
  1925     iStateManager.HwrLayout().Replace(string, ptr);
       
  1926     iStateManager.HwrLayout().SubmitStringToFep(KDisplaySpace);
       
  1927     iDataStore.ClearPredictive();
       
  1928     iDataStore.TriggerStr()->DeleteAll();   
       
  1929     }
       
  1930 
       
  1931 // -----------------------------------------------------------------------------
       
  1932 // CPeninputFingerHwrEnglishStatePredictSelecting::OnClickBackSpaceL()
       
  1933 // .
       
  1934 // -----------------------------------------------------------------------------
       
  1935 // 
       
  1936 void CPeninputFingerHwrEnglishStatePredictSelecting::OnClickBackSpaceL()
       
  1937     {
       
  1938     // delete the last char in trigger string and get auto complete candidate
       
  1939     iDataStore.TriggerStr()->DeleteLast();
       
  1940     iDataStore.DoPredictiveL();
       
  1941     
       
  1942     if( iDataStore.PredictiveCount() <= 0 )
       
  1943         {
       
  1944         iDataStore.TriggerStr()->DeleteAll();     
       
  1945         }    
       
  1946     }    
       
  1947     
       
  1948 // -----------------------------------------------------------------------------
       
  1949 // CPeninputFingerHwrEnglishStatePredictSelecting::OnEntry()
       
  1950 // .
       
  1951 // -----------------------------------------------------------------------------
       
  1952 //
       
  1953 void CPeninputFingerHwrEnglishStatePredictSelecting::OnEntry()
       
  1954     {
       
  1955 
       
  1956     }
       
  1957 
       
  1958 // -----------------------------------------------------------------------------
       
  1959 // CPeninputFingerHwrEnglishStatePredictSelecting::OnExit()
       
  1960 // .
       
  1961 // -----------------------------------------------------------------------------
       
  1962 //
       
  1963 void CPeninputFingerHwrEnglishStatePredictSelecting::OnExit()
       
  1964     {
       
  1965     
       
  1966     }
       
  1967 
       
  1968 #endif // RD_INTELLIGENT_TEXT_INPUT
       
  1969 
       
  1970 
       
  1971 // ============================ MEMBER FUNCTIONS ===============================
       
  1972 //                     CPeninputFingerHwrEnglishStateStandby class
       
  1973 // -----------------------------------------------------------------------------
       
  1974 // CPeninputFingerHwrNumericStateStandby::CPeninputFingerHwrNumericStateStandby()
       
  1975 // .
       
  1976 // -----------------------------------------------------------------------------
       
  1977 // 
       
  1978 CPeninputFingerHwrNumericStateStandby::CPeninputFingerHwrNumericStateStandby( 
       
  1979 	CPeninputFingerHwrStateManagerNum& aStateManager )
       
  1980 	:CPeninputFingerHwrStateHandlerBase( aStateManager )
       
  1981     {
       
  1982     
       
  1983     }
       
  1984 
       
  1985 // -----------------------------------------------------------------------------
       
  1986 // CPeninputFingerHwrNumericStateStandby::NewL()
       
  1987 // .
       
  1988 // -----------------------------------------------------------------------------
       
  1989 // 
       
  1990 CPeninputFingerHwrNumericStateStandby* CPeninputFingerHwrNumericStateStandby::NewL( 
       
  1991 	CPeninputFingerHwrStateManagerNum& aStateManager )
       
  1992     {
       
  1993     CPeninputFingerHwrNumericStateStandby* self = new( ELeave ) 
       
  1994         CPeninputFingerHwrNumericStateStandby( aStateManager );
       
  1995     
       
  1996     return self;
       
  1997                                                                                 
       
  1998     }
       
  1999     
       
  2000 
       
  2001 // -----------------------------------------------------------------------------
       
  2002 // CPeninputFingerHwrNumericStateStandby::HandleEventL()
       
  2003 // .
       
  2004 // -----------------------------------------------------------------------------
       
  2005 //
       
  2006 void CPeninputFingerHwrNumericStateStandby::HandleEventL( const TInt /*aEventType*/, 
       
  2007     const TDesC& /*aEventData*/ )
       
  2008     {
       
  2009     }
       
  2010 
       
  2011 // -----------------------------------------------------------------------------
       
  2012 // CPeninputFingerHwrNumericStateStandby::OnEntry()
       
  2013 // .
       
  2014 // -----------------------------------------------------------------------------
       
  2015 //
       
  2016 void CPeninputFingerHwrNumericStateStandby::OnEntry()
       
  2017     {
       
  2018     iDataStore.TriggerStr()->DeleteAll();
       
  2019     
       
  2020 #ifdef RD_INTELLIGENT_TEXT_INPUT 
       
  2021     iStateManager.HwrLayout().SubmitStartPosToFep(EFalse);
       
  2022 #endif // RD_INTELLIGENT_TEXT_INPUT    
       
  2023     }
       
  2024 
       
  2025 // -----------------------------------------------------------------------------
       
  2026 // CPeninputFingerHwrNumericStateStandby::OnExit()
       
  2027 // .
       
  2028 // -----------------------------------------------------------------------------
       
  2029 //
       
  2030 void CPeninputFingerHwrNumericStateStandby::OnExit()
       
  2031     {
       
  2032     
       
  2033     }
       
  2034 
       
  2035 //End of file