fep/aknfep/src/AknFepManager.cpp
branchRCL_3
changeset 5 a47de9135b21
parent 3 f5a1e66df979
child 6 6ceef9a83b1a
--- a/fep/aknfep/src/AknFepManager.cpp	Fri Feb 19 23:09:27 2010 +0200
+++ b/fep/aknfep/src/AknFepManager.cpp	Fri Mar 12 15:44:07 2010 +0200
@@ -180,7 +180,7 @@
 const TKeyEvent KAknCcpuCopyEvent = {EKeyF18, EEikCmdEditCopy, EModifierCtrl, 1};  // Copy event for AknCcpuSupport
 const TKeyEvent KAknCcpuCutEvent  = {EKeyF18, EEikCmdEditCut, EModifierCtrl, 1};   // Cut event for AknCcpuSupport
 
-const TInt KMaxMenuSize = 25;
+const TInt KMaxMenuSize = 28;
 const TInt KEditorMenuPermitedSend[KMaxMenuSize] = 
     {         
     EJapanFepCmdModeHiragana,
@@ -192,6 +192,9 @@
     EChinFepCmdModePinyin,
     EChinFepCmdModeZhuyin,
     EChinFepCmdModeStroke,
+    EChinFepCmdModePinyinPhrase,
+    EChinFepCmdModeZhuyinPhrase,
+    EChinFepCmdModeStrokePhrase,    
     EAknCmdT9PredictiveT9Off,
     EAknCmdMultitapPredictiveT9On,
     EJapanFepCmdMultitapPredictiveT9On,
@@ -1487,18 +1490,7 @@
 #ifdef RD_INTELLIGENT_TEXT_INPUT
                 else if (IsAutoCompleteOn())
                     {
-                    TInt tailLength = 0;
-                    iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, 
-                                                &tailLength );
-                    if(tailLength > 0)
-                        {
-                        TryRemoveNoMatchesIndicatorL();
-                        RemoveSuggestedAdvanceCompletionL();
-                        SimulateKeyEventL(EKeyF19);
-                        UpdateCbaL(NULL);
-                        response=EKeyWasConsumed;
-                        }
-                    else if(FepUI()->HandleKeyL(aCode, aLength))
+                      if(FepUI()->HandleKeyL(aCode, aLength))
                         {
                         if( EPtiKeyboardHalfQwerty == KeyboardLayout()
                         		&& iWesternPredictive
@@ -1506,6 +1498,7 @@
                             {
                         	ClearFlag(CAknFepManager::EFlagChangeInputMode);
                             }
+                        TInt tailLength = 0;
                         iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength );
                         if(tailLength > 0)
                             {
@@ -3817,8 +3810,7 @@
 	{
 	TBool JavaNumericEditor = EFalse;
 	TUint ConstraintValue = MIDPConstraint();
-	if((ConstraintValue & ESplConstraintMask) == ESplNumeric ||
-	   (ConstraintValue & ESplConstraintMask) == ESplDecimal)
+	if((ConstraintValue & ESplConstraintMask) == ESplNumeric )
 		JavaNumericEditor = ETrue;
 	
 	return JavaNumericEditor;
@@ -4005,6 +3997,8 @@
 	RPointerArray<CEikMenuPaneItem> editorMenuItemList;	
     
     CEikMenuPane* editorMenuPane = new (ELeave) CEikMenuPane((MEikMenuObserver*)(this));
+    CleanupDeletePushL( editorMenuPane );
+    
     editorMenuPane->SetItemArrayOwnedExternally(EFalse);
     TResourceReader reader;
     CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU);//
@@ -4069,12 +4063,11 @@
             iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL(
                         ECmdPenInputSendEditMenuData, reinterpret_cast<TInt>(iEditorCommandList));
             }
-        
-        editorMenuItemList.ResetAndDestroy();
-        delete editorMenuPane;
-        editorMenuPane = NULL;
-        }
-    
+        }
+    
+    editorMenuItemList.ResetAndDestroy();
+	CleanupStack::PopAndDestroy(editorMenuPane);
+	
     return count;
     }
 #endif // RD_SCALABLE_UI_V2
@@ -4407,16 +4400,19 @@
 
         // --- commands for Chinese ---
         case EChinFepCmdModePinyin:
+        case EChinFepCmdModePinyinPhrase:
             SendEventsToPluginManL( EPluginCloseMode, EFalse );
             HandleChangeInFocus();
             TryChangeModeL(EPinyin);
             break;
         case EChinFepCmdModeZhuyin:
+        case EChinFepCmdModeZhuyinPhrase:
             SendEventsToPluginManL( EPluginCloseMode, EFalse );
             HandleChangeInFocus();
             TryChangeModeL(EZhuyin);
             break;
         case EChinFepCmdModeStroke:
+        case EChinFepCmdModeStrokePhrase:  
             SendEventsToPluginManL( EPluginCloseMode, EFalse );
             HandleChangeInFocus();
             TryChangeModeL(EStroke);
@@ -4642,7 +4638,7 @@
             LaunchEditWordQueryL();
             break;
         case EAknCmdT9PredictiveInsertWord:
-            SetStopProcessFocus(ETrue);
+            SetStopProcessFocus(ETrue, EFalse);
             HandleChangeInFocus();
             LaunchInsertWordQueryL(KNullDesC, TCursorSelection(0,0));
             SetStopProcessFocus(EFalse);
@@ -4955,7 +4951,46 @@
             HandleChangeInFocus();
             iStopProcessFocus = EFalse;
             }
-        break;
+            break;
+        case EPenInputCmdHwrInputToPortrait:
+            {
+            SendEventsToPluginManL( EPluginCloseMode, EFalse );
+            HandleChangeInFocus();                        
+            SendEventsToPluginManL( EPluginSwitchToPortrait);
+            }
+            break;
+        case EPenInputCmdHwrInputToLandscape:
+            {
+            SendEventsToPluginManL( EPluginCloseMode, EFalse );
+            HandleChangeInFocus();                        
+            SendEventsToPluginManL( EPluginSwitchToLandscape);
+            }
+            break;
+        case EPenInputCmdSwitchToVkeyBasedInput:
+            {
+            SendEventsToPluginManL( EPluginCloseMode, EFalse );
+            HandleChangeInFocus();            
+            SendEventsToPluginManL( EPluginSwitchMode);
+            }
+            break;
+        case EPenInputCmdWritingSpeed:
+            {
+            SetStopProcessFocus(ETrue);
+            HandleChangeInFocus();
+            LaunchWritingSpeedPopupListL();
+            HandleChangeInFocus();
+            iStopProcessFocus = EFalse;
+            }
+            break;
+        case EPenInputCmdGuidingLine:
+            {
+            SetStopProcessFocus(ETrue);
+            HandleChangeInFocus();
+            LaunchGuidingLinePopupListL();
+            HandleChangeInFocus();
+            iStopProcessFocus = EFalse;
+            }
+            break;
         default:
             break;
         }
@@ -5453,6 +5488,11 @@
             posToInsertItem = numOfMenuItems;
             }
         }
+    TInt inputOptionsPos = 0;
+    if ( aMenuPane->MenuItemExists( EEikCmdEditPaste, inputOptionsPos ) )
+        {
+        inputOptionsPos++; 
+        }
     //Now we have the position at which we need to insert the menu item. 
     if (
 #ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
@@ -5460,7 +5500,7 @@
 #endif   		
     IsLanguageSupportPrediction() && !(iAknEditorFlags & EAknEditorFlagNoT9))
         {
-        AddPredictiveModeOptionsL(aMenuPane, posToInsertItem);
+        AddPredictiveModeOptionsL( aMenuPane, inputOptionsPos );
         }
     else
         {
@@ -7277,6 +7317,7 @@
             SendEventsToPluginManL( EPluginFocusChanged, 
                                     iGainForeground && focusCtrl!=0 && focusCtrl->IsFocused());        
             }
+        iNotifyPlugin = ETrue;
         }
 #endif // RD_SCALABLE_UI_V2
         if( PtiEngine() && FepAwareTextEditor() )
@@ -8730,8 +8771,9 @@
     	}
 #ifdef RD_SCALABLE_UI_V2     
     if (iFepFullyConstructed && 
-        iFepPluginManager->PluginInputMode() == EPluginInputModeItut && 
-        !(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen))
+        iFepPluginManager->PluginInputMode() == EPluginInputModeItut )
+   // if ( iFepFullyConstructed && 
+    //    (( iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) && IsChineseInputLanguage())) 
         {
         iFepPluginManager->SpellText(textBuf);
         iFepPluginManager->DisplaySpellEditor(textQueryEditorFlag, aInitialText, 
@@ -9161,6 +9203,39 @@
             }
         }
     
+    // Switch menu whether input language is supported related chinese phrase    
+    MPtiLanguage* ptilang = iPtiEngine->GetLanguage(
+                iLanguageCapabilities.iInputLanguageCode ); 
+    if ( ptilang )
+        {
+        if( iMode != EPinyin && IsModePermitted( EPinyin ) )
+            {
+            if( ptilang->HasInputMode( EPtiEnginePinyinByPhrase ) ) 
+                {
+                aMenuPane->SetItemDimmed( EChinFepCmdModePinyin, ETrue );
+                aMenuPane->SetItemDimmed( EChinFepCmdModePinyinPhrase, EFalse );
+                }
+            }
+        
+        if( iMode != EZhuyin && IsModePermitted( EZhuyin ) )
+            {
+            if( ptilang->HasInputMode( EPtiEngineZhuyinByPhrase ) ) 
+                {
+                aMenuPane->SetItemDimmed( EChinFepCmdModeZhuyin, ETrue );
+                aMenuPane->SetItemDimmed( EChinFepCmdModeZhuyinPhrase, EFalse );
+                }
+            }
+            
+        if( iMode != EStroke && IsModePermitted( EStroke ) )
+            {
+            if( ptilang->HasInputMode( EPtiEngineStrokeByPhrase ) ) 
+                {
+                aMenuPane->SetItemDimmed( EChinFepCmdModeStroke, ETrue );
+                aMenuPane->SetItemDimmed( EChinFepCmdModeStrokePhrase, EFalse );
+                }
+            }
+        }
+    
     if (IsAbleToLaunchSmiley())
         {
         TInt index;
@@ -12596,16 +12671,21 @@
 #ifdef RD_SCALABLE_UI_V2
     TBool fingerItutIndicator = ( iFepPluginManager && 
                                   iFepPluginManager->PluginInputMode() == EPluginInputModeItut );
+    TBool fingerFSQIndicator = ( iFepPluginManager && 
+            iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ );
 #else
     TBool fingerItutIndicator = EFalse;
+    TBool fingerFSQIndicator = EFalse;
     
 #endif
     if ( IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric )
             {
             newState = EHybridModeLatin;
             }    
+    //else if (!(iAknEditorFlags & EAknEditorFlagNoEditIndicators) 
+    //    || findPaneIndicator || fingerItutIndicator)
     else if (!(iAknEditorFlags & EAknEditorFlagNoEditIndicators) 
-        || findPaneIndicator || fingerItutIndicator)
+        || findPaneIndicator || fingerItutIndicator || fingerFSQIndicator)
         {
         
 #ifdef RD_SCALABLE_UI_V2
@@ -15664,7 +15744,26 @@
         }
 #endif //RD_SCALABLE_UI_V2
     }
-
+void CAknFepManager::LaunchWritingSpeedPopupListL()
+    {
+#ifdef RD_SCALABLE_UI_V2
+    if( iFepPluginManager && (iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) )
+        {
+        iFepPluginManager->LaunchPenInputWritingSpeedSelectionL();
+        return;
+        }
+#endif //RD_SCALABLE_UI_V2
+    }
+void CAknFepManager::LaunchGuidingLinePopupListL()
+    {
+#ifdef RD_SCALABLE_UI_V2
+    if( iFepPluginManager && (iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr) )
+        {
+        iFepPluginManager->LaunchPenInputGuidingLineSelectionL();
+        return;
+        }
+#endif //RD_SCALABLE_UI_V2
+    }
 void CAknFepManager::LoadIconL( CArrayPtr<CGulIcon>* aIcons, 
                                 TInt aBitmapId, 
                                 TInt aMaskId )