idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp
branchRCL_3
changeset 11 ff572dfe6d86
parent 9 f966699dea19
child 12 9674c1a575e9
equal deleted inserted replaced
9:f966699dea19 11:ff572dfe6d86
    48 #include "c_xnutils.h"
    48 #include "c_xnutils.h"
    49 #include "xntexteditor.h" 
    49 #include "xntexteditor.h" 
    50 
    50 
    51 const TInt KMaxLength = 100;
    51 const TInt KMaxLength = 100;
    52 
    52 
       
    53 enum TSplitInputState
       
    54     {
       
    55     ESplitInputDisabled = 0,   
       
    56     ESplitInputClosed,
       
    57     ESplitInputOpen,
       
    58     ESplitInputRemoveFromStack         
       
    59     };
       
    60 
    53 _LIT8( KCpsPublishing, "cpspublishing" );
    61 _LIT8( KCpsPublishing, "cpspublishing" );
    54 _LIT8( KMaxLineAmount, "max-line-amount" );
    62 _LIT8( KMaxLineAmount, "max-line-amount" );
    55 _LIT8( KMaxCharAmount, "max-char-amount" );
    63 _LIT8( KMaxCharAmount, "max-char-amount" );
    56 _LIT8( KEnablePartialInput, "splitinputenabled" );
    64 _LIT8( KEnablePartialInput, "splitinputenabled" );
    57 
    65 
   173     
   181     
   174     iEditor->SetSuppressBackgroundDrawing( ETrue );
   182     iEditor->SetSuppressBackgroundDrawing( ETrue );
   175 
   183 
   176     // Enable partial Screen
   184     // Enable partial Screen
   177     CXnProperty* enablepartialinput( iNode.GetPropertyL( KEnablePartialInput ) );
   185     CXnProperty* enablepartialinput( iNode.GetPropertyL( KEnablePartialInput ) );
   178     iPartialInputEnabled = EFalse;
   186     iSplitInputState = ESplitInputDisabled;
   179     iPartialInputOpen = EFalse;
       
   180      
   187      
   181     if ( enablepartialinput && 
   188     if ( enablepartialinput && 
   182          enablepartialinput->StringValue() == XnPropertyNames::KTrue )
   189          enablepartialinput->StringValue() == XnPropertyNames::KTrue )
   183         {
   190         {
   184         iEditor->SetAknEditorFlags( EAknEditorFlagEnablePartialScreen );
   191         iEditor->SetAknEditorFlags( EAknEditorFlagEnablePartialScreen );
   185         iPartialInputEnabled = ETrue;
   192         iSplitInputState = ESplitInputClosed;
   186         }
   193         }
   187     
   194     
   188     iEditor->SetObserver( this );
   195     iEditor->SetObserver( this );
   189                                         
   196                                         
   190     // Default not focused                                  
   197     // Default not focused                                  
   308 
   315 
   309     if ( isFocused )
   316     if ( isFocused )
   310         {      
   317         {      
   311         value = EPSAiDontForwardNumericKeysToPhone;
   318         value = EPSAiDontForwardNumericKeysToPhone;
   312 
   319 
   313         if( !iPartialInputEnabled )
   320         if( iSplitInputState == ESplitInputDisabled )
   314             {
   321             {
   315             TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) );            
   322             TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) );            
   316             // AddToStackL calls iEditor->SetFocus( ETrue ); 
   323             // AddToStackL calls iEditor->SetFocus( ETrue ); 
   317             }
   324             }
   318 
   325         else if( iSplitInputState == ESplitInputClosed )
       
   326             {
       
   327             iUiEngine->EnablePartialTouchInput(iNode , ETrue);
       
   328             TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) ); 
       
   329             iSplitInputState = ESplitInputOpen;
       
   330             }
   319         }
   331         }
   320     else
   332     else
   321         {
   333         {
   322         value = EPSAiForwardNumericKeysToPhone;
   334         value = EPSAiForwardNumericKeysToPhone;
   323                                       
   335                                       
   324         if( !iPartialInputEnabled )
   336         if( iSplitInputState == ESplitInputDisabled )
   325             {    
   337             {    
   326             appui->RemoveFromStack( iEditor );            
   338             appui->RemoveFromStack( iEditor );            
   327             iEditor->SetFocus( EFalse, aDrawNow );
   339             iEditor->SetFocus( EFalse, aDrawNow );
   328             }
   340             }
   329         else if(iPartialInputEnabled && iRemoveSplitInputFromStack )
   341         else if( iSplitInputState == ESplitInputRemoveFromStack )
   330             {
   342             {
   331             appui->RemoveFromStack( iEditor );            
   343             appui->RemoveFromStack( iEditor );            
   332             iEditor->SetFocus( EFalse, aDrawNow );
   344             iEditor->SetFocus( EFalse, aDrawNow );
   333             iPartialInputOpen = EFalse;
   345             iSplitInputState = ESplitInputClosed;
   334             iRemoveSplitInputFromStack = EFalse;
   346             }            
   335             }
   347         }
   336             
   348 
   337         }
   349     if( iSplitInputState == ESplitInputOpen )
   338 
       
   339     if(iPartialInputOpen)
       
   340         {
   350         {
   341         value = EPSAiDontForwardNumericKeysToPhone;
   351         value = EPSAiDontForwardNumericKeysToPhone;
   342         }
   352         }
   343 
   353 
   344     iRefusesFocusLoss = isFocused;
   354     iRefusesFocusLoss = isFocused;
   408 //
   418 //
   409 void CXnTextEditorAdapter::HandleEditorEvent( TInt aReason )
   419 void CXnTextEditorAdapter::HandleEditorEvent( TInt aReason )
   410     {
   420     {
   411     CXnAppUiAdapter* appui( 
   421     CXnAppUiAdapter* appui( 
   412         static_cast< CXnAppUiAdapter* >( iAvkonAppUi ) );
   422         static_cast< CXnAppUiAdapter* >( iAvkonAppUi ) );
   413 
   423  
   414     switch( aReason )
   424     switch( aReason )
   415             {           
   425             {           
   416             case CXnTextEditor::KActivateTextEditor:
       
   417                 {
       
   418                 if( !iPartialInputOpen )
       
   419                      {
       
   420                      iUiEngine->EnablePartialTouchInput(iNode , ETrue);
       
   421                      TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) ); 
       
   422                      iPartialInputOpen = ETrue;
       
   423                      }  
       
   424                 break;
       
   425                 }
       
   426             case CXnTextEditor::KDeactivateTextEditor:
   426             case CXnTextEditor::KDeactivateTextEditor:
   427                 {
   427                 {
   428                 if( iPartialInputOpen )
   428                 if( iSplitInputState == ESplitInputOpen )
   429                      {
   429                      {
   430                      iUiEngine->EnablePartialTouchInput(iNode, EFalse);
   430                      iUiEngine->EnablePartialTouchInput(iNode, EFalse);
   431                      iPartialInputOpen = EFalse;
   431                      iSplitInputState = ESplitInputClosed;
   432                      appui->RemoveFromStack( iEditor );
   432                      appui->RemoveFromStack( iEditor );
   433                      iEditor->SetFocus( EFalse );
   433                      iEditor->SetFocus( EFalse );
   434                      }              
   434                      }              
   435                 break;
   435                 break;
   436                 }
   436                 }
   437             case CXnTextEditor::KRemoveSplitInputFromStack:
   437             case CXnTextEditor::KRemoveSplitInputFromStack:
   438                 {
   438                 {
   439                 iRemoveSplitInputFromStack = ETrue;
   439                 iSplitInputState = ESplitInputRemoveFromStack;
   440                 break;
   440                 break;
   441                 }
   441                 }
   442             case CXnTextEditor::KKeepSplitInputInStack:
   442             case CXnTextEditor::KKeepSplitInputInStack:
   443                 {
   443                 {
   444                 iRemoveSplitInputFromStack = EFalse;
   444                 iSplitInputState = ESplitInputOpen;
   445                 break;
   445                 break;
   446                 }
   446                 }
   447             default:                    
   447             default:                    
   448                 break;    
   448                 break;    
   449             }
   449             }