idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp
branchRCL_3
changeset 11 ff572dfe6d86
parent 9 f966699dea19
child 12 9674c1a575e9
--- a/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp	Fri Feb 19 22:42:37 2010 +0200
+++ b/idlehomescreen/xmluirendering/renderingplugins/xntexteditorfactory/src/xntexteditoradapter.cpp	Fri Mar 12 15:41:49 2010 +0200
@@ -50,6 +50,14 @@
 
 const TInt KMaxLength = 100;
 
+enum TSplitInputState
+    {
+    ESplitInputDisabled = 0,   
+    ESplitInputClosed,
+    ESplitInputOpen,
+    ESplitInputRemoveFromStack         
+    };
+
 _LIT8( KCpsPublishing, "cpspublishing" );
 _LIT8( KMaxLineAmount, "max-line-amount" );
 _LIT8( KMaxCharAmount, "max-char-amount" );
@@ -175,14 +183,13 @@
 
     // Enable partial Screen
     CXnProperty* enablepartialinput( iNode.GetPropertyL( KEnablePartialInput ) );
-    iPartialInputEnabled = EFalse;
-    iPartialInputOpen = EFalse;
+    iSplitInputState = ESplitInputDisabled;
      
     if ( enablepartialinput && 
          enablepartialinput->StringValue() == XnPropertyNames::KTrue )
         {
         iEditor->SetAknEditorFlags( EAknEditorFlagEnablePartialScreen );
-        iPartialInputEnabled = ETrue;
+        iSplitInputState = ESplitInputClosed;
         }
     
     iEditor->SetObserver( this );
@@ -310,33 +317,36 @@
         {      
         value = EPSAiDontForwardNumericKeysToPhone;
 
-        if( !iPartialInputEnabled )
+        if( iSplitInputState == ESplitInputDisabled )
             {
             TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) );            
             // AddToStackL calls iEditor->SetFocus( ETrue ); 
             }
-
+        else if( iSplitInputState == ESplitInputClosed )
+            {
+            iUiEngine->EnablePartialTouchInput(iNode , ETrue);
+            TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) ); 
+            iSplitInputState = ESplitInputOpen;
+            }
         }
     else
         {
         value = EPSAiForwardNumericKeysToPhone;
                                       
-        if( !iPartialInputEnabled )
+        if( iSplitInputState == ESplitInputDisabled )
             {    
             appui->RemoveFromStack( iEditor );            
             iEditor->SetFocus( EFalse, aDrawNow );
             }
-        else if(iPartialInputEnabled && iRemoveSplitInputFromStack )
+        else if( iSplitInputState == ESplitInputRemoveFromStack )
             {
             appui->RemoveFromStack( iEditor );            
             iEditor->SetFocus( EFalse, aDrawNow );
-            iPartialInputOpen = EFalse;
-            iRemoveSplitInputFromStack = EFalse;
-            }
-            
+            iSplitInputState = ESplitInputClosed;
+            }            
         }
 
-    if(iPartialInputOpen)
+    if( iSplitInputState == ESplitInputOpen )
         {
         value = EPSAiDontForwardNumericKeysToPhone;
         }
@@ -410,25 +420,15 @@
     {
     CXnAppUiAdapter* appui( 
         static_cast< CXnAppUiAdapter* >( iAvkonAppUi ) );
-
+ 
     switch( aReason )
             {           
-            case CXnTextEditor::KActivateTextEditor:
-                {
-                if( !iPartialInputOpen )
-                     {
-                     iUiEngine->EnablePartialTouchInput(iNode , ETrue);
-                     TRAP_IGNORE( appui->AddToStackL( appui->View(), iEditor ) ); 
-                     iPartialInputOpen = ETrue;
-                     }  
-                break;
-                }
             case CXnTextEditor::KDeactivateTextEditor:
                 {
-                if( iPartialInputOpen )
+                if( iSplitInputState == ESplitInputOpen )
                      {
                      iUiEngine->EnablePartialTouchInput(iNode, EFalse);
-                     iPartialInputOpen = EFalse;
+                     iSplitInputState = ESplitInputClosed;
                      appui->RemoveFromStack( iEditor );
                      iEditor->SetFocus( EFalse );
                      }              
@@ -436,12 +436,12 @@
                 }
             case CXnTextEditor::KRemoveSplitInputFromStack:
                 {
-                iRemoveSplitInputFromStack = ETrue;
+                iSplitInputState = ESplitInputRemoveFromStack;
                 break;
                 }
             case CXnTextEditor::KKeepSplitInputInStack:
                 {
-                iRemoveSplitInputFromStack = EFalse;
+                iSplitInputState = ESplitInputOpen;
                 break;
                 }
             default: