diff -r 6defe5d1bd39 -r 4eb1ae11334f fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Wed Mar 31 22:08:20 2010 +0300 +++ b/fep/aknfep/src/AknFepPluginManager.cpp Wed Apr 14 16:18:34 2010 +0300 @@ -59,6 +59,7 @@ #include #include #include +#include // User includes #include "AknFepManagerInterface.h" // MAknFepManagerInterface @@ -246,7 +247,8 @@ CAknFepCaseManager& aCaseMan ) : iFepMan( aFepMan ), iLangMan( aLangMan ), iCaseMan( aCaseMan ), iSharedData( aSharedData ), iPluginPrimaryRange( ERangeInvalid ), iCandidateIndex(1), - iCharStartPostion( KInvalidValue ) + iCharStartPostion( KInvalidValue ), + iInSpellMode( EFalse ) { iIndicatorImgID = 0; iIndicatorTextID = 0; @@ -277,6 +279,8 @@ iAvkonRepository = CRepository::NewL( KCRUidAvkon ); iConnectAo = new (ELeave)CConnectAo(this); + + RProperty::Define( KPSUidAknFep, KAknFepSettingDialogState, RProperty::EInt ); } // ----------------------------------------------------------------------------- @@ -1034,7 +1038,7 @@ return EFalse; } - // add by jiawenjuan to remember the old fep aware editor. + // remember the old fep aware editor. TBool cleanContent = EFalse; if(iOldFepAwareEditor != iFepMan.FepAwareTextEditor()) { @@ -1053,7 +1057,11 @@ if ( iITISettingDialogOpen ) { iITISettingDialogOpen = EFalse; - } + } + + // Set the KAknFepTouchInputActive PS to 1, + // it means that touch input is active now. + RProperty::Set( KPSUidAknFep, KAknFepTouchInputActive, 1 ); // getting a new ui manager object corresponded in aMode. TInt uiLanguage = iSharedData.DisplayLanguage(); @@ -1157,6 +1165,16 @@ iLangMan.SetSplitView(isSplit); TInt inputLang = iFepMan.InputLanguageCapabilities().iInputLanguageCode; + if( ( aSuggestMode == EPluginInputModeFSc || + aSuggestMode == EPluginInputModeHwr || + aSuggestMode == EPluginInputModeFingerHwr ) + && ( iSharedData.PenInputLanguage() == ELangPrcChinese + || iSharedData.PenInputLanguage() == ELangHongKongChinese + || iSharedData.PenInputLanguage() == ELangTaiwanChinese) ) + { + // Solution for HWR can not be in used after switched to latin-only editor. + inputLang = iSharedData.PenInputLanguage(); + } MAknFepManagerInterface* fepUI = iLangMan.GetPluginInputFepUiL( aSuggestMode, inputLang, @@ -1363,6 +1381,10 @@ NotifyAppUiImeTouchWndStateL( EFalse ); iCharStartPostion = KInvalidValue; + + // Set the KAknFepTouchInputActive PS to 0, + // it means that touch input is inactive now. + RProperty::Set( KPSUidAknFep, KAknFepTouchInputActive, 0 ); } // --------------------------------------------------------------------------- @@ -1571,6 +1593,7 @@ break; case EEikCmdEditPaste: {//ctrl + v + ResetMenuState(); TKeyEvent ccpuKey = KAknCcpuPasteEvent; CCoeEnv::Static()->SimulateKeyEventL( ccpuKey, EEventKey ); } // Send copy-event to edwin. @@ -2068,8 +2091,7 @@ if( iInMenu && iCurEditor == iFepMan.FepAwareTextEditor() ) { - ResetMenuState(); - InformMfneUiStatusL( EFalse ); + ResetMenuState(); // If need to open setting app automatically, // do not open Touch window again. TBool langChange = iCurLanguage != iSharedData.InputTextLanguage(); @@ -2340,19 +2362,13 @@ TPtr16 currentEditorContent = currentEditorContentBuf->Des(); edit->GetEditorContentForFep( currentEditorContent, 0, editContentLen ); - TBool send = ETrue; - - if ( !SetSyncIcfDataL( icfData, lastEditorContent, currentEditorContent ) ) + if (SetSyncIcfDataL( icfData, lastEditorContent, currentEditorContent)) { - send = EFalse; + iCurrentPluginInputFepUI->HandleCommandL + (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); + iFepMan.TryPopExactWordInICFL(); } - if ( send ) - { - iCurrentPluginInputFepUI->HandleCommandL - (ECmdPenInputSendEditorTextAndCurPos, reinterpret_cast(&icfData)); - } - if ( secretEditor ) { TBool cursorDisabled = IsEditorCursorDisabled(); @@ -2590,6 +2606,10 @@ aIcfData.iStartPos = iCurSelCur.iCursorPos; aIcfData.iMidPos = -1; aIcfData.iText.Set(KNullDesC); + if( iFepMan.IsFlagSet(CAknFepManager::EFlagSupressAutoUpdate) && iFepMan.InputMode() == EHangul ) + { + aIcfData.iCursorSelVisible = EFalse; + } } iInlineStateOn = ( aIcfData.iMidPos == 0 ); @@ -3780,7 +3800,12 @@ } else { - SetITUTSpellingStateL(ETrue); + if ( !iInSpellMode ) + { + SetITUTSpellingStateL(ETrue); + iInSpellMode = ETrue; + } + iIndicatorImgID = 0; iIndicatorTextID = 0; } @@ -4245,72 +4270,6 @@ reinterpret_cast(&iSendAllList))); } -TBool CAknFepPluginManager::DoNextCandidates() - { - if((iCandidateIndex) * 3 >= iCandidateList.Count()) - { - iCandidateIndex = 0; - } - - iCandidateIndex++; - - int nStartIndex = (iCandidateIndex - 1) * 3; - - - for (TInt index = 0; index < 3; index++, nStartIndex ++) - { - if (nStartIndex < iCandidateList.Count()) - { - TPtr16 canDes = iCandidateList[nStartIndex]->Des(); - iSendList.iCandidate[index].Set(canDes); - } - else - { - iSendList.iCandidate[index].Set(KNullDesC); - } - } - - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendList))); - - if (iCandidateIndex * 3 >= iCandidateList.Count()) - { - return ETrue; - } - - return EFalse; - } - -void CAknFepPluginManager::DoPreviousCandidates() - { - iCandidateIndex--; - - if(iCandidateIndex < 1) - { - iCandidateIndex = iCandidateList.Count() / 3 + 1; - } - - int nStartIndex = (iCandidateIndex -1) * 3; - - for (TInt index = 0; index < 3; index++, nStartIndex ++) - { - if (nStartIndex < iCandidateList.Count()) - { - TPtr16 canDes = iCandidateList[nStartIndex]->Des(); - iSendList.iCandidate[index].Set(canDes); - } - else - { - iSendList.iCandidate[index].Set(KNullDesC); - } - } - - - TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendList))); - } - TBool CAknFepPluginManager::GetIndicatorImgID(const TInt IndicatorUID,TInt &aImage, TInt &aMask) { TBool ret = EFalse; @@ -4682,6 +4641,11 @@ return resId; } +void CAknFepPluginManager::SetInSpellModeFlag( TBool aFlag ) + { + iInSpellMode = aFlag; + } + void CAknFepPluginManager::SetPromptText( TBool aCleanContent ) { if (IsDimed() && !iResourceChange) @@ -5258,22 +5222,17 @@ return; } - CDesCArray* candidates = new ( ELeave ) CDesCArrayFlat( KDefaultCandidateArraySize ); - CleanupStack::PushL( candidates ); + CDesCArray* candidates = new (ELeave) CDesCArrayFlat(KDefaultCandidateArraySize); + CleanupStack::PushL(candidates); TInt activeIdx = KErrNotFound; - iFepMan.GetCandidatesL( *candidates, activeIdx ); - if ( aSecondaryIdx < candidates->Count() ) + iFepMan.GetCandidatesL(*candidates, activeIdx); + + if (aSecondaryIdx < candidates->Count()) { - TPtrC aText = ( *candidates )[ aSecondaryIdx ]; - - TFepITITooltipText tooltipText; - tooltipText.iDataSize = aText.Size(); - tooltipText.iText.Set( aText ); - TPtrC tooltipTextPtr; - tooltipTextPtr.Set( aText ); - iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputPopupTooltip, - reinterpret_cast( &tooltipTextPtr ) ); + TPtrC aText = (*candidates)[aSecondaryIdx]; + iCurrentPluginInputFepUI->HandleCommandL( + ECmdPenInputPopupTooltip, reinterpret_cast(&aText)); iTooltipOpenOnFSQ = ETrue; } else @@ -5631,13 +5590,21 @@ } // Close FSQ then current keyboard type return to the previously-stored one, - // 1. The first step is to restore keyboard type, because the value will - // be used in iFepMan.SetQwertyMode( EFalse ); - ResetItiKeyboardLayoutL(); + // But, if iSharedData.QwertyInputMode() == EFalse, it means that hardware + // is slided, and capserver will be responsible to set the corrected keyboard type + // and qwerty input mode. + // So there is no need to do step 1 and step 2 here, otherwise, + // values set by capserver will be overrided. + if ( !iSharedData.QwertyInputMode() ) + { + // 1. The first step is to restore keyboard type, because the value will + // be used in iFepMan.SetQwertyMode( EFalse ); + ResetItiKeyboardLayoutL(); + + // 2. Change FEP to non qwerty mode. + iFepMan.SetQwertyMode( EFalse ); + } - // 2. Change FEP to non qwerty mode. - iFepMan.SetQwertyMode( EFalse ); - // 3. Notify the deactivation of ITI to peninputserver iCurrentPluginInputFepUI->HandleCommandL( ECmdPeninputITIStatus, EFalse ); @@ -5655,22 +5622,21 @@ { return; } - // 1. Record the previous keyboard type - RProperty keyboardLayoutStatusProperty; - keyboardLayoutStatusProperty.Get( KCRUidAvkon, KAknKeyBoardLayout, - iLastKeyboardLayout ); - + // 1. Record the previous virtual keyboard type + RProperty::Get( KPSUidAknFep, KAknFepVirtualKeyboardType, iLastKeyboardLayout ); + // 2. Utilize right qwerty keyboard type - keyboardLayoutStatusProperty.Set( KCRUidAvkon, KAknKeyBoardLayout, - EPtiKeyboardQwerty4x12 ); + RProperty::Set( KPSUidAknFep, KAknFepVirtualKeyboardType, EPtiKeyboardQwerty4x12 ); + } + // ----------------------------------------------------------------------------- // Restore keyboard layout after closing FSQ. // ----------------------------------------------------------------------------- // void CAknFepPluginManager::ResetItiKeyboardLayoutL() { - if ( !iLastKeyboardLayout || iITISettingDialogOpen ) + if ( !iLastKeyboardLayout ) { return; } @@ -5678,10 +5644,11 @@ // Close FSQ then current keyboard type return to the previously-stored one, //Restore keyboard layout type and qwerty mode of FEP // 1. Store the previous keyboard type, - // except that opening predictive setting dialog cause fsq closed. - RProperty keyboardLayoutStatusProperty; - keyboardLayoutStatusProperty.Set( KCRUidAvkon, KAknKeyBoardLayout, + // except that opening predictive setting dialog cause fsq closed. + RProperty::Set( KPSUidAknFep, KAknFepVirtualKeyboardType, iLastKeyboardLayout ); + + iLastKeyboardLayout = 0; }