fep/aknfep/src/AknFepPluginManager.cpp
branchRCL_3
changeset 50 5a1685599b76
parent 46 bd83ceabce89
child 56 8152b1f1763a
--- a/fep/aknfep/src/AknFepPluginManager.cpp	Tue Sep 14 21:59:06 2010 +0300
+++ b/fep/aknfep/src/AknFepPluginManager.cpp	Wed Sep 15 12:34:44 2010 +0300
@@ -221,6 +221,7 @@
     
     if( iPenInputSvrConnected )
         {
+        iPenInputServer.RemovePenUiActivationHandler( this );
         iPenInputServer.Close();
         iPenInputSvrConnected = EFalse;
         }
@@ -531,7 +532,7 @@
                 break;  
             case ESignalChangeAmPm:
                 {
-                iFepMan.ChangeMfneAmPm();
+                iFepMan.ChangeMfneAmPmL();
                 }
                 break;
             case ESignalSetAppEditorCursor:
@@ -1006,6 +1007,12 @@
             {
             iForegroundChange = ETrue;   
             iLaunchHelp = EFalse;    
+
+            // Remove pen ui activation observer
+            if (iPenInputSvrConnected && !aEventData )
+                {
+                iPenInputServer.RemovePenUiActivationHandler( this );
+                }            
             
             if (!aEventData && IsInGlobleNoteEditor())
                 {
@@ -1402,6 +1409,15 @@
                 }
             }
         }
+    else if( aSuggestMode == EPluginInputModePortraitFSQ  )
+    	{
+		// If current input languge is Chinese or Korean, use EPluginInputModeItut instead.
+		if ( iPortraitFSQEnabled && 
+				( iFepMan.IsChineseInputLanguage() || iFepMan.IsKoreanInputLanguage() ))
+			{
+			  aSuggestMode = EPluginInputModeItut;
+			}
+    	}
     else if ( iOrientationChanged )
         {
         iFepMan.SetNotifyPlugin( EFalse );
@@ -1410,6 +1426,9 @@
         iOrientationChanged = EFalse;
         }
     
+    // Add pen ui activation observer
+    iPenInputServer.AddPenUiActivationHandler( this, EPluginInputModeAll );    
+    
     TBool isSplit = IsEditorSupportSplitIme();
     TInt inputLang = iFepMan.InputLanguageCapabilities().iInputLanguageCode;
     // temp code for Chinese split view
@@ -1593,6 +1612,8 @@
 //
 void CAknFepPluginManager::ClosePluginInputUiL(TBool aResetState)
     {
+    iInitiateCloseInputUi = ETrue;
+    
     // For addition of ITI features on FSQ, 
     // need to restore some values stored before opening FSQ    
     
@@ -1617,6 +1638,7 @@
                 }
             else
                 {
+                NotifyAppUiImeTouchWndStateL( EFalse ); //this change is under testing 
                 iCurrentPluginInputFepUI->CloseUI();
                 }
             if( aResetState )
@@ -1659,13 +1681,15 @@
         } 
         
     // Notify editor the touch window has been closed
-    NotifyAppUiImeTouchWndStateL( EFalse );
+    //NotifyAppUiImeTouchWndStateL( EFalse );//this change is under testing
     
     iCharStartPostion = KInvalidValue;
     
     // Set the KAknFepTouchInputActive PS to 0, 
     // it means that touch input is inactive now.
     RProperty::Set( KPSUidAknFep, KAknFepTouchInputActive, 0 );
+    
+    iInitiateCloseInputUi = EFalse;    
     }
 
 // ---------------------------------------------------------------------------
@@ -1874,19 +1898,25 @@
                     }
                     break;
                 case EPeninputCmdFSQ:
+                	{
+                	if ( iPortraitFSQEnabled )
+                		{
+                        TPixelsTwipsAndRotation size; 
+                        CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size);
+                        TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight;
+                        ProcessChangingInputModeCmdL( landscape ? EPluginInputModeFSQ : EPluginInputModePortraitFSQ );
+                		}
+                	else
+                		{
+                	    ProcessChangingInputModeCmdL(EPluginInputModeFSQ);
+                		}
+                	}
+                	break;
                 // "Edit portrait" menu - switch to portrait FSQ
                 case EPeninputCmdPortraitEditor:
                     {
-                    if ( iPortraitFSQEnabled )
-                        {
-                        ProcessChangingInputModeCmdL(EPluginInputModePortraitFSQ);          
-                        }
-                    else 
-                        {
-                        ProcessChangingInputModeCmdL(EPluginInputModeFSQ);
-                        }
+                    ProcessChangingInputModeCmdL(EPluginInputModePortraitFSQ);          
                     }
-
                     break;
                 // "Edit landscape" menu - switch to landscape FSQ
                 case EPeninputCmdLandscapeEditor:
@@ -2295,17 +2325,30 @@
         {
         // "QWERTY keyboard" - EPeninputCmdFSQ menu is shown in these conditions
         // if portrait FSQ feature flag is enabled
-        // 1) Non-Chinese language
-        // 2) Current input mode is not portrait FSQ and also the mode is not disabled
-        // 3) Current orientation is portrait
-        if ( !isKorean && !isChinese
-            && ( curInputMode != EPluginInputModePortraitFSQ ) 
-            && !( disabledInputMode & EPluginInputModePortraitFSQ ) 
-            && isPortrait )
-        {
-        aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse );
-        }
-        
+        if ( !isKorean && !isChinese )
+        	{
+            // 1) Non-Chinese language and non-Korean language   
+            if ( isPortrait )
+            	{
+                // 2) On portrait screen, current input mode is not portrait FSQ 
+                //    and also the mode is not disabled
+                if ( curInputMode != EPluginInputModePortraitFSQ 
+                	 && !( disabledInputMode & EPluginInputModePortraitFSQ ) )
+                	{
+                    aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse );
+                	}                	
+            	}
+            else
+            	{
+                // 3) On landscape screen, current input mode is not FSQ 
+                // and also the mode is not disabled
+                if ( curInputMode != EPluginInputModeFSQ 
+                   	 && !( disabledInputMode & EPluginInputModeFSQ ) )
+                	{
+                    aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse );
+                	}
+            	}        
+        	}
         }
     else
         {
@@ -6057,7 +6100,8 @@
          && iFepMan.InputLanguageCapabilities().iSupportsWesternQwertyPredictive
          && !iSharedData.QwertyInputMode()
          // No need to support in dialer application.
-         && RProcess().SecureId().iId != KPhoneSecureId )
+         && RProcess().SecureId().iId != KPhoneSecureId && 
+         !iFepMan.IsNoT9Editor() )
         {
         return ETrue;
         }        
@@ -6510,6 +6554,29 @@
     iCurEditor = NULL;
     }
 
+// -----------------------------------------------------------------------------
+// CAknFepPluginManager::OnPeninputUiDeactivated
+// Called when pen input UI is about to be closed
+// -----------------------------------------------------------------------------
+//
+void CAknFepPluginManager::OnPeninputUiDeactivated()
+    {
+    if( !iInitiateCloseInputUi )
+        {
+        TRAP_IGNORE( ClosePluginInputUiL( ETrue ) );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CAknFepPluginManager::OnPeninputUiActivated
+// Called when pen input UI is about to be open
+// -----------------------------------------------------------------------------
+//
+void CAknFepPluginManager::OnPeninputUiActivated()
+    {
+    }
+
+
 CConnectAo::CConnectAo(CAknFepPluginManager* aClient) 
                 : CActive(CActive::EPriorityStandard),
                   iClient(aClient)