diff -r f5a1e66df979 -r a47de9135b21 fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Fri Feb 19 23:09:27 2010 +0200 +++ b/fep/aknfep/src/AknFepPluginManager.cpp Fri Mar 12 15:44:07 2010 +0200 @@ -105,6 +105,8 @@ const TInt KDefaultCandidateArraySize = 16; const TInt KNumberOfCases = 6; + _LIT_SECURE_ID(KPhoneSecureId, 0x100058b3); + #define iAvkonAppUi ((CAknAppUi*)CEikonEnv::Static()->EikAppUi()) TUid AppUidFromWndGroupIdL(TInt aWndGrpId) { @@ -581,6 +583,10 @@ subrange); } SyncIndicatorWithPluginRangeL(); + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } break; case ESignalLayoutUIChanged: @@ -782,7 +788,10 @@ if( iPluginInputMode == EPluginInputModeNone && aEventType != EPluginEditorActivate && aEventType != EPluginActivate && - aEventType != EPluginResourceChanged ) + aEventType != EPluginResourceChanged && + aEventType != EPluginSwitchMode && + aEventType != EPluginSwitchToPortrait && + aEventType != EPluginSwitchToLandscape) { return; } @@ -888,6 +897,10 @@ case EPluginUpdateIndicator: { UpdateITUTIndicator(); + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } break; case EPluginPreview: @@ -919,6 +932,50 @@ HideTooltipOnFSQL(); } break; + case EPluginSwitchToPortrait: + { + iSharedData.SetDefaultArabicFingerHwrOrientation(0); + TryChangePluginInputModeByModeL(EPluginInputModeFingerHwr, + EPenInputOpenManually, + ERangeInvalid); + } + break; + case EPluginSwitchToLandscape: + { + iSharedData.SetDefaultArabicFingerHwrOrientation(1); + TryChangePluginInputModeByModeL(EPluginInputModeFingerHwr, + EPenInputOpenManually, + ERangeInvalid); + } + break; + case EPluginSwitchMode: + { + iPreferredUiMode = EFalse; + TPluginInputMode defaultMode = EPluginInputModeNone; + TPixelsTwipsAndRotation size; + CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); + + TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight; + if(iSharedData.AutoRotateEnabled()) + { + if(landscape) + { + defaultMode = EPluginInputModeVkb; + } + else + { + defaultMode = EPluginInputModeItut; + } + } + else + { + defaultMode = EPluginInputModeItut; + } + TryChangePluginInputModeByModeL(defaultMode, + EPenInputOpenManually, + ERangeInvalid); + } + break; default: break; } @@ -1008,19 +1065,23 @@ iPenInputServer.SetDisabledLayout( EPluginInputModeFSQ ); } - if ( aSuggestMode == EPluginInputModeFSQ ) + if ( aSuggestMode == EPluginInputModeFSQ || (aSuggestMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic + && iSharedData.AutoRotateEnabled())) { TPluginInputMode tempInputMode = iPluginInputMode; - iPluginInputMode = EPluginInputModeFSQ; + iPluginInputMode = aSuggestMode; - if (disableFSQ ) + if (disableFSQ && (aSuggestMode != EPluginInputModeFingerHwr)) { iPluginInputMode = tempInputMode; aSuggestMode = EPluginInputModeItut; } else { - if ( !iSharedData.AutoRotateEnabled() ) + if ( (!iSharedData.AutoRotateEnabled() + && aSuggestMode == EPluginInputModeFSQ) || + (aSuggestMode == EPluginInputModeFingerHwr)) { iFepMan.SetNotifyPlugin( EFalse ); iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape ); @@ -1037,6 +1098,28 @@ } } } + else if(aSuggestMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic + && !iSharedData.AutoRotateEnabled()) + { + TInt hOrient = iSharedData.DefaultArabicFingerHwrOrientation(); + if(landscape) + { + if(!hOrient) + { + iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait ); + iOrientationChanged = ETrue; + } + } + else + { + if(hOrient) + { + iAvkonAppUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape ); + iOrientationChanged = ETrue; + } + } + } else if ( iOrientationChanged ) { iFepMan.SetNotifyPlugin( EFalse ); @@ -1114,7 +1197,7 @@ } // Notify application touch window state - NotifyAppUiImeTouchWndState( ETrue ); + NotifyAppUiImeTouchWndStateL( ETrue ); rtn = ETrue; } @@ -1174,19 +1257,21 @@ if( aRestore && !iSharedData.QwertyInputMode() && iFepMan.InputMode() == ELatin) { RestorePredictStateL(); - if ( iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor ) - { - if( AknTextUtils::NumericEditorDigitType() == EDigitTypeEasternArabicIndic || - AknTextUtils::NumericEditorDigitType() == EDigitTypeDevanagari || - AknTextUtils::NumericEditorDigitType() == EDigitTypeArabicIndic ) - { - iFepMan.TryChangeModeL( ENativeNumber ); - } - else - { - iFepMan.TryChangeModeL( ENumber ); - } - } + + // Fix bug EAHN-82C9M7, comment out the following code + //if ( iFepMan.EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor ) + // { + // if( AknTextUtils::NumericEditorDigitType() == EDigitTypeEasternArabicIndic || + // AknTextUtils::NumericEditorDigitType() == EDigitTypeDevanagari || + // AknTextUtils::NumericEditorDigitType() == EDigitTypeArabicIndic ) + // { + // iFepMan.TryChangeModeL( ENativeNumber ); + // } + // else + // { + // iFepMan.TryChangeModeL( ENumber ); + // } + // } } //iFepMan.UpdateCbaL( NULL ); //pls refer to bug ESZG-7G7CGF @@ -1236,7 +1321,8 @@ } } - if ( iPluginInputMode == EPluginInputModeFSQ && iOrientationChanged + if ( (iPluginInputMode == EPluginInputModeFSQ || (iPluginInputMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic)) && iOrientationChanged && !iITISettingDialogOpen ) { // This TRAP_IGNORE is essential to fix bug ECJA-7JDCKR, never delete it @@ -1245,7 +1331,7 @@ } // Notify editor the touch window has been closed - NotifyAppUiImeTouchWndState( EFalse ); + NotifyAppUiImeTouchWndStateL( EFalse ); iCharStartPostion = KInvalidValue; } @@ -1264,7 +1350,8 @@ } if ( iPluginInputMode == EPluginInputModeFSQ && - !iSharedData.AutoRotateEnabled()) + !iSharedData.AutoRotateEnabled() || (iPluginInputMode == EPluginInputModeFingerHwr + && iSharedData.InputTextLanguage() == ELangArabic)) { return; } @@ -1615,7 +1702,8 @@ break; case EKeyEscape: { - ClosePluginInputUiL( ETrue ); + ClosePluginInputUiL( ETrue ); + iFepMan.SetNotifyPlugin( EFalse ); DestroySpellEditor(); } break; @@ -1759,21 +1847,84 @@ } // add some input mode in option menu - TBool isSplitView = IsEditorSupportSplitIme(); - if(isSplitView) + + TInt disabledInputMode = iPenInputServer.DisabledLayout(); + TInt curInputMode = iLangMan.CurrentImePlugin()->CurrentMode(); + TBool isChinese = iFepMan.IsChineseInputLanguage(); + + if ( !isChinese && ( curInputMode == EPluginInputModeItut ) && + !( disabledInputMode & EPluginInputModeFSQ )) + { + aMenuPane->SetItemDimmed( EPeninputCmdFSQ, EFalse ); + } + + if ( !isChinese && ( curInputMode == EPluginInputModeFSQ ) && + !( disabledInputMode & EPluginInputModeItut )) { - TInt disabledMode = iPenInputServer.DisabledLayout(); - TInt curMode = iLangMan.CurrentImePlugin()->CurrentMode(); - if(!(disabledMode & EPluginInputModeFSQ) && curMode != EPluginInputModeFSQ ) - { - aMenuPane->SetItemDimmed(EPeninputCmdFSQ, EFalse); - } - if(!(disabledMode & EPluginInputModeItut) && curMode != EPluginInputModeItut) - { - aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse); - } - + aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse); } + //For arabic finger hwr input orientation. + TInt index = 0; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage()) + && (!iSharedData.AutoRotateEnabled())) + { + TBool disableMenu = ETrue; + TPixelsTwipsAndRotation size; + CCoeEnv::Static()->ScreenDevice()->GetDefaultScreenSizeAndRotation(size); + TBool landscape = size.iPixelSize.iWidth > size.iPixelSize.iHeight; + if(landscape && aMenuPane->MenuItemExists(EPenInputCmdHwrInputToPortrait, index)) + { + disableMenu = EFalse; + aMenuPane->SetItemDimmed(EPenInputCmdHwrInputToPortrait,disableMenu); + } + index = 0; + if(!landscape && aMenuPane->MenuItemExists(EPenInputCmdHwrInputToLandscape, index)) + { + disableMenu = EFalse; + aMenuPane->SetItemDimmed(EPenInputCmdHwrInputToLandscape,disableMenu); + } + } + + //For arabic finger hwr switch to key based input. + index = 0; + if(aMenuPane->MenuItemExists( + EPenInputCmdSwitchToVkeyBasedInput, index)) + { + TBool disableMenu = ETrue; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage())) + { + disableMenu = EFalse; + } + aMenuPane->SetItemDimmed(EPenInputCmdSwitchToVkeyBasedInput,disableMenu); + } + //For arabic finger hwr writing speed. + index = 0; + if(aMenuPane->MenuItemExists( + EPenInputCmdWritingSpeed, index)) + { + TBool disableMenu = ETrue; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage())) + { + disableMenu = EFalse; + } + aMenuPane->SetItemDimmed(EPenInputCmdWritingSpeed,disableMenu); + } + //For arabic finger hwr guide line. + index = 0; + if(aMenuPane->MenuItemExists( + EPenInputCmdGuidingLine, index)) + { + TBool disableMenu = ETrue; + if(iPluginInputMode == EPluginInputModeFingerHwr + && (ELangArabic == iSharedData.InputTextLanguage())) + { + disableMenu = EFalse; + } + aMenuPane->SetItemDimmed(EPenInputCmdGuidingLine,disableMenu); + } iLangMan.CurrentImePlugin()->DynInitMenuPaneL(aMenuPane); } @@ -2702,6 +2853,35 @@ } // --------------------------------------------------------------------------- +// CAknFepPluginManager::LaunchPenInputWritingSpeedSelectionL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CAknFepPluginManager::LaunchPenInputWritingSpeedSelectionL() + { + //record langauge + CPenInputGSInterface* setting = CPenInputGSInterface::NewL(); + CleanupStack::PushL(setting); + setting->ShowWritingSpeedPageL(); + CleanupStack::PopAndDestroy(setting); + TInt inputLanguage = iSharedData.InputTextLanguage(); + } + +// --------------------------------------------------------------------------- +// CAknFepPluginManager::LaunchPenInputGuideLineSelectionL +// (other items were commented in a header) +// --------------------------------------------------------------------------- +// +void CAknFepPluginManager::LaunchPenInputGuidingLineSelectionL() + { + //record langauge + CPenInputGSInterface* setting = CPenInputGSInterface::NewL(); + CleanupStack::PushL(setting); + setting->ShowGuideLinePageL(); + CleanupStack::PopAndDestroy(setting); + TInt inputLanguage = iSharedData.InputTextLanguage(); + } +// --------------------------------------------------------------------------- // CAknFepPluginManager::LaunchPenInputSettingL // (other items were commented in a header) // --------------------------------------------------------------------------- @@ -3291,11 +3471,13 @@ case EPluginInputModeHwr: { if( iFepMan.IsSupportsSecretText() || - ( ( aSuggestMode == EPluginInputModeFSc || + (( ( aSuggestMode == EPluginInputModeFSc || aSuggestMode == EPluginInputModeFingerHwr) && - iSharedData.InputTextLanguage() != ELangPrcChinese && - iSharedData.InputTextLanguage() != ELangTaiwanChinese && - iSharedData.InputTextLanguage() != ELangHongKongChinese )) + !(iSharedData.InputTextLanguage() == ELangPrcChinese || + iSharedData.InputTextLanguage() == ELangTaiwanChinese || + iSharedData.InputTextLanguage() == ELangHongKongChinese)) && + ((aSuggestMode == EPluginInputModeFingerHwr && + iSharedData.InputTextLanguage() != ELangArabic)))) { aSuggestMode = EPluginInputModeItut; if ((disableLayouts & aSuggestMode)) @@ -3366,11 +3548,13 @@ testMode<<=1; } - if ((testMode == EPluginInputModeFSc || - testMode == EPluginInputModeFingerHwr ) && - iSharedData.InputTextLanguage() != ELangPrcChinese && - iSharedData.InputTextLanguage() != ELangTaiwanChinese && - iSharedData.InputTextLanguage() != ELangHongKongChinese ) + if (((testMode == EPluginInputModeFSc || + testMode == EPluginInputModeFingerHwr) && + !(iSharedData.InputTextLanguage() == ELangPrcChinese || + iSharedData.InputTextLanguage() == ELangTaiwanChinese || + iSharedData.InputTextLanguage() == ELangHongKongChinese)) && + ((testMode == EPluginInputModeFingerHwr && + iSharedData.InputTextLanguage() != ELangArabic))) { return EFalse; } @@ -3617,6 +3801,10 @@ { iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputInEditWordQueryDlg, iIsInEditWordQueryDlg); } + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } @@ -4120,6 +4308,49 @@ return ret; } +void CAknFepPluginManager::UpdateFSQIndicator() + { + if ( EPluginInputModeFSQ != PluginInputMode() ) + { + return; + } + + TInt indicatorImgID; + TInt indicatorTextID; + + if (iFepMan.GetIndicatorImgID(indicatorImgID, indicatorTextID)) + { + iIndicatorImgID = indicatorImgID; + iIndicatorTextID = indicatorTextID; + } + TInt indImgid = 0; + TInt indMaskid = 0; + + TInt textImgid = 0; + TInt textMaskid = 0; + + if (iIndicatorImgID > 0) + { + GetIndicatorImgID(iIndicatorImgID ,indImgid, indMaskid); + } + + if (iIndicatorTextID > 0) + { + GetIndicatorImgID(iIndicatorTextID ,textImgid, textMaskid); + } + + if (iIndicatorImgID != 0 || iIndicatorTextID != 0) + { + TFepIndicatorInfo indicator; + + indicator.iIndicatorImgID = indImgid; + indicator.iIndicatorMaskID = indMaskid; + indicator.iIndicatorTextImgID = textImgid; + indicator.iIndicatorTextMaskID = textMaskid; + TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchIndicator, + reinterpret_cast(&indicator))); + } + } void CAknFepPluginManager::UpdateITUTIndicator() { if ( EPluginInputModeItut != PluginInputMode() ) @@ -4249,7 +4480,7 @@ iSpell = NULL; iSpellCba = ESpellCBACancelEmpty; iSpellOn = ETrue; - iSpell = CAknFepUiSpellContainer::NewL(editorFlag, editorCase, editorSCTResId); + iSpell = CAknFepUiSpellContainer::NewL(editorFlag, editorCase, editorSCTResId, IsEditorSupportSplitIme()); iSpell->SetInputWinObserver(this); @@ -4536,6 +4767,10 @@ TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputCaseMode, iCaseMan.CurrentCase())); UpdateITUTIndicator(); + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + UpdateFSQIndicator(); + } } } @@ -4574,6 +4809,9 @@ aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue); + aMenuPane->SetItemDimmed(EChinFepCmdModeStrokePhrase, ETrue); + aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinPhrase, ETrue); + aMenuPane->SetItemDimmed(EChinFepCmdModePinyinPhrase, ETrue); aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue); aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue); @@ -5087,7 +5325,9 @@ // default range couldn't be accent. || !iPluginPrimaryRange ) && iFepMan.InputLanguageCapabilities().iSupportsWesternQwertyPredictive - && !iSharedData.QwertyInputMode() ) + && !iSharedData.QwertyInputMode() + // No need to support in dialer application. + && RProcess().SecureId().iId != KPhoneSecureId ) { return ETrue; } @@ -5366,7 +5606,7 @@ // Notify app touch input window closed or open. // ----------------------------------------------------------------------------- // -void CAknFepPluginManager::NotifyAppUiImeTouchWndState( const TBool aTouchState ) +void CAknFepPluginManager::NotifyAppUiImeTouchWndStateL( const TBool aTouchState ) { if ( iLangMan.IsSplitView() ) { @@ -5415,7 +5655,7 @@ TRAP_IGNORE(iPenInputServer.AddPeninputServerObserverL(this)); //always add the handler iPenInputSvrConnected = ETrue; - ActivatePenInputL(); + TRAP_IGNORE(ActivatePenInputL()); } CConnectAo::CConnectAo(CAknFepPluginManager* aClient)