diff -r bd83ceabce89 -r 5a1685599b76 fep/aknfep/src/AknFepPluginManager.cpp --- 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)