diff -r 4eb1ae11334f -r e6a39382bb9c fep/aknfep/src/AknFepPluginManager.cpp --- a/fep/aknfep/src/AknFepPluginManager.cpp Wed Apr 14 16:18:34 2010 +0300 +++ b/fep/aknfep/src/AknFepPluginManager.cpp Tue Apr 27 16:59:43 2010 +0300 @@ -258,6 +258,7 @@ iClosePluginInputMode = EFalse; iDimGainForeground = ETrue; iAlignment = 0; + iNeedFetchDimState = ETrue; } // --------------------------------------------------------------------------- @@ -628,6 +629,26 @@ } } break; + case ESignalShowCandidate: + { + // Get candidate list + TInt activeIdx = 0; + CDesCArray* candidates = new (ELeave) CDesCArrayFlat + ( KDefaultCandidateArraySize ); + CleanupStack::PushL( candidates ); + iFepMan.GetCandidatesL(*candidates, activeIdx); + + TFepITICandidateList candidateListData; + candidateListData.iItemArray = candidates; + candidateListData.iActiveIndex + = ( candidates->Count() >= 2 ) ? 1 : activeIdx; + candidateListData.iLangCode = iFepMan.CurrentInputLangCode(); + + ShowCandidateListL( candidateListData ); + CleanupStack::PopAndDestroy( candidates ); + } + break; + case ESignalSelectMatchSelectionText: { TInt* ptrData = (TInt*)(pBuf.Ptr()); @@ -709,22 +730,6 @@ } } break; - case ESignalShowCandidate: - { - // Get candidate list - TInt activeIdx = 0; - CDesCArray* candidates = new (ELeave) CDesCArrayFlat - ( KDefaultCandidateArraySize ); - CleanupStack::PushL( candidates ); - iFepMan.GetCandidatesL( *candidates, activeIdx ); - TFepITICandidateList candidateListData; - candidateListData.iItemArray = candidates; - candidateListData.iActiveIndex - = ( candidates->Count() >= 2 ) ? 1 : activeIdx; - ShowCandidateListL( candidateListData ); - CleanupStack::PopAndDestroy( candidates ); - } - break; case ESignalSelectCandidate: { // Select candidate word on fsq @@ -996,6 +1001,11 @@ } } break; + case EPluginEnableFetchDimState: + { + iNeedFetchDimState = ETrue; + } + break; default: break; } @@ -1925,11 +1935,11 @@ aMenuPane->SetItemDimmed(EPenInputCmdVITUT, EFalse); } - if ( iFepMan.IsArabicInputLanguage() && ( curInputMode != EPluginInputModeFingerHwr ) - && !( disabledInputMode & EPluginInputModeFingerHwr )) - { - aMenuPane->SetItemDimmed( EPeninputCmdHwr, EFalse ); - } + //if ( iFepMan.IsArabicInputLanguage() && ( curInputMode != EPluginInputModeFingerHwr ) + // && !( disabledInputMode & EPluginInputModeFingerHwr )) + // { + // aMenuPane->SetItemDimmed( EPeninputCmdHwr, EFalse ); + // } //For arabic finger hwr input orientation. TInt index = 0; if(iPluginInputMode == EPluginInputModeFingerHwr @@ -2011,7 +2021,7 @@ return; } - if ( iFepMan.StopProcessFocus() ) + if ( !iForegroundChange && iFepMan.StopProcessFocus() ) { if (iFepMan.CloseUiOnFocusChange()) { @@ -2077,6 +2087,13 @@ bOpen = EFalse; }*/ + // The state means: when current app with dim state lose foreground by non-capserver or notify server + // Need to cancel dim state + if ( iForegroundChange && !aGainForeground && !IsGlobalNotesApp( focusAppId ) && iInMenu ) + { + ResetMenuState(); + } + if ( aGainForeground && iFepMan.FepAwareTextEditor() && IsCurrentWindInOpenList() ) { if(!iPenInputSvrConnected) @@ -2397,7 +2414,7 @@ aLastEditorContent.Compare( aCurrentEditorContent ) == 0 ) { if ( aIcfData.iCurSel.HigherPos() > edit->DocumentLengthForFep() || - aIcfData.iCurSel.LowerPos() < 0 ) + aIcfData.iCurSel.LowerPos() < 0 || IsDimed() ) { return EFalse; } @@ -2877,6 +2894,10 @@ // void CAknFepPluginManager::LaunchPenInputMenuL(TInt aResourceId, TBool aRemeber) { + // when launch option menu, dim state changes, + // so need fetch the state next time. + iNeedFetchDimState = ETrue; + TInt previousModes = iCurPermitModes; TBool previousSCT = isLanuchSCT; TInt inputmode = PluginInputMode(); @@ -3260,10 +3281,17 @@ // check if need to change current text case TPtiTextCase textCase = CaseForMappedCharacter( TChar( keyEvent.iCode ) ); - if ( !IsDeadKeyCode( keyEvent.iCode ) && IsNeedToChangeTextCase( textCase ) ) + if ( IsNeedToChangeTextCase( textCase ) ) { iFepMan.PtiEngine()->SetCase( textCase ); - } + } + + env->SimulateKeyEventL(keyEvent, EEventKeyDown); + env->SimulateKeyEventL(keyEvent, EEventKey); + env->SimulateKeyEventL(keyEvent, EEventKeyUp); + } + else if ( keyEvent.iScanCode == EStdKeySpace ) + { TRawEvent eventDown; eventDown.Set( TRawEvent::EKeyDown, keyEvent.iScanCode ); iAvkonAppUi->DisableNextKeySound( keyEvent.iScanCode ); @@ -3323,9 +3351,11 @@ // ----------------------------------------------------------------------------- // void CAknFepPluginManager::OnPenInputServerKeyEventL(const TDesC& aData) - { - - iFepMan.PtiEngine()->CancelTimerActivity(); + { + if ( !EnableITIOnFSQ() ) + { + iFepMan.PtiEngine()->CancelTimerActivity(); + } if( aData.Length() <= 0 ) { @@ -3897,7 +3927,12 @@ iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputDimArrowKeys, enableArrowBtn); - + if ( PluginInputMode() == EPluginInputModeFSQ ) + { + iCurrentPluginInputFepUI->HandleCommandL( ECmdPenInputDimEnterKey, + iFepMan.IsFindPaneEditor() ); + } + SetIcfAlignment(); iModeChanged = ETrue; @@ -4265,10 +4300,20 @@ for (TInt i = 0; i < iCandidateList.Count(); i++) iSendAllList.iCandidates.Append(iCandidateList[i]->Des()); + + SendMatchListCmd(iSendAllList.iCandidates); + } + +void CAknFepPluginManager::SendMatchListCmd(const RArray& aList) + { + TFepITICandidateList list; + list.iActiveIndex = 0; + list.iItemArray2 = &aList; + list.iLangCode = iFepMan.CurrentInputLangCode(); TRAP_IGNORE(iCurrentPluginInputFepUI->HandleCommandL(ECmdPenInputFingerMatchList, - reinterpret_cast(&iSendAllList))); - } + reinterpret_cast(&list))); + } TBool CAknFepPluginManager::GetIndicatorImgID(const TInt IndicatorUID,TInt &aImage, TInt &aMask) { @@ -5017,7 +5062,12 @@ { return EFalse; } - return iPenInputServer.IsDimmed(); + if( iNeedFetchDimState ) + { + iCurrentDimState = iPenInputServer.IsDimmed(); + iNeedFetchDimState = EFalse; + } + return iCurrentDimState; } void CAknFepPluginManager::HandleiDimGainForeground(TBool aGain) { @@ -5455,14 +5505,11 @@ // 1. Not in keymapping: some function keys, space, enter, backspace // 2. In keymappings: keys on AB/Native range. #ifdef RD_INTELLIGENT_TEXT_INPUT - if ( aKeyEvent.iScanCode == EStdKeySpace - || aKeyEvent.iScanCode == EStdKeyEnter - || aKeyEvent.iScanCode == EStdKeyBackspace - || ( aKeyEvent.iScanCode != EPtiKeyNone - && ( iPluginPrimaryRange == ERangeNative - || iPluginPrimaryRange == ERangeEnglish - || ( iPluginPrimaryRange == 0 && iFepMan.InputMode() != ENumber - && iFepMan.InputMode() != ENativeNumber ) ) ) ) + if ( aKeyEvent.iScanCode != EPtiKeyNone + && ( iPluginPrimaryRange == ERangeNative + || iPluginPrimaryRange == ERangeEnglish + || ( iPluginPrimaryRange == 0 && iFepMan.InputMode() != ENumber + && iFepMan.InputMode() != ENativeNumber ) ) ) { return ETrue; } @@ -5519,6 +5566,12 @@ TBool CAknFepPluginManager::IsNeedToChangeTextCase( const TPtiTextCase& aTextCase ) { #ifdef RD_INTELLIGENT_TEXT_INPUT + // Not need change case if it is supported in language + if ( iCaseMan.IsAbleChangeCase() ) + { + return EFalse; + } + TPtiTextCase textCase = aTextCase; if( EPtiKeyboardHalfQwerty != iFepMan.PtiEngine()->KeyboardType() ) {