fep/aknfep/src/AknFepManager.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/fep/aknfep/src/AknFepManager.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20732 +0,0 @@
-/*
-* Copyright (c) 2002-2008 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0""
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:           
-*       Provides the CAknFepManager methods.
-*
-*/
-
-
-
-
-
-
-
-
-
-
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <uikon/eikdefmacros.h>
-#endif
-#include "AknFepManager.h"
-#include "AknFepManagerInterface.h" // MAknFepManagerInterface
-#include "aknfepindicator.h"
-#include "AknFepPanic.h"
-#include "AknFepKeyCatcher.h"
-#include "AknFepGlobalEnums.h"
-#include "AknFepCaseManager.h"
-#include "AknFepHashKeyManager.h"
-#include "AknFepSharedDataInterface.h"
-#include "AknFepInlineTextDecorator.h"
-#include "AknFepUiManagerBase.h"
-#include "AknFepUiManagerChinese.h"
-#include "AknFepUiManagerWestern.h"
-
-#include "AknFepPluginManager.h"
-#include "AknFepUiIndicInputManager.h"
-#include "AknFepUiIndicEnums.h"
-#include <AknFepUIStylusPopupMenu.h>
-#include "aknfepuispellinputpane.h"
-
-#include <bautils.h>
-#include <coeaui.h>                 //CCoeAppUi
-#include <aknedsts.h>               //CAknEdwinState
-#include <uikon.hrh>                //keys
-#include <aknenv.h>                 //CAknEnv
-#include <PtiEngine.h>              //CPtiEngine
-#include <AknJapaneseReading.h>     //CAknJapaneseReading
-#include <featmgr.h>                //FeatureManager
-#include <e32base.h>                //CPeriodic
-#include <PtiDefs.h>                //keys
-#include <fepipext.h>               //MCoeFepSpecificExtensions
-
-#include <aknsoundsystem.h>
-#include <avkon.rsg>
-#include <avkon.hrh>
-
-#include <tagma.h>
-#include <frmtview.h>
-#include <aknedformaccessor.h>
-
-#include <aknfep.rsg>
-#include <avkon.mbg>
-
-#include "aknconsts.h"
-#include <aknfeppeninputenums.h>
-#include <eikproc.h>                // User Dictionary
-#include <eikapp.h>                 // User Dictionary
-
-#include <StringLoader.h>
-
-#include <centralrepository.h>
-#include <AknFepInternalCRKeys.h>
-#include <settingsinternalcrkeys.h>
-#include <AknUtils.h>
-#include <AknCustomCursorSupport.h>
-#include <PtiKeyMappings.h>
-#include <aknfeppeninputimeplugin.h>
-#include <peninputcmd.h>
-
-#include <AknSettingCache.h>
-#include <aknextendedinputcapabilities.h>
-#include <AvkonInternalCRKeys.h>
-#include <hlplch.h>
-#include <aknfepdocumentnavigation.h>
-
-#include <eikcolib.h>
-#include <akntoolbar.h>
-
-#include <eikfrlbd.h>
-#include <eikccpu.h>
-#include <aknappui.h>
-#include <apgwgnam.h>
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#include "AknFepUiWordPopupContent.h"
-#include "AknFepFnKeyManager.h"
-//#include <csxhelp/cp.hlp.hrh> 
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-#ifdef RD_TACTILE_FEEDBACK
-#include <touchfeedback.h>
-#endif //RD_TACTILE_FEEDBACK
-#include "AknFepThaiSCTSelector.h"
-
-//the follow 10 filse include for phrase creation
-#include <bamdesca.h>
-#include <eikspane.h> //CEikStatusPane 
-#include <akntitle.h> //CAknTitlePane 
-#include <akntoolbar.h> //CAknToolBar 
-#include <aknappui.h>
-#include "AknFep.hrh"
-#include "aknfepuserdbdlg.h"
-#include "aknfepzhuyinkeyhandler.h"
-#include "AknFepZhuyinAnalyser.h"
-#include "AknFepZhuyinAnalyserDb.h"
-
-#include <aknnavi.h> 
-#include <aknnavide.h> 
-
-#include <eikedwin.h>
-#include <aknCharMap.h>
-
-const TInt KSelectItemSize(10);
-_LIT(KAknFepResourceFileName, "z:\\resource\\fep\\aknfep.rsc");
-_LIT(KFEPPREDINPUT_HLP_INPUT, "PREDINPUT_HLP_INPUT"); // 
-
-#define text_to_field_mode_hash_key ';'
-#define iAvkonAppUi ((CAknAppUi*)CEikonEnv::Static()->EikAppUi())
-#define __SHIFT_KEY_LOOP
-
-// EAknEditorNativeKeysNumberModeKeymap is used for example in MFNE editors.
-#define EAknEditorNativeKeysNumberModeKeymap EAknEditorReservedInternalUseKeymap
-
-// UID of user dictionary application
-const TUid KUidUserDictApp = {0x101F8645};
-
-const TText KAknFEPLineFeedSymbol = 0x21B2;
-const TText KAknFEPMirroredLineFeedSymbol = 0x21B3;
-const TText KAknFEPZeroKey = 0x30;
-
-// inline text decoration potentially adds 2 directional markers for every "real" character. Buffer needs to be 3 x predictive engine bufsize
-const TInt KMaxInlineEditSize( 3 * CAknFepManager::EMaximumFepWordLength );
-
-// Maximum number of chunks to navigate throught attempting to get to the visual end of a selection.
-// Since chunks are arranged only within a line, this should be more than the number of chunks likely in
-// a single line of text
-const TInt KMaxChunkWalkIterations(20);
-
-// This command is is used for setting empty CBA.
-const TInt KNullCommandId = 0;
-
-_LIT_SECURE_ID(KPhoneSecureId, 0x100058b3);
-
-#ifdef RD_HINDI_PHONETIC_INPUT
-
-const TUint KQuestionMark = 0x003F;
-
-#endif
-
-// Ccpu key events. 
-/*As part of build warnings commenting this perticular code it might require when touch is enabled.
-const TKeyEvent KEditorCopyEvent = {3, 67, 161, 0};  // Ctrl + C
-const TKeyEvent KEditorCutEvent  = {24, 88, 161, 0}; // Ctrl + X
-*/
-
-const TInt KTouchInputPreviewOn = 1;
-const TInt KTouchInputPreviewOff = 0;
-
-#ifdef  RD_SCALABLE_UI_V2
-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 = 23;
-const TInt KEditorMenuPermitedSend[KMaxMenuSize] = 
-    {         
-    EJapanFepCmdModeHiragana,
-    EJapanFepCmdModeKatakana,
-    EJapanFepCmdEditModeAlpha,
-    EJapanFepCmdEditModeNumber,
-    EJapanFepCmdModeFullWidth,
-    EJapanFepCmdModeHalfWidth,
-    EChinFepCmdModePinyin,
-    EChinFepCmdModeZhuyin,
-    EChinFepCmdModeStroke,
-    EAknCmdT9PredictiveT9Off,
-    EAknCmdMultitapPredictiveT9On,
-    EJapanFepCmdMultitapPredictiveT9On,
-    EChinFepCmdModeZhuyinFind,
-    EChinFepCmdModeStrokeFind,
-    EAknCmdEditModeAlpha,
-    EAknCmdEditModeLatinText,
-    EChinFepCmdModeLatinUpper,
-    EChinFepCmdModeLatinLower,
-    EAknCmdEditModeNumber,
-    EChinFepCmdModeNumber,
-    EAknCmdEditModeArabicIndicNumber,
-    EAknCmdEditModeEasternArabicIndicNumber,
-    EAknCmdEditModeIndicNumber
-    };   
-     
-#endif // RD_SCALABLE_UI_V2 
-
-
-// Number modes used by Arabic or Hindi.
-enum TNonLatinNumberModes
-    { 
-    ENbrModeLatin,
-    ENbrModeArabic = 1,
-    ENbrModeIndic = 1
-    };
-
-// Number mode type
-enum TNonLatinNumberModeType
-    {
-    ENbrModeTypeArabic,
-    ENbrModeTypeIndic,
-    ENbrModeTypeEasternArabic //for Urdu & Farsi languages
-    };
-    
-// The passwd timeout is same as defined on CEikSecretEditor.
-const TInt KSyncPasswdTimeout = 1000000;
-
-#ifdef RD_SCALABLE_UI_V2
-TUid AppUidFromWndGroupId(TInt aWndGrpId);
-extern TUid GetCurAppUid();
-extern TBool IsGlobalNotesApp(TUid& aUid);
-TInt GetForegroundTaskAppWgId();
-#endif
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-const TInt KWordToFocusInCandidateList = 1;
-#endif
-
-LOCAL_C TInt RemapVietnameseAccentedCharacter(TUint16 aChr);
-
-//
-// Class TTextDirectionalInfo
-//
-/**
-* The implementation inializes with well-defined "null" state
-*/
-CAknFepManager::TTextDirectionalInfo::TTextDirectionalInfo() : 
-iDirectionalStatus(EUnknown), iBlockEnvironment(EUndefined)
-    {}
-
-void CAknFepManager::TTextDirectionalInfo::SetDirectionFromChunk( 
-               const CTmTextLayout::TTmChunkDescription& aChunk )
-    {
-    if ( aChunk.iStart >= 0 ) // Condition for valid block. Does nothing otherwise
-        iDirectionalStatus = aChunk.iRightToLeft ? ERightToLeft : ELeftToRight;
-    }
-
-
-void TFepLanguageTranslation::ReadFromResource(TResourceReader& aReader)
-    {
-    iName.Set(aReader.ReadTPtrC());
-    iLanguageId = aReader.ReadInt16();
-    iCommandId = aReader.ReadInt16();
-    }
-
-
-CAknFepManager::CAknFepManager(CCoeEnv& aConeEnvironment)
-    :CCoeFep(aConeEnvironment),
-    iAsyncResouceChanged(EActivePriorityDefault),
-    iPreviousEditingState(EStateNone),
-    iInputCapabilities(TCoeInputCapabilities::ENone),
-    iModeBefore(ELatin),
-    #ifdef RD_INTELLIGENT_TEXT_INPUT
-    iKeyPressedDuringShift(EFalse),
-#endif
-    iCharWidth(EHalfWidthChar),
-    iAsyncOwnSimulateKey(EActivePriorityDefault),
-    iLongThai0Key(EFalse),
-    iEditCharsPtr(0,0),
-    iComposChrFlag(0),
-    iIsUserdbdlgActive(0),
-    iLongClearAfterCloseUI(EFalse),
-    // phrase creation
-    iPhraseCreation(0),
-    iPinyinPhraseCreation(0),
-    iEntryPhrase(0)
-    
-
-    {
-    }
-
-void CAknFepManager::ConstructL(const CCoeFepParameters& aFepParameters)
-    {
-    BaseConstructL(aFepParameters);
-    iUiInterface = CAknFepUIInterface::NewL();
-    iIndicator = iUiInterface->NewIndicatorL();
-    iPreviousIndicator = CAknEnv::Static()->SwapEditingStateIndicator(iIndicator);
-
-    // Set up resources
-    TFileName resourceName(KAknFepResourceFileName);
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    BaflUtils::NearestLanguageFile(coeEnv->FsSession(), resourceName);
-    iResId = coeEnv->AddResourceFileL(resourceName);
-
-    // Save Japanese Feature support to a member variable
-    iFeatureSupportedJapanese = FeatureManager::FeatureSupported(KFeatureIdJapanese);
-
-    iUiLanguage = User::Language();
-    
-    // Shared Data
-    iSharedDataInterface = CAknFepSharedDataInterface::NewL(this);
-
-    TInt previUiLanguage = iSharedDataInterface->PluginUILanguage();
-
-    if (iUiLanguage != previUiLanguage)
-        {
-        
-        // if UI language has changed we need to set text input language according to UI language
-        iSharedDataInterface->SetPluginUILanguage(iUiLanguage);
-        iSharedDataInterface->SetInputTextLanguage(0);  // signals that it needs to be updated
-        }
-
-    if (!iSharedDataInterface->InputMode()) //not initialised yet - first time device is switched on
-        {
-        switch (iUiLanguage)
-            {
-            case ELangPrcChinese:
-                iSharedDataInterface->SetInputMode(EPinyin);
-                break;
-            case ELangTaiwanChinese:
-                iSharedDataInterface->SetInputMode(EZhuyin);
-                break;
-            case ELangHongKongChinese:
-                iSharedDataInterface->SetInputMode(EStroke);
-                iSharedDataInterface->SetCangJieMode(ECangJieNormal);
-                break;
-            case ELangJapanese:
-                iSharedDataInterface->SetInputMode(EHiraganaKanji);
-                break;
-            case ELangKorean:
-                iSharedDataInterface->SetInputMode(EHangul);
-                break;
-            case ELangHindi:
-                iSharedDataInterface->SetInputMode(EHindi);
-                break;
-            default:
-                iSharedDataInterface->SetInputMode(ELatin);
-                break;
-            }
-        }
-
-    iUiInterface->SetFepMenuObserver(this);
-   
-    TInt inputLanguage = iSharedDataInterface->InputTextLanguage();
-
-    // A process instantiating Fep may miss ECapabilityWriteDeviceData capability, 
-    // which is needed for updating locale repository.
-    // A workaround is to delay change up to a process that has the capability
-    TSecurityInfo info;
-    info.Set(RProcess());
-
-    TBool hasCapability = info.iCaps.HasCapability(ECapabilityWriteDeviceData);
-    
-    if (!inputLanguage && hasCapability)
-        {
-        // set correct input language
-        inputLanguage = SubstituteSublanguageId(iUiLanguage);
-        
-        // If Ptiengine is not initialize, initialize it
-        if (!iPtiEngine)
-            {
-            iPtiEngine = CPtiEngine::NewL(ETrue);    
-            }         
-        // If still not found, default to english.
-        if (!iPtiEngine->GetLanguage(inputLanguage))
-            {
-            inputLanguage = ELangEnglish;   
-            }
-        
-        // Set the current input language
-        iSharedDataInterface->SetInputTextLanguage(inputLanguage);
-        
-        // update numeric input
-        if ( iUiLanguage == ELangArabic ) 
-            {
-            SetDefaultNumberMode( ENbrModeArabic, 
-                                  ENbrModeTypeArabic );
-            }            
-        else if ( ( iUiLanguage == ELangUrdu  ) || 
-                  ( iUiLanguage == ELangFarsi  ) )
-            {
-            SetDefaultNumberMode( ENbrModeArabic, 
-                                  ENbrModeTypeEasternArabic );
-            }
-		else if ( TAknFepUiIndicInputManager::IsScriptDevanagari( iUiLanguage ) )
-            {
-            SetDefaultNumberMode( ENbrModeLatin, 
-                                  ENbrModeTypeIndic );
-            }
-        else
-            {           
-            SetDefaultNumberMode( ENbrModeLatin, ENbrModeTypeArabic );
-            }
-        }
-        
-    iSctEditChars = HBufC::NewL( 10 );
-    
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Predictive QWERTY (XT9) changes ---->
-    	if(CCoeEnv::Static()->AppUi())
-				iExactWordPopupContent = iUiInterface->CreateWordPopupContentL();
-    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    // If the following line is uncommented, the FEP is fully constructed
-    // for all applications at application startup.
-    // ConstructFullyL();
-    iShiftKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    iFnKeyManager = CAknFepFnKeyManager::NewL( *this,iSharedDataInterface );
-#endif
-    TRAPD(result,iKeyCatcher = CAknFepKeyCatcher::NewL(*this));
-    if(result == KErrNone)
-        {
-        iKeyCatcher->ActivateL();
-        }
-    // the follow 3 objects for phrase creation
-    iZhuyinKeyHandler = CZhuyinKeyHandler::NewL();
-    iZhuyinAnalyserDb = CZhuyinAnalyserDbFeed::NewL(EPinyinAnalyserTypeZhuyin);
-    iZhuyinAnalyser = CAknFepZhuyinAnalyser::NewL(iZhuyinAnalyserDb);
-    iAknFepThaiSCTSelector = CAknFepThaiSCTSelector::NewL();
-    iHybridAplphaChangedToAlphanumeric = EFalse;
-    iLastFocusedEditor = NULL;
-    iFepAwareDialogParentEditor = NULL;
-    }
-
-void CAknFepManager::ConstructFullyL()
-    {
-    if (!iPtiEngine)
-        {
-        iPtiEngine = CPtiEngine::NewL(ETrue);    
-        } 
-    
-    if ( !(iPtiEngine->GetLanguage(iSharedDataInterface->InputTextLanguage())) )
-        {
-        // If input language cenrep value is set to language unknown to PtiEngine,
-        // try to reset based on UI-language. 
-        TInt inputLang = SubstituteSublanguageId(iUiLanguage);
-        
-        // If still not found, default to english.
-        if (!iPtiEngine->GetLanguage(inputLang))
-            {
-            inputLang = ELangEnglish;   
-            }
-        iSharedDataInterface->SetInputTextLanguage(inputLang);      
-        }      
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef FF_DUAL_LANGUAGE_SUPPORT
-    if (iPtiEngine->GetLanguage(iSharedDataInterface->InputTextLanguageSecondary()) == NULL)
-        {
-        // If secondary input language is unknown to PtiEngine, set it to none
-        iSharedDataInterface->SetInputTextLanguageSecondary(0);
-        }
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-#endif
-        
-    if(NULL == iKeyCatcher)
-        {
-        iKeyCatcher = CAknFepKeyCatcher::NewL(*this);    
-        iKeyCatcher->ActivateL();
-        }
-    
-    iConcatenationTimer=CPeriodic::NewL(CActive::EPriorityStandard);
-    iPostEventCheck=CIdle::NewL(CActive::EPriorityStandard);
-    iChrKeypressMonitor = CPeriodic::NewL(CActive::EPriorityStandard);
-
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    TInt inputLanguage = iSharedDataInterface->InputTextLanguage();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef FF_DUAL_LANGUAGE_SUPPORT
-    TInt inputLanguageSecondary = iSharedDataInterface->InputTextLanguageSecondary();
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-#endif
-    SetWesternPredictive(iSharedDataInterface->PredictiveTextOn());
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-    iIsAutoCompleteOn = iSharedDataInterface->PredictiveTextAutoCompleteOn(); // AutoCompletion disabled by Default 
-#endif	//RD_INTELLIGENT_TEXT_INPUT
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    iIsAutoCompleteOn = iSharedDataInterface->PredictiveTextAutoCompleteOn(); // AutoCompletion disabled by Default 
-    iTypingCorrectionLevel = iSharedDataInterface->PredictiveTextTypingCorrectionLevel();
-    iIsNumberCandidateShown = iSharedDataInterface->PredictiveTextNumberCandidateShown();
-    TInt primaryCandidateValue = iSharedDataInterface->PredictiveTextPrimaryCandidate();
-    if( primaryCandidateValue == 0)
-		iPrimaryCandidate = ETrue;
-	else if(primaryCandidateValue == 1)
-		iPrimaryCandidate = EFalse; 
-#endif // RD_INTELLIGENT_TEXT_INPUT
-    iJapanesePredictive = iSharedDataInterface->PredictiveTextJapaneseOn();
-    iQwertyInputMode = iSharedDataInterface->QwertyInputMode();
-    iMultiTapTimer = iSharedDataInterface->MultiTapTimer();
-    iJapaneseQwertyFlags = iSharedDataInterface->JapaneseQwertyFlags();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(!iFnKeyManager)
-        {
-        iFnKeyManager = CAknFepFnKeyManager::NewL( *this,iSharedDataInterface );
-        }    
-#endif
-    iCaseMan = CAknFepCaseManager::NewL(*this);
-    iLangMan = CAknFepLanguageManager::NewL(this, iCaseMan);
-    iPtiEngine->ActivateLanguageL(inputLanguage);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef FF_DUAL_LANGUAGE_SUPPORT
-    iPtiEngine->SetSecondaryInputL(inputLanguageSecondary);
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-#endif
-    iLangMan->SetInputLanguageL(inputLanguage);
-    SetInputLanguageCapabilities(inputLanguage);
-    iCurrentFepUI = iLangMan->GetFepUI(ELatin, iCharWidth, IsPredictive(ELatin));
-
-    iLastKeyPressedWasHashKey = EFalse;
-    iDeviceSupportsRtlLanguage = DeviceSupportsRTLLanguageL();
-
-    TResourceReader reader;
-    // get character from resource to represent an 'enter' character
-    coeEnv->CreateResourceReaderLC(reader, R_AVKON_SCT_SPACE_SYMBOL);
-    iSpaceCharacterCode = reader.ReadUint16();
-    coeEnv->CreateResourceReaderLC(reader, R_AVKON_SCT_FULLWIDTHSPACE_SYMBOL);
-    iFullWidthSpaceCharacterCode = reader.ReadUint16();
-    CleanupStack::PopAndDestroy(2); //reader
-
-    //initialise states
-    iMode = EAknEditorNullInputMode; //Force a sync of mode...
-    SyncStates(EAknFepStateNull);
-    ResetFlags();
-    ResetExtendedFlags();
-
-    ReadHashKeyLoopL();
-    iHashKeyMan = CAknFepHashKeyManager::NewL(*this, iCaseMan);
-    SetHashKeyStyle();
-    iInlineTextDecorator = new (ELeave) CAknFepInlineTextDecorator;
-    if (IsFeatureSupportedJapanese())
-        {
-        CAknJapaneseReading::CreateL(iPtiEngine);
-        }
-    // setting call back
-    TCallBack callback(DoSimulateKey, this);
-    iAsyncOwnSimulateKey.Set(callback);
-    
-    TCallBack resourcechangedcallback(HandleResourceChangedCallback,this);
-    iAsyncResouceChanged.Set(resourcechangedcallback);
-#ifdef RD_SCALABLE_UI_V2
-    iFepPluginManager = CAknFepPluginManager::NewL
-        ( *this, *iSharedDataInterface, *iLangMan, *iCaseMan);
-    iNotifyPlugin = ETrue;
-#endif //RD_SCALABLE_UI_V2
-
-    iFepFullyConstructed = ETrue;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    iIsFnKeyMapped = IsFnKeyMappedL();
-    iKeyboardType = (TPtiKeyboardType)iSharedDataInterface->KeyboardLayout();
-#endif
-    }
-
-CAknFepManager::~CAknFepManager()
-    {
-#ifdef RD_PF_SEC_APPARC
-    delete iNullService;
-#else
-    //Embedding - removing created document
-    if ( iEmbedded )
-        {
-        CEikonEnv::Static()->Process()->DestroyDocument(iEmbedded); // User dictionary
-        iEmbedded = NULL;
-        }
-#endif
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        SetFlag(CAknFepManager::EFlagSupressAutoUpdate);
-        TRAPD(err, CommitInlineEditL())
-        if (err)
-            {
-            CleanUpFep();
-            }
-        }
-        
-    if ( EditorState() )
-        {
-        EditorState()->SetObserver(NULL);    
-        }        
-    if (iLastFocusedEditor)
-        {
-        iLastFocusedEditor->SetObserver(NULL);
-        iLastFocusedEditor = NULL;
-        } 
-    if (iFepAwareDialogParentEditor)
-        {
-        iFepAwareDialogParentEditor->SetObserver(NULL);
-        iFepAwareDialogParentEditor = NULL;
-        } 
-    
-    delete iSharedDataInterface;
-    MAknEditingStateIndicator* indicator = CAknEnv::Static()->EditingStateIndicator();
-    if (indicator == iIndicator)
-        {
-        CAknEnv::Static()->SwapEditingStateIndicator(NULL);
-        }
-
-        
-    delete iIndicator;
-    iIndicator = NULL;
-    CCoeEnv::Static()->DeleteResourceFile(iResId);
-
-    // Everything that is constructed in ConstructFullyL() method
-    // needs to be deleted in CommonDestroyFep() method.
-    CommonDestroyFep();
-
-	if (iUiInterface)
-	    iUiInterface->SetFepMenuObserver(NULL);
-
-    delete iPtiEngine;
-    delete iSctEditChars;
-
-#ifdef RD_SCALABLE_UI_V2
-    if ( FepAwareTextEditor() )
-        {
-    		UnregisterObserver();
-        }
-    delete iFepPluginManager;
-    delete iStylusCcpuMenu;        
-
-    delete iSpellInitText;        
-#endif // RD_SCALABLE_UI_V2
-    delete iUiInterface;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Predictive QWERTY (XT9) changes ---->
-    delete iExactWordPopupContent;
-    iExactWordPopupContent = 0;
-    delete iCandidatePopup;
-    iCandidatePopup = 0;
-    delete iResourceString;
-    iResourceString = 0;
-    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    // the follow objects for phrase creation
-      delete iZhuyinKeyHandler;
-      delete iZhuyinAnalyser;
-    delete iAknFepThaiSCTSelector;
-    }
-
-void CAknFepManager::CommonDestroyFep()
-    {
-    iFepFullyConstructed = EFalse;
-
-    // This method is called both from destructor and CleanUpFep methods.
-    iAsyncOwnSimulateKey.Cancel();
-    iAsyncResouceChanged.Cancel();
-    delete iShiftKeypressMonitor;
-    iShiftKeypressMonitor = NULL;
-    delete iConcatenationTimer;
-    iConcatenationTimer = NULL;
-    delete iChrKeypressMonitor;
-    iChrKeypressMonitor = NULL;
-    delete iLangMan;
-    iLangMan = NULL;
-    iCurrentFepUI = NULL;
-    delete iKeyCatcher;
-    iKeyCatcher = NULL;
-
-    delete iPostEventCheck;
-    iPostEventCheck = NULL;
-    delete iHashKeyMan;
-    iHashKeyMan = NULL;
-    delete iCaseMan;
-    iCaseMan = NULL;
-    delete iInlineTextDecorator;
-    iInlineTextDecorator = NULL;
-    iHashKeyLoop.Close();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(iFnKeyManager)
-        {
-        delete iFnKeyManager;
-        iFnKeyManager = NULL;
-        }
-    if( iNumericResourceTimer )        
-        {
-        delete iNumericResourceTimer;
-        iNumericResourceTimer = NULL;    
-        }
-#endif
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::SetKeyboardLayout(TPtiKeyboardType aType)
-    {
-    	
-    if(iQwertyInputMode && iFnKeyManager 
-    		&& (iFnKeyManager->FnKeyState()== CAknFepFnKeyManager::EFnKeyLock
-		||iFnKeyManager->FnKeyState()== CAknFepFnKeyManager::EFnKeyNext)) 
-		{
-        	iMode = ENumber;
-		}
-	
-	if(iFnKeyManager)        
-		{
-		iFnKeyManager->ClearFnKeyState();
-		}
-    	
-    if(iPtiEngine)
-        {
-        iPtiEngine->SetKeyboardType(aType);
-        }    
-    iKeyboardType = aType;        
-    }
-
-TPtiKeyboardType CAknFepManager::KeyboardLayout() const
-    {
-    return iKeyboardType;
-    }
-#endif
-TBool CAknFepManager::TryCloseUiL()
-    {
-#ifdef RD_HINDI_PHONETIC_INPUT        
-    if ((iSharedDataInterface->InputTextLanguage() == KLangHindiPhonetic) && 
-         IsFlagSet(CAknFepManager::EFlagNoMatches))
-        {
-        ClearFlag(CAknFepManager::EFlagNoMatches);
-    	if (PreviousChar() == KQuestionMark)
-    		RemovePreviousCharacterL();
-    	}
-#endif    
-    if (iFepManState == EAknFepStateUIActive)
-        {
-        // In Japanese input,
-        // commit inline editing at only the western predictive mode.
-        if (!IsFeatureSupportedJapanese() || WesternPredictive())
-            {
-            if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-                {
-                TryRemoveNoMatchesIndicatorL();
-                UpdateCbaL(NULL);
-                }
-                
-             	
-
-//#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            if ( iFepPluginManager && 
-             	(iFepPluginManager->PluginInputMode() == EPluginInputModeNone))
-            	{
-            	RemoveSuggestedAdvanceCompletionL();
-            	}            
-#endif // RD_INTELLIGENT_TEXT_INPUT              
-//#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-                
-#ifdef RD_SCALABLE_UI_V2 
-            
-            if ( iFepPluginManager != NULL && 
-                 iFepPluginManager->BeforeSpell() )
-                {
-                iFepPluginManager->SetBeforeSpell(EFalse);
-                }
-            else
-#endif  
-          
-                {
-                CommitInlineEditL();    
-                }
-            }
-        if (IsCcpuFlagSet(ECcpuStataCommitPredictiveWord))            
-            {
-            // Word commiting must be done after CommitInlineEditL call (because
-            // of Japanese ReadingTextL funtionality), hence the delayed commit here.
-            iPtiEngine->CommitCurrentWord();
-            ClearCcpuFlag(ECcpuStataCommitPredictiveWord);
-            }            
-        InternalFepUI()->CloseUI();
-        SyncStates(EAknFepStateInitial);
-        if (iMode == EPinyin || iMode == EZhuyin || iMode == EStroke || iMode == ECangJie)
-            {
-            SetCursorType(EActive);
-            if ( EditorState() )
-            	{
-            	EditorState()->SetFlags( EditorState()->Flags() & ~EAknEditorFlagChinesePopup );
-            	}            
-            }
-
-        // EFalse in case of latin input in Japanese variant
-        if (IsFeatureSupportedJapanese() 
-         && iMode == ELatin && !WesternPredictive())
-            {
-            return EFalse;
-            }
-
-        return ETrue;
-        }
-    else
-        {
-    	if (IsKoreanInputLanguage())
-        	{
-        	if (IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-        		{
-        	   	CommitInlineEditL();
-        		PtiEngine()->ClearCurrentWord();
-        		}
-        	}
-    	
-        //in initial state characters should either:
-        //1. not be consumed by the FEP.
-        //2. be committed immediately by the Input State.
-        //3. be multitap chars, in which case they may need to be committed
-        // here. It is best to let the engine deal with this.
-        if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) )
-            {
-            InternalFepUI()->ExpireMultitapTimer();
-            }
-        return EFalse;
-        }
-    }
-
-void CAknFepManager::SendUIActivatedNotification()
-    {
-    SyncStates(EAknFepStateUIActive);
-    }
-
-void CAknFepManager::SendUIDeActivatedNotification()
-    {
-    SyncStates(EAknFepStateInitial);
-    }
-
-void CAknFepManager::PlaySound(TAvkonSystemSID aSound) const
-    {
-    if (SoundSystem())
-        {
-        SoundSystem()->PlaySound(aSound);
-        }
-    }
-    
-void CAknFepManager::SetLongClearAfterCloseUI(TBool aLongClear)
-    {
-    iLongClearAfterCloseUI = aLongClear;
-    }
-
-TKeyResponse CAknFepManager::HandleKeyEventL(TUint aCode, TKeyPressLength aLength,TEventCode aEventCode)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-
-    TInt documentLength = -1;
-    if (iInputCapabilities.FepAwareTextEditor())
-        {
-        documentLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-        }
-
-    if (iFepFullyConstructed && iConcatenationTimer->IsActive())
-        {
-        if (!( aCode == EKeyRightArrow ||
-             aCode == EKeyLeftArrow ||
-             aCode == EKeyUpArrow ||
-             aCode == EKeyDownArrow ))
-            {
-            iConcatenationTimer->Cancel();
-            }
-        }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT    
-    
-    if(iKeyBackSpaceHit && aCode != EKeyBackspace)
-    	iKeyBackSpaceHit = 0;
-    
-    if (aCode != EPtiKeyStar && iNumericResourceTimer)
-        {
-        // return with EKeyWasConsumed if any of the arrow keys are pressed with 
-        // iNumericResourceTimer is active
-        if(NumericResourceMultiTapTimerTimeoutL()&&
-           (aCode == EKeyRightArrow || aCode == EKeyLeftArrow || aCode == EKeyUpArrow || aCode ==EKeyDownArrow))
-            return EKeyWasConsumed;
-        }
-#endif
-
-
-
-    // This method is implemented independent of all modes, so it can be called by anyone, anywhere
-    if ( BidiCursorRequired() )
-        {
-        response = AttemptCursorFlipAtAmbiguousPointL( aCode );
-        if ( response == EKeyWasConsumed )
-            {
-            return response;
-            }
-        }
-
-    if ( aCode != EPtiKeyHash 
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD
-#ifdef __SHIFT_KEY_LOOP		
-    		&& ( aCode != EPtiKeyQwertyLeftShift 
-    		|| EPtiKeyboardHalfQwerty != KeyboardLayout() )
-#endif //__SHIFT_KEY_LOOP
-#endif //__HALF_QWERTY_KEYPAD
-#endif //RD_INTELLIGENT_TEXT_INPUT   		
-    		)
-    
-        {
-        
-        SetLastPressedHashKeyStatus(EFalse);
-        
-        if(iHashKeyMan)
-            {
-            iHashKeyMan->CancelHashKeyTimer();
-            if (aCode != EKeyOK)
-                {
-                iHashKeyMan->ClearSelectionModeHashKeyLoop();
-                }
-            }
-        }
-    // Always commit the text before handling arrow keys
-    if (iMode == EHangul && IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-    	{
-    	if ( aCode == EKeyRightArrow ||
-             aCode == EKeyLeftArrow ||
-             aCode == EKeyUpArrow ||
-             aCode == EKeyDownArrow )
-    		{
-    		CommitInlineEditL();
-       		iPtiEngine->ClearCurrentWord();
-    		}
-        }
-    TBool isPassNext = IsFlagSet(EFlagPassNextKey);
-   
-    switch (aCode)
-        {
-        case EKeyEscape:
-
-#ifdef RD_SCALABLE_UI_V2     
-        if( iFepFullyConstructed && iFepPluginManager)
-            {
-            iFepPluginManager->ResetMenuState(EFalse);            
-            }
-#endif         
-            if (TryCloseUiL())
-                {
-                response = EKeyWasConsumed;
-                // phrase creation
-                PhraseCreation(EFalse);
-                // phrase creation
-                PinyinPhraseCreation(EFalse);
-                }
-            break;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD
-#ifdef __SHIFT_KEY_LOOP
-        case EPtiKeyQwertyLeftShift:
-        if( EPtiKeyboardHalfQwerty == KeyboardLayout() )
-        	{
-			response = HandleHashKeyL(aLength);
-            (aLength == ELongKeyPress)? SetLastPressedHashKeyStatus(EFalse):SetLastPressedHashKeyStatus(ETrue);
-			}
-            break;			
-#endif //__SHIFT_KEY_LOOP       	
-#endif //__HALF_QWERTY_KEYPAD	
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        case EPtiKeyHash:
-            if(InputMode() == EHangul)
-            	{
-				if (aLength == EShortKeyPress)
-					{
-					FepUI()->HandleKeyL(aCode, aLength);
-					response = EKeyWasConsumed;
-					}
-				else
-					{
-               	 	//PhraseCreation(EFalse);
-            		response = HandleHashKeyL(aLength);
-            		(aLength == ELongKeyPress)? SetLastPressedHashKeyStatus(EFalse):
-                                        		SetLastPressedHashKeyStatus(ETrue);
-					}
-				}
-     	     else if (InputMode()!= EZhuyin)
-                {
-                if (IsPinyinPhraseCreation() )
-                    {
-                    ClearCcpuFlag( ECcpuStateHashDown );
-                    response = EKeyWasConsumed;
-                    }
-                else
-                    {
-                    response = HandleHashKeyL(aLength);
-                    (aLength == ELongKeyPress)
-                        ? SetLastPressedHashKeyStatus(EFalse)
-                            : SetLastPressedHashKeyStatus(ETrue);
-                    }
-                }
-            else
-                {
-                PhraseCreation(EFalse);
-                response = HandleHashKeyL(aLength);
-                (aLength == ELongKeyPress)
-                    ? SetLastPressedHashKeyStatus(EFalse)
-                        : SetLastPressedHashKeyStatus(ETrue);
-                }
-            break;
-        case EKeyCBA1:
-            if(Japanese())
-                {
-                if (FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                break;
-                }
-            // phrase creation the key CBA2 need to solve.
-            if ( IsEntryPhrase() )
-                {
-                if ( FepUI()->HandleKeyL( aCode, aLength ) )
-                    {
-                    response = EKeyWasConsumed;
-                    break;
-                    }
-                }
-
-            if (!WesternPredictive())
-                {
-                if (TryCloseUiL())
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                }            
-            break;
-        case EKeyCBA2:
-            if(Japanese())
-                {
-                if (FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                break;
-                }
-            if (!WesternPredictive())
-                {
-                if (TryCloseUiL())
-                    {
-                    // phrase creation the key CBA2 need to solve.
-                    PhraseCreation( EFalse );
-                    response = EKeyWasConsumed;
-                    }
-                }
-     		 else
-                {
-                if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) )
-                    {
-                    InternalFepUI()->ExpireMultitapTimer();
-                    }
-                }
-            // phrase creation the key CBA2 need to solve.
-            EntryPhrase( EFalse );
-            break;
-        case EPtiKeyStar:
-            if (IsFlagSet(EFlagPassNextKey))
-                {
-                ClearFlag(EFlagPassNextKey);
-                }
-            else if ( !IsFepAwareTextEditor() )
-                {
-                // The editor is MFNE or other non FEP aware text editor.
-                // Pass the key to the editor to handle.
-                response = EKeyWasNotConsumed;
-                }
-            else if (IsFlagSet(EFlagShiftKeyDepressed))
-                {
-                response = EKeyWasConsumed;
-                }
-            else 
-                {
-#ifdef RD_SCALABLE_UI_V2                
-                iStarKeyPressed = ETrue;
-#endif // RD_SCALABLE_UI_V2                    
-                if (FepUI()->HandleKeyL(aCode, aLength, aEventCode))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-#ifdef RD_SCALABLE_UI_V2                
-                iStarKeyPressed = EFalse;
-#endif // RD_SCALABLE_UI_V2                     
-                }
-            break;
-        case EKeyRightArrow:
-            if (TryHandleArrowRightEventL(documentLength))
-                {
-                response = EKeyWasConsumed;
-                break;
-                }
-            // fall through
-        case EKeyLeftArrow:
-            if (aCode == EKeyLeftArrow && TryHandleArrowLeftEventL(documentLength))
-                {
-                response = EKeyWasConsumed;
-                break;
-                }
-                
-            if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut))    
-                {
-                response = EKeyWasNotConsumed;
-                break;
-                }            
-            else if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateStartCut))    
-                {
-                TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response);                
-                break;
-                }               
-
-            if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin)
-                {
-                if(FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                }
-            else
-                {
-                if (WesternPredictive())
-                    {
-                    response = HandleWesternPredictiveArrowKeyL(aCode, aLength);
-                    }
-                else
-                    {
-                    if (iFepManState == EAknFepStateUIActive)
-                        {
-                        FepUI()->HandleKeyL(aCode, aLength);
-                        response = EKeyWasConsumed;
-                        }
-                    else
-                        {
-                        /*
-						TCursorSelection currentEditorSelection(0,0);
-						if(iInputCapabilities.FepAwareTextEditor())
-							{
-							iInputCapabilities.FepAwareTextEditor()->
-								GetCursorSelectionForFep(currentEditorSelection);
-							}
-                        
-						if(!IsMfneEditor() &&
-								(PluginInputMode() == EPluginInputModeItut ||
-								 PluginInputMode() == EPluginInputModeFSQ)  &&
-								 currentEditorSelection.Length() != 0)
-							{
-							response = EKeyWasConsumed;
-							break;
-							}
-						*/
-
-                        response = HandleNaviEventOutsideInlineEditL(aCode, aLength);
-                        if (response == EKeyWasConsumed)
-                            {
-                            iCaseMan->UpdateCase(ENullNaviEvent);
-                            }
-                        else if (aCode == EKeyLeftArrow && !IsFlagSet(EFlagShiftKeyDepressed))
-                            {
-                            iCaseMan->UpdateCase(ELeftNaviEvent);
-                            }
-                        else if (!IsFlagSet(EFlagShiftKeyDepressed))
-                            {
-                            iCaseMan->UpdateCase(ERightNaviEvent);
-                            }
-                        }
-                    }
-                }
-            break;
-        case EKeyDownArrow:
-       	    if( iWesternPredictive && IsFlagSet(EFlagInsideInlineEditingTransaction) && 
-       	    	( EPtiKeyboard12Key == KeyboardLayout() ) && ( IsFlagSet(EFlagShiftKeyDepressed) ||
-       	    	  HashKeySelectionInUse()&& IsCcpuFlagSet(ECcpuStateHashDown) ) )
-            	{
- 				iPtiEngine->CommitCurrentWord();
-            	CommitInlineEditL();
-            	response = EKeyWasConsumed;
-            	break;
-            	}
-
-          if (TryHandleArrowDownEventL(documentLength) || IsFlagSet(EFlagNoMatches))
-                {
-                response = EKeyWasConsumed;
-                break;
-                }
-                
-        case EKeyUpArrow:
-            if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin)
-                {
-                if ( (iAknEditorFlags & EAknEditorFlagNoLRNavigation) &&
-                    IsFlagSet(EFlagShiftKeyDepressed) )
-                    {
-                    // Up or down key is pressed during shift key press.
-                    ClearFlag(EFlagNoActionDuringShiftKeyPress);
-                    return EKeyWasNotConsumed;
-                    }
-
-                if(FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                else
-                    {
-                    TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response);
-                    }
-                }
-            else
-                {
-                if (iLanguageCapabilities.iInputLanguageCode == ELangThai &&
-                    iFepManState == EAknFepStateUIActive &&
-                    WesternPredictive() )
-                    {
-                    if (FepUI()->HandleKeyL(aCode, aLength))
-                        {
-                        ClearFlag(EFlagChangeInputMode);
-                        response = EKeyWasConsumed;
-                        }
-                    break;
-                    }
-                else if ( (iAknEditorFlags & EAknEditorFlagNoLRNavigation) &&
-                    IsFlagSet(EFlagShiftKeyDepressed) )
-                    {
-                    // Up or down key is pressed during shift key press.
-                    ClearFlag(EFlagNoActionDuringShiftKeyPress);
-                    return EKeyWasNotConsumed;
-                    }
-                if (WesternPredictive())
-                    {
-                    // For customizabal of Down/Up scroll keypress action.
-                    // If it need to custom it, the function of HandleKeyL returns EFalse.
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                    // Predictive QWERTY (XT9) changes ---->
-                    if ( IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) )
-                        {
-                        TInt wordIndexToSelect = 0;
-                        
-                        if(iQwertyInputMode && EPtiKeyboardHalfQwerty != KeyboardLayout())
-                        	{
-                        	if(!iPrimaryCandidate)
-                            iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, 
-        							&wordIndexToSelect );
-                            
-                        	if( iQwertyInputMode 
-                        	    && ( iExactWordPopupContent->IsPopUpVisible() 
-                        	    	|| ( iFepPluginManager && iFepPluginManager->IsTooltipOpenOnFSQ() ) )
-                        	    && aCode == EKeyUpArrow )
-	                        	{
-		                        iExactWordPopupContent->HidePopUp();
-                            
-                                // When press up, if FSQ is opened, 
-                                // also need to check and close tooltip on it.
-		                        SendEventsToPluginManL( EPluginHideTooltip );
-		                                                                                    
-	                        	iPtiEngine->HandleCommandL( 
-                                           EPtiCommandUserActionSetCurrentIndexOfCandidates, 
-	                        								 &wordIndexToSelect );
-	                        	iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate );
-	                        	/* Update the Candidate List in case of Exact Typing as best predicted word is 
-	                             selected from the tooltip to the editor */
-	                        	if(!iPrimaryCandidate)
-	                        	    iPtiEngine->HandleCommandL(EPtiCommandSetFlagToUpdateCandidates);
-	                        	    
-	                        	TPtrC selectedWord = iPtiEngine->CurrentWord();
-	                        	UpdateInlineEditL( selectedWord, selectedWord.Length() ); 
-	                        	response = EKeyWasConsumed;
-		                     
-	                        	}
-	                        else
-	                        	{
-		                        LaunchCandidatePopupListL( wordIndexToSelect );
-		                        response = EKeyWasConsumed;
-	                        	}
-                        	}
-                        else
-                        	{
-                        	if (!IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))
-                        	    {
-                        	    TInt lastCandidateIndex = iPtiEngine->NumberOfCandidates() -1;
-                           	    if( EPtiKeyboard12Key == KeyboardLayout() && ( IsFlagSet(EFlagShiftKeyDepressed) ||
-                           	    		  HashKeySelectionInUse()&& IsCcpuFlagSet(ECcpuStateHashDown) ) )
-    	                        	{
-    	                            if (response != EKeyWasConsumed)
-    	                                {
-    	                                response = HandleWesternPredictiveArrowKeyL(aCode, aLength);
-    	                                }
-    	                        	}
-                           	    else if(aCode == EKeyUpArrow && lastCandidateIndex >= 0)
-                        	        {
-                        	        // Get last word on list
-                        	        LaunchCandidatePopupListL( lastCandidateIndex );
-                        	        response = EKeyWasConsumed;
-                        	        }
-                        	    else
-                        	        {
-                        	        // Get next word on list (wrap around if at end)
-                        	        iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, 
-            							&wordIndexToSelect );
-                        	        wordIndexToSelect < lastCandidateIndex ? wordIndexToSelect++ : wordIndexToSelect = 0;
-                        	        LaunchCandidatePopupListL( wordIndexToSelect );
-                        	        response = EKeyWasConsumed;
-                        	        }                        	                        	    
-                        	    }
-                        	else
-                        	    response = EKeyWasConsumed;
-                        	}
-                        }
-                    else
-                        {                       
-	                    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                    if(iFepManState == EAknFepStateUIActive &&
-                        FepUI()->HandleKeyL(aCode, aLength))
-                        {
-                        response = EKeyWasConsumed;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
-                        // When press up, if FSQ is opened, 
-                        // also need to check and close tooltip on it.
-                        SendEventsToPluginManL( EPluginHideTooltip );
-
-	                    // Predictive QWERTY (XT9) changes ---->
-	                    // Exact word popup is hidden when the exact word is selected
-	                    iExactWordPopupContent->HidePopUp();
-	                    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                        }
-                    // normal operation of  Down/Up scroll keypress action.
-                    if (response != EKeyWasConsumed)
-                        {
-                        response = HandleWesternPredictiveArrowKeyL(aCode, aLength);
-                        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                        } // Predictive QWERTY (XT9) changes
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                    }
-                else
-                    {
-                    if (iFepManState == EAknFepStateUIActive)
-                        {
-                        FepUI()->HandleKeyL(aCode, aLength);
-                        response = EKeyWasConsumed;
-                        }
-                    else
-                        {
-                        TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response);
-                        }
-                    }
-                }
-            break;
-        case EKeyBackspace:
-            if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese &&
-                !(iMode == ELatin || iMode == ENumber))
-                {
-                if (FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                }
-            else if (iLanguageCapabilities.iInputLanguageCode == ELangVietnamese)
-                {
-                TCursorSelection cursorSelection;
-                if ( !IsFepAwareTextEditor() )                                           
-                    {
-                    response = EKeyWasNotConsumed;
-                    }
-                else
-                    {
-                    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); 
-                    if (cursorSelection.Length() != 0)      
-                        {
-                        response = EKeyWasNotConsumed;
-                        }
-#ifdef RD_SCALABLE_UI_V2
-                    else if ( !documentLength 
-                        && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut
-                        || iFepPluginManager->PluginInputMode() == EPluginInputModeVkb ) )
-                        {
-                        response = EKeyWasConsumed;
-                        }
-#endif   
-										else 
-                        {
-                        if (FepUI()->HandleKeyL(aCode, aLength))
-                            {
-                            response = EKeyWasConsumed;
-                            }
-                        else
-                            {
-                            if( WesternPredictive() )
-                                {
-                                // We need to start the autoconcatination timer
-                                SimulateKeyEventL(EKeyF24);
-                                }
-                            }
-                        }
-                    }
-                
-                }
-            else if (IsKoreanInputLanguage() && iMode == EHangul)
-                {
-                if (FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                }
-            else
-                {
-                if (iFepManState == EAknFepStateInitial)
-                    {
-#ifdef RD_SCALABLE_UI_V2
-                     if ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut )
-                        {
-                        if ( iFepPluginManager->CurrentFepInputUI() && 
-                            FepUI()->HandleKeyL(aCode, aLength))
-                            {
-                            response = EKeyWasConsumed;
-                            break;
-                            }
-                        }
-                     if ( !documentLength 
-                        && ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut
-                        || iFepPluginManager->PluginInputMode() == EPluginInputModeVkb ) )
-                        {
-                        response = EKeyWasConsumed;
-                        break;
-
-                        }
-#endif                        
-                    if (IsFlagSet(EFlagLineFeedCharacter))
-                        {
-                        // restore cursor visibility
-                        if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))
-                            {
-                            iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(ETrue);        
-                            }
-                        
-                        iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit();
-                        ClearFlag(EFlagInsideMultitapInlineEditingTransaction | 
-                                  EFlagInsideInlineEditingTransaction | 
-                                  EFlagLineFeedCharacter);
-                        response =  EKeyWasConsumed;
-                        }
-                    else
-                        {
-                        response = HandleNaviEventOutsideInlineEditL(aCode, aLength);
-                        if (WesternPredictive() && response == EKeyWasNotConsumed)
-                            {
-                            // if we're passing a backspace to the editor simulate any old keypress
-                            // to catch and check the state of play after the deletion
-                            SimulateKeyEventL(EKeyF24);
-                            }
-                        if (response == EKeyWasNotConsumed)
-                            {
-                            if(iMode == EZhuyinFind)
-                                {
-                                SetFlag(EFlagSupressAutoUpdate);
-                                }
-                            if (iLongClearAfterCloseUI &&
-                                aLength == ELongKeyPress)
-                                {
-                                response = EKeyWasConsumed;
-                                }
-
-                            iCaseMan->UpdateCase(EBackspaceEvent);
-                            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                        if(IsAutoCompleteOn())
-                            {
-                            TInt tailLength = 0;
-                            iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, 
-                                                        &tailLength );
-                            if(tailLength > 0)
-                                {
-                                RemoveSuggestedAdvanceCompletionL();
-                                }
-                            }
-#endif
-                        }
-                    
-                    // Clear the star key flag.
-                    if( FepUI() )
-                        {
-                        FepUI()->SetStarKeyFlag( EFalse );
-                        }
-                    }
-#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( EPtiKeyboardHalfQwerty == KeyboardLayout()
-                        		&& iWesternPredictive
-                        		&& iCaseMan->CurrentCase() != EAknEditorUpperCase )
-                            {
-                        	ClearFlag(CAknFepManager::EFlagChangeInputMode);
-                            }
-                        iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength );
-                        if(tailLength > 0)
-                            {
-                            RemoveSuggestedAdvanceCompletionL();
-                            }
-                        response = EKeyWasConsumed;
-                        }
-                    }
-                else if(FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                SendEventsToPluginManL( EPluginHideTooltip );
-                if(iExactWordPopupContent && iExactWordPopupContent->IsPopUpVisible())
-                    {
-                    iExactWordPopupContent->HidePopUp();
-                    }               
-#else
-                else if (FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }                
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                }
-            break;
-        case EKeyDelete:
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-			if(IsAutoCompleteOn())
-				{
-				TInt tailLength = 0;
-				iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, 
-												&tailLength );
-				if(tailLength > 0)
-					{
-					RemoveSuggestedAdvanceCompletionL();
-				    }
-				}
-
-            // When press delete key, if FSQ is opened, 
-            // also need to check and close tooltip on it.
-			SendEventsToPluginManL( EPluginHideTooltip );
-
-			if(iExactWordPopupContent && iExactWordPopupContent->IsPopUpVisible())
-				{
-		        iExactWordPopupContent->HidePopUp();
-				}
-        	if ( IsFlagSet( EFlagInsideInlineEditingTransaction ) )
-            	{
-            	TryRemoveNoMatchesIndicatorL();
-            	UpdateCbaL(NULL);
-            	CommitInlineEditL();
-    	        } 
-#endif //RD_INTELLIGENT_TEXT_INPUT        
-        	break;            
-        case EKeyF19:  // Fep simulated event to asynchronously update the case.
-            iCaseMan->UpdateCase(ENullNaviEvent);
-            response=EKeyWasConsumed;
-            ClearExtendedFlag(EExtendedFlagOkKeyPressOnCandidatePopup );
-            break;
-        case EKeyF22:
-            if (WesternPredictive())
-                {
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-                if (CursorInsideWord())
-                    {
-                    MoveCursorToEndOfWordL();
-                    }
-                if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep())
-                    {
-                    iCaseMan->UpdateCase(ENullNaviEvent);
-                    }
-                }
-            else if (iMode == ELatin)
-                {
-                iCaseMan->UpdateCase(ENullNaviEvent);
-                }
-            ClearCcpuFlag(ECcpuStateIgnoreStarUp);    
-            response=EKeyWasConsumed;
-            break;
-        case EKeyF23:
-            if (WesternPredictive())
-                {
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-                if (CursorInsideWord())
-                    {
-                    MoveCursorToStartOfWordL();
-                    }
-                if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep())
-                    {
-                    iCaseMan->UpdateCase(ENullNaviEvent);
-                    }
-                }
-            else if (iMode == ELatin)
-                {
-                iCaseMan->UpdateCase(ENullNaviEvent);
-                }
-            ClearCcpuFlag(ECcpuStateIgnoreStarUp);    
-            response=EKeyWasConsumed;
-            break;
-        case EKeyF24:
-            if (WesternPredictive() && CursorInsideWord())
-                {
-                // word concatenation - start the timer; add concatenated word
-                // to UDB on timer expiry
-                iConcatenationTimer->Start(EWordConcatenationTimeout, EWordConcatenationTimeout,
-                    TCallBack(WordConcatenationTimerTimeoutCallback, this));
-                }
-            response=EKeyWasConsumed;
-            break;
-        case EPtiKey0: //fall through
-        case EPtiKey1:
-        case EPtiKey2:
-        case EPtiKey3:
-        case EPtiKey4:
-        case EPtiKey5:
-        case EPtiKey6:
-        case EPtiKey7:
-        case EPtiKey8:
-        case EPtiKey9:
-            #ifdef RD_SCALABLE_UI_V2     
-                if ( aLength == ELongKeyPress && !isPassNext && (aCode == EPtiKey0) )
-                    {
-                    if( !IsQwerty() && 
-                        !IsFlagSet(CAknFepManager::EFlagPassNextKey)&&
-                        iFepPluginManager->PluginInputMode() != EPluginInputModeItut )
-                        {
-                        iFepPluginManager->ClosePluginInputModeL( ETrue );
-                        }
-                    }
-            #endif
-             if (IsFlagSet(EFlagLineFeedCharacter) && aCode != EPtiKey0)
-                {
-                // There is line feed character waiting. Pospone this event and handle
-                // line feed first.
-                CancelInlineEdit();
-                 if (!(iAknEditorFlags & EAknEditorFlagFindPane) || iQwertyInputMode)
-                 {
-                  SimulateKeyEventL(EKeyEnter);
-                  SimulateKeyEventL(EKeyF19); // Asyncronous case update    
-                 }
-                SimulateKeyEventL((TPtiKey)aCode);                  
-                ClearFlag(EFlagLineFeedCharacter);
-                return EKeyWasConsumed;                 
-                }                
-            if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin)
-                {
-                if (EditorHasFreeSpace() || iFepManState == EAknFepStateUIActive)
-                    {
-                    if (FepUI()->HandleKeyL(aCode, aLength))
-                        {
-                        ClearFlag(EFlagChangeInputMode);
-                        response = EKeyWasConsumed;
-                        }
-                    // response is EKeyWasNotConsumed
-                    }
-                }
-            else
-                {
-                //pass extra key received when doing secret text edit
-                if (IsFlagSet(EFlagPassNextKey))
-                    {
-                    ClearFlag(EFlagPassNextKey);
-                    }
-                else if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                    
-                // The key event is passed to the editor to handle in case of
-                // MFNE and other non FEP aware editors (response = EKeyWasNotConsumed).
-                else if ( IsFepAwareTextEditor() )
-                    {
-                    if ( ( iMode != ENumber && iMode != ENativeNumber ) ||
-                        ( ( iMode == ENumber || iMode == ENativeNumber )  && aLength == ELongKeyPress))
-                        {
-                        // Be default the key event is handled by FEP for FEP aware editors.
-                        response = EKeyWasConsumed;
-                        }
-
-                    // New character can be entered to the editor if there is
-                    // space left in the editor. Editor can be modified also
-                    // is the last character is multitapped or last character
-                    // in inline state is replaced with a digit.
-                    /*Hindi*/
-                    //This condition is added for Hindi language in case of multitapping of EKey1 to get 
-                    //a numeral value "1" because of a clasical case of Halant and ZWS getting added 
-                    //before numeral 1 which may affect incase of limited space in editor   
-                        
-                    if (( EditorHasFreeSpace()
-                        || (!WesternPredictive() && !EditorHasFreeSpace() && 
-                           (TAknFepUiIndicInputManager::IsIndicLangauge(
-                            TLanguage(iLanguageCapabilities.iInputLanguageCode)))) 
-                        || IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)
-                        || (IsFlagSet(EFlagInsideInlineEditingTransaction) && aLength == ELongKeyPress)))
-                        {
-                        ClearFlag(EFlagEditorFull);
-
-                        if (aLength == ELongKeyPress && 
-                           (iMode != ELatin && iMode != ENumber && iMode != ENativeNumber && iMode != EStrokeFind && iMode != EHangul) &&
-                            FepUI()->IsValidNumericLongKeyPress(aCode))
-                            {
-                            if (iFepManState == EAknFepStateInitial) // Multitapping
-                                {
-#ifdef RD_SCALABLE_UI_V2
-                                 if (iFepFullyConstructed && 
-                                     iFepPluginManager->CurrentFepInputUI() )
-                                     {
-                                     if (iFepPluginManager->CurrentFepInputUI()->HandleKeyL(aCode, 
-                                                                                         aLength))
-                                         {
-                                         response = EKeyWasConsumed;
-                                         break;
-                                         }
-                                     }
-#endif        
-                                // Current multitabbed character is replaced with a number.
-                                TChar ch(aCode);
-                                TBuf<1> buf;
-                                buf.Append(ch);
-                                NewCharacterL(buf);
-                                CommitInlineEditL();
-                                iPtiEngine->ClearCurrentWord();
-                                }
-                            else
-                                {
-                                // Long number key press is given to the editor.
-                                TryCloseUiL();
-                                response = EKeyWasNotConsumed;
-                                }
-                            }
-                        else if (FepUI()->HandleKeyL(aCode, aLength))
-                            {
-        	            	if ( (iMode == EPinyin || iMode == EZhuyin || iMode == EStroke || iMode == ECangJie)
-        	            			&& iFepManState == EAknFepStateUIActive )
-        	            		{
-        	            		if ( EditorState() )
-        	            			{
-        	            			EditorState()->SetFlags( EditorState()->Flags() | EAknEditorFlagChinesePopup );
-        	            			}       	            		
-        	            		}
-                            ClearFlag(EFlagChangeInputMode);
-                            // for japanese variant
-                            if (IsFeatureSupportedJapanese()
-                             && iMode == ENumber)
-                                {
-                                response = EKeyWasConsumed;
-                                }
-                            }
-                        else
-                            {
-                            //By default, pass long keypress to an editor for inserting number.
-                            response = EKeyWasNotConsumed;
-                            //No need to handle long key press in dialer
-                            if ( RProcess().SecureId().iId != KPhoneSecureId )
-                                {
-
-                                if ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic )
-                                    {
-                                    SimulateKeyEventL( aCode + KLatinToArabicIndicDigitsDelta );
-                                    response = EKeyWasConsumed;
-                                    }
-                                else if( iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic )    
-                                    {
-                                    SimulateKeyEventL( aCode + KLatinToEasternArabicIndicDigitsDelta );
-                                    response = EKeyWasConsumed;
-                                    }
-                                /*Hindi*/    
-                                else if ( iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari 
-                                            || iPreviousEditingState == EDevanagariIndicNumeric )                           
-                                    {
-                                    
-                                    SimulateKeyEventL( aCode + KLatinToDevanagariDigitsDelta );
-                                    
-                                    response = EKeyWasConsumed;
-                                    }
-                                }
-                            }
-                        }
-                    }                   
-                }
-            break;
-        case EKeyOK:
-            {
-            if (iUiInterface->SoftkeysExist() && EditSubmenuInUse()) 
-                {                           
-                if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EAknFepSoftkeyStartCopy)
-                    {                                     
-                    ProcessCommandL(EAknFepSoftkeyStartCopy);
-                    response = EKeyWasConsumed;             
-                    break;
-                    }
-                else if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EAknFepSoftkeyStartCut)
-                    {
-                    ProcessCommandL(EAknFepSoftkeyStartCut);
-                    response = EKeyWasConsumed;             
-                    break;              
-                    }
-                else if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EEikCmdEditCopy)
-                    {                                     
-                    ProcessCommandL(EEikCmdEditCopy);
-                    response = EKeyWasConsumed;             
-                    break;
-                    }
-                else if (iUiInterface->SoftkeyCommandId(ELeftSoftkeyIndex) == EEikCmdEditCut)
-                    {
-                    ProcessCommandL(EEikCmdEditCut);
-                    response = EKeyWasConsumed;             
-                    break;              
-                    }                                                                               
-                }
-            
-            if ( (iAknEditorFlags & EAknEditorFlagNoLRNavigation) &&
-                IsFlagSet(EFlagShiftKeyDepressed) )
-                {
-                // Selection key is pressed during shift key press.
-                ClearFlag(EFlagNoActionDuringShiftKeyPress);
-                return EKeyWasNotConsumed;
-                }
-            if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese && iMode != ELatin)
-                {
-                if (FepUI()->HandleKeyL(aCode, aLength))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                }
-            else
-                {
-                if (IsFlagSet(EFlagShiftKeyDepressed) && 
-                  !(iAknEditorFlags & EAknEditorFlagSupressShiftMenu))
-                    {
-                    response = EKeyWasConsumed;
-                    }
-                else if (iFepManState == EAknFepStateUIActive)
-                    {
-                    if (FepUI()->HandleKeyL(aCode, aLength))
-                        {
-                        response = EKeyWasConsumed;
-                        }
-                    }
-                else if (iMode == ELatin && !WesternPredictive() && 
-                         IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))                    
-                    {
-                    CommitInlineEditL();
-                    }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-			    // Predictive QWERTY (XT9) changes ---->
-			    // Accept current candidate (including possible auto-completed part) and insert space after the word
-			    // if selection key pressed while inline editing (on Qwerty only!)
-			    // this is not the expected behavior for half qwerty
-			    
-				TBool isQwertyMode = iQwertyInputMode && 
-								!( EPtiKeyboardHalfQwerty == KeyboardLayout() );
-			    if ( response == EKeyWasNotConsumed && iWesternPredictive && isQwertyMode && 
-			         IsFlagSet(EFlagInsideInlineEditingTransaction) 
-			         // For addition of ITI features on FSQ. 
-			         // If FSQ is opened with ITI features activated, don't commit as HW's action
-			         && !( iFepPluginManager && iFepPluginManager->EnableITIOnFSQ() ) )
-			        {
-			        
-					// If the primary candidate setting is exact typing, The tooltip/bubble always shows the best prediction.
-				    // Word on the typing line is accepted into editor on selection key event..  
-					                  
-			        iPtiEngine->CommitCurrentWord();
-			        CommitInlineEditL();
-                    TryCloseUiL();
-                    if(!static_cast<TChar>(NextChar()).IsSpace())
-	                    {
-	                    SimulateKeyEventL(EKeySpace);
-	                    }
-                    else 
-	                	{
-						TCursorSelection sel;
-            			iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(sel);
-            			sel.iCursorPos++;
-            			sel.iAnchorPos++;
-            			iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);	                		
-	                	}    
-                    SimulateKeyEventL(EKeyF19); // asynchronous case update
-                
-			        response = EKeyWasConsumed;
-			        }
-			    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                }
-            }
-            break;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        	case EKeyPhoneEnd:
-	        	{
-	        	// Suggested word should get committed in exact typing
-				if ( iWesternPredictive &&
-			    	 IsFlagSet(EFlagInsideInlineEditingTransaction) )
-			        {
-						
-					// If the primary candidate setting is exact typing, The tooltip/bubble always shows the best prediction.
-					// Word on the typing line is accepted into editor on end key event..
-						
-			        iPtiEngine->CommitCurrentWord();
-					CommitInlineEditL();
-	            	TryCloseUiL();
-	            	ClearFlag(CAknFepManager::EFlagNoMatches);
-	            	SimulateKeyEventL(EKeyF19); // asynchronous case update
-			        }
-	        	}
-			break;
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        default:
-            break;
-        }
-    SchedulePostEventCheckL(aCode);
-
-#ifdef RD_SCALABLE_UI_V2     
-    if ( !isPassNext )
-        {
-        SendEventsToPluginManL( EPluginKeyEvent, aCode );
-        }
-#endif
-        
-    return response;
-    }
-    
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::HandleShiftHalfQwertyChineseL(TEventCode aEventCode)
-    {
-    if (aEventCode == EEventKeyDown)
-        {
-        ClearCcpuFlag(ECcpuStateCbaShown);		
-        SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress);
-        ClearFlag(EFlagNoActionDuringChrKeyPress);
-        SetFlag(EFlagQwertyShiftMode);
-        // Long press of shift key timer is activated.
-        iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay,
-            EShiftKeyRepeatDelay, TCallBack(ResetShiftKeyMonitorCallback,
-                this) );
-        }
-    else if (aEventCode == EEventKeyUp)
-        {
-        ClearFlag(EFlagShiftKeyDepressed
-            |EFlagNoActionDuringShiftKeyPress);
-        ClearFlag(EFlagQwertyShiftMode);
-        iShiftKeypressMonitor->Cancel();
-
-        if ( (iKeyPressedDuringShift)|| IsFlagSet(EFlagLongShiftKeyPress) )
-            {
-            iKeyPressedDuringShift = EFalse;
-            ClearFlag( EFlagLongShiftKeyPress );
-            if ( iFnKeyManager->FnKeyState() )
-                {
-                iFnKeyManager->SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone );
-                }
-            UpdateIndicators();
-            }
-        else
-            {
-            CAknEdwinState* editorState = EditorState();
-            TInt permittedCases = editorState->PermittedCases();
-            permittedCases = permittedCases == 0 ?
-            EAknEditorLowerCase | EAknEditorUpperCase : permittedCases;
-
-            if (iMode == ELatin && (permittedCases & EAknEditorTextCase))
-                {
-                // Latin case update is changed back to automatic if latin 
-                // text case is allowed and the case is changed manually from #-key.
-                ClearFlag(CAknFepManager::EFlagSupressAutoUpdate);
-                }
-            TInt currentCase = iCaseMan->CurrentCase();
-
-            // Is current latin case last available case.
-            TBool lastCase = ( ( !(permittedCases & EAknEditorTextCase)
-                    && ((currentCase == EAknEditorLowerCase)
-                        || (currentCase == EAknEditorUpperCase
-                            && !(permittedCases
-                                & EAknEditorLowerCase)) )
-                    || (editorState->Flags() & EAknEditorFlagFixedCase) )
-                || (editorState->Flags()
-                    & EAknEditorFlagForceTransparentFepModes) );
-
-            if (iMode == ELatin
-                && !IsFlagSet(CAknFepManager::EFlagChangeInputMode)
-                && !lastCase)
-                {
-                if (iWesternPredictive)
-                    {
-                    // Input mode is still Latin. Only case is updated.
-                    if (permittedCases & EAknEditorTextCase)
-                        {
-                        iCaseMan->ManualCaseUpdate();
-                        }
-                    else
-                        {
-                        iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-                        }
-                    }
-                else
-                    {
-                    if(iCaseMan->CurrentCase() == EAknEditorUpperCase)
-                        {
-                        iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-                        }
-                    else
-                        {
-                        iCaseMan->SetCurrentCase(EAknEditorUpperCase);
-                        }
-                    }
-
-                // Next time input mode is changed if any text is not entered before.
-                SetFlag(CAknFepManager::EFlagChangeInputMode);
-                }
-            else
-                {
-                // Input mode is incremented.
-                SetChangeModeByShiftAndSpace( EFalse );
-                TryIncrementChineseModeForQwertyL(iMode);
-
-                ClearFlag(CAknFepManager::EFlagChangeInputMode);
-
-                if ( iMode == ELatin && iWesternPredictive ) // New mode after Increment.
-
-                    {
-                    if (editorState->Flags() & EAknEditorFlagFixedCase)
-                        {
-                        // Only one fixed case is available. Use it.
-                        iCaseMan->ConfigureCaseStateFromEditorState();
-                        SetFlag(CAknFepManager::EFlagChangeInputMode);
-                        }
-                    else if (editorState->Flags()
-                        & EAknEditorFlagForceTransparentFepModes)
-                        {
-                        // Only lower case is used with find pane.
-                        iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-                        SetFlag(CAknFepManager::EFlagSupressAutoUpdate);
-                        SetFlag(CAknFepManager::EFlagChangeInputMode);
-                        }
-                    else if (permittedCases & EAknEditorTextCase)
-                        {
-                        iCaseMan->SetCurrentCase(EAknEditorTextCase);
-                        iCaseMan->UpdateCase(ENullNaviEvent);
-                        }
-                    else
-                        {
-                        if (permittedCases & EAknEditorUpperCase)
-                            {
-                            iCaseMan->SetCurrentCase(EAknEditorUpperCase);
-                            if ( !(permittedCases
-                                    & EAknEditorLowerCase))
-                                {
-                                // We need to move to next input mode since only upper case 
-                                // is permitted in Latin input mode.
-                                SetFlag(CAknFepManager::EFlagChangeInputMode);
-                                }
-                            }
-                        else
-                            {
-                            iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-                            SetFlag(CAknFepManager::EFlagChangeInputMode);
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-void CAknFepManager::HandleShiftQwertyChineseL(TEventCode aEventCode)
-    {
-    if ( IsFlagSet( EFlagQwertyChrKeyDepressed ) && 
-    	 !IsFeatureSupportedJapanese() && 
-    	 iCurrentFepUI->IsValidShiftKeyPress())
-    	{
-        ClearFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-        LaunchLanguagesPopupListL();
-        return;
-    	}
-    
-    TInt language = iSharedDataInterface->InputTextLanguage();
-
-    if (aEventCode == EEventKeyUp)
-        {
-        ClearCcpuFlag(ECcpuStateCbaShown);
-        if (FepUI())
-            {
-            FepUI()->HandleKeyL(EKeyLeftShift, EShortKeyPress);
-            }
-        TBool validShift = iCurrentFepUI->IsValidShiftKeyPress();
-                
-        if (IsFlagSet(EFlagLongShiftKeyPress) ||iKeyPressedDuringShift)
-            {
-            if (iKeyPressedDuringShift || IsFlagSet(EFlagQwertyShiftMode))
-                {
-                iShiftKeypressMonitor->Cancel();
-                iKeyPressedDuringShift = EFalse;
-                ClearFlag(EFlagQwertyShiftMode);
-                }
-            }
-        else
-            if (IsFlagSet(EFlagQwertyShiftMode))
-                {
-                if ( iMode != ELatin && validShift )
-                    {
-                    iModeBefore = iMode;
-                    TryChangeModeL(ELatin);
-                    ClearFlag( EFlagQwertyShiftMode );
-                    }
-                }
-            else
-                {
-                if (iMode == ELatin)
-                    {
-                    TBool isWsPr= EFalse;
-                    if (WesternPredictive())
-                        {
-                        SetWesternPredictive(EFalse);
-                        isWsPr = ETrue;
-                        }
-                    TInt Modetemp = iModeBefore;
-                    TInt sharedDataMode = iSharedDataInterface->InputMode();
-                    if (Modetemp == EStroke && 
-                    	iQwertyInputMode && 
-                    	sharedDataMode == ECangJie)
-                    	{
-                    	Modetemp = ECangJie;
-                    	}
-
-                    TryChangeModeL(Modetemp);
-                    if (isWsPr)
-                        {
-                        SetWesternPredictive(ETrue);
-                        }
-                    }
-                }
-
-        ClearFlag(EFlagShiftKeyDepressed);
-
-        if (IsFlagSet(EFlagLongShiftKeyPress)
-                && iMode == ELatin
-                && IsFlagSet(EFlagQwertyShiftMode))//latin shift ->abc
-            {
-            ClearFlag(EFlagQwertyShiftMode);
-            }
-
-        if (IsFlagSet(EFlagLongShiftKeyPress)) //long keypress up
-            {
-            ClearFlag(EFlagLongShiftKeyPress
-                    |EFlagNoActionDuringShiftKeyPress);
-            }
-        else // short keypress up
-            {
-            iShiftKeypressMonitor->Cancel();
-            }
-
-        ClearFlag(EFlagNoActionDuringChrKeyPress);
-        ClearFlag(EFlagNoActionDuringShiftKeyPress);
-        if ( validShift )
-            {
-            UpdateIndicators();
-            }
-        else
-            {
-            ClearFlag(EFlagQwertyShiftMode);
-            }
-        }
-    else
-        if (aEventCode == EEventKeyDown)
-            {
-
-            SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress);
-            ClearFlag(EFlagNoActionDuringChrKeyPress);
-
-            if (IsFlagSet(EFlagQwertyShiftMode))
-                {
-                ClearFlag(EFlagQwertyShiftMode);
-                }
-            else
-                {
-                SetFlag(EFlagQwertyShiftMode);
-                if ( iCurrentFepUI->IsValidShiftKeyPress() 
-                		|| iMode == ELatin )
-                    {
-                    UpdateIndicators();
-                    }
-   	            // If the iShiftKeypressMonitor is actived now, cancel it first.
-	              iShiftKeypressMonitor->Cancel();
-                // Long press of shift key timer is activated.
-                iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay,
-                        EShiftKeyRepeatDelay, TCallBack(
-                                ResetShiftKeyMonitorCallback, this));
-                }
-            }
-    }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-TKeyResponse CAknFepManager::HandleShiftKeyEventL(TEventCode aEventCode)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	// GQF clarification 
-	// In case irrespective Fn/shift key Text case should not be changed.
-	// Like Shift +Fn + Shift should not toggle the text case of the editor.
-	// Only Consecutive press of shift key should change the text case
-	if( iQwertyInputMode && (EEventKeyDown== aEventCode) && EPtiKeyboardHalfQwerty != KeyboardLayout())
-		{
-		if( (iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext) && 
-			IsFlagSet(EFlagQwertyShiftMode))
-			{
-			iFnKeyManager->ClearFnKeyState();
-			iPtiEngine->SetCase((TPtiTextCase)EPtiCaseLower);
-			ClearFlag(EFlagQwertyShiftMode);
-			}
-		}
-    TInt language = iSharedDataInterface->InputTextLanguage();
-#endif    
-    
-    if (iQwertyInputMode)
-        {
-        if ( !iInputCapabilities.FepAwareTextEditor() )
-            {
-            response = EKeyWasNotConsumed;
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        else if (language == ELangTaiwanChinese||
-                    language == ELangHongKongChinese ||
-                    language == ELangPrcChinese)
-                {
-                if ( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) &&
-                        iPtiEngine &&
-                        ( EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case() ) &&
-                        ( aEventCode == EEventKeyDown || aEventCode == EEventKeyUp ) )
-                    {
-                    // Ignore the KeyUp event
-                    if( aEventCode == EEventKeyDown )
-                        {
-                        FepUI()->HandleKeyL( EPtiKeyQwertyLeftShift, 
-                                                     EShortKeyPress );
-                        }
-                    if( aEventCode == EEventKeyUp )
-                        {
-			            ClearCcpuFlag(ECcpuStateCbaShown);
-                        }						
-                    }
-                else
-                    {
-                    if ((iAknEditorFlags & EAknEditorFlagFindPane)&& (CAknFepFnKeyManager::EFnKeyNone ==FnKeyState()))
-                        {
-                        if (aEventCode == EEventKeyUp)
-                            {
-				            ClearCcpuFlag(ECcpuStateCbaShown);							
-                            if ( iKeyPressedDuringShift )
-                                {
-                                iKeyPressedDuringShift = EFalse;
-                                }
-                            else
-                                {
-                                TryIncrementModeChineseQwertyL( iMode );
-                                }
-                            ClearFlag( EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress );
-                            }
-                        else if(aEventCode == EEventKeyDown)
-                            {
-                            SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress);
-                            ClearFlag(EFlagNoActionDuringChrKeyPress);
-                            }
-                        return EKeyWasConsumed;
-                        }
-                    if (EPtiKeyboardHalfQwerty == KeyboardLayout())
-                        {
-                        HandleShiftHalfQwertyChineseL(aEventCode);
-                        }
-                    else
-                        {
-                        HandleShiftQwertyChineseL(aEventCode);
-                        }
-                    }
-                }
-#endif // ITI flag
-        else if (aEventCode == EEventKeyDown)
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD
-            if( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) &&
-                iPtiEngine && EditorHasFreeSpace())
-                {
-		if (IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction))
-                            {
-                            iPtiEngine->CancelTimerActivity();
-                            }
-                if( EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case() )
-                    {
-                    FepUI()->HandleKeyL( EPtiKeyQwertyLeftShift, 
-                                                 EShortKeyPress );
-					iFnCharInsertedForShift = ETrue;                                                    
-                    }                 
-                }
-#endif // Half Qwerty flag
-#endif // ITI flag
-
-            // Shift key is pressed down.
-            SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress);
-            ClearFlag(EFlagNoActionDuringChrKeyPress);
-            if ( IsFlagSet(EFlagQwertyShiftMode) && IsFlagSet(EFlagNoActionDuringShiftKeyPress) )
-                {
-                ClearFlag(EFlagQwertyShiftMode | EFlagNoActionDuringShiftKeyPress);
-                // If long shift key press flag is set, then do not do manual case update.
-                if (!IsFlagSet(EFlagLongShiftKeyPress))
-                    {
-                    iCaseMan->ManualCaseUpdate();
-                    }
-                }
-            else
-                {
-                if (!(iCurrentFepUI->IsValidShiftKeyPress()))
-                    {
-                    return EKeyWasConsumed;
-                    }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD                    
-                if(!iFnCharInsertedForShift)
-#endif //RD_INTELLIGENT_TEXT_INPUT
-#endif //__HALF_QWERTY_KEYPAD                
-                	{
-                	SetFlag(EFlagQwertyShiftMode);
-                	}
-					
-                if(iShiftKeypressMonitor->IsActive())
-                	iShiftKeypressMonitor->Cancel();               	
-                // Long press of shift key timer is activated.
-                iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay, EShiftKeyRepeatDelay, 
-                    TCallBack(ResetShiftKeyMonitorCallback, this));
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                // Shift kkey hack for GQF implementation. Need to check 
-                // if it has any side effect.  
-                if((iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyLock)
-                    && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyForced)
-                    && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyDown)
-                    && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNext))
-#endif
-                UpdateIndicators();
-                }
-            }
-        else if (aEventCode == EEventKeyUp)
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD            
-            if( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) &&
-                iPtiEngine )
-                {
-                ClearCcpuFlag(ECcpuStateHashDown
-                      | ECcpuStateHashKeyDeleteDone
-                      | ECcpuStateChangeToPredictionMode);
-                if (IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode))
-                    {
-                    SetCcpuFlag(ECcpuStateSelectionEventPosted);
-                    ClearCcpuFlag(ECcpuStateEdwinInSelectionMode);
-                    SetFlag(EFlagLongShiftKeyPress);
-
-                    TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0};
-                    CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode);
-                    }
-                  if( CAknFepFnKeyManager::EFnKeyNone != FnKeyState())
-                      {
-                      ClearFlag(EFlagQwertyShiftMode);
-                      }
-                //  iFnCharInsertedForShift = EFalse;    
-                  }
-                
-#endif // Half Qwerty flag
-#endif // ITI flag
-
-            ClearFlag(EFlagShiftKeyDepressed);
-            ClearCcpuFlag(ECcpuStateCbaShown);
-            if ( !IsFlagSet(EFlagNoActionDuringShiftKeyPress) ||
-                (IsFlagSet(EFlagNoActionDuringShiftKeyPress) && IsFlagSet(EFlagLongShiftKeyPress)) )
-                {
-                ClearFlag(EFlagQwertyShiftMode);
-                }
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-#ifdef __HALF_QWERTY_KEYPAD				          
-            if( IsFlagSet(EFlagQwertyChrKeyDepressed) && IsFlagSet(EFlagNoActionDuringShiftKeyPress))
-                {
-#ifdef FF_DUAL_LANGUAGE_SUPPORT                    
-                 // Currently dual language feature would work correctly for ITUT and Half Qwerty products 
-				 // Hence the dual language settings should also be displayed only for ITUT and Halfqwerty products
-                if(iKeyboardType == EPtiKeyboardHalfQwerty )
-                    LaunchDualLanguageSettingDialogL();
-                else                     
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-                    LaunchLanguagesPopupListL();
-                ClearFlag(EFlagQwertyChrKeyDepressed|EFlagNoActionDuringChrKeyPress|EFlagNoActionDuringShiftKeyPress);                
-                }
-               
-#ifdef __SHIFT_KEY_LOOP                                
-            if( KeyboardLayout() == EPtiKeyboardHalfQwerty &&
-            // looping does not happen for long key press
-                !IsFlagSet(EFlagLongShiftKeyPress) &&     
-            // looping does not happen in functionized state                
-                iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyNone &&
-            // looping happens only when no action 
-            // has happened when the shift key has been pressed     
-                 IsFlagSet(EFlagNoActionDuringShiftKeyPress) && !iFnCharInsertedForShift )
-                {
-                HandleKeyEventL( EStdKeyLeftShift, EShortKeyPress );
-                ClearFlag(EFlagQwertyShiftMode);
-                }
-        	iFnCharInsertedForShift = EFalse;        
-#endif //__SHIFT_KEY_LOOP       
-#endif //__HALF_QWERTY_KEYPAD      
-#endif //RD_INTELLIGENT_TEXT_INPUT   
-            if (IsFlagSet(EFlagLongShiftKeyPress))  //long keypress up
-                {
-                ClearFlag(EFlagLongShiftKeyPress);
-                }
-            else                                    // short keypress up
-                {
-                iShiftKeypressMonitor->Cancel();
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-#ifdef __HALF_QWERTY_KEYPAD               
-#ifdef __SHIFT_KEY_LOOP
-				// Cancel multitap timer
-                
-                if( iPtiEngine != NULL )
-                    {
-				    iPtiEngine->CancelTimerActivity();
-                    }
-#endif //__SHIFT_KEY_LOOP       
-#endif //__HALF_QWERTY_KEYPAD      
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                }
-            ClearFlag( EFlagNoActionDuringShiftKeyPress );
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // Shift kkey hack for GQF implementation. Need to check 
-                // if it has any side effect.  
-            if((iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyLock)
-                && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyForced)
-                && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyDown)
-                &&(iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNext))
-#endif
-            UpdateIndicators();
-            }
-        }
-    else
-        {
-        if ( !iInputCapabilities.FepAwareTextEditor() && (!iCandidatePopup))
-            {
-            response = EKeyWasNotConsumed;
-            }        
-        else if (aEventCode == EEventKeyDown)
-            {
-            if (Japanese() && iInputCapabilities.FepAwareTextEditor())
-                {
-                if (!(iCurrentFepUI->IsValidShiftKeyPress()))
-                    {
-                    return EKeyWasConsumed;
-                    }
-                TryCloseUiL();
-                }
-            
-            // Shift key is pressed down but no any other key is pressed.
-            ClearCcpuFlag(ECcpuSupressEditMenuFromShiftUp);
-            SetFlag(EFlagShiftKeyDepressed | EFlagNoActionDuringShiftKeyPress);
-            if ( !(iAknEditorFlags & EAknEditorFlagNoLRNavigation))
-                {
-                // Cancel the timer first if active.
-                // EEventKeyUp is not sent always for shift key during debugging on emulator.
-                iShiftKeypressMonitor->Cancel();
-                // Long press of shift key timer is activated.
-                iShiftKeypressMonitor->Start(EShiftKeyRepeatDelay, EShiftKeyRepeatDelay,
-                    TCallBack(ResetShiftKeyMonitorCallback, this));
-                }
-            if ( IsFlagSet(EFlagInsideInlineEditingTransaction) &&
-                WesternPredictive() && iFepManState == EAknFepStateUIActive )
-                {
-                TryRemoveNoMatchesIndicatorL();
-                UpdateCbaL(NULL);
-                }
-            }
-        else if (aEventCode == EEventKeyUp)
-            {
-            ClearFlag(EFlagShiftKeyDepressed);
-            ClearCcpuFlag(ECcpuStateCbaShown);
-            if (IsFlagSet(EFlagLongShiftKeyPress))  //long keypress up
-                {
-                ClearFlag(EFlagLongShiftKeyPress | EFlagNoActionDuringShiftKeyPress);
-                // Shift long key press timer started, in between release of
-                // Shift key should cancel active long shift key timer. 
-                iShiftKeypressMonitor->Cancel();
-                if (!iInputCapabilities.FepAwareTextEditor())
-                    {
-                    TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0};
-                    CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKeyUp);                    
-                    }
-                }
-            else                                    // short keypress up
-                {
-                iShiftKeypressMonitor->Cancel();
-                if (!(iAknEditorFlags & EAknEditorFlagSupressShiftMenu) &&
-                    IsFlagSet(EFlagNoActionDuringShiftKeyPress) && //iCurrentFepUI->IsValidShiftKeyPress() &&
-                    !IsCcpuFlagSet(ECcpuSupressEditMenuFromShiftUp))
-                    {
-                    // Shift key is released before any other key is pressed.
-                    // Edit menu is launched if it is allowed.
-                    ClearFlag(EFlagNoActionDuringShiftKeyPress);
-                    //Check if pointer event drag is not there before launch of edit menu.
-                    if( !IsExtendedFlagSet(EExtendedFlagPointerEventTypeEDrag))
-                      	{
-                    	LaunchSelectModeMenuL();
-                    	}
-                   
-                    if (iInputCapabilities.FepAwareTextEditor())
-                        {
-                        response = EKeyWasConsumed;    
-                        }
-                    }
-                }
-            }
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if (aEventCode == EEventKeyUp && 
-        EPtiKeyboardQwerty4x10 == KeyboardLayout() && FepUI())
-	    {
-	    FepUI()->HandleKeyL(EKeyLeftShift, EShortKeyPress);
-	    }
-#endif	    
-    return response;
-    }
-
-TKeyResponse CAknFepManager::HandleThai0KeyEvent(TEventCode aEventCode, TKeyPressLength aLength, 
-                                                 TBool& aThai0KeyHandling)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-    aThai0KeyHandling = EFalse;
-    if(iQwertyInputMode)
-        {
-        return response;    
-        }
-   
-    if ( iLanguageCapabilities.iInputLanguageCode == ELangThai && 
-         iMode != ENumber && iMode != ENativeNumber )
-        {
-        if (!IsPredictive())
-            {
-            if (aEventCode != EEventKeyUp)
-                {
-                response = EKeyWasConsumed;
-                if ( aLength == ELongKeyPress)
-                    {
-                    if (!iLongThai0Key)
-                        {
-                        iLongThai0Key = ETrue;
-                        response = EKeyWasNotConsumed; // 0 to editor
-                        aThai0KeyHandling = ETrue;
-                        }
-                    }
-                }
-
-            else if (aEventCode == EEventKeyUp)
-                {
-                if (iLongThai0Key)
-                    {
-                    iLongThai0Key = EFalse;
-                    response = EKeyWasConsumed;
-                    }
-                else
-                    {
-                    response = EKeyWasNotConsumed; // Show Thai 0 key SCT
-                    aThai0KeyHandling = ETrue;
-                    }
-                }
-            }
-        }
-    return response;
-    }
-
-TBool CAknFepManager::HandleQwertyChrKeyEventL(TEventCode aEventCode)
-    {
-    TBool response = EFalse;
-    if ( !iQwertyInputMode || !iInputCapabilities.FepAwareTextEditor() )
-        {
-        return response;
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(IsFlagSet(EFlagShiftKeyDepressed))
-        {
-        iKeyPressedDuringShift = ETrue;
-        }
-#ifdef __HALF_QWERTY_KEYPAD
-    
-        if( (aEventCode == EEventKeyUp) )
-            {
-            ClearFlag(EFlagQwertyChrKeyDepressed);
-            }
-        // Handle shift for Half Qwerty seperately
-        if( ( EPtiKeyboardHalfQwerty == KeyboardLayout() && FepUI() ) &&
-            iPtiEngine /*&&             
-            ( aEventCode == EEventKeyDown || aEventCode == EEventKeyUp ) */ && !IsFlagSet(EFlagShiftKeyDepressed))
-            {		
-
-			if( HandleChrKeyForHalfQwertyL(aEventCode) )
-				{
-				return ETrue;
-				}							
-            }
-#endif // Half Qwerty flag 
-        // This part of code for error fixing.
-        // whenever fep is Fnupper state, press of "CHR" key
-        // always launch SCT table.
-        if( (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone)&&
-            (IsFlagSet(EFlagQwertyShiftMode) || IsFlagSet(EFlagLongShiftKeyPress)))
-            {
-            ClearFlag(EFlagNoActionDuringShiftKeyPress | EFlagLongShiftKeyPress | EFlagShiftKeyDepressed | EFlagQwertyShiftMode);
-            iShiftKeypressMonitor->Cancel();  
-            SetFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-            return response;
-            }
-           
-
-#endif // ITI flag
-    if (aEventCode == EEventKeyDown)
-        {
-        SetFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-        response = EFalse;
-
-        if (IsFeatureSupportedJapanese() || 
-            ( IsChineseInputLanguage() 
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-            && KeyboardLayout() == EPtiKeyboardHalfQwerty
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            ) )
-            {
-            // start timer for Chr key long pressing
-            iChrKeypressMonitor->Start(EChrKeyRepeatDelay, EChrKeyRepeatDelay, 
-                TCallBack(HandleChrKeyMonitorCallback, this));
-            }
-        }
-    else if (aEventCode == EEventKeyUp)
-        {
-        if (iChrKeypressMonitor->IsActive())
-            {
-            iChrKeypressMonitor->Cancel();
-            }
-
-        if (IsFlagSet(EFlagShiftKeyDepressed) && IsFlagSet(EFlagNoActionDuringChrKeyPress)
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-		 	||
-            IsFlagSet(EFlagQwertyShiftMode)
-#endif            	
-			)
-            {
-            ClearFlag(EFlagNoActionDuringShiftKeyPress | EFlagLongShiftKeyPress | 
-                      EFlagShiftKeyDepressed | EFlagQwertyShiftMode |EFlagQwertyChrKeyDepressed);
-            iShiftKeypressMonitor->Cancel();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            iKeyPressedDuringShift = EFalse;
-#endif                 
-            UpdateIndicators();
-            // In Japanese variant, the selecting input language is unnecessary.
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            if (EPtiKeyboardQwerty4x10 == KeyboardLayout() || EPtiKeyboardHalfQwerty == KeyboardLayout())
-                {
-            	if (!IsFeatureSupportedJapanese() && iCurrentFepUI->IsValidShiftKeyPress())
-	                {
-#ifdef FF_DUAL_LANGUAGE_SUPPORT	                
-					// Currently dual language feature would work correctly for ITUT and Half Qwerty products 
-	                // Hence the dual language settings should also be displayed only for ITUT and Halfqwerty products
-	                if(iKeyboardType == EPtiKeyboard12Key || iKeyboardType == EPtiKeyboardHalfQwerty )
-                        LaunchDualLanguageSettingDialogL();
-                    else                      
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-                    LaunchLanguagesPopupListL();
-	                }
-                }
-            else
-            	{
-#endif            	
-            if (!IsFeatureSupportedJapanese() && iCurrentFepUI->IsValidShiftKeyPress())
-                {
-                LaunchLanguagesPopupListL();
-	                }
-#ifdef RD_INTELLIGENT_TEXT_INPUT	                
-                }
-#endif                
-            }
-        else if (IsFlagSet(EFlagNoActionDuringChrKeyPress))
-            {
-            // pass key to Chinese UI manager in Chinese qwerty input for sct table
-            if(IsChineseInputLanguage() && iMode != ELatin)
-                {
-                FepUI()->HandleKeyL(EStdKeyLeftFunc, EShortKeyPress);
-                ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress );
-                }
-            else if (Japanese())
-                {
-                if (iMode != EHiragana)
-                    {
-                    // Commit characters
-#ifdef RD_INTELLIGENT_TEXT_INPUT                    
-                	// Set the iSupressCursorMoveToEndChrKeyPressed when cursor is in 
-					// between two words and SCT is launched
-                    iSupressCursorMoveToEndChrKeyPressed = ETrue;
-#endif //RD_INTELLIGENT_TEXT_INPUT                    
-                    HandleChangeInFocus();
-                    LaunchSpecialCharacterTableL();
-                    }
-                }
-            else if ( IsAbleToLaunchSCT() )
-                {                
-#ifdef RD_INTELLIGENT_TEXT_INPUT                
-               	// Set the iSupressCursorMoveToEndChrKeyPressed when cursor is in 
-				// between two words and SCT is launched
-                iSupressCursorMoveToEndChrKeyPressed = ETrue;
-#endif //RD_INTELLIGENT_TEXT_INPUT                
-                HandleChangeInFocus();
-                LaunchSpecialCharacterTableL();
-                }
-            else if(IsFlagSet(EFlagQwertyChrKeyDepressed))
-            	{
-					 ClearFlag(EFlagQwertyChrKeyDepressed);
-            	}
-            }
-        else
-            {
-            FepUI()->ExpireMultitapTimer();
-            ClearFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-            
-            response = ETrue;
-            } 
-        }
-    return response;
-    }
-    
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD    
-TKeyResponse CAknFepManager::HandleChrKeyForHalfQwertyL( TEventCode aEventCode)
-	{
-	if ((IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction)) && !(EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case()))
-        {
-        iPtiEngine->CancelTimerActivity();
-        }
-	// in functionized mode the chr key is mapped to specific chars
-	// and should therefore be handled by the states
-	if ( EPtiCaseFnUpper == iPtiEngine->Case() || EPtiCaseFnLower == iPtiEngine->Case() || IsReverseFnkeyInput())
-		{		
-		if( aEventCode == EEventKeyDown && ( EditorHasFreeSpace() ||
-    		  IsFlagSet( EFlagInsideMultitapInlineEditingTransaction )))
-			{
-			FepUI()->HandleKeyL( EStdKeyLeftFunc, 
-										 EShortKeyPress );			
-			}
-		return EKeyWasConsumed;
-		}
-	// in non-functionized predictive mode,
-	// a long key press of the chr key should produce the SCT
-	// a short key press should produce the candidate list
-	if ( ( iWesternPredictive || IsChineseInputLanguage() ) /*&& 
-	   ( iMode != EPinyin && iMode != EStroke && iMode != EZhuyin )*/ )
-		{						
-		
-		if(!iChrKeypressMonitor->IsActive())
-			{
-			// this monitors long key presses of chr key
-			// the framework does not give us the iRepeats info 
-			// for chr key for some reason
-			iChrKeypressMonitor->Start(EHalfQwertyChrKeyRepeatDelay, EHalfQwertyChrKeyRepeatDelay, 
-                TCallBack(HandleChrKeyMonitorCallback, this));			
-			}
-
-		if( aEventCode != EEventKeyUp )
-			{
-			SetFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-			return EKeyWasConsumed;
-			}
-
-		if ( aEventCode == EEventKeyUp && IsFlagSet(EFlagNoActionDuringChrKeyPress) )
-			{
-			if(!iChrLongKeyPress )
-				{							
-				// if we have come here it's a short press
-				// the flag EFlagNoActionDuringChrKeyPress is cleared in the timer callback
-				if(!IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) || IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction))
-					{
-					// when not in inline editing mode,
-					// chr key should produce the SCT
-					if ( !IsChineseInputLanguage() )
-						{
-						LaunchSpecialCharacterTableL();	
-						}
-					else
-						{
-						FepUI()->HandleKeyL( EStdKeyLeftFunc, 
-								 EShortKeyPress );
-						}
-					}				
-				ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);			
-
-				iChrKeypressMonitor->Cancel();			
-
-				TInt wordToFocus = KWordToFocusInCandidateList;
-				TInt numberOfCandidates = iPtiEngine->NumberOfCandidates();
-				if (numberOfCandidates > 1)
-				{
-				wordToFocus = KWordToFocusInCandidateList;
-				}
-				LaunchCandidatePopupListL(wordToFocus);
-
-				return EKeyWasConsumed;
-				}
-			else 
-				{
-
-		    	
-		    	// Cancel the timer    	
-		    	iChrKeypressMonitor->Cancel();
-		    	
-		    	// commit the characters
-	        	HandleChangeInFocus();
-
-		    	// Clear the chr key depressed flag
-		    	ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-		        // launch the special character table
-		        iChrLongKeyPress = EFalse;
-		        
-		        if ( IsAbleToLaunchSCT() )
-		            {
-		            LaunchSpecialCharacterTableL();
-		            }
-
-		        return EKeyWasConsumed;
-				}	
-			}
-		else
-			{
-			return EKeyWasNotConsumed;
-			}
-		}
-	return EKeyWasNotConsumed;
-	}			
-#endif //__HALF_QWERTY_KEYPAD 
-#endif //RD_INTELLIGENT_TEXT_INPUT				
-
-TKeyResponse CAknFepManager::HandleQwertyControlKeyEventL(const TKeyEvent& aKeyEvent, 
-                                                          TEventCode aEventCode)
-    {
-    TKeyResponse response = EKeyWasConsumed;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-     if (EPtiKeyboardQwerty4x10 == KeyboardLayout())
-     {
-     	if( iCurrentFepUI && !iCurrentFepUI->IsValidShiftKeyPress() && aEventCode == EEventKeyUp )
-     	{
-     	    FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress);    
-     		return EKeyWasConsumed;
-     	}
-     }
-#endif     
-
-    // need to ignore [Ctrl] + the following simbol keys
-    // because FEP doesn't consume [Ctrl] combination keys.
-    if (Japanese() && aEventCode == EEventKey)
-        {
-        TBool comsume = EFalse;
-        switch (aKeyEvent.iScanCode)
-            {
-            case EStdKeyNkpPlus:
-            case EPtiKeyQwertyPlus:
-            case EPtiKeyQwertyMinus:
-            case EPtiKeyQwertyComma:
-            case EPtiKeyQwertySemicolon:
-            case EPtiKeyQwertyFullstop:
-            case EPtiKeyQwertyHash:
-            case EPtiKeyQwertySlash:
-            case EPtiKeyQwertyApostrophe:
-            case EPtiKeyQwertySpace:
-                comsume = ETrue;
-                break;
-            default:
-                break;
-            }
-        if (comsume)
-            {
-            return EKeyWasConsumed;
-            }
-        }
-
-#ifdef RD_SCALABLE_UI_V2
-    if (aKeyEvent.iModifiers & EModifierCtrl
-    && (aKeyEvent.iScanCode == EPtiKeyQwertyC || aKeyEvent.iScanCode == EPtiKeyQwertyV || 
-        aKeyEvent.iScanCode == EPtiKeyQwertyX))
-        {
-        SendEventsToPluginManL( EPluginSyncFepAwareText );
-        // Let copy / cut / paste events to flow through.
-        response = EKeyWasNotConsumed;
-        }          
-#endif         
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Predictive QWERTY (XT9) changes ---->
-    // Ctrl combinations which affect the editor state, must commit the current inline edit.
-    // Otherwise the currently active inline word might be lost.
-    if ( iWesternPredictive && iQwertyInputMode && IsFlagSet(EFlagInsideInlineEditingTransaction) )
-        {
-        switch (aKeyEvent.iScanCode)
-            {
-            case EStdKeyUpArrow:
-            case EStdKeyDownArrow:
-            case EStdKeyLeftArrow:
-            case EStdKeyRightArrow:
-            case EPtiKeyQwertyC:
-            case EPtiKeyQwertyV:
-            case EPtiKeyQwertyX:
-            case EPtiKeyQwertyA:
-                iPtiEngine->CommitCurrentWord();
-                TryCloseUiL();        
-                break;
-            default:
-                break;
-            }
-        }
-    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-    if (aEventCode != EEventKeyUp)
-        {
-        return EKeyWasNotConsumed;
-        }
-    
-    if(iQwertyInputMode)
-        {
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Query ptiEngine to know if the scancode maps to EPtiKeyQwertyC, 
-        // EPtiKeyQwertyV or EPtiKeyQwertyX.
-        // we should not always rely on scancode as products may change it, while
-        // still having the 'C', 'V' and 'X' mappings
-        
-        TBuf<32> mapData;              
-        iPtiEngine->MappingDataForKey((TPtiKey)aKeyEvent.iScanCode, mapData, EPtiCaseUpper); 
-        
-        if( mapData.Length() > 0 )    
-        	{
-        	if( mapData[0] == EPtiKeyQwertyC || mapData[0] == EPtiKeyQwertyV ||
-        	mapData[0] == EPtiKeyQwertyX )
-        		{
-        		// Let copy / cut / paste events to flow through.
-            	response = EKeyWasNotConsumed;
-        		}
-        	}
-#else     
-        if (aKeyEvent.iScanCode == EPtiKeyQwertyC || aKeyEvent.iScanCode == EPtiKeyQwertyV ||
-            aKeyEvent.iScanCode == EPtiKeyQwertyX)
-            {
-            // Let copy / cut / paste events to flow through.
-            response = EKeyWasNotConsumed;
-            }
-#endif
-            
-            
-        if (aKeyEvent.iScanCode == EStdKeyRightShift || aKeyEvent.iScanCode == EStdKeyLeftShift
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-			||
-            IsFlagSet(EFlagQwertyShiftMode)
-#endif //RD_INTELLIGENT_TEXT_INPUT
-			)
-            {
-            if(!iInputCapabilities.FepAwareTextEditor())
-                {
-                response = EKeyWasNotConsumed;
-                }
-            else
-                {
-                SendEventsToPluginManL( EPluginCloseMode, EFalse );
-                if ( iMode != ENumber && iMode!= ENativeNumber )
-                    {
-                    iModeBefore = iMode;
-                    }
-#ifdef RD_HINDI_PHONETIC_INPUT  
-                           
-                if(iSharedDataInterface->InputTextLanguage() == KLangHindiPhonetic)    
-                    {
-                    TryChangePhoneticModeL();   
-                    }
-                else
-                    {
-#endif                  
-                    if((!(IsOnlyNumericPermitted() || 
-                         (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))) &&
-                       TAknFepUiIndicInputManager::IsIndicLangauge(
-                         (TLanguage)iSharedDataInterface->InputTextLanguage()))
-                        {
-                        if(iLanguageCapabilities.iInputLanguageCode == ELangEnglish)
-                            {
-                            ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-                            }
-                        else
-                            {
-                            ChangeInputLanguageL(ELangEnglish); 
-                            }   
-                        }
-                    else
-                        {
-                        TryIncrementModeChineseQwertyL(iMode);  
-                        }  
-#ifdef RD_HINDI_PHONETIC_INPUT        
-                    }   
-#endif
-                }
-            ClearFlag(EFlagShiftKeyDepressed);
-            if ( !IsFlagSet(EFlagNoActionDuringShiftKeyPress) ||
-                (IsFlagSet(EFlagNoActionDuringShiftKeyPress) && IsFlagSet(EFlagLongShiftKeyPress)) )
-                {
-                ClearFlag(EFlagQwertyShiftMode);
-                }
-            if (IsFlagSet(EFlagLongShiftKeyPress))  //long keypress up
-                {
-                ClearFlag(EFlagLongShiftKeyPress);
-                }
-            else                                    // short keypress up
-                {
-                iShiftKeypressMonitor->Cancel();
-                }
-            ClearFlag( EFlagNoActionDuringShiftKeyPress );
-            UpdateIndicators();
-            }
-        else if(aKeyEvent.iScanCode == EStdKeySpace) // switch between last used Chinese input mode and English
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // Predictive QWERTY (XT9) changes ---->
-            // Toggle the predictive mode with ctrl+space
-            if ( (iPermittedInputModes & EAknEditorTextInputMode) &&
-                 !(iAknEditorFlags & EAknEditorFlagNoT9) &&
-                 iMode == ELatin &&
-                 iLanguageCapabilities.iSupportsWesternQwertyPredictive )
-                {
-                if (iWesternPredictive)
-                    {
-                    //ProcessCommandL(EAknCmdT9PredictiveT9Off);
-                    SendEventsToPluginManL( EPluginCloseMode, EFalse );
-                    //HandleChangeInFocus();                    
-                    if (iMode != ELatin)
-                        {
-                        TryChangeModeL(ELatin);
-                        }
-                    else
-                        {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                        RemoveSuggestedAdvanceCompletionL();
-#endif // RD_INTELLIGENT_TEXT_INPUT
-                        CommitInlineEditL();
-                        }
-                    SetCcpuFlag(ECcpuStataCommitPredictiveWord);
-                    SetWesternPredictive(EFalse);
-                    HandleChangeInFocus();
-                    }
-                else
-                    {
-                    //ProcessCommandL(EAknCmdMultitapPredictiveT9On);
-                    SendEventsToPluginManL( EPluginCloseMode, EFalse );
-                    //HandleChangeInFocus();
-                    SetWesternPredictive(ETrue);
-                    TryCloseUiL();
-                    TryChangeModeL(ELatin);
-     				}              
-                // Reset the function key state,if predictive mode is cahnged.
-				if (iFnKeyManager)
-					{
-					iFnKeyManager->ClearFnKeyState();
-					}
-                }
-            else // Predictive QWERTY (XT9) changes <----
-                {
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            if(iMode != iModeBefore && iMode != ENumber && iMode != ENativeNumber )
-                {
-                TInt mode = iMode;
-                if(iMode != ELatin && iModeBefore != ELatin) // more than one Chinese input modes
-                    {
-                    TryChangeModeL(ELatin);
-                    }
-                else
-                    {
-                    TryChangeToModeBeforeL();
-                    }
-                iModeBefore = mode; // deposit previous input mode
-                }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            } 
-#ifdef RD_INTELLIGENT_TEXT_INPUT //// Predictive QWERTY (XT9) changes: open the edit menu with Fn+space ---->
-        else if (aKeyEvent.iScanCode == EStdKeyLeftFunc)
-            {
-            LaunchSelectModeMenuL();
-            } // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        }       
-
-    if (IsCcpuFlagSet(ECcpuStatePosted))           
-        {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Query ptiEngine to know if the scancode maps to EPtiKeyQwertyC, 
-        // EPtiKeyQwertyV or EPtiKeyQwertyX.
-        // we should not always rely on scancode as products may change it, while
-        // still having the 'C', 'V' and 'X' mappings
-        
-        TBuf<32> mapData;              
-        iPtiEngine->MappingDataForKey((TPtiKey)aKeyEvent.iScanCode, mapData, EPtiCaseUpper); 
-        
-        if( mapData.Length() > 0 )    
-        	{
-        	if( mapData[0] == EPtiKeyQwertyC || mapData[0] == EPtiKeyQwertyX )
-        		{
-	            // Let copy / cut events to flow through.
-	            response = EKeyWasNotConsumed;
-	            }
-        	}
-#else
-        if (aKeyEvent.iScanCode == EPtiKeyQwertyC || aKeyEvent.iScanCode == EPtiKeyQwertyX)          
-            {
-            // Let copy / cut events to flow through.
-            response = EKeyWasNotConsumed;
-            }        
-#endif   
-        ResetCcpuFlags();               
-        }
-
-
-//Removed as part of the fix STAA-7FXCTK 
-
-/*    if (EPtiKeyboardQwerty4x10 == KeyboardLayout())
-    	{
-    	FepUI()->HandleKeyL(EKeyLeftCtrl, EShortKeyPress);    
-   	}*/
-
-
-    return response;
-    }
-
-TBool CAknFepManager::HandleQwertyKeyEventL(const TKeyEvent& aKeyEvent, TKeyResponse& aResponse)
-    {
-    TBool keyHandled = EFalse;
-    aResponse = EKeyWasNotConsumed;
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-    if(iKeyBackSpaceHit && (EKeyBackspace != aKeyEvent.iCode || EStdKeyBackspace != aKeyEvent.iScanCode))
-        	iKeyBackSpaceHit = 0;
-        
-    if(IsMfneEditor())
-        {
-        // multi-field editors need the key event to be sent to them directly
-        // therefore not consuming it here
-        return EFalse;
-        }
-
-    if(IsFlagSet(EFlagShiftKeyDepressed))
-        {
-        iKeyPressedDuringShift = ETrue; 
-        }  
-  // This part of code for error fixing
-    // After short pressing of Fn/shift, if user press enter key, delete key
-    // it will reset the shift key and Fn key state.
-    if( EKeyEnter == aKeyEvent.iCode || EStdKeyEnter == aKeyEvent.iScanCode|| 
-        EKeyBackspace == aKeyEvent.iCode || EStdKeyBackspace == aKeyEvent.iScanCode)
-        {
-		// if the shift key is still depressed, 
-		// don't clear the qwerty shift mode
-        if(!IsFlagSet(EFlagShiftKeyDepressed))
-        	ClearFlag(EFlagQwertyShiftMode);     
-        if( iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyNext )
-            {
-            iFnKeyManager->ClearFnKeyState();
-            }
-        }
-#endif    
-    
-    if ( iQwertyInputMode && 
-         ( EditorHasFreeSpace() || 
-#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__         
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-           KeyEventWillReplaceCharacter( aKeyEvent ) ||
-#endif // RD_INTELLIGENT_TEXT_INPUT
-#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__         
-           ( Japanese() && iFepManState == EAknFepStateUIActive ) ) )
-        {
-        if (IsFlagSet(EFlagPassNextKey))
-            {
-#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__            
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // Don't clear the pass next flag yet on the simulated "rollback key"
-            // used with secret editors, the actual key code to be entered to the
-            // editor will follow next.
-            if ( aKeyEvent.iCode != EKeyF20 )
-#endif // RD_INTELLIGENT_TEXT_INPUT          
-#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__          
-            ClearFlag(EFlagPassNextKey);
-            return ETrue;   
-            }        
-                 
-        TInt keyScanCode = aKeyEvent.iScanCode;
-#if defined(__WINS__)
-        if ( keyScanCode == EStdKeyNkpPlus )
-            {
-            // Workaround solution for the qwerty '+' key in emulator environment.
-            // I did not find a way how to to configure epoc_352x416_Qwerty.ini to send '+' keyevent.
-            keyScanCode = 0x2b;  // '+' key.
-            }
-#endif                 
-        TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor);        
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        TInt keyLayout =iSharedDataInterface->KeyboardLayout();
-        if (IsOnlyNumericPermitted() && phoneIdle &&                
-#ifdef __REVERSE_FN_KEY_SUPPORTED
-            !iIsReverseFnkeyInput &&
-#endif
-            (keyLayout != EPtiKeyboardHalfQwerty ))                
-#else
-        if (IsOnlyNumericPermitted() && phoneIdle)                
-#endif
-            {
-            return ETrue;          
-            }
-        //if this SpecialNumeric editor, do not consume event.    
-        if (IsOnlyNumericPermitted() && IsSpecialNumericEditor())
-        	{
-        	return EFalse;
-        	}    
-      
-        
-#ifdef FF_HOME_SCREEN_EASY_DIALING
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        
-        // This piece of code part of error fixing
-        // The Fep will insert the char, if Phone application launch the
-        // Phone number acquire editor in idle mode
-        // Specially Fep does not maintain Fn key state for non Fepware editor.
-        // So, Intermediate state of FnKey like FnNext will not work
-        // Hold on Fn key modify the modifier of of key event.
-        const TBool fnDown = (aKeyEvent.iModifiers & EModifierRightFunc);        
-        if( phoneIdle && fnDown && iFnKeyManager )
-            {
-            iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyDown);
-            SetCase((TCase)EFnKeyLowerCase);
-            }
-#endif  // RD_INTELLIGENT_TEXT_INPUT
-#endif  // FF_HOME_SCREEN_EASY_DIALING
-        
-       
-        const TBool shifted = (aKeyEvent.iModifiers & (EModifierLeftShift | 
-                               EModifierRightShift | EModifierShift));
-        
-        // This is needed for forcing shif state if this is the first key press in
-        // phone idle.    
-        if (shifted && phoneIdle)                    
-            {
-            SetFlag(EFlagQwertyShiftMode);
-            }                           
-
-            
-        if (aKeyEvent.iRepeats == 1)
-            {
-            iKeyRepeat = ELongKeyPress;
-            }
-        else
-            {
-            iKeyRepeat = EShortKeyPress;
-            }
-                                  
-        if ( IsFlagSet(EFlagShiftKeyDepressed) &&
-            IsChineseInputLanguage() &&
-            keyScanCode == EPtiKeyQwertySpace) 
-            {
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            ClearFlag(EFlagQwertyShiftMode);
-            ClearFlag(EFlagLongShiftKeyPress);
-            SetChangeModeByShiftAndSpace( ETrue );
-            TryIncrementChineseModeForQwertyL(iMode);
-            keyHandled = ETrue;
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-		else
-            {
-	            if(iKeyRepeat == ELongKeyPress && iPtiEngine->CurrentWord().Length() == EMaximumFepWordLength)
-	            {
-	            	keyHandled = ETrue;
-	            }
-	            else
-	            {
-	            	keyHandled = FepUI()->HandleKeyL(keyScanCode, iKeyRepeat);     
-					if( EPtiKeyboardHalfQwerty == KeyboardLayout() 
-	            			&& iWesternPredictive
-	            			&& iCaseMan->CurrentCase() != EAknEditorUpperCase )
-	            		{
-	            		ClearFlag(CAknFepManager::EFlagChangeInputMode);
-	            		}
-	            	if ( keyHandled && iFepManState == EAknFepStateUIActive 
-	            			&& (iMode == EPinyin || iMode == EZhuyin || iMode == EStroke || iMode == ECangJie) )
-	            		{
-	            		if ( EditorState() )
-	            			{
-		            		EditorState()->SetFlags( EditorState()->Flags() | EAknEditorFlagChinesePopup );
-	            			}
-	            		}
-	            }
-            }
-#else
-        if (IsChineseInputLanguage() && keyScanCode == EStdKeyBackspace)
-            {
-            keyHandled = FepUI()->HandleKeyL(keyScanCode, iKeyRepeat);
-            }
-            else
-            {
-            keyHandled = FepUI()->HandleKeyL(keyScanCode, EShortKeyPress);      
-            }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        
-        if (keyHandled)
-            {
-            aResponse = EKeyWasConsumed;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // Predictive QWERTY changes ---->
-            ShowExactWordPopupIfNecessaryL();
-            // Predictive QWERTY changes <----
-            }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-            // The indicators should be updated only if the key was handled. Otherwise
-            // the shift-copy-pasting will mess up the indicators.
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    TInt language = iSharedDataInterface->InputTextLanguage();
-    TBool IsChineseInput = language == ELangTaiwanChinese||
-                           language == ELangHongKongChinese ||
-                           language == ELangPrcChinese;
-#endif      
-       if ( !shifted  )
-            {           
-#ifdef RD_INTELLIGENT_TEXT_INPUT     
-            if(IsChineseInput && (iKeyboardType!= EPtiKeyboardHalfQwerty)) 
-                {
-                ClearFlag(EFlagQwertyShiftMode);
-                UpdateIndicators();      
-                }
-            else if( keyHandled )
-                {
-#endif                 
-                ClearFlag(EFlagQwertyShiftMode);
-                UpdateIndicators();
-                
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                }
-#endif
-            } 
-              
-#ifdef RD_SCALABLE_UI_V2
-    if ( ( (keyScanCode >= EPtiKeyQwertyA && keyScanCode <= EPtiKeyQwertyZ) ||
-         (keyScanCode >= EPtiKeyQwerty0 && keyScanCode <= EPtiKeyQwerty9) ||
-         (keyScanCode == EStdKeyEnter) ||
-         (keyScanCode == EPtiKeyQwertyPlus) ||
-         (keyScanCode == EPtiKeyQwertyMinus) ||
-         (keyScanCode == EPtiKeyQwertyComma) ||
-         (keyScanCode == EPtiKeyQwertySemicolon) ||
-         (keyScanCode == EPtiKeyQwertyFullstop)  ||
-         (keyScanCode == EPtiKeyQwertyHash)  ||
-         (keyScanCode == EPtiKeyQwertySlash) ||
-         (keyScanCode == EPtiKeyQwertyApostrophe) )
-         && !( iFepPluginManager && iFepPluginManager->EnableITIOnFSQ() ) )          
-        {
-        SendEventsToPluginManL( EPluginCloseMode, EFalse );
-        //iFepPluginManager->ClosePluginInputModeL(ETrue);
-        }
-    else if( keyHandled )
-        {
-        //for QWERTY, number only, the number is send to editor
-        //bypass FEP
-        SendEventsToPluginManL( EPluginSyncFepAwareText ); 
-        //iFepPluginManager->SyncFepAwareText();
-        }
-#endif
-        }
-        
-#ifdef RD_INTELLIGENT_TEXT_INPUT    
-
-        TInt lang = iSharedDataInterface->InputTextLanguage();
-
-        if(lang == ELangTaiwanChinese||
-           lang == ELangHongKongChinese ||
-           lang == ELangPrcChinese)    
-            {        
-            if( iPtiEngine->CurrentLanguage()->LanguageCode()== ELangEnglish 
-                && IsFlagSet(EFlagQwertyShiftMode)
-                && !IsFlagSet(EFlagLongShiftKeyPress))
-                {
-                ClearFlag(EFlagQwertyShiftMode); 
-                UpdateIndicators();  
-                }
-            }
-#endif // RD_INTELLIGENT_TEXT_INPUT  
-    iKeyRepeat = EShortKeyPress;        
-    return keyHandled;
-    }
-
-
-
-void CAknFepManager::CancelTransaction()
-    {
-    if (iInputCapabilities.FepAwareTextEditor() && IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        CancelInlineEdit();
-        }
-    }
-
-void CAknFepManager::IsOnHasChangedState()
-    {
-    }
-
-void CAknFepManager::OfferKeyEventL(TEventResponse& /*aEventResponse*/, 
-                                    const TKeyEvent& /*aKeyEvent*/, 
-                                    TEventCode /*aEventCode*/)
-    {
-    }
-
-void CAknFepManager::OfferPointerEventL(TEventResponse& /*aEventResponse*/, 
-                                        const TPointerEvent& /*aPointerEvent*/, 
-                                        const CCoeControl* /*aWindowOwningControl*/)
-    {
-    }
-
-void CAknFepManager::OfferPointerBufferReadyEventL(TEventResponse& /*aEventResponse*/, 
-                                                   const CCoeControl* /*aWindowOwningControl*/)
-    {
-    }
-
-TInt CAknFepManager::NumberOfAttributes() const
-    {
-    return 0;
-    }
-
-TUid CAknFepManager::AttributeAtIndex(TInt /*aIndex*/) const
-    {
-    return KNullUid;
-    }
-
-void CAknFepManager::WriteAttributeDataToStreamL(TUid /*aAttributeUid*/, RWriteStream& /*aStream*/) const
-    {
-    }
-
-void CAknFepManager::ReadAttributeDataFromStreamL(TUid /*aAttributeUid*/, RReadStream& /*aStream*/)
-    {
-    }
-
-void CAknFepManager::HandleGainingForeground()
-    {
-    if (iFepFullyConstructed)
-        {
-        ClearFlag(EFlagRemoveMatchesMenuItem);
-        ClearCcpuFlag(ECcpuStateHashDown | ECcpuStateSelectionEventPosted | 
-                      ECcpuStateEdwinInSelectionMode);
-        TRAPD(err, iPtiEngine->HandleCommandL(EPtiCommandReloadLearningInfo));
-        if (err != KErrNone)
-            {
-            CleanUpFep();
-            }
-        }
-
-#ifdef RD_SCALABLE_UI_V2        
-    CCoeControl* focusCtrl = static_cast<const CCoeAppUi*>(CCoeEnv::Static()->AppUi())->TopFocusedControl(); 
-    iGainForeground = ETrue;
-    /*if( iLoseForeAndGainFocus )
-        {
-        SendEventsToPluginManL( EPluginFocusChanged, iGainForeground );
-        }*/
-    if(focusCtrl && focusCtrl->IsFocused())
-        {
-        if(GetForegroundTaskAppWgId() == CCoeEnv::Static()->RootWin().Identifier())
-            //SendEventsToPluginManL( EPluginFocusChanged, iGainForeground );
-            TRAP_IGNORE(SendEventsToPluginManL( EPluginForegroundChanged, ETrue));            
-        }
-    else
-        {
-        if (iFepPluginManager) 
-            {
-            iFepPluginManager->HandleiDimGainForeground(ETrue);   
-            }            
-        }
-#endif // RD_SCALABLE_UI_V2        
-    }
-
-void CAknFepManager::HandleLosingForeground()
-    {
-    if (iFepFullyConstructed)
-        {
-        // Forget the shift state on FEP switch (i.e. when application goes to background)
-        ClearFlag(EFlagQwertyShiftMode | EFlagShiftKeyDepressed | 
-                  EFlagLongShiftKeyPress | EFlagNoActionDuringShiftKeyPress);
-        }	
-    if (Japanese())
-        {
-        TRAP_IGNORE(TryCloseUiL());
-        }
-    if (IsChineseInputLanguage())
-        {
-        TRAP_IGNORE(TryCloseUiL());
-        }
-        
-#ifdef RD_SCALABLE_UI_V2     
-    iGainForeground = EFalse;
-    //SendEventsToPluginManL( EPluginFocusChanged, iGainForeground );
-    TRAP_IGNORE(SendEventsToPluginManL( EPluginForegroundChanged, EFalse));            
-#endif // RD_SCALABLE_UI_V2    
-    }
-
-void CAknFepManager::HandleChangeInFocus()
-    {
-    TRAPD(err, HandleChangeInFocusL());
-    if (err != KErrNone)
-        {
-        CleanUpFep();
-        }
-    }
-
-void CAknFepManager::HandleDestructionOfFocusedItem()
-    {
-    if (iInputCapabilities.FepAwareTextEditor())
-        {
-        iFocusedItemDestroy = ETrue;
-        if ( iFepManState == EAknFepStateUIActive )
-            {            
-            TRAP_IGNORE(SendEventsToPluginManL( EPluginFocusItemDestroy ));  
-            if (Japanese() && iAknEditorFlags & EAknEditorFlagFindPane)
-                {
-                // In case of Find pane while inputting japanese characters,
-                // No update or commit characters.
-                iPtiEngine->ClearCurrentWord();
-                }
-
-        #ifdef RD_SCALABLE_UI_V2
-            // For addition of ITI features on FSQ, 
-            // need to restore some values stored before opening FSQ
-            // When go into this section, 
-            // touch ui won't be closed by ClosePluginInputUiL,
-            // but need to restore fep state here            
-            if ( iFepPluginManager )
-            	{
-            	iFepPluginManager->ResetItiStateL();
-            	}
-        #endif
-            // Close UI
-            FepUI()->CloseUI();
-            }
-        else
-            {            
-            TRAP_IGNORE(SendEventsToPluginManL( EPluginFocusItemDestroy, ETrue ));  
-            }
-        iFocusedItemDestroy = EFalse;
-        }
-
-    if ( !(IsFlagSet(EFlagForegroundUIComponentVisible) ||
-        IsFlagSet(EFlagMenuPaneVisible)) )
-        {
-        iLanguageCapabilities.iNumericEditorDigitType = EDigitTypeUnknown;
-        //UpdateLocalDigitMode();
-        }
-    if(IsFlagSet(EFlagForegroundUIComponentVisible))
-        {
-        ClearFlag(EFlagForegroundUIComponentVisible);
-        }
-
-    ClearFlag( EFlagInsideInlineEditingTransaction |
-        EFlagInsideMultitapInlineEditingTransaction |
-        EFlagLineFeedCharacter | EFlagNoMatches );
-
-    iInputCapabilities = NULL;
-    }
-
-void CAknFepManager::HandleAknEdwinStateEventL(CAknEdwinState* aAknEdwinState, 
-                                               EAknEdwinStateEvent aEventType)
-    {
-    if(aEventType == EAknEdwinDestroy)
-    	{
-		// Reset the last focus editor when destroy it.
-        if ( aAknEdwinState == iLastFocusedEditor )
-            {
-            iLastFocusedEditor->SetObserver( NULL );
-            iLastFocusedEditor = NULL;
-            }
-        
-        // Whenever the editor is destroyed, we destroy all the UI components we launched
-        if(iFepAwareDialogParentEditor == NULL || 
-        		iFepAwareDialogParentEditor == aAknEdwinState)
-        	{
-            // EExtendedFlagEdwinEditorDestroyed flag is used to leave once the dialog is closed.
-            SetExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-            // Delete any candidate popup is launched
-            if(iCandidatePopup)
-                {
-                delete iCandidatePopup;
-                iCandidatePopup = NULL;
-                }        
-            // Delete anu UI components launched by Fep.
-            iUiInterface->DeleteDialogs();
-        	}
-    	}
-    if ( IsFepAwareTextEditor() )
-        {
-        CAknEdwinState* editorState = EditorState();
-        if ( editorState != aAknEdwinState || !iFepFullyConstructed )
-            {
-            // FEP state update is not needed because editor state of non-focused
-            // editor was changed.
-            return;
-            }
-
-        switch (aEventType)
-            {
-            case EAknEdwinStateInputModeUpdate:
-                {
-                TUint currentInputMode = editorState->CurrentInputMode();
-                if ( EditorModeFromFepMode(iMode) != currentInputMode )
-                    {
-                    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-                        {
-                        TryRemoveNoMatchesIndicatorL();
-                        }
-                    UpdateCbaL(NULL);
-                    TryCloseUiL();
-                    ConfigureFEPFromEditorStateL();
-                    }
-                }
-                break;
-            case EAknEdwinStateCaseModeUpdate:
-                {
-                TInt currentCaseMode = editorState->CurrentCase();
-                if ( currentCaseMode != iCaseMan->CurrentCase() )
-                    {
-                    iCaseMan->SetCurrentCase(currentCaseMode);
-                    }
-                }
-                break;
-            case EAknEdwinStateLocalLanguageUpdate:
-                {
-                TLanguage localLanguage = ELangTest;
-                if (GetLocalLanguage( localLanguage ) )
-                    {
-                    iLanguageCapabilities.iLocalInputLanguageInUse = ETrue;
-                    if ( localLanguage != iLanguageCapabilities.iInputLanguageCode )
-                        {
-                        ChangeInputLanguageL(localLanguage);
-                        }
-                    }
-                }
-                break;
-            case EAknEdwinStateFlagsUpdate:
-                {
-                TInt oldEditorFlags = iAknEditorFlags;
-                if(iAknEditorFlags != editorState->Flags())
-                    {
-                    iAknEditorFlags = editorState->Flags();
-                    UpdateLocalDigitMode();
-                    }
-                if ( iAknEditorFlags != oldEditorFlags )
-                    {
-                    if ( (iAknEditorFlags & EAknEditorFlagNoT9) != 
-                         (oldEditorFlags & EAknEditorFlagNoT9))
-                        {
-                        if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-                            {
-                            TryRemoveNoMatchesIndicatorL();
-                            }
-                        UpdateCbaL(NULL);
-                        TryCloseUiL();
-                        ConfigureFEPFromEditorStateL();
-                        }
-
-                    if ( (iAknEditorFlags & EAknEditorFlagNoEditIndicators) != 
-                         (oldEditorFlags & EAknEditorFlagNoEditIndicators))
-                        {
-                        // We only need to update indicators when EAknEditorFlagNoEditIndicators was modified.
-                        // Current Fep state is not lost.
-                        UpdateIndicators();
-                        }
-
-                    if ( (iAknEditorFlags & EAknEditorFlagFixedCase) != 
-                         (oldEditorFlags & EAknEditorFlagFixedCase))
-                        {
-                        // We only need to update EFlagSupressAutoUpdate flag when the
-                        // EAknEditorFlagFixedCase was modified.
-                        // Current Fep state is not lost.
-                        if (iAknEditorFlags & EAknEditorFlagFixedCase)
-                            {
-                            SetFlag(EFlagSupressAutoUpdate);
-                            }
-                        else
-                            {
-                            ClearFlag(EFlagSupressAutoUpdate);
-                            }
-                        }
-                    }
-                }
-                break;
-            case EAknEdwinStateEventStateUpdate:
-                {
-                // Feps state is reseted and new state is fetched completelly from editor state.
-                if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-                    {
-                    TryRemoveNoMatchesIndicatorL();
-                    }
-                UpdateCbaL(NULL);
-                TryCloseUiL();
-                ConfigureFEPFromEditorStateL();
-                }
-                break;           
-            case EAknSyncEdwinState:
-#ifdef RD_SCALABLE_UI_V2
-                 if ( !IsCcpuFlagSet(ECcpuStateIgnoreNextEdwinSyncEvent) && iFepPluginManager &&
-                     iFepPluginManager->PluginInputMode() == EPluginInputModeNone )
-#else
-                 if ( !IsCcpuFlagSet(ECcpuStateIgnoreNextEdwinSyncEvent) )
-#endif                     
-                     {
-                     HandleChangeInFocusL();                        
-                     }
-                 else
-                    {
-                    ClearCcpuFlag(ECcpuStateIgnoreNextEdwinSyncEvent);
-                    }
-                 break;  
-                 
-#ifdef RD_SCALABLE_UI_V2
-            case EAknActivatePenInputRequest:
-                SendEventsToPluginManL( EPluginEditorActivate );
-                break;
-            case EAknClosePenInputRequest:
-                if ( iFepPluginManager )
-                    {
-                    iFepPluginManager->ClosePluginInputModeL( EFalse );
-                    }
-                break;
-            case EAknEdwinStatePromptUpdate:
-                SendEventsToPluginManL( EPluginPromptChanged ); 
-                break;
-#endif // RD_SCALABLE_UI_V2                
-            case EAknCursorPositionChanged:
-#ifdef RD_SCALABLE_UI_V2  
-                SendEventsToPluginManL( EPluginSyncFepAwareText );   
-                HandleCopyCutStateL();    
-#endif
-                // whenever focus cahnged happen, internally
-                // editor treat cursorposition change.
-                // In between, if editor context not in inline edit state.
-                // Try to update the case editor gets the focus, and editor
-                // context come in inline state.                
-				//iCaseMan->UpdateCase(ENullNaviEvent);	
-                break;
-
-            default:
-                break;
-            }
-        }
-    }
-
-
-CAknExtendedInputCapabilities::TEditorType CAknFepManager::EditorType() const
-    {
-    MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-
-    if ( mop )
-        {
-        CAknExtendedInputCapabilities* extendedInputCapabilities = 
-        mop->MopGetObject( extendedInputCapabilities );
-
-        if ( extendedInputCapabilities && iInputCapabilities.FepAwareTextEditor() ) 
-            {
-            TInt type = extendedInputCapabilities->EditorType();                                     
-            return static_cast<CAknExtendedInputCapabilities::TEditorType>( type );
-            }
-        }
-        
-    return CAknExtendedInputCapabilities::EUndefined;
-    }
-
-TUint CAknFepManager::MIDPConstraint() const
-	{
-	TUint ConstraintValue=0xFFFFFFFF;
-	MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-	
-	if ( mop )
-		{
-		CAknExtendedInputCapabilities* extendedInputCapabilities = 
-        mop->MopGetObject( extendedInputCapabilities );
-		if ( extendedInputCapabilities && iInputCapabilities.FepAwareTextEditor() ) 
-			{
-			ConstraintValue = extendedInputCapabilities->MIDPConstrainst();
-			}
-		}
-		return ConstraintValue;
-	}
-    
-TBool CAknFepManager::IsSpecialNumericEditor()
-	{
-	TBool JavaNumericEditor = EFalse;
-	TUint ConstraintValue = MIDPConstraint();
-	if((ConstraintValue & ESplConstraintMask) == ESplNumeric ||
-	   (ConstraintValue & ESplConstraintMask) == ESplDecimal)
-		JavaNumericEditor = ETrue;
-	
-	return JavaNumericEditor;
-	
-	}
-#ifdef RD_SCALABLE_UI_V2
-void CAknFepManager::HandleInputCapabilitiesEventL( TInt aEvent, TAny* /*aParams*/ )
-    {
-    switch (aEvent)
-        {
-        case CAknExtendedInputCapabilities::MAknEventObserver::EActivatePenInputRequest:
-            SendEventsToPluginManL( EPluginEditorActivate );
-            break;
-        case CAknExtendedInputCapabilities::MAknEventObserver::EPointerEventReceived:
-
-/* 
-#ifdef RD_TACTILE_FEEDBACK
-            CAknExtendedInputCapabilities::
-                MAknEventObserver::TPointerEventReceivedParams* params = 
-                    static_cast<CAknExtendedInputCapabilities::
-                MAknEventObserver::TPointerEventReceivedParams*>(aParams);
-            if (params->iPointerEvent.iType == TPointerEvent::EButton1Down)            
-                {
-                
-                MTouchFeedback* feedback = MTouchFeedback::Instance();
-                if (feedback && iFepPluginManager && !iFepPluginManager->VKBIsOpened())
-                    {
-                    feedback->InstantFeedback( ETouchFeedbackBasic );
-                    }
-                }
-#endif // RD_TACTILE_FEEDBACK
-*/
-            if( IsFlagSet( EFlagInsideInlineEditingTransaction ) )
-                {
-                if (IsFeatureSupportedJapanese())
-			        {
-			        TryCloseUiL();
-			        }
-			    else
-			        {
-#ifdef RD_INTELLIGENT_TEXT_INPUT			        
-			        iPtiEngine->CommitCurrentWord();
-					CommitInlineEditL();
-			        TryCloseUiL();
-
-#else
-					CommitInlineEditL();
-#endif			        
-			        }
-                }
-            break;      
-        case CAknExtendedInputCapabilities::MAknEventObserver::EControlContentUpdatedInternally:
-            SendEventsToPluginManL( EPluginSyncFepAwareText, EPluginSyncAll );
-            break;
-        case CAknExtendedInputCapabilities::MAknEventObserver::EOpenStylusMenuCcpu:
-            // User has highlighted text and editor requests stylus ccpu popup menu
-            // to be displayed.        
-            LaunchStylusCcpuMenuL(iClickPoint);
-            break;
-        }    
-    }
-    
-void CAknFepManager::SubmitInlineTextL( const TDesC& aData )
-    {
-    if(TextIsValidInEditor(aData))
-    	{
-    	StartInlineEditL(aData);
-    	CommitInlineEditL();
-    	}
-    }
-    
-// for japanese  
-void CAknFepManager::NotifyJapaneseSetting()
-    {
-	TInt param = 0;
-    // Deleting direction ON(right side) / OFF(left side)
-    if (iSharedDataInterface->ClearDirection() == EClearDirectionRight)
-        {
-        param |= EPenInputJapaneseSettingDeletingDirection;
-        }
-    // Japanese predictive ON(predictive on) / OFF(predictive off)
-    if (iJapanesePredictive)
-        {
-        param |= EPenInputJapaneseSettingPredictive;
-        }
-    // Japanese HWR conversion ON / OFF
-    if (iSharedDataInterface->JapaneseHwrConversion() == EJapaneseConversionOn)
-        {
-        param |= EPenInputJapaneseSettingConversion;
-        }
-    // Japanese HWR conversion ON / OFF
-    if (iCharWidth == EFullWidthChar)
-        {
-        param |= EPenInputJapaneseSettingCharacterWidth;
-        }
-    // Japanese qwerty setting flag
-    TInt qwertflag = iSharedDataInterface->JapaneseQwertyFlags();
-    // Qwerty Comma
-    if (qwertflag & EJapQwertySettingComma)
-        {
-        param |= EPenInputJapaneseSettingQwertyComma;
-        }
-    // Qwerty Period
-    if (qwertflag & EJapQwertySettingPeriod)
-        {
-        param |= EPenInputJapaneseSettingQwertyPeriod;
-        }
-    // Qwerty Width Of Space
-    if (qwertflag & EJapQwertySettingSpaceFullWidth)
-        {
-        param |= EPenInputJapaneseSettingQwertyWidthOfSpace;
-        }
-    // Lunch SCT
-    if (IsAbleToLaunchSCT())
-        {
-        param |= EPenInputJapaneseSettingLunchSCT;
-        }
-#ifdef RD_SCALABLE_UI_V2
-    // Set Japanese setting
-    if(iFepPluginManager->CurrentPluginInputFepUI())    
-        {
-        TRAP_IGNORE(iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL(
-                                             ECmdPenInputJapaneseSetting, param));
-        }
-#endif //RD_SCALABLE_UI_V2    
-    }
-
-TBool CAknFepManager::FullyFepAwareTextEditor() const
-    {
-    if ( iInputCapabilities.FepAwareTextEditor() )
-        {
-        if ( EditorType() != CAknExtendedInputCapabilities::EMFNEBased )
-            {
-            return ETrue;
-            }
-        }
-        
-    return EFalse;
-    }
-
-TBool CAknFepManager::SemiFepAwareTextEditor( TBool aAtLeast ) const
-    {
-    if ( aAtLeast )
-        {
-        switch ( EditorType() )
-            {
-            case CAknExtendedInputCapabilities::EEdwinBased:
-            case CAknExtendedInputCapabilities::EMFNEBased:
-                return ETrue;
-                
-            default:
-                return EFalse;
-            }
-        }
-    else
-        {
-        return EditorType() == CAknExtendedInputCapabilities::EMFNEBased;
-        }
-    }
-    
-void CAknFepManager::ProcessEditorMenuCommand(TInt aCommand)
-    {
-    TRAP_IGNORE(ProcessCommandL(aCommand));    
-    }
-    
-TInt CAknFepManager::GetPermittedEditorMenu(TBool aOnlyCount)
-    {
-    TInt count = 0;
-    TRAP_IGNORE(count = GetPermittedEditorMenuL(aOnlyCount));
-    return count;
-    }
-
-TInt CAknFepManager::GetPermittedEditorMenuL(TBool aOnlyCount)
-    {
-    
-    CAknEdwinState* editorState = NULL;
-    if (iInputCapabilities.FepAwareTextEditor())
-        {
-        editorState = EditorState();
-        }
-    
-    CAknFepUiInterfaceMenuBar* menuBar = NULL;
-
-	RPointerArray<CEikMenuPaneItem> editorMenuItemList;	
-    
-    CEikMenuPane* editorMenuPane = new (ELeave) CEikMenuPane((MEikMenuObserver*)(this));
-    editorMenuPane->SetItemArrayOwnedExternally(EFalse);
-    TResourceReader reader;
-    CCoeEnv::Static()->CreateResourceReaderLC(reader, R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU);//
-        
-    const TInt menuCount=reader.ReadInt16();
-    for ( TInt ii=0; ii<menuCount; ++ii )
-        {
-        CEikMenuPaneItem* item = new(ELeave) CEikMenuPaneItem();
-        CleanupStack::PushL( item );
-        item->iData.iCommandId = reader.ReadInt32();
-        item->iData.iCascadeId = reader.ReadInt32();
-        item->iData.iFlags = reader.ReadInt32();
-        TPtrC txtptr = reader.ReadTPtrC();
-        item->SetScaleableTextL( txtptr );
-        TPtrC extratxtptr = reader.ReadTPtrC();
-        item->iData.iExtraText = extratxtptr;
-        TPtrC bitmapFile = reader.ReadTPtrC();
-        TInt bitmapId = reader.ReadInt16();
-        TInt bitmapMaskId = reader.ReadInt16();
-        CleanupStack::Pop(); // pop first, since additem pushes again
-        editorMenuPane->AddMenuItemL( item->iData );
-        editorMenuItemList.Append(item);
-        reader.ReadInt32(); // extension link
-        }
-        
-    CleanupStack::PopAndDestroy(); //reader 
-
-            
-    if (editorState)
-        {
-        menuBar = iUiInterface->EditorStateMenuBar(editorState);
-        }
-    
-    TInt count = 0;            
-    
-    if ( menuBar )
-        {
-        CAknFepUiInterfaceMenuPane* menuPane = menuBar->MenuPane();
-
-        CEikMenuPane* oldMenuPane = menuPane->GetMenuPane();
-   
-        menuPane->SetMenuPane(editorMenuPane);             
-             
-        DynInitTouchMenuPaneL(menuPane);
-        
-        menuPane->SetMenuPane(oldMenuPane);
-                
-
-        for (TInt ii = 0; ii < KMaxMenuSize; ii++)
-            {
-            CEikMenuPaneItem::SData& itemdata = 
-                        editorMenuPane->ItemData(KEditorMenuPermitedSend[ii]);
-            if ( !(itemdata.iFlags & EEikMenuItemDimmed ) )
-                {
-                count = count + 1;
-                iEditorCommandList[count] = itemdata.iCommandId; 
-                }
-            }
-        iEditorCommandList[0] = count;
-        if (!aOnlyCount && iFepPluginManager->CurrentPluginInputFepUI())
-            {
-            iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL(
-                        ECmdPenInputSendEditMenuData, reinterpret_cast<TInt>(iEditorCommandList));
-            }
-        
-        editorMenuItemList.ResetAndDestroy();
-        delete editorMenuPane;
-        editorMenuPane = NULL;
-        }
-    
-    return count;
-    }
-#endif // RD_SCALABLE_UI_V2
-
-void CAknFepManager::ExitPluginSpellModeByOk()
-    {
-    TRAP_IGNORE(ExitPluginSpellModeByOkL());
-    }
-
-void CAknFepManager::ExitPluginSpellModeByOkL()
-    {
-#ifdef RD_SCALABLE_UI_V2        		    
-    if (iFepPluginManager->IsSpellVisible())
-        {
-        HBufC* spell = iFepPluginManager->SpellTextInput();
-        
-        iFepPluginManager->SetITUTSpellingStateL(EFalse); 
-        iFepPluginManager->DestroySpellEditor();
-        
-        if (spell)
-            {
-            CleanupStack::PushL(spell);
-            TPtr text = spell->Des();
-            FepUI()->AddTextToUserDictionaryL(text);
-            InsertTextFromDialogL(text, iFepPluginManager->CursorSelection());
-            CleanupStack::PopAndDestroy(spell);
-            }
-        
-        UpdateCbaL(NULL); 
-        if (iFepPluginManager->CaseUpdatesSupressed())
-            {
-            SetFlag(EFlagSupressAutoUpdate);
-            }
-        else
-            {
-            ClearFlag(EFlagSupressAutoUpdate);
-            }
-        ClearFlag(EFlagSupressAutoUpdateAtEditorStart);
-        }
-#endif       		    
-    }
-
-void CAknFepManager::ExitPluginSpellModeByCancel()
-    {
-/*    
-#ifdef RD_SCALABLE_UI_V2
-    if (iFepPluginManager->IsSpellVisible())
-        {
-        iFepPluginManager->SetITUTSpellingStateL(EFalse); 
-        iFepPluginManager->DestroySpellEditor();
-        UpdateCbaL(NULL);
-        HandleChangeInFocus();
-        if (iFepPluginManager->CursorSelection().Length())
-            {
-            EditorState()->SetInlineEditSpan(iFepPluginManager->CursorSelection());
-            ConfigureFEPFromEditorStateL();
-            }
-        TransferFepStateToEditorL();
-
-        if (iFepPluginManager->CaseUpdatesSupressed())
-            {
-            SetFlag(EFlagSupressAutoUpdate);
-            }
-        else
-            {
-            ClearFlag(EFlagSupressAutoUpdate);
-            }
-        ClearFlag(EFlagSupressAutoUpdateAtEditorStart);
-        iFepPluginManager->SetBeforeSpell(ETrue);
-        }
-#endif
-*/
-#ifdef RD_SCALABLE_UI_V2
-    if (iFepPluginManager->IsSpellVisible())
-        {
-        TRAP_IGNORE(iFepPluginManager->SetITUTSpellingStateL(EFalse)); 
-        iFepPluginManager->DestroySpellEditor();
-
-        TRAP_IGNORE(UpdateCbaL(NULL)); 
-        if (iFepPluginManager->CaseUpdatesSupressed())
-            {
-            SetFlag(EFlagSupressAutoUpdate);
-            }
-        else
-            {
-            ClearFlag(EFlagSupressAutoUpdate);
-            }
-        ClearFlag(EFlagSupressAutoUpdateAtEditorStart);
-        }
-#endif       		
-    }
-
-void CAknFepManager::ProcessCommandL(TInt aCommandId)
-    {
-    //ProcessCommandL() is called before HandleChangeInFocus() for the editor to insert the
-    //number into, so have to force a call
-    
-    //Process pen input menu if avaliable
-#ifdef RD_SCALABLE_UI_V2
-
-     if (iFepPluginManager && 
-        (iFepPluginManager->PluginInputMode() == EPluginInputModeItut)) 
-       	{
-       	switch(aCommandId)
-       		{
-       		case EAknSoftkeyOptions:
-       		    {
-       		    LaunchSelectModeMenuL();
-       		    }
-       		    return;
-       		case EAknSoftkeyOk:
-       		    {
-                iFepPluginManager->ClosePluginInputModeL(ETrue);
-       		    }
-       		    return;
-       		default:
-       			{
-       			break;
-       			}
-       		}
-       	}
-
-    SendEventsToPluginManL( EPluginMenuCmd, aCommandId );
-
-#endif //RD_SCALABLE_UI_V2
-    MAknFepManagerInterface* currentFepUI=NULL;
-    switch (aCommandId)
-        {
-        // Edit mode menu commands
-        //The soft CBA event from touch screen. 
-        case EAknSoftkeyCancel:
-      //  case (TUint16)EAknSoftkeyCancel:
-        case EAknSoftkeySelect:
-     //   case (TUint16)EAknSoftkeySelect:
-        currentFepUI = FepUI();
-        if (currentFepUI)
-            currentFepUI->HandleCommandL( aCommandId );
-            break;
-        // --- commands for Japanese ---
-        case EJapanFepCmdModeHiragana:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EHiraganaKanji);
-            break;
-        case EJapanFepCmdModeKatakana:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EKatakana);
-            break;
-        case EAknCmdEditInsertPictograph:
-            SetStopProcessFocus(ETrue);            
-            HandleChangeInFocus();
-            LaunchPictographCharacterTableL();
-            SetStopProcessFocus(EFalse);            
-            break;
-        case EJapanFepCmdModeFullWidth:
-        case EPenInputJpCmdFullWidth:
-        case EJapanFepCmdModeHalfWidth:
-        case EPenInputJpCmdHalfWidth:
-            {
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            if (aCommandId == EJapanFepCmdModeFullWidth
-             || aCommandId == EPenInputJpCmdFullWidth)
-                {
-                iCharWidth = EFullWidthChar;
-                }
-            else
-                {
-                iCharWidth = EHalfWidthChar;
-                }
-            UpdateIndicators();
-            TryChangeModeL(iMode);
-#ifdef RD_SCALABLE_UI_V2
-            if (aCommandId == EPenInputJpCmdFullWidth
-             || aCommandId == EPenInputJpCmdHalfWidth)
-                {
-                // Re-open pen input window
-                SendEventsToPluginManL( EPluginActivate );  
-                }
-#endif //RD_SCALABLE_UI_V2
-            }
-            break;
-        case EJapanFepCmdModeUserDic:
-        case EPenInputJpCmdSaveWord:
-            {
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            // User dictionary
-#ifdef RD_PF_SEC_APPARC
-            // Launch settings app
-            if ( iNullService )
-                {
-                delete iNullService;
-                iNullService = NULL;
-                }
-            iNullService = CAknNullService::NewL( KUidUserDictApp, this );
-#else
-            CEikProcess* process = CEikonEnv::Static()->Process();
-            if (iEmbedded)
-                {
-                process->DestroyDocument(iEmbedded);
-                }
-#if (defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || defined(__SERIES60_27__) || defined(__SERIES60_28__)) 
-            iEmbedded = process->AddNewDocumentL(_L("User Dictionary"), KUidUserDictApp);
-#else
-            iEmbedded = process->AddNewDocumentL(KUidUserDictApp);
-#endif
-            iEmbedded->NewDocumentL();
-            iEmbedded->EditL(NULL);
-#endif //RD_PF_SEC_APPARC
-            }
-            break;
-        case EPenInputJpCmdKutenCode:
-        case EJapanFepCmdModeKutenCodeInput:
-            {
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            LaunchKutenCodeQueryL();
-#ifdef RD_SCALABLE_UI_V2
-            if (aCommandId == EPenInputJpCmdKutenCode)
-                {
-                // Re-open pen input window
-                SendEventsToPluginManL( EPluginActivate );
-                }
-#endif //RD_SCALABLE_UI_V2
-            }
-            break;
-        case EAknCmdEditClearDirectionLeft:
-        case EAknCmdEditClearDirectionRight:
-            {
-            TInt value = EClearDirectionLeft;
-            if (aCommandId == EAknCmdEditClearDirectionRight)
-                {
-                value = EClearDirectionRight;
-                }
-            iSharedDataInterface->SetClearDirection(value);
-            }
-            break;
-        case EAknFepSoftkeyCloseWindow:
-            if(IsChineseInputLanguage())
-                {
-                TryCloseUiL();
-                }                        
-            if (iCcpuMode != ECcpuStateNone)
-                {
-                ResetCcpuFlags();
-
-                // reset select mode indicators
-                iIndicator->SetCopyMode(EFalse);
-                // update view                
-                iPreviousEditingState = EStateNone;
-                UpdateIndicators();
-
-                iUiInterface->DeleteSoftkeys();                              
-                break;
-                }
-        case EAknFepSoftkeyCommit:
-        case EAknFepSoftkeySelectCandidate:
-        case EAknFepSoftkeyConvert:
-        case EAknFepSoftkeyOtherModes:
-        case EAknFepSoftkeyRetroActiveHalf:
-        case EAknFepSoftkeyRetroActiveFull:
-            {
-            FepUI()->HandleCommandL(aCommandId);
-            }
-            break;
-        case EAknFepSoftkeyPredictiveOn:
-            {
-            iJapanesePredictive = ETrue;
-            iSharedDataInterface->SetJapanesePredictiveTextOn();
-            iHashKeyMan->SetMode(iMode, ETrue);
-            UpdateIndicators();
-            FepUI()->HandleCommandL(aCommandId);
-            }
-            break;
-        case EJapanFepCmdModePredictiveOn:
-            {
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            if (!iJapanesePredictive)
-                {
-                LaunchConfirmationNoteL(R_AVKON_JAPANESE_PREDICTIVE_ACTIVATED_NOTE);
-                }
-            iJapanesePredictive = ETrue;
-            TryChangeModeL(EHiraganaKanji);
-            iSharedDataInterface->SetJapanesePredictiveTextOn();
-            }
-            break;
-        case EJapanFepCmdModePredictiveOff:
-            {
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            if (iJapanesePredictive)
-                {
-                LaunchConfirmationNoteL(R_AVKON_JAPANESE_PREDICTIVE_DEACTIVATED_NOTE);
-                }
-            iJapanesePredictive = EFalse;
-            TryChangeModeL(EHiraganaKanji);
-            iSharedDataInterface->ResetJapanesePredictiveTextOn();
-            }
-            break;
-#ifdef RD_SCALABLE_UI_V2
-        case EPenInputJpCmdPredictiveOn:
-            {
-            iJapanesePredictive = ETrue;
-            iSharedDataInterface->SetJapanesePredictiveTextOn();
-            if (iFepPluginManager->PluginInputMode() == EPluginInputModeHwr)
-                {
-                iSharedDataInterface->SetJapaneseHwrConversion(EJapaneseConversionOn);
-                }
-            }
-            break;
-        case EPenInputJpCmdPredictiveOff:
-            {
-            iJapanesePredictive = EFalse;
-            iSharedDataInterface->ResetJapanesePredictiveTextOn();
-            }
-            break;
-        case EPenInputJpCmdConversionOn:
-            {
-            iSharedDataInterface->SetJapaneseHwrConversion(EJapaneseConversionOn);
-            }
-            break;
-        case EPenInputJpCmdConversionOff:
-            {
-            iSharedDataInterface->SetJapaneseHwrConversion(EJapaneseConversionOff);
-            }
-            break;
-#endif //RD_SCALABLE_UI_V2
-
-        // --- commands for Chinese ---
-        case EChinFepCmdModePinyin:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EPinyin);
-            break;
-        case EChinFepCmdModeZhuyin:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EZhuyin);
-            break;
-        case EChinFepCmdModeStroke:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EStroke);
-            break;
-        case EChinFepCmdModeCangJie:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(ECangJie);
-            break;
-        case EChinFepCmdModeCangJieOption:
-            // Launch CangJie option dialog
-            {
-            SetStopProcessFocus(ETrue);
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            TInt newMode = LaunchCangJieOptionDlgL();
-            SetStopProcessFocus(EFalse);
-            UpdateCangJieState( newMode );
-            }
-            break;
-        case EChinFepCmdModeLatinUpper:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(ELatinUpper);
-            // delete it for support auto update to text-case
-            //SetFlag(EFlagSupressAutoUpdate);
-            iCaseMan->SetCurrentCase(EAknEditorUpperCase);
-            break;
-        case EAknCmdEditModeKorean:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EHangul);
-            // delete it for support auto update to text-case
-            //SetFlag(EFlagSupressAutoUpdate);
-            iCaseMan->SetCurrentCase(EAknEditorUpperCase);
-            break;
-        case EChinFepCmdModeLatinLower:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(ELatinLower);
-            // delete it for support auto update to text-case
-            //SetFlag(EFlagSupressAutoUpdate);
-            iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-            break;
-        case EAknCmdEditModeNumber:
-        case EJapanFepCmdEditModeNumber:
-        case EChinFepCmdModeNumber:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            if ( iLanguageCapabilities.iArabicIndicDigitsAllowed 
-                || iLanguageCapabilities.iEasternArabicIndicDigitsAllowed 
-                || iLanguageCapabilities.iIndicDigitsAllowed )
-                {
-                iLanguageCapabilities.iLocalDigitType = EDigitTypeWestern;
-                }
-            TryChangeModeL(ENumber);
-            break;
-        case EAknCmdEditModeArabicIndicNumber:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            iLanguageCapabilities.iLocalDigitType = EDigitTypeArabicIndic;
-            TryChangeModeL(ENativeNumber);
-            break;
-            /*For Eastern Arabic Numeric*/
-        case EAknCmdEditModeEasternArabicIndicNumber:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            iLanguageCapabilities.iLocalDigitType = EDigitTypeEasternArabicIndic;
-            TryChangeModeL(ENativeNumber);
-            break;
-            /*for Hindi*/
-        case EAknCmdEditModeIndicNumber:
-            HandleChangeInFocus();
-            iLanguageCapabilities.iLocalDigitType = EDigitTypeDevanagari;
-            TryChangeModeL(ENativeNumber);
-            break;
-        case EChinFepCmdInstructions:
-            SetStopProcessFocus(ETrue);            
-            HandleChangeInFocus();
-            LaunchHelpTextQueryL();
-            SetStopProcessFocus(EFalse);            
-            break;
-        case EChinFepCmdModeZhuyinFind:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EZhuyinFind);
-            break;
-        case EChinFepCmdModeStrokeFind:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(EStrokeFind);
-            break;
-
-        // commands for western or common
-        case EJapanFepCmdMultitapPredictiveT9On:
-        case EAknCmdMultitapPredictiveT9On:
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        case EAknFepCmdPredActivate:
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            SetStopProcessFocus(ETrue, EFalse);
-            HandleChangeInFocus();
-#ifdef RD_SCALABLE_UI_V2     
-        if( iFepFullyConstructed && iFepPluginManager)
-            {
-            iFepPluginManager->SetMenuState();            
-            }
-#endif
-            if ( !iWesternPredictive )
-                {
-                LaunchConfirmationNoteL(R_AVKON_T9_ACTIVATED_NOTE);
-                }
-            SetWesternPredictive(ETrue);
-            SetStopProcessFocus(EFalse);
-            TryChangeModeL(ELatin);
-            break;
-        case EAknCmdT9PredictiveT9Off:
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        case EAknFepCmdPredDeactivate:
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        SetStopProcessFocus(ETrue, EFalse);
-            HandleChangeInFocus();
-#ifdef RD_SCALABLE_UI_V2     
-        if( iFepFullyConstructed && iFepPluginManager) 
-            {
-            iFepPluginManager->SetMenuState();            
-            }
-#endif   
-            if (iMode != ELatin)
-                {
-                TryChangeModeL(ELatin);
-                }
-            else
-                {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                RemoveSuggestedAdvanceCompletionL();
-#endif // RD_INTELLIGENT_TEXT_INPUT                	
-                CommitInlineEditL();
-                }
-			if ( iWesternPredictive )
-                {
-                LaunchConfirmationNoteL(R_AVKON_T9_DEACTIVATED_NOTE);
-                }
-            SetWesternPredictive(EFalse);
-            SetStopProcessFocus(EFalse);            
-            break;
-        case EAknCmdEditModeEnglish:
-        case EAknCmdEditModeAlpha:
-        case EJapanFepCmdEditModeAlpha:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();            
-            TryChangeModeL(ELatin);
-            iCaseMan->UpdateCase( ENullNaviEvent );
-            ClearFlag(EFlagSupressAutoUpdate);
-            break;
-        case EAknCmdEditModeLatinText:
-            SendEventsToPluginManL( EPluginCloseMode, EFalse );
-            HandleChangeInFocus();
-            TryChangeModeL(ELatinText);
-            ClearFlag(EFlagSupressAutoUpdate);
-            iCaseMan->SetCurrentCase(EAknEditorTextCase);
-            break;
-        case EAknCmdEditInsertSymbol:
-        case EAknCmdEditInsertSymbolJp:
-        case EAknFepSoftkeySymbol:
-        case EAknCmdEditInsertSmiley:
-            SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
-#ifdef RD_SCALABLE_UI_V2            
-     if (iFepPluginManager && 
-        (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
-         iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
-         iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)) 
-        {
-        iFepPluginManager->SetMenuState();     
-        }
-
-#endif //RD_SCALABLE_UI_V2             
-            SetStopProcessFocus(ETrue, EFalse);
-            HandleChangeInFocus();
-            if (aCommandId == EAknFepSoftkeySymbol)
-                {               
-                SetCcpuFlag(ECcpuStateCbaSymbol);
-                }
-            // Show Thai specific SCT with Thai vowels and tonemarks
-            if ( (iLanguageCapabilities.iInputLanguageCode == ELangThai ) &&
-                 (iMode!=ENumber && iMode != ENativeNumber ) )
-                {
-#ifdef RD_INTELLIGENT_TEXT_INPUT                 	
-                // if itut call Thai multitap HandleCommandL to Launch SCT	
-                if(!iQwertyInputMode)
-                    {
-#endif                    	
-                    TInt resourceId = 0;
-                    if (iAknFepThaiSCTSelector)
-                         {
-                        resourceId = iAknFepThaiSCTSelector->ThaiSCRResourceId(PreviousChar(),EPtiKeyStar);
-                        }
-                    LaunchSpecialCharacterTableL(resourceId, 
-                                                 aCommandId==EAknCmdEditInsertSymbol, 
-                                                 aCommandId==EAknCmdEditInsertSmiley);
-#ifdef RD_INTELLIGENT_TEXT_INPUT                 	                    
-                    }
-                else
-                    {
-                    CAknFepUIManagerWestern* westernUIManager = static_cast<CAknFepUIManagerWestern*>(FepUI());
-                    LaunchSpecialCharacterTableL(westernUIManager->ThaiSCTResourceId(static_cast<TChar>(PreviousChar()),EPtiKeyStar),
-                                                 aCommandId==EAknCmdEditInsertSymbol, 
-                                                 aCommandId==EAknCmdEditInsertSmiley);                    
-                    }
-#endif                    
-                }
-            else
-            {
-                LaunchSpecialCharacterTableL(0, 
-                                             aCommandId==EAknCmdEditInsertSymbol, 
-                                             aCommandId==EAknCmdEditInsertSmiley);
-            }
-            SetStopProcessFocus(EFalse);
-            ClearCcpuFlag(ECcpuStateCbaSymbol);
-            break;
-        case EAknFepSoftkeyPrevious:
-            FepUI()->HandleCommandL(aCommandId);
-            break;
-        case EAknFepSoftkeySpell:
-            LaunchEditWordQueryL();
-            break;
-        case EAknCmdT9PredictiveInsertWord:
-            SetStopProcessFocus(ETrue);
-            HandleChangeInFocus();
-            LaunchInsertWordQueryL(KNullDesC, TCursorSelection(0,0));
-            SetStopProcessFocus(EFalse);
-#ifdef RD_SCALABLE_UI_V2     
-        if( iFepFullyConstructed && iFepPluginManager)
-            {
-            iFepPluginManager->ResetMenuState();            
-            }
-#endif             
-            break;
-        case EAknCmdT9PredictiveEditWord:
-            SetStopProcessFocus(ETrue);
-            HandleChangeInFocus();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                RemoveSuggestedAdvanceCompletionL();
-#endif // RD_INTELLIGENT_TEXT_INPUT   
-            LaunchEditWordQueryL();
-            SetStopProcessFocus(EFalse);
-#ifdef RD_SCALABLE_UI_V2     
-            if( iFepFullyConstructed && iFepPluginManager )
-                {
-                iFepPluginManager->ResetMenuState();            
-                }
-#endif 
-            break;
-        case EAknCmdT9PredictiveMatches:
-            SetStopProcessFocus(ETrue,EFalse);
-            LaunchMatchesPopupListL();
-            SetStopProcessFocus(EFalse);
-            break;
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        case EAknCmdPredictiveAutoWord:
-             if ( !iIsAutoCompleteOn )
-                {
-                SetStopProcessFocus(ETrue);
-                LaunchConfirmationNoteL(R_AVKON_PREDICTIVE_AUTOCOMPLETION_ACTIVATED_NOTE);
-                SetStopProcessFocus(EFalse);
-                }
-             iIsAutoCompleteOn = ETrue;      
-         	 iSharedDataInterface->SetPredictiveTextAutoCompleteOn();  			                 	 
-#ifdef  RD_SCALABLE_UI_V2       	 
-            if(iFepPluginManager->PluginInputMode() == EPluginInputModeItut)
-                {
-                SendEventsToPluginManL( EPluginCloseMode, EFalse );
-                HandleChangeInFocus();
-                }
-#endif
-	 		 UpdateIndicators();
-        	 break;
-        case EAknCmdPredictiveNormal:
-             if ( iIsAutoCompleteOn )
-                {
-                SetStopProcessFocus(ETrue);
-                LaunchConfirmationNoteL(R_AVKON_PREDICTIVE_AUTOCOMPLETION_DEACTIVATED_NOTE);
-                SetStopProcessFocus(EFalse);
-                }
-         	 iIsAutoCompleteOn = EFalse;
-         	 iSharedDataInterface->ResetPredictiveTextAutoCompleteOn();        	 
-        	 UpdateIndicators();
-        	 break;
-#endif
-        case EAknCmdInputLanguage:
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        case EAknFepCmdPredInputLanguage:
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            SetStopProcessFocus(ETrue, EFalse);
-            HandleChangeInFocus();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef FF_DUAL_LANGUAGE_SUPPORT 
-            	// Currently dual language feature would work correctly for ITUT and Half Qwerty products 
-                // Hence the dual language settings should also be displayed only for ITUT and Halfqwerty products
-                if(iKeyboardType == EPtiKeyboard12Key || iKeyboardType == EPtiKeyboardHalfQwerty )
-                    LaunchDualLanguageSettingDialogL();
-                else 
-					{ 
-					LaunchLanguagesPopupListL(aCommandId == EAknCmdInputLanguage);		            
-		            iStopProcessFocus = EFalse; 
-					}             
-#else // FF_DUAL_LANGUAGE_SUPPORT
-            LaunchLanguagesPopupListL(aCommandId == EAknCmdInputLanguage);
-            //HandleChangeInFocus();
-            iStopProcessFocus = EFalse;
-#endif // FF_DUAL_LANGUAGE_SUPPORT
-#else            
-            LaunchLanguagesPopupListL(aCommandId == EAknCmdInputLanguage);
-            HandleChangeInFocus();
-            iStopProcessFocus = EFalse;
-#endif
-            break;
-        case EAknEditMenuCmdCutText:
-             StartCcpuModeL(EFalse);
-             if (WesternPredictive())
-                {                
-                // Remove underlining from predicted word when focus is re-gained.
-                SetCcpuFlag(ECcpuStateUncommitWhenFocused);                 
-                }                                     
-             SetCcpuFlag(ECcpuStateIgnoreNextFocusChange);                            
-             SetCcpuFlag(ECcpuStateEdwinInSelectionMode);                       
-             break;            
-        case EAknEditMenuCmdCopyText:                               
-             StartCcpuModeL(ETrue);
-             if (WesternPredictive())
-                {                
-                // Remove underlining from predicted word when focus is re-gained.
-                SetCcpuFlag(ECcpuStateUncommitWhenFocused);                 
-                }                        
-             SetCcpuFlag(ECcpuStateIgnoreNextFocusChange);               
-             SetCcpuFlag(ECcpuStateEdwinInSelectionMode);                
-             break;
-        case EAknFepSoftkeyStartCopy:
-        case EAknFepSoftkeyStartCut:        
-             {
-             ResetCcpuFlags();
-             if (aCommandId == EAknFepSoftkeyStartCopy)
-                {
-                SetCcpuFlag(ECcpuStateCopy);                
-                }
-             else
-                {
-                SetCcpuFlag(ECcpuStateCut);
-                }
-                
-             __ASSERT_DEBUG(iUiInterface->SoftkeysExist(),
-                            AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor));
-                 
-            TBool update = UpdateCBALabelL(ELeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY);
-            update |= UpdateCBALabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow, 
-                                      R_AKNFEP_SOFTKEY_CCPU_CANCEL);
-            update |= UpdateCBALabelL( EMiddleSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ); 
-            if (update)
-                {
-                iUiInterface->DrawSoftkeysNow();
-                }                           
-             }
-             break;   
-        case EEikCmdEditCopy:
-        case EEikCmdEditCut:
-            {
-#ifdef RD_SCALABLE_UI_V2            
-     if (iFepPluginManager && 
-        (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
-         iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
-         iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)) 
-        {
-        iFepPluginManager->SetMenuState(EFalse);     
-        }
-
-#endif //RD_SCALABLE_UI_V2             
-            SetStopProcessFocus(ETrue, EFalse);
-            HandleCopyCutEventL(aCommandId);
-            SetStopProcessFocus(EFalse);            
-            }
-            break;
-        case EEikCmdEditPaste:
-           	{
-           	// We have a hindi character in clipboard which can form ligature with the existing text
-           	// if pasted. While the input language is English, the cursor aligmment check would not happen.
-           	// When selecting Options->Paste, the Fep context at this point is for the menu.
-           	// iInputCapabilities for editor context is retrived from CCoeEnv and is restored back
-           	// after doing the operation, else FepAwareTextEditor will be true in menu context.
-           	if ( (!BidiCursorRequired()) && (!WesternPredictive()) )
-           		{
-	        	TCoeInputCapabilities origInputCapabilities = iInputCapabilities;
-	        
-	        	CCoeEnv* coeEnv = CCoeEnv::Static();
-	        	iInputCapabilities = static_cast<const CCoeAppUi*>(coeEnv->AppUi())->InputCapabilities();
-        	
-        		if( !(iInputCapabilities.SupportsSecretText()) )		        
-		        	{
-		    	    DoCursorDirectionCheckL();
-			        }	
-    	       	iInputCapabilities = origInputCapabilities;
-	           	}
-           	}     
-        	break;
-            
-        case EAknCmdEditMenuSctSelected:
-            {
-            SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
-            HandleChangeInFocus();  // to re-establish contact with editor
-
-            TBuf<ESingleCharacter> charAsDesc(ESingleCharacter);
-            for ( TInt ii = 0; ii < iSctEditChars->Length(); ii++)
-                {
-                charAsDesc[0]=(TText) (*iSctEditChars)[ii];
-                if (charAsDesc[0] == TText(0x000A) // 0x000A is line feed
-                 || charAsDesc[0] == CEditableText::EParagraphDelimiter) 
-                    {
-                    // This is line feed character. Post it to editor and let it decide
-                    // if it is valid.
-                    if (!(iAknEditorFlags & EAknEditorFlagFindPane) && iSctEditChars->Length() == 1)                              
-                        {
-                        SimulateKeyEventL(EKeyEnter);
-                        SimulateKeyEventL(EKeyF19); // Asyncronous case update                                                                                  
-                        }
-                    }                                                        
-                else
-                    {
-                    if (CharIsValidInEditor(charAsDesc[0]))
-                    {
-                    TCursorSelection cursorSelection(0,0);
-                    if ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && 
-                                    iMode == ELatin && !WesternPredictive())
-                        {
-                        TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-                        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-                        if (iUncommittedText.iCursorPos < edSize && iUncommittedText.Length() == 0)
-                            {
-                            cursorSelection = TCursorSelection(iUncommittedText.iCursorPos + 1, 
-                                                               iUncommittedText.iAnchorPos);
-                            }
-                        }
-                        
-                    if (EditorHasFreeSpace())
-                        {
-                        InsertTextFromDialogL(charAsDesc, cursorSelection);
-                        }
-                                           
-                    }
-                  } 
-                 
-                }
-            } 
-            break;
-        case EAknCmdTaskSwapper:
-            SendEventsToPluginManL( EPluginFaseSwap, ETrue );
-            break;
-            
-        case EAknCmdEditMenuClose:
-            {
-            // Handle destruction of menu
-            StopDisplayingMenuBar();     
-            }            
-        break;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Predictive QWERTY (XT9) changes ---->
-         case EAknFepCmdPredMatches:
-         {
-         	HandleChangeInFocus();  // to re-establish contact with editor
-	        // Focus current active word in list ---->
-	        TInt wordToFocus;
-	        iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &wordToFocus );
-	        iSListLaunchedFromMenu = ETrue;
-	        TKeyEvent candLaunch = {EKeyDownArrow, EStdKeyDownArrow, 0, 0};
-			CEikonEnv::Static()->WsSession().SimulateKeyEvent(candLaunch);
-	        //LaunchCandidatePopupListL( wordToFocus );
-	       }
-	        break;
-        case EAknFepCmdPredSettings:
-        	LaunchPredictiveSettingDialogL();
-        	break;
-        /*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.
-	    This is For Insert Word Functionality*/	
-        case EAknEditMenuCmdInsertWord:
-        	HandleChangeInFocus();
-            LaunchInsertWordQueryL(KNullDesC, TCursorSelection(0,0));
-        	break;
-#ifdef __USER_DICTIONARY_EDITING__ 
-        case EAknFepCmdPredEditUserDictionary:
-            if ( IsAutoCompleteOn() )
-                {
-                HandleChangeInFocus();
-                RemoveSuggestedAdvanceCompletionL();
-                }
-            UiInterface()->LaunchUserDictEditDialogL();
-            break;
-#endif //__USER_DICTIONARY_EDITING__ 
-        
-        case EAknFepCmdPredHelp:
-	        // Help ID:PREDINPUT_HLP_INPUT
-			{					
-            const TInt KArrayGranularity = 3;
-            CArrayFix<TCoeHelpContext>* contexts =
-                    new (ELeave) CArrayFixFlat<TCoeHelpContext>( KArrayGranularity );
-	    	CleanupStack::PushL ( contexts );
-	    	TUid appuid = { 0x100058EC };
-	    	contexts->AppendL( TCoeHelpContext( appuid, KFEPPREDINPUT_HLP_INPUT ) );
-	    	CleanupStack::Pop( contexts );
-	    	HlpLauncher::LaunchHelpApplicationL( CEikonEnv::Static()->WsSession(), contexts );			
-			}
-	        break;
-       // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        // add for phrase creation user db view.
-        case EAknCmdUserDBDlg:
-            {
-            HandleChangeInFocus();
-            LaunchUserDBDlgL();
-           }            
-        break;
-        case EPenInputCmdPreviewOn:
-            {
-            iSharedDataInterface->SetFepShowVkbPreviewStatus(KTouchInputPreviewOn);
-            SendEventsToPluginManL(EPluginPreview, KTouchInputPreviewOn);  
-            }
-        break;
-        case EPenInputCmdPreviewOff:
-            {
-            iSharedDataInterface->SetFepShowVkbPreviewStatus(KTouchInputPreviewOff);
-            SendEventsToPluginManL(EPluginPreview, KTouchInputPreviewOff);    
-            }
-        break;
-        case EPenInputCmdRecognitionWithDictionary:
-            {
-            SetStopProcessFocus(ETrue);
-            HandleChangeInFocus();
-            LaunchRecognitionWithDictionaryPopupListL();
-            HandleChangeInFocus();
-            iStopProcessFocus = EFalse;
-            }
-        break;
-        default:
-            break;
-        }
-        
-        
-    StopDisplayingMenuBar();
-    }
-
-void CAknFepManager::SetEmphasis(CBase* /*aMenuControl*/,TBool aEmphasis)
-    {
-    if (aEmphasis)
-        { // opening main menu pane
-        SetFlag(EFlagMenuPaneVisible);
-        if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-            {
-            SetFlag(EFlagInlineEditInBackground);
-            }
-        }
-    else
-        {
-		// The pointer to be cleared when the callback is received on leaving the focus from the menu pane.
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
-        iOptionsMenuBar = NULL;
-#endif
-        ClearFlag(EFlagMenuPaneVisible | EFlagRemoveMatchesMenuItem | EFlagInlineEditInBackground);
-        }
-    }
-
-void CAknFepManager::DynInitMenuBarL(TInt aResourceId, CAknFepUiInterfaceMenuBar* aMenuBar)
-    {
-    if (iFepFullyConstructed && IsFlagSet(EFlagLaunchEditMenu))
-        {
-        aMenuBar->ReplaceAllMenuPanes(R_AVKON_EDIT_MODE_MENU);
-        }
-        
-#ifdef RD_SCALABLE_UI_V2        
-    if (iFepFullyConstructed &&
-        aResourceId == R_AVKON_PENINPUT_OPTION_MENU_BAR)
-        {
-        aMenuBar->ReplaceAllMenuPanes(R_AVKON_TOUCH_TOUCHINPUT_MENU);
-        }
-#endif //RD_SCALABLE_UI_V2        
-        
-    }
-
-#ifdef RD_SCALABLE_UI_V2
-void CAknFepManager::DynInitTouchMenuPaneL(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    if ( !iFepFullyConstructed )
-        {
-        return;
-        }
-
-
-    if (iFepManState != EAknFepStateNull &&
-        iInputCapabilities.FepAwareTextEditor() &&
-        !(iAknEditorFlags & EAknEditorFlagFindPane))
-        {
-        // 'Input language' menu item on option menu isn't supported in Japanese variant.
-        if (!IsFeatureSupportedJapanese())
-            {
-            // Insert 'Input language' item to incoming menu if editor is active on screen and
-            // menu contains 'Help' or 'Exit' item.
-            if (!IsOnlyNumericPermitted())
-                {
-                TInt helpIndex;
-                if (aMenuPane->MenuItemExists(EAknCmdHelp, helpIndex) ||
-                    aMenuPane->MenuItemExists(EAknCmdExit, helpIndex))
-                    {
-                    AddInputLanguageItemL(aMenuPane, helpIndex);
-                    }
-                }
-            }
-        }
-
-    TInt index;
-    if(aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index))
-	    {
-		aMenuPane->DeleteMenuItem(EAknCmdEditItemPlaceHolder);	   
-	    }
-
-    ClearFlag(EFlagLaunchEditMenu);
-            
-    DimInputmodeTouchMenuItems(aMenuPane);
-    }
-#endif //RD_SCALABLE_UI_V2
-void CAknFepManager::DynInitMenuPaneL(TInt aResourceId, CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    if ( !iFepFullyConstructed )
-        {
-        return;
-        }
-
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
-    CAknEdwinState* editorState = NULL;
-    if (iInputCapabilities.FepAwareTextEditor())
-        {
-        editorState = EditorState();
-        }
-
-    if (editorState)
-        {
-        iOptionsMenuBar = iUiInterface->EditorStateMenuBar(editorState);
-        }
-#endif    
-    
-    SetCcpuFlag(ECcpuStateIgnoreNextEdwinSyncEvent);
-
-    if (iFepManState != EAknFepStateNull &&
-        iInputCapabilities.FepAwareTextEditor() &&
-        !(iAknEditorFlags & EAknEditorFlagFindPane))
-        {
-        // 'Input language' menu item on option menu isn't supported in Japanese variant.
-        if (!IsFeatureSupportedJapanese())
-            {
-            // Insert 'Input language' item to incoming menu if editor is active on screen and
-            // menu contains 'Help' or 'Exit' item.
-            //Also, no need for writing language/ITI options in telephony's dialer
-            if ( (RProcess().SecureId().iId != KPhoneSecureId) && !IsOnlyNumericPermitted() )
-                {
-#ifdef RD_INTELLIGENT_TEXT_INPUT                
-                //This method gets called multiple times - first before the help and exit
-                //commands are populated and finally after these items are added.
-                //So if we have already added the input options menu and/or writing language menu,
-                //remove it. It will get added again to the correct place with the below code.
-                //No need to handle following menu types here.
-                if ( !( R_AVKON_EDIT_MODE_MENU == aResourceId || 
-                        R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU == aResourceId ||
-                        R_AVKON_PREDICTIVE_TEXT_MENU_T9 == aResourceId ||
-                        R_AVKON_INPUT_MODE_SUB_MENU == aResourceId ||
-                        R_AKNFEP_EDIT_SUBMENU == aResourceId ||
-                        R_AVKON_TOUCH_TOUCHINPUT_MENU == aResourceId ) 
-                // Add this condition for adding "input options" into the option menu of FSQ.
-                        || ( R_AVKON_TOUCH_TOUCHINPUT_MENU == aResourceId
-                             && iFepPluginManager
-                             && iFepPluginManager->IsSupportITIOnFSQ() )
-                        )                        
-                    {
-                    FindAndRemoveInputOptionsMenuItemL( aMenuPane );
-                    FindAndRemoveEditSubMenuItemL (aMenuPane);
-                    AddInputOptionsMenuItemL( aMenuPane );
-                    }                                	        	
-#else
-                TInt helpIndex;
-		if ( aMenuPane->MenuItemExists(EAknCmdHelp, helpIndex) ||
-                     aMenuPane->MenuItemExists(EAknCmdExit, helpIndex) )
-                    {
-                    AddInputLanguageItemL(aMenuPane, helpIndex);
-                    }
-                       	
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                }
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        if ( IsChineseInputLanguage() && 
-                ( iKeyboardType == EPtiKeyboardQwerty4x10 ||
-                iKeyboardType == EPtiKeyboardQwerty3x11 ) )
-            {
-            // the follow added for phrase creation
-            TInt iptlanguage;
-            if ( !iIsUserdbdlgActive )
-                {
-                aMenuPane->MenuItemExists( EAknCmdInputLanguage, iptlanguage );
-                AddUserDBDlgItemL( aMenuPane, iptlanguage );
-                }
-            }
-#endif
-
-        if (!(aResourceId == R_AVKON_EDIT_MODE_MENU ||
-            aResourceId == R_AVKON_TOUCH_TOUCHINPUT_MENU ||
-            aResourceId == R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU))
-            {
-            AddEditSubmenuL(aMenuPane);
-            }
-        }
-		
-		//HWR Hindi, Training application is not available,
-        //Disable Menu option
-        if(aResourceId == R_AVKON_TOUCH_TOUCHINPUT_MENU && 
-        	iLanguageCapabilities.iInputLanguageCode == ELangHindi)
-        	{
-        	aMenuPane->SetItemDimmed(EPenInputCmdHwrTraining, ETrue);
-        	}
-    TInt index;
-    if(aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index))
-	    {
-		aMenuPane->DeleteMenuItem(EAknCmdEditItemPlaceHolder);	   
-	    }
-#ifdef RD_SCALABLE_UI_V2
-    TInt oldPermitModes = -1;
-    if (R_AVKON_TOUCH_TOUCHINPUT_MENU == aResourceId )
-        {
-        oldPermitModes = iPermittedInputModes;
-        
-        if( iFepPluginManager != NULL )
-            {
-            iPermittedInputModes = iFepPluginManager->PreviousPermitMode();
-            }
-        }
-
-    iFepPluginManager->InitMenuPaneL( iRememberEditorState, aMenuPane, aResourceId );
-    if (oldPermitModes != -1)
-        {
-        iPermittedInputModes = oldPermitModes;    
-        }
-#endif //  RD_SCALABLE_UI_V2      
-    switch (aResourceId)
-        {
-        case R_AVKON_TOUCHINPUT_PREVIEW:
-            {
-            InitPreviewMenuPane(aMenuPane);     
-            } 
-        break;
-        case R_AVKON_EDIT_MODE_MENU:
-        case R_AVKON_TOUCH_INDICATOR_EDIT_MODE_MENU:
-            {
-            ClearFlag(EFlagLaunchEditMenu);
-            
-   		  //call comes here when edit key or '*' is pressed and displays avkon edit menu            
-		  //moving only the essential condition checks in EditSubmenuInUse() here
-		  //no need of checking iSharedDataInterface->EditSubmenuInUse() because for devices with edit key
-		  //this would return 0 and would not populate CUT and COPY option
-
-        	TBool tempFlag = ETrue;
-	        if ( ( ( RProcess().SecureId().iId == KPhoneSecureId ) && (iQwertyInputMode) ) ||
-	             ( ExtendedInputCapabilities() & 
-                 CAknExtendedInputCapabilities::EForceEditSubmenuStatusFlagOff)
-	        	  
-	           )
-	        	{
-	        	tempFlag = EFalse;         		
-	        	}
-
-            if (tempFlag)
-                {
-                TInt posit(0);
-                    
-                if (!(iAknEditorFlags & EAknEditorFlagFindPane) &&
-                	iInputCapabilities.FepAwareTextEditor() &&
-                    aMenuPane->MenuItemExists(EEikCmdEditCut, posit) &&
-                    !IsOnlyNumericPermitted() 
-                    )
-                    { 
-                    if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() > 0 )
-                    	{
-						if (iRememberEditorState && iRememberEditorState->CcpuState() &&
-							!iRememberEditorState->CcpuState()->CcpuCanCopy()&& 
-							PluginInputMode() != EPluginInputModeItut )                      
-							{                                                       
-							TBuf<KMaxFileName> titleStr;
-							StringLoader::Load(titleStr, R_AKNFEP_OPTIONS_EDIT_MENU_CUT_TEXT);                          
-																
-							CAknFepUiInterfaceMenuPane::SItemData itemData;
-						
-							itemData.iCommandId = EAknEditMenuCmdCutText;
-							itemData.iCascadeId = 0;                        
-							if (titleStr.Length())
-								{
-								itemData.iText.Copy(titleStr.Mid(1, titleStr.Length() - 1));                                                
-								}
-							itemData.iFlags = 0;                        
-							aMenuPane->InsertMenuItemL(itemData, posit);            
-											
-							titleStr.Zero();                                            
-							itemData.iText.Zero();
-							StringLoader::Load(titleStr, R_AKNFEP_OPTIONS_EDIT_MENU_COPY_TEXT);
-							
-							itemData.iCommandId = EAknEditMenuCmdCopyText;                      
-							if (titleStr.Length())
-								{
-								itemData.iText.Copy(titleStr.Mid(1, titleStr.Length() - 1));                                                
-								}
-							aMenuPane->InsertMenuItemL(itemData, posit);                                                    
-							}
-						else //Hack for browser in case there are some text already selected
-							{
-							 if (iRememberEditorState && iRememberEditorState->CcpuState() )
-								 {
-								  if(iRememberEditorState->CcpuState()->CcpuCanPaste())
-									  aMenuPane->SetItemDimmed(EEikCmdEditPaste,EFalse);
-								  if(iRememberEditorState->CcpuState()->CcpuCanCopy())
-									  aMenuPane->SetItemDimmed(EEikCmdEditCopy,EFalse);
-								  if(iRememberEditorState->CcpuState()->CcpuCanCut())
-									  aMenuPane->SetItemDimmed(EEikCmdEditCut,EFalse);
-								 }
-							 }
-                    	}
-                    //if the document size is 0 and there are items in clipboard then dislay Paste item
-                    if ( iRememberEditorState && iRememberEditorState->CcpuState() &&
-                         iRememberEditorState->CcpuState()->CcpuCanPaste())
-                        aMenuPane->SetItemDimmed(EEikCmdEditPaste,EFalse);
-                    
-                    } 
-                
-                }                       
-            
-            DimInputmodeMenuItems(aMenuPane);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            //Is this an edit menu launched for a western language?
-            if ( R_AVKON_EDIT_MODE_MENU == aResourceId && !IsChineseInputLanguage() 
-                    && ELangJapanese != iLanguageCapabilities.iInputLanguageCode )
-                {
-                //If this is edit menu (launched from '*' or edit key) and predictive input is allowed,
-                    //we need to remove "Input language" and add "Input options" menu item. 
-                if (!IsOnlyNumericPermitted() && IsLanguageSupportPrediction() && !(iAknEditorFlags & EAknEditorFlagNoT9))
-                    {
-                    TInt menuitemPos(0);
-                    if(aMenuPane->MenuItemExists(EAknCmdEditInsertSmiley,menuitemPos)) // insert after smiley if exist
-                        {
-                        AddPredictiveModeEditMenuL(aMenuPane,menuitemPos+1);
-                        }
-                    else if(aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol,menuitemPos)) // insert after smybol if exist
-                        {
-                        AddPredictiveModeEditMenuL(aMenuPane,menuitemPos+1);
-                        }
-                    }
-                }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-            }
-            break;
-                        
-        case R_AVKON_PREDICTIVE_TEXT_MENU_T9:
-            {
-            if (iMode != ELatin)
-                {
-                aMenuPane->SetItemDimmed(EAknCmdT9PredictiveInsertWord, ETrue);
-                }
-            if (!IsFlagSet(EFlagInlineEditInBackground))
-                {
-                aMenuPane->SetItemDimmed(EAknCmdT9PredictiveMatches, ETrue);
-                aMenuPane->SetItemDimmed(EAknCmdT9PredictiveEditWord, ETrue);
-                }
-            else if (IsFlagSet(EFlagRemoveMatchesMenuItem))
-                {
-                aMenuPane->SetItemDimmed(EAknCmdT9PredictiveMatches, ETrue);
-                }
-            break;
-            }
-        case R_AVKON_INPUT_MODE_SUB_MENU:
-            {
-            if (IsChineseInputLanguage())
-                {
-                DoChineseSubMenu(aMenuPane);
-                }
-            break;
-        case R_AKNFEP_EDIT_SUBMENU:
-            DisableEditSubmenuItems(aMenuPane);
-            break;
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // Predictive QWERTY (XT9) changes ---->
-        case R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU:
-        	{
-            	// This part of code fixing TSW Errors :STAA-7GZE5W
-            	//									   :STAA-7GZEBX 
-            	// "Edit word" option is not available under edit menu in ITU-T mode.
-            	// "Insert word" Should not be available QWERTY mode.
-            //TSW: AKSS-7P87XG
-            //TSW: AKSS-7P88Wf	
-          	if (IsKoreanInputLanguage() || 
-                    iPtiEngine->CurrentLanguage()->LanguageCode() == ELangPrcChinese || 
-                    iPtiEngine->CurrentLanguage()->LanguageCode() == ELangTaiwanChinese || 
-                    iPtiEngine->CurrentLanguage()->LanguageCode() == ELangHongKongChinese  )
-          		{
-          		// No text prediction for korean.
-          		aMenuPane->SetItemDimmed(EAknFepCmdPredActivate, ETrue );
-          		aMenuPane->SetItemDimmed(EAknFepCmdPredDeactivate,ETrue );
-                aMenuPane->SetItemDimmed( EAknFepCmdPredSettings, ETrue );
-          		}
-          	else 
-                {
-                aMenuPane->SetItemDimmed( EAknFepCmdPredSettings, EFalse );
-                if(iSharedDataInterface->PredictiveTextOn())
-                    {
-                    aMenuPane->SetItemDimmed( EAknFepCmdPredActivate, ETrue );					
-                    }
-                else
-                    {
-                    aMenuPane->SetItemDimmed(EAknFepCmdPredDeactivate,ETrue ); 
-                    }	
-                }
-        	} 
-          break;
-            
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        default:
-            break;
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	/*
-    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-    "Matches" and "insert word" options are not available under Edit Menu.
-    This is To make visible/invisible the Insert Word in Optios menu & Edit Menu*/
-    iIsLastResourceEditMenu = aResourceId;
-#endif  
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::FindAndRemoveInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane )
-    {
-    //Logic : 
-    //Loop through each item in menu pane and check if the data
-    //CEikMenuPaneItem::SData::iCascadeId == R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU
-    //or if CEikMenuPaneItem::SData::iCommandId == EAknCmdInputLanguage
-    //If so, delete that item.
-    TInt numOfMenuItems = aMenuPane->NumberOfItemsInPane();
-    CEikMenuPane* menuPane = aMenuPane->GetMenuPane();
-    for (TInt index(0); index < numOfMenuItems ; ++index )
-        {
-        CEikMenuPaneItem::SData itemData = menuPane->ItemDataByIndexL( index );
-        if ( itemData.iCascadeId == R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU ||
-             itemData.iCommandId == EAknCmdInputLanguage ||
-             itemData.iCascadeId == R_AVKON_INPUT_MODE_SUB_MENU ||
-           ( IsChineseInputLanguage() && iSharedDataInterface->QwertyInputMode() && 
-             itemData.iCommandId == EChinFepCmdModeCangJieOption ) )
-            { 
-            menuPane->DeleteBetweenMenuItems( index, index );
-            //Assumption - there can only be one such item in the menu pane
-            //Hence we can return without going through the remaining items
-            numOfMenuItems = aMenuPane->NumberOfItemsInPane();
-            index--;
-            }
-        }
-    }
-
-void CAknFepManager::FindAndRemoveEditSubMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane )
-    {
-    //Logic : 
-    //Loop through each item in menu pane and check if the data
-    //CEikMenuPaneItem::SData::iCascadeId == R_AKNFEP_EDIT_SUBMENU
-    //If so, delete that item.
-    TInt numOfMenuItems = aMenuPane->NumberOfItemsInPane();
-    CEikMenuPane* menuPane = aMenuPane->GetMenuPane();
-    for (TInt index(0); index < numOfMenuItems ; ++index )
-        {
-        CEikMenuPaneItem::SData itemData = menuPane->ItemDataByIndexL( index );
-        if ( itemData.iCascadeId == R_AKNFEP_EDIT_SUBMENU )
-            {
-            menuPane->DeleteBetweenMenuItems( index, index );
-            //Assumption - there can only be one such item in the menu pane
-            //Hence we can return without going through the remaining items
-            return;
-            }
-        }
-    }
-
-void CAknFepManager::AddInputOptionsMenuItemL( CAknFepUiInterfaceMenuPane* aMenuPane )
-    {
-    //Logic:
-    //Appropriate location is :
-    //  if Avkon Help command exists, then immediately above it
-    //  else if Avkon Exit command exists, then immediately above it
-    //  else if there are 3 or more items in the Options menu, then 3rd from last
-    //  else it is the last item. 
-    TInt posToInsertItem( 0 );
-    //MenuItemExists() will return the index of the item in 2nd parameter
-    //But if item is not found, it is returning the total number of items.
-    if ( ( aMenuPane->MenuItemExists(EAknCmdHelp, posToInsertItem) ) ||
-         ( aMenuPane->MenuItemExists(EAknCmdExit, posToInsertItem) ) )
-        {
-        //do nothing - we already have posToInsertItem with required value 
-        }
-    else 
-        {
-        TInt numOfMenuItems = aMenuPane->NumberOfItemsInPane();
-        if ( numOfMenuItems > 2 )
-            {
-            //We should add the new item as third from last, after ignoring
-            //any dimmed items in the menu pane
-            TInt numOfUnDimmedItems(0);
-            //loop from bottom for better performance 
-            for (TInt index(numOfMenuItems-1); index >= 0 ; --index )
-                {
-                CEikMenuPaneItem::SData itemData = aMenuPane->GetMenuPane()->ItemDataByIndexL( index );
-                if ( !(itemData.iFlags & EEikMenuItemDimmed) )
-                    {
-                    ++numOfUnDimmedItems;
-                    }
-                if ( numOfUnDimmedItems == 2 )
-                    {
-                    //We have our position - save it and break from this loop
-                    if ( index > 1 )
-                        {
-                        posToInsertItem = index;
-                        }
-                    else 
-                        {
-                        //There are two or less items on this menu that will be displayed
-                        //Hence, push ITI options to the end of the list:
-                        posToInsertItem = numOfMenuItems;
-                        }
-                    break;
-                    }
-                }
-            }
-        else 
-            {
-            posToInsertItem = numOfMenuItems;
-            }
-        }
-    //Now we have the position at which we need to insert the menu item. 
-    if (
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
-    iQwertyInputMode &&
-#endif   		
-    IsLanguageSupportPrediction() && !(iAknEditorFlags & EAknEditorFlagNoT9))
-        {
-        AddPredictiveModeOptionsL(aMenuPane, posToInsertItem);
-        }
-    else
-        {
-        AddInputLanguageItemL(aMenuPane, posToInsertItem);
-        }
-    }
-#endif // RD_INTELLIGENT_TEXT_INPUT
-
-
-void CAknFepManager::AddEditSubmenuL(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    // Adds edit-submenu to options menu when required contidions are met.
-    // Edit-submenu is added if:
-    //  1. There is active editor on screen
-    //  2. Editor contains text or there is text in clipboard.
-    //  3. Editor is not in Find Pane.
-    //
-    // Since menu will have focus, we also need to remeber certain values
-    // to be able to access undelying editor attributes.
-    
-    CAknEdwinState* editorState = EditorState();
-    iEditorCcpuStatus = 0;        
-    if (editorState && editorState->CcpuState())
-        {
-        iEditorCcpuStatus = EditorCcpuStatus(editorState);    
-        }
-    else
-        {
-        // The editor doesn't have ccpu-capability, doen't display the menu.
-        return; 
-        }            
-    TInt index;
-    if (aMenuPane->MenuItemExists(EAknCmdEditTextMenu, index))
-        {
-        return;    
-        }
-        
-    iRememberLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();      
-    
-    if (iRememberLength > 0 || (iEditorCcpuStatus & ECcpuStatusFlagCanPaste))
-        {
-		if (aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index) ||
-				aMenuPane->MenuItemExists(EAknCmdInputLanguage, index) ||
-		    aMenuPane->MenuItemExists(EAknCmdHelp, index) || 
-            aMenuPane->MenuItemExists(EAknCmdExit, index))  
-            {
-            TBuf<KMaxFileName> titleStr;
-            StringLoader::Load(titleStr, R_AKNFEP_OPTIONS_EDIT_SUBMENU_TITLE);          
-        
-            CAknFepUiInterfaceMenuPane::SItemData mData;
-                            
-            mData.iCommandId = EAknCmdEditTextMenu;
-            mData.iCascadeId = R_AKNFEP_EDIT_SUBMENU;  
-            mData.iFlags = 0;
-            mData.iText.Copy(titleStr.Mid(1, titleStr.Length() - 1).Left(
-               CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-                            
-            aMenuPane->InsertMenuItemL(mData, index);  
-
- 			if(aMenuPane->MenuItemExists(EAknCmdEditItemPlaceHolder, index))
-    			{
-    			    aMenuPane->DeleteMenuItem(EAknCmdEditItemPlaceHolder);
-    			   
-    			}
-            // Remember editor state, because there is no access to it while
-            // menu is on screen.
-            iRememberEditorState = editorState;              
-            }                                           
-        }               
-    }
-
-    
-void CAknFepManager::DisableEditSubmenuItems(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    aMenuPane->SetItemDimmed(EAknEditMenuCmdCopyText, ETrue); 
-    aMenuPane->SetItemDimmed(EEikCmdEditCopy, ETrue);
-    aMenuPane->SetItemDimmed(EAknEditMenuCmdCutText, ETrue);  
-    aMenuPane->SetItemDimmed(EEikCmdEditCut, ETrue);
-    aMenuPane->SetItemDimmed(EEikCmdEditPaste, ETrue);                                          
-    
-    if (iRememberLength > 0)
-        {           
-        if (iEditorCcpuStatus & ECcpuStatusFlagCanCopy)
-            {
-            aMenuPane->SetItemDimmed(EEikCmdEditCopy, EFalse);              
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed(EAknEditMenuCmdCopyText, EFalse);                                      
-            }   
-                        
-        if (iEditorCcpuStatus & ECcpuStatusFlagCanCut)
-            {
-            aMenuPane->SetItemDimmed(EEikCmdEditCut, EFalse);               
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed(EAknEditMenuCmdCutText, EFalse);                                   
-            }               
-        }
-                        
-    if (iEditorCcpuStatus & ECcpuStatusFlagCanPaste)            
-        {
-        aMenuPane->SetItemDimmed(EEikCmdEditPaste, EFalse);             
-        }   
-    }
-    
-
-void CAknFepManager::StartCcpuModeL(TBool aCopyMode)
-    {
-    ResetCcpuFlags();
-    if (!iUiInterface->SoftkeysExist())
-        {
-        iUiInterface->CreateSoftkeys(R_AVKON_SOFTKEYS_EMPTY, this);
-        }
-        
-    TBool update = EFalse;
-    if (aCopyMode)
-        {
-        SetCcpuFlag(ECcpuStateStartCopy);
-        update = UpdateCBALabelL(ELeftSoftkeyIndex, EAknFepSoftkeyStartCopy, 
-                                 R_AKNFEP_SOFTKEY_CCPU_START);      
-        update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EAknFepSoftkeyStartCopy, 
-                                   R_AVKON_SOFTKEY_SELECT_TEXT ); 
-        }
-    else
-        {
-        SetCcpuFlag(ECcpuStateStartCut);
-        update = UpdateCBALabelL(ELeftSoftkeyIndex, EAknFepSoftkeyStartCut, 
-                                 R_AKNFEP_SOFTKEY_CCPU_START);               
-        update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EAknFepSoftkeyStartCut, 
-                                   R_AVKON_SOFTKEY_SELECT_TEXT ); 
-        }
-        
-    update |= UpdateCBALabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow,
-                              R_AKNFEP_SOFTKEY_CCPU_CANCEL);
-        
-    if (update)
-        {
-        iUiInterface->DrawSoftkeysNow();
-        }           
-
-    iIndicator->SetCopyMode(ETrue);
-    UpdateIndicators(); // updates status of indicators
-    }
-
-
-TBool CAknFepManager::OkToActivateSelectionMode() const
-    {
-    if (iFepManState != EAknFepStateNull && 
-        iInputCapabilities.FepAwareTextEditor() &&
-        !(iAknEditorFlags & EAknEditorFlagFindPane))
-        {               
-        return ETrue;       
-        }
-    
-    return EFalse;  
-    }
-
-
-TBool CAknFepManager::HandleCcpuModeKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aEventCode,
-                                             TKeyResponse& aRetCode, TBool aLongPressFlag)
-    {
-    TKeyPressLength length = aKeyEvent.iRepeats ? ELongKeyPress : EShortKeyPress;
-    TBool indicLang = TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(
-                                     iLanguageCapabilities.iInputLanguageCode))
-#ifdef RD_HINDI_PHONETIC_INPUT
-    || TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage(TLanguage(
-                                     iLanguageCapabilities.iInputLanguageCode))
-#endif
-    ;
-    if(aKeyEvent.iCode == EKeyEscape)
-        return EFalse;
-    if (aEventCode == EEventKey && aKeyEvent.iCode == '*')
-        {
-        iStarScan = aKeyEvent.iScanCode;
-        }
-
-    if ((aKeyEvent.iScanCode == EStdKeyDevice0)
-     || (aKeyEvent.iScanCode == EStdKeyDevice1))
-        {
-        if (HashKeySelectionInUse()
-         && IsCcpuFlagSet(ECcpuStateHashDown))
-            {
-            if (IsCcpuFlagSet(ECcpuStateChangeToPredictionMode))
-                {
-                ClearCcpuFlag(ECcpuStateChangeToPredictionMode);
-                if (iModeBefore == ELatin
-                 || iModeBefore == EHiraganaKanji)
-                    {
-                    TBool preFlag = IsPredictive();
-                    TryChangePredictiveInputModeL(!preFlag);
-                    }
-                else
-                    {
-                    TryChangeToModeBeforeL();
-                    }
-                }
-            }
-        // Always let sofkeys fall through.
-        return EFalse;      
-        }
-                
-    if (IsCcpuFlagSet(ECcpuStateSelectionEventPosted))
-        {
-        ClearCcpuFlag(ECcpuStateSelectionEventPosted);
-        return EFalse;  
-        }       
-                        
-    if (HashKeySelectionInUse())
-        {       
-        if (aKeyEvent.iScanCode == EStdKeyHash && aEventCode == EEventKeyDown
-            && iInputCapabilities.FepAwareTextEditor())
-            {
-            SetCcpuFlag(ECcpuStateHashDown);
-            iHashKeyMan->ResetPreviousSelectionStyleMode();
-            return EFalse;
-            }
-            
-        if (!IsOnlyNumericPermitted())
-            {
-            if (IsFeatureSupportedJapanese())
-                {
-                if (FepUI()->IsValidShiftKeyPress()
-                 && aKeyEvent.iScanCode == iStarScan
-                 && !iQwertyInputMode
-                 && !(iMode == EKatakana && iFepManState == EAknFepStateUIActive))
-                    {
-                    if ( aEventCode == EEventKeyUp && !aLongPressFlag
-                     && !(iMode == ELatin && WesternPredictive()
-                          && iFepManState == EAknFepStateUIActive))
-                        {
-                        if (!IsCcpuFlagSet(ECcpuStateIgnoreStarUp))
-                            {
-                            LaunchSpecialCharacterTableL();
-                            }
-                        return EFalse;
-                        }
-                    else if ( aEventCode == EEventKey
-                           && !aLongPressFlag
-                           && length == ELongKeyPress )
-                        {
-                        LaunchSelectModeMenuL();
-                        aRetCode = EKeyWasConsumed;
-                        return ETrue;
-                        }
-                    }
-                }
-            else
-                {
-                if ((aKeyEvent.iScanCode == iStarScan && aEventCode == EEventKeyUp &&
-                    !aLongPressFlag && !iQwertyInputMode) &&
-                (!indicLang || WesternPredictive() || (iMode == ENumber || iMode == ENativeNumber) ))
-                {
-                // Disables *-key on korean multitapping mode
-                if(IsKoreanInputLanguage() && iMode == EHangul)
-                	{
-                	SetCcpuFlag(ECcpuStateIgnoreStarUp);	
-                	}
-				
-                if (!IsCcpuFlagSet(ECcpuStateIgnoreStarUp))
-                    {
-#ifdef RD_SCALABLE_UI_V2                    
-                    if (iFepPluginManager->CurrentFepInputUI())
-                        {
-                        if (iFepPluginManager->CurrentFepInputUI()->HandleKeyL(EStdKeyNull, EShortKeyPress))
-                            {
-                            return EFalse;
-                            }
-                        }
-#endif                        
-                    LaunchSelectModeMenuL();
-                    aRetCode = EKeyWasConsumed;
-                    return ETrue;
-                    }
-                return EFalse;
-                }
-            else if((aKeyEvent.iScanCode == iStarScan && aEventCode == EEventKey
-                && !aLongPressFlag && !iQwertyInputMode)
-                && (indicLang)
-                && (! WesternPredictive())
-                && (length == ELongKeyPress)
-                && (iMode != ENumber && iMode != ENativeNumber ))            
-                {
-                    LaunchSelectModeMenuL();
-                    return EFalse;
-                    }
-                }
-            }
-        }
-        
-    if (IsCcpuFlagSet(ECcpuStateHashDown))
-        {
-        if (aEventCode == EEventKey)
-            {                   
-            if (aKeyEvent.iScanCode == EStdKeyDownArrow
-                || aKeyEvent.iScanCode == EStdKeyRightArrow
-                || aKeyEvent.iScanCode == EStdKeyLeftArrow
-                || aKeyEvent.iScanCode == EStdKeyUpArrow)
-                {
-				if (IsFlagSet(EFlagInsideInlineEditingTransaction) && iMode == EHangul) 
-					{
-					CommitInlineEditL();
-       				iPtiEngine->ClearCurrentWord();
-					}
-										
-                if ((IsCcpuFlagSet(ECcpuStateStartCopy)) ||
-                    (IsCcpuFlagSet(ECcpuStateStartCut)))
-                    {
-                    aRetCode = EKeyWasConsumed;             
-                    return ETrue;   
-                    }
-                
-                if (!IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode))
-                    {
-                    // User wants to select and not to change mode, so cancel the mode change
-                    // caused by initial hash key press.                                    
-                    if(!(iAknEditorFlags & EAknEditorFlagFindPane))
-                        {                               
-                        iHashKeyMan->SetPreviousSelectionStyleModeL();                                                   
-                        SetCcpuFlag(ECcpuStateEdwinInSelectionMode);
-                        TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0};
-                        // to enable copy/paste support on cba. We simulate via CCoeEnv
-                        // to avoid fep SimulateKeyEventL adding shift modifiers
-                        CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey); 
-                        }
-                    }
-
-                // If prediction is changed while pressing hash-key,
-                // it go back previous prediction state.
-                if (IsCcpuFlagSet(ECcpuStateChangeToPredictionMode))
-                    {
-                    ClearCcpuFlag(ECcpuStateChangeToPredictionMode);
-                    if (iModeBefore == ELatin
-                     || iModeBefore == EHiraganaKanji)
-                        {
-                        TBool preFlag = IsPredictive();
-                        TryChangePredictiveInputModeL(!preFlag);
-                        }
-                    else
-                        {
-                        TryChangeToModeBeforeL();
-                        }
-                    }
-                    
-                if (WesternPredictive() && IsFlagSet(EFlagInsideInlineEditingTransaction))                    
-                    {      
-                    // This will commit inline edit if it is active for predictive mode.                              
-                    return EFalse;
-                    }
-
-                aRetCode = EKeyWasNotConsumed;
-                return ETrue;
-                }
-            else if (aKeyEvent.iScanCode == EStdKeyBackspace)   
-                {                               
-                if (!(aKeyEvent.iModifiers & EStdKeyLeftShift))
-                    {                                   
-                    // Simulate edit key + clear key functionality via hash key in no-edit-key device.              
-                    TKeyEvent ccpuStart = {127, EStdKeyBackspace, EStdKeyLeftShift, 0};
-                    CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode);                    
-                    
-                    aRetCode = EKeyWasConsumed;             
-                    return ETrue;                                       
-                    }
-                else if (!IsCcpuFlagSet(ECcpuStateHashKeyDeleteDone))
-                    {
-                    // Hash key + clear key was pressed, but hash key was released before
-                    // changing to selection mode. Need to return to previous mode, because
-                    // user didn't want to change input mode.                       
-                    iHashKeyMan->SetPreviousSelectionStyleModeL();
-                    SetCcpuFlag(ECcpuStateHashKeyDeleteDone);
-                    }
-
-                // If prediction is changed while pressing hash-key,
-                // it go back previous prediction state.
-                if (IsCcpuFlagSet(ECcpuStateChangeToPredictionMode))
-                    {
-                    ClearCcpuFlag(ECcpuStateChangeToPredictionMode);
-                    if (iModeBefore == ELatin
-                     || iModeBefore == EHiraganaKanji)
-                        {
-                        TBool preFlag = IsPredictive();
-                        TryChangePredictiveInputModeL(!preFlag);
-                        }
-                    else
-                        {
-                        TryChangeToModeBeforeL();
-                        }
-                    }
-
-                }
-            }
-        else if (aKeyEvent.iScanCode == EStdKeyHash && aEventCode == EEventKeyUp)
-            {
-            ClearCcpuFlag(ECcpuStateHashDown
-                          | ECcpuStateHashKeyDeleteDone
-                          | ECcpuStateChangeToPredictionMode);
-            if (IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode))
-                {
-                SetCcpuFlag(ECcpuStateSelectionEventPosted);
-                ClearCcpuFlag(ECcpuStateEdwinInSelectionMode);
-                SetFlag(EFlagLongShiftKeyPress);
-
-                TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0};
-                CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode);
-                }
-
-            return EFalse;
-            }
-        } 
-    
-    if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateStartCut))    
-        {
-        if (aKeyEvent.iScanCode == EStdKeyDevice3 && aEventCode == EEventKey)
-            {
-            aRetCode = EKeyWasConsumed;                         
-            if (IsCcpuFlagSet(ECcpuStateStartCopy))
-                {
-                ProcessCommandL(EAknFepSoftkeyStartCopy);
-                }
-            else
-                {
-                ProcessCommandL(EAknFepSoftkeyStartCut);                
-                }                   
-            return ETrue;               
-            }       
-        else if (aKeyEvent.iScanCode < EStdKeyLeftArrow ||
-                 aKeyEvent.iScanCode > EStdKeyDownArrow) 
-            {       
-            aRetCode = EKeyWasConsumed;             
-            return ETrue;   
-            }
-        }       
-    else if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut))
-        {       
-        if ((aKeyEvent.iScanCode >= EStdKeyLeftArrow) && (aKeyEvent.iScanCode <= EStdKeyDownArrow)) 
-            {   
-            if (!(aKeyEvent.iModifiers & EModifierShift))
-                {
-                TKeyEvent ccpuStart = aKeyEvent;
-                ccpuStart.iModifiers |= EModifierShift;
-                ccpuStart.iModifiers |= EModifierRightShift;
-                CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode);        
-                
-                aRetCode = EKeyWasConsumed;
-                return ETrue;                                                                                                       
-                }  
-            else
-                {
-                aRetCode = EKeyWasNotConsumed;              
-                return ETrue;
-                }               
-            }
-        
-        TCursorSelection cursorSelection;
-        if( iInputCapabilities.FepAwareTextEditor() )
-        	{
-			iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); 
-			if( (aEventCode ==  EEventKeyUp) && (cursorSelection.Length() == 0) 
-				&& ((aKeyEvent.iScanCode ==  EStdKeyBackspace) || (aKeyEvent.iCode ==  EKeyBackspace)
-				|| (aKeyEvent.iScanCode ==  EStdKeyDelete) || (aKeyEvent.iCode ==  EKeyDelete))) 
-				{
-				ClearCcpuFlag(ECcpuStateButton);
-				}
-			}
-        if (aKeyEvent.iScanCode != EStdKeyBackspace && aKeyEvent.iCode != EKeyOK)   
-            {                           
-            aRetCode = EKeyWasConsumed;
-            return ETrue;                                                       
-            }
-        else
-            {
-            if (iInputCapabilities.FepAwareTextEditor())            
-                {
-                TCursorSelection cursorSelection;                               
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection); 
-                if (cursorSelection.Length() == 0)      
-                    {
-                    aRetCode = EKeyWasConsumed;
-                    return ETrue;                                                                           
-                    }
-                else if (aKeyEvent.iScanCode == EStdKeyBackspace)
-                    {
-                    // Selection will be removed, handle cba button state accordingly                    
-                    if (iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() ==
-                        cursorSelection.Length())
-                        {
-                        // Whole text was selected and will be removed. Cancel the ccpu mode.
-                        ProcessCommandL(EAknFepSoftkeyCloseWindow);
-                        }
-                    else    
-                        {
-                        // Part of the text will be removed. Set Cba-buttons to initial ccpu-mode status.                        
-                        __ASSERT_DEBUG(iUiInterface->SoftkeysExist(),
-                                    AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor));
-                 
-                        TBool update = UpdateCBALabelL(ELeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY);
-                        update |= UpdateCBALabelL(ERightSoftkeyIndex, EAknFepSoftkeyCloseWindow, R_AKNFEP_SOFTKEY_CCPU_CANCEL);
-                        update |= UpdateCBALabelL( EMiddleSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY ); 
-                        if (update)
-                            {
-                            iUiInterface->DrawSoftkeysNow();
-                            }                                                                     
-                        }
-                    }                    
-                }
-            }                                   
-        }
-        
-    return EFalse;  
-    }
-    
-    
-
-void CAknFepManager::AddInputLanguageItemL(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex)
-    {
-    CAknFepUiInterfaceMenuPane::SItemData mData;
-    
-    TBuf<KMaxFileName> langStr;
-    TInt Inputlangindex;
-    if(!aMenuPane->MenuItemExists(EAknCmdInputLanguage, Inputlangindex))
-	    {    
-    StringLoader::Load(langStr, R_AKNFEP_OPTIONS_INPUT_LANGUAGE);
-    
-    mData.iCommandId = EAknCmdInputLanguage;
-    mData.iCascadeId = 0;  
-    mData.iFlags = 0;
-    mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-    
-    aMenuPane->InsertMenuItemL(mData, aIndex); 
-	    }
-    
-    // Chinese input mode switching from the option menu
-    if (IsChineseInputLanguage() && iSharedDataInterface->QwertyInputMode())
-        {
-        // Add Chinese language items
-        langStr.Zero();
-        
-        StringLoader::Load(langStr, R_AKNFEP_OPTIONS_INPUT_MODE_CHI);
-        
-        mData.iCommandId = EAknCmdInputMethod;
-        mData.iCascadeId = R_AVKON_INPUT_MODE_SUB_MENU;
-        mData.iFlags = 0;
-        mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-        
-        aMenuPane->InsertMenuItemL(mData, ++aIndex);
-        
-        // Check if the current engine has CangJie feature or not, if not
-        // then CangJie mode becomes invisible, similar impl in IsInputModeAvailable
-        // and DoChineseSubMenu        
-        TBool isCangJieSupported = EFalse;
-        MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineNormalCangjieQwerty);
-        if ( ptiCoreInfo )
-            {
-            isCangJieSupported = ptiCoreInfo->CapsBits() & ESupportCangjieInput;
-            }
-        
-        // Add Hong Kong CangJie option, option available only in HK variant and qwerty mode
-        if ( iLanguageCapabilities.iInputLanguageCode == 
-             ELangHongKongChinese && isCangJieSupported )
-            {
-            langStr.Zero();
-            
-            StringLoader::Load(langStr, R_AKNFEP_OPTIONS_CANGJIE_MODE);
-            
-            mData.iCommandId = EChinFepCmdModeCangJieOption;
-            mData.iCascadeId = 0;
-            mData.iFlags = 0;
-            mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-            
-            aMenuPane->InsertMenuItemL(mData, ++aIndex);          
-            }
-        }
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-// Predictive QWERTY (XT9) changes ---->
-void CAknFepManager::AddPredictiveModeOptionsL(CAknFepUiInterfaceMenuPane* aMenuPane, 
-                                               TInt aIndex ) const
-    {
-    CAknFepUiInterfaceMenuPane::SItemData mData;
-    
-    HBufC* inputMenuStr = StringLoader::LoadLC(R_AKNFEP_PRED_OPTIONS_INPUT_OPTIONS);
-    
-    mData.iCommandId = 0;
-    mData.iCascadeId = R_AKNFEP_PRED_INPUT_OPTIONS_SUBMENU;  
-    mData.iFlags = 0;
-    mData.iText.Copy(inputMenuStr->Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-    
-    CleanupStack::PopAndDestroy(inputMenuStr);
-    
-    aMenuPane->InsertMenuItemL(mData, aIndex);
-       
-    // Chinese input mode switching from the option menu
-    if (IsChineseInputLanguage() && iSharedDataInterface->QwertyInputMode())
-        {
-        // Add Chinese language items
-        TBuf<KMaxFileName> langStr;
-        
-        langStr.Zero();
-        
-        StringLoader::Load(langStr, R_AKNFEP_OPTIONS_INPUT_MODE_CHI);
-        
-        mData.iCommandId = EAknCmdInputMethod;
-        mData.iCascadeId = R_AVKON_INPUT_MODE_SUB_MENU;
-        mData.iFlags = 0;
-        mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-        
-        aMenuPane->InsertMenuItemL(mData, ++aIndex);
-        
-        // Check if the current engine has CangJie feature or not, if not
-        // then CangJie mode becomes invisible, similar impl in IsInputModeAvailable
-        // and DoChineseSubMenu        
-        TBool isCangJieSupported = EFalse;
-        MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineNormalCangjieQwerty);
-        if ( ptiCoreInfo != NULL)
-            {
-            isCangJieSupported = ptiCoreInfo->CapsBits() & ESupportCangjieInput;
-            }
-#ifdef __HALF_QWERTY_KEYPAD
-        isCangJieSupported = isCangJieSupported && (iKeyboardType != EPtiKeyboardHalfQwerty);
-#endif //__HALF_QWERTY_KEYPAD
-        
-        // Add Hong Kong CangJie option, option available only in HK variant and qwerty mode
-        if ( iLanguageCapabilities.iInputLanguageCode == ELangHongKongChinese && isCangJieSupported )
-            {
-            langStr.Zero();
-            
-            StringLoader::Load(langStr, R_AKNFEP_OPTIONS_CANGJIE_MODE);
-            
-            mData.iCommandId = EChinFepCmdModeCangJieOption;
-            mData.iCascadeId = 0;
-            mData.iFlags = 0;
-            mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-            
-            aMenuPane->InsertMenuItemL(mData, ++aIndex);          
-            }
-        }
-    }
-
-void CAknFepManager::AddPredictiveModeEditMenuL(CAknFepUiInterfaceMenuPane* aMenuPane, 
-                                                TInt aIndex ) const
-	{
-	// Remove Predictive Edit menu option if XT9 options are there --->
-	aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, ETrue);
-    aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, ETrue);
-	// Remove Predictive Edit menu option if XT9 options are there <---
-	//if current writing language supports prediction then display input options settings --> 
-    //if current writing language does not supports prediction then display only input language 
-    //option to modify the writing language, when user wants to modify when edit query is launched. <--
-     TBool isLanguagugeSupportsPrediction = EFalse;
-     switch(iKeyboardType)
-     {
-		 case EPtiKeyboardHalfQwerty:
-#ifdef __HALF_QWERTY_KEYPAD		 
-		 		isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive); 
-#endif   //__HALF_QWERTY_KEYPAD
-		    break;
-     case EPtiKeyboardQwerty4x12:
-     case EPtiKeyboardQwerty4x10:  
-     case EPtiKeyboardQwerty3x11:
-     case EPtiKeyboardCustomQwerty:
-		 		isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternQwertyPredictive);
-		    break;
-     case EPtiKeyboardNone:
-     case EPtiKeyboard12Key:
-		 		isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive);
-		    break;
-		 default:
-		 		isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive);
-		    break;    
-		 }
-     if (isLanguagugeSupportsPrediction && !(iAknEditorFlags & EAknEditorFlagNoT9))
-         {
-         aMenuPane->SetItemDimmed(EAknCmdInputLanguage, ETrue);           
-         AddPredictiveModeOptionsL(aMenuPane, aIndex);
-         }
-	}
-// Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::DoChineseSubMenu(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    // ZhuyinFind & StrokeFind ONLY available for FindEditors
-    if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)
-        {
-        if (iMode == EZhuyinFind)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue);
-            }
-        
-        if (iMode == EStrokeFind)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeStrokeFind, ETrue);
-            }        
-        }
-    else
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeStrokeFind, ETrue);
-        }
-    
-    // Customize menu item for Chinese mainland
-    if (iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese)
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue);
-        
-        if (iMode == EPinyin)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue);
-            }
-        else if (iMode == EStroke)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue);
-            }
-        else if (iMode == ELatin)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-            }
-        else
-            return;
-        }
-    // Customize menu item for HongKong
-    else if (iLanguageCapabilities.iInputLanguageCode == ELangHongKongChinese)
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyinFind, ETrue);     
-        
-        TBool isCangJieSupported = EFalse;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        if ( EPtiKeyboardQwerty3x11 == KeyboardLayout() )
-        	{
-        	isCangJieSupported = ETrue;
-        	}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-#ifdef RD_INTELLIGENT_TEXT_INPUT      
-#ifdef __HALF_QWERTY_KEYPAD
-        isCangJieSupported = isCangJieSupported && (iKeyboardType != EPtiKeyboardHalfQwerty);
-#endif //__HALF_QWERTY_KEYPAD
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        
-        // CangJie is only for qwerty mode
-        if ( !iSharedDataInterface->QwertyInputMode() || !isCangJieSupported )
-            aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue);
-        
-        if (iMode == EStroke)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue);              
-            }
-        else if (iMode == ECangJie)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue);
-            }
-        else if (iMode == ELatin)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-            }
-        else
-            return;                
-        }
-    // Customize menu item for TaiWan
-    else if (iLanguageCapabilities.iInputLanguageCode == ELangTaiwanChinese)
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdModePinyin, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeCangJie, ETrue);
-        
-        if (iMode == EStroke)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeStroke, ETrue);
-            }
-        else if (iMode == EZhuyin)
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdModeZhuyin, ETrue);
-            }
-        else if (iMode == ELatin)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-            }
-        else
-            return;                 
-        }
-    else
-        return;    
-    }
-#ifdef RD_SCALABLE_UI_V2
-       
-void CAknFepManager::DoWesternTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode;
-    // if mode is already hangul or language is not korean dim korean mode menu item
-    TInt index;
-        
-    if( iMode == EHangul || inputLanguage != ELangKorean || !(IsModePermitted(EHangul)))
-        {
-        if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index) )
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, ETrue);
-            }
-        }
-    else
-        {
-        if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index ) )
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse);
-            }
-        }
-    // remove Chinese specific items from menu
-    aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, ETrue);    
-    
-    if (aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index))
-        {
-        aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue);
-        }
-
-    // T9 stuff
-    if (WesternPredictive())
-        {
-        aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse);
-        if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion))
-        	{
-        	// Disable Autoword Completion feature for Touch Input
-        	#ifndef RD_SCALABLE_UI_V2  
-        	aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse);	
-        	#endif // RD_SCALABLE_UI_V2
-        	}
-        	
-        if (aMenuPane->MenuItemExists(EAknCmdT9PredictiveT9Off, index)) 
-            {
-            aMenuPane->SetItemDimmed(EAknCmdT9PredictiveT9Off, EFalse);
-            }          	
-        }
-    else
-        {
-        if ( (iPermittedInputModes & EAknEditorTextInputMode) &&
-            !(iAknEditorFlags & EAknEditorFlagNoT9) &&
-            iMode == ELatin &&
-            !IsKoreanInputLanguage() &&
-            iLanguageCapabilities.iSupportsWesternPredictive)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse);
-            }
-        }
-
-    if (  ( iMode == ENumber || iMode == ENativeNumber ) &&
-        (iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode)) )
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse); 
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-        if( iMode == EHangul || inputLanguage == ELangKorean)
-            {
-            TInt index;
-            if ( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, index ) )
-                {
-                aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse);
-                }
-            }
-        }
-
-    if ( IsModePermitted(ENumber) )
-        {
-        if (( iMode != ENumber ||
-            iMode == ENumber && iLanguageCapabilities.iArabicIndicDigitsAllowed &&
-            !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            (iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic)) 
-            || ( iMode != ENumber ||
-            iMode == ENumber && iLanguageCapabilities.iEasternArabicIndicDigitsAllowed &&
-            !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            (iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic))
-            ||( iMode != ENumber ||
-            iMode == ENumber && iLanguageCapabilities.iIndicDigitsAllowed &&
-            !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            (iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari)) &&
-            (!(iPermittedInputModes==EAknEditorNumericInputMode))) // hide the menu if number editor
-            
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
-            }
-        }
-    //modified by zhangfeiyan, fix bug SKIN-7LABJ3
-    if ( IsModePermitted( ENativeNumber ) )
-        {
-       if ( iLanguageCapabilities.iArabicIndicDigitsAllowed &&
-            !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            iMode != ENativeNumber )
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse);
-            }
-        else if ( iLanguageCapabilities.iEasternArabicIndicDigitsAllowed &&
-            !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            iMode != ENativeNumber )
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeEasternArabicIndicNumber, EFalse);
-            }   
-        else if( iLanguageCapabilities.iIndicDigitsAllowed && 
-            !( iAknEditorFlags & EAknEditorFlagLatinInputModesOnly ) &&       
-
-            iMode != ENativeNumber )
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeIndicNumber, EFalse);   
-            }
-        }
-
-    if (IsAbleToLaunchSCT())
-        {
-        if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) 
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse);
-            }
-        }
-
-    if ( iMode != ENumber && iMode != ENativeNumber && 
-         iPtiEngine->NumberOfLanguages() > 1 &&
-        !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse);
-        }
-        
-    if (iPermittedInputModes == EAknEditorNumericInputMode)
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-        }
-    else if ( (iMode == ELatin || iMode == ENumber || iMode == ENativeNumber ) &&
-        (iPermittedInputModes & EAknEditorSecretAlphaInputMode) &&
-        !(iPermittedInputModes & EAknEditorTextInputMode))
-        {
-        // Text case mode is not available in secret editors.
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        }
-        
-    if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        }   
-        
-    if (iCaseMan->CurrentCase() == EAknEditorUpperCase)
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);   
-        }
-    else if (iCaseMan->CurrentCase() == EAknEditorLowerCase)
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);   
-        }
-        
-    aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);    
-    
-    if (!(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) 
-    && iFepPluginManager->IsNonLatinLanguage(TLanguage(iSharedDataInterface->InputTextLanguage())))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-        }             
-    if( iMode == EHangul )
-        {
-        //aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, EFalse);
-        //aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse);
-        
-        aMenuPane->SetItemDimmed(EAknCmdEditModeEnglish, EFalse);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-        
-        }
-    else
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeEnglish, ETrue);
-        }
-    }    
-
-void CAknFepManager::DoChineseTouchMenu(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    TInt index;
-    if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)
-        && aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)) 
-        {
-        aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue);    
-        }
-
-    if (WesternPredictive())
-        {
-        aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse);
-        if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion))
-        	{
-        	// Disable Autoword Completion feature for Touch Input
-        	#ifndef RD_SCALABLE_UI_V2  
-        	aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse);	
-        	#endif // RD_SCALABLE_UI_V2
-        	}
-        	
-        if (aMenuPane->MenuItemExists(EAknCmdT9PredictiveT9Off, index)) 
-            {
-            aMenuPane->SetItemDimmed(EAknCmdT9PredictiveT9Off, EFalse);
-            }             	
-        }
-    else
-        {
-        if ( (iPermittedInputModes & EAknEditorTextInputMode) &&
-            !(iAknEditorFlags & EAknEditorFlagNoT9) &&
-            iMode == ELatin)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse);
-            }
-        }
-    if (IsAbleToLaunchSCT() &&
-        aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse);
-        }
-    if( (iFepPluginManager && (iFepPluginManager->PluginInputMode() != EPluginInputModeItut ) ) 
-            && aMenuPane->MenuItemExists(EChinFepCmdInstructions, index) )  
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdInstructions, ETrue);
-        }
-    else if ( !(iPermittedInputModes == EAknEditorNumericInputMode ||
-        iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) )
-        {
-        if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) 
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdInstructions, EFalse);
-            }
-        }
-
-    if ( iMode != ENumber && iPtiEngine->NumberOfLanguages() > 1  &&
-        !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse);
-        }
-
-    if (iPermittedInputModes == EAknEditorNumericInputMode)
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-        }
-    else if ( (iMode == ELatin || iMode == ENumber) &&
-        (iPermittedInputModes & EAknEditorSecretAlphaInputMode) &&
-        !(iPermittedInputModes & EAknEditorTextInputMode))
-        {
-        // Text case mode is not available in secret editors.
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        }
-    if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        }
-
-    if ( IsModePermitted(ENumber) && iMode != ENumber )
-        {
-        //aMenuPane->SetItemDimmed(EChinFepCmdModeNumber, EFalse);  // original statement
-        aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
-        // end modifying
-        }
-    }
-TBool CAknFepManager::IsChineseInputMode( TInt aMode )
-    {
-    return aMode == EPRCFind || aMode == ECangJie || aMode == EZhuyinFind
-           || aMode == EStrokeFind || aMode == EPinyin || aMode == EZhuyin
-           || aMode == EStroke;    
-    }
-
-#endif //RD_SCALABLE_UI_V2
-void CAknFepManager::DoWesternMenu(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    // remove Chinese specific items from menu
-    aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-    aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-    aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-    const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode;
-    
-    
-    TInt pos=-1;
-    
-    if( aMenuPane->MenuItemExists( EAknCmdEditModeKorean, pos ) )
-        {
-        // if mode is already hangul or language is not korean dim korean mode menu item
-        if( iMode == EHangul || inputLanguage != ELangKorean || !(IsModePermitted(EHangul)))
-            {
-            
-            aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, ETrue);
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeKorean, EFalse);
-            }
-        }
-    
-    TInt index;
-    
-    if (aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index))
-        {
-        aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue);
-        }
-
-    // T9 stuff
-    if (WesternPredictive())
-        {
-        aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse);
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion))
-        	{
-        	// Disable Autoword Completion feature for Touch Input
-        	#ifndef RD_SCALABLE_UI_V2  
-        	aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse);	
-        	#endif // RD_SCALABLE_UI_V2
-        	}
-#endif  //RD_INTELLIGENT_TEXT_INPUT 
-        }
-    else
-        {
-        if ( (iPermittedInputModes & EAknEditorTextInputMode) &&
-            !(iAknEditorFlags & EAknEditorFlagNoT9) &&
-            iMode == ELatin &&
-			!IsKoreanInputLanguage() &&
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // Predictive QWERTY (XT9) changes ---->
-            ((
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            iLanguageCapabilities.iSupportsWesternPredictive && !IsKoreanInputLanguage()
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-			&& !iQwertyInputMode) ||
-			(iLanguageCapabilities.iSupportsWesternQwertyPredictive && iQwertyInputMode)
-			)
-            // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-           )
-            {
-            aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse);
-            }
-        }
-
-    if ( ( iMode == ENumber || iMode == ENativeNumber ) && 
-        (iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode)) )
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeAlpha, EFalse);
-        }
-
-    if ( IsModePermitted(ENumber) )
-        {
-        if ( iMode != ENumber ) // hide the menu if number editor
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Predictive QWERTY (XT9) changes ---->
-        // There's no need for numeric mode when full qwerty keyboard is in use (like in MAXI)
-        if (iQwertyInputMode)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, ETrue);
-            }
-        // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        }
-        
-    if ( IsModePermitted(ENativeNumber) && iMode != ENativeNumber)
-        {
-        if ( iLanguageCapabilities.iArabicIndicDigitsAllowed ) // hide the menu if number editor)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, EFalse);
-            }
-        else if ( iLanguageCapabilities.iEasternArabicIndicDigitsAllowed ) // hide the menu if number editor)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeEasternArabicIndicNumber, EFalse);
-            }    
-        else if( iLanguageCapabilities.iIndicDigitsAllowed ) // hide the menu if number editor)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeIndicNumber, EFalse);   
-            }
-        }
-
-    if (IsAbleToLaunchSCT())
-        {
-        if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)) 
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse);
-            }
-        }
-    TInt writtingLanguage = 0;
-    if ( iMode != ENumber && iMode != ENativeNumber && iPtiEngine->NumberOfLanguages() > 1 &&
-        !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)
-        && aMenuPane->MenuItemExists( EAknCmdInputLanguage, writtingLanguage ) )
-        {
-        aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse);
-        }
-    }
-
-void CAknFepManager::DoChineseMenu(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    TInt index;
-    if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)
-       && aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)) 
-        {
-        aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue);    
-        }
-
-    if (WesternPredictive())
-        {
-        aMenuPane->SetItemDimmed(EAknCmdPredictiveTextCascade, EFalse);
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        if(iPtiEngine->CurrentLanguage()->HasInputMode(EPtiEngineWordCompletion))
-        	{
-        	// Disable Autoword Completion feature for Touch Input
-        	#ifndef RD_SCALABLE_UI_V2  
-        	aMenuPane->SetItemDimmed(EAknCmdPredictiveModeCascade, EFalse);	
-        	#endif // RD_SCALABLE_UI_V2
-        	}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        }
-    else
-        {
-        if ( (iPermittedInputModes & EAknEditorTextInputMode) &&
-            !(iAknEditorFlags & EAknEditorFlagNoT9) &&
-            iMode == ELatin)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdMultitapPredictiveT9On, EFalse);
-            }
-        }
-    if (IsAbleToLaunchSCT() &&
-        aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, EFalse);
-        }
-    if( iQwertyInputMode && aMenuPane->MenuItemExists(EChinFepCmdInstructions, index) )
-        {
-        aMenuPane->SetItemDimmed(EChinFepCmdInstructions, ETrue);
-        }
-    else if ( !(iPermittedInputModes == EAknEditorNumericInputMode ||
-        iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) )
-        {
-        if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index)
-            && aMenuPane->MenuItemExists(EChinFepCmdInstructions, index)) 
-            {
-            aMenuPane->SetItemDimmed(EChinFepCmdInstructions, EFalse);
-            }
-        }
-
-    if ( (!IsOnlyNumericPermitted()) && iPtiEngine->NumberOfLanguages() > 1  &&
-        !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdInputLanguage, EFalse);
-        // the follow added for phrase creation
-        TInt iptlanguage;
-        if ( !iIsUserdbdlgActive 
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-        && EPtiKeyboardHalfQwerty != KeyboardLayout() 
-#endif
-        && IsChineseInputLanguage() )
-            {
-            aMenuPane->MenuItemExists( EAknCmdInputLanguage, iptlanguage );
-            MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage();
-            TInt inputLanguage = (ptilang)? ptilang->LanguageCode() : 0;          
-            if (iQwertyInputMode && (inputLanguage == ELangPrcChinese ||
-            	inputLanguage == ELangHongKongChinese ||
-            	inputLanguage == ELangTaiwanChinese))
-            	{
-            	TRAP_IGNORE(AddUserDBDlgItemL( aMenuPane, iptlanguage ));
-            	}
-            }
-        }
-
-    if (iPermittedInputModes == EAknEditorNumericInputMode)
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-        }
-    else if ( (iMode == ELatin || iMode == ENumber) &&
-        (iPermittedInputModes & EAknEditorSecretAlphaInputMode) &&
-        !(iPermittedInputModes & EAknEditorTextInputMode))
-        {
-        // Text case mode is not available in secret editors.
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        }
-    if (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-        aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-        }
-
-    if ( IsModePermitted(ENumber) && iMode != ENumber )
-        {
-        //aMenuPane->SetItemDimmed(EChinFepCmdModeNumber, EFalse);  // original statement
-        aMenuPane->SetItemDimmed(EAknCmdEditModeNumber, EFalse);
-        // end modifying
-        }
-    }
-
-void CAknFepManager::DoJapaneseMenu(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    // remove Chinese specific items from menu
-    TInt index;
-    if (aMenuPane->MenuItemExists(EAknCmdEditInsertSymbol, index))
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbol, ETrue);
-        }
-        
-    aMenuPane->SetItemDimmed(EChinFepCmdModeLatinUpper, ETrue);
-    aMenuPane->SetItemDimmed(EChinFepCmdModeLatinLower, ETrue);
-    aMenuPane->SetItemDimmed(EAknCmdEditModeLatinText, ETrue);
-
-    if (IsAbleToLaunchSCT()
-     && !iSharedDataInterface->QwertyInputMode())
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditInsertSymbolJp, EFalse);
-        }
-
-    if (IsAbleToLaunchPCT()
-     && !iSharedDataInterface->QwertyInputMode())
-        {
-        aMenuPane->SetItemDimmed(EAknCmdEditInsertPictograph, EFalse);
-        }
-
-    if (!(iPermittedInputModes & EAknEditorHiraganaKanjiInputMode) &&
-        aMenuPane->MenuItemExists(EJapanFepCmdModeUserDic, index)
-        )
-        {
-        aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue);
-        }
-
-    if (iPermittedInputModes == (EAknEditorSecretAlphaInputMode | EAknEditorNumericInputMode))
-        {
-        if (iMode == ELatin)
-            {
-            aMenuPane->SetItemDimmed(EJapanFepCmdEditModeNumber, EFalse);
-            }
-        else if (iMode == ENumber)
-            {
-            aMenuPane->SetItemDimmed(EJapanFepCmdEditModeAlpha, EFalse);
-            }
-        }
-    else
-        {
-        // If the fep is running on the Janapnse User Dictionary Application,
-        // "User Dictionary" in editting options menu is hidden.
-        if (CEikonEnv::Static()->EikAppUi()->Application())
-            {
-            if (CEikonEnv::Static()->EikAppUi()->Application()->AppDllUid() == KUidUserDictApp)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeUserDic, ETrue);
-                }
-            }
-
-        if (iPermittedInputModes & EAknEditorHiraganaKanjiInputMode)
-            {
-            aMenuPane->SetItemDimmed(EJapanFepCmdModeKutenCodeInput, EFalse);
-            }
-
-        TInt value = iSharedDataInterface->ClearDirection();
-        if (value == EClearDirectionRight)
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditClearDirectionLeft, EFalse);
-            }
-        else
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditClearDirectionRight, EFalse);
-            }
-
-        if (!iSharedDataInterface->QwertyInputMode())
-            {
-            if (IsPredictive(ELatin))
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdPredictiveTextCascade, EFalse);
-                }
-            else if ((iPermittedInputModes & EAknEditorHalfWidthTextInputMode)
-                  && !(iAknEditorFlags & EAknEditorFlagNoT9))
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdMultitapPredictiveT9On, EFalse);
-                }
-            }
-
-        if (IsPredictive(EHiraganaKanji))
-            {
-            aMenuPane->SetItemDimmed(EJapanFepCmdModePredictiveOff, EFalse);
-            }
-        else if((iPermittedInputModes & EAknEditorHiraganaKanjiInputMode)
-             && !(iAknEditorFlags & EAknEditorFlagNoT9))
-            {
-            aMenuPane->SetItemDimmed(EJapanFepCmdModePredictiveOn, EFalse);
-            }
-
-        if (iMode != EHiraganaKanji && iPermittedInputModes & EAknEditorHiraganaKanjiInputMode)
-            {
-            aMenuPane->SetItemDimmed(EJapanFepCmdModeHiragana, EFalse);
-            }
-
-        if (iCharWidth == EHalfWidthChar)
-            {
-            if (iPermittedInputModes & EAknEditorKatakanaInputMode && iMode != EKatakana)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeKatakana, EFalse);
-                }
-
-            if (iMode != ELatin && (iPermittedInputModes & EAknEditorHalfWidthTextInputMode
-                || iPermittedInputModes & EAknEditorSecretAlphaInputMode))
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdEditModeAlpha, EFalse);
-                }
-
-            if (iMode != ENumber
-             && iPermittedInputModes & EAknEditorNumericInputMode
-             && !iSharedDataInterface->QwertyInputMode())
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdEditModeNumber, EFalse);
-                }
-
-            if (iMode == EKatakana && iPermittedInputModes & EAknEditorFullWidthKatakanaInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeFullWidth, EFalse);
-                }
-
-            if (iMode == ELatin && !iWesternPredictive 
-             && iPermittedInputModes & EAknEditorFullWidthTextInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeFullWidth, EFalse);
-                }
-
-            if (iMode == ENumber
-             && iPermittedInputModes & EAknEditorFullWidthNumericInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeFullWidth, EFalse);
-                }
-            }
-        else // Full width Character
-            {
-            if (iMode != EKatakana && iPermittedInputModes & EAknEditorFullWidthKatakanaInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeKatakana, EFalse);
-                }
-
-            if (iMode != ELatin && iPermittedInputModes & EAknEditorFullWidthTextInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdEditModeAlpha, EFalse);
-                }
-
-            if (iMode != ENumber
-             && iPermittedInputModes & EAknEditorFullWidthNumericInputMode
-             && !iSharedDataInterface->QwertyInputMode())
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdEditModeNumber, EFalse);
-                }
-
-            if (iMode == EKatakana && iPermittedInputModes & EAknEditorKatakanaInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeHalfWidth, EFalse);
-                }
-
-            if (iMode == ELatin && iPermittedInputModes & EAknEditorFullWidthTextInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeHalfWidth, EFalse);
-                }
-
-            if (iMode == ENumber
-             && iPermittedInputModes & EAknEditorFullWidthNumericInputMode)
-                {
-                aMenuPane->SetItemDimmed(EJapanFepCmdModeHalfWidth, EFalse);
-                }
-            }
-        }
-    }
-
-void CAknFepManager::HandlePointerEventInInlineTextL(TPointerEvent::TType /*aType*/, TUint /*aModifiers*/, TInt /*aPositionInInlineText*/)
-    {
-    }
-
-void CAknFepManager::GetFormatOfFepInlineText(TCharFormat& aFormat, 
-                                              TInt& aNumberOfCharactersWithSameFormat, 
-                                              TInt aPositionOfCharacter) const
-    {
-    if ( FepUI() )
-        {
-        FepUI()->GetFormatOfFepInlineText(aFormat, aNumberOfCharactersWithSameFormat, 
-                                          aPositionOfCharacter);
-        }
-    }
-
-void CAknFepManager::NumberModeChangeGSNotification()
-	{
-	iLanguageCapabilities.iNumericEditorDigitType = EDigitTypeUnknown;
-	UpdateNumericEditorDigitType();	
-	UpdateLocalDigitMode();
-	}
-
-void CAknFepManager::HandleChangeInFocusL()
-    {
-    // Closing SCT has done focus change, so here just reset the flag.
-#ifdef RD_SCALABLE_UI_V2	
-    if(iDisalbleFocusChangeForSCT)
-    {
-    iDisalbleFocusChangeForSCT = EFalse;
-    return;
-    }
-#endif
-
-    //The CCPU flag ECcpuStateShiftkeyWasPressedBeforeLosingFocus suggests that the candidate list was closed
-    //with a long key press of shift key. If so then, FEP needs to set the EFlagShiftKeyDepressed for the CCPU mode to work 
-    //correctly. The state of the shift state is copied to local variable isToSetShiftKeyStateDown because as a function of change
-    //of focus the FEP clears all the CCPU flags which would reset ECcpuStateShiftkeyWasPressedBeforeLosingFocus also.
-    TBool isToSetShiftKeyStateDown = IsCcpuFlagSet(ECcpuStateShiftkeyWasPressedBeforeLosingFocus);
-    if (!Japanese() || iFepManState != EAknFepStateUIActive)
-        {
-        if (IsCcpuFlagSet(ECcpuStateIgnoreNextFocusChange))
-            {
-            // The focus event was caused by menu selection, don't clear all ccpu flags.
-            ClearCcpuFlag(ECcpuStateIgnoreNextFocusChange);
-            }
-        else
-            {
-            if((HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown) 
-             && IsCcpuFlagSet(ECcpuStateEdwinInSelectionMode)))
-                {
-                ClearCcpuFlag(ECcpuStateHashDown);              
-                SetCcpuFlag(ECcpuStateSelectionEventPosted);
-                ClearCcpuFlag(ECcpuStateEdwinInSelectionMode);
-                SetFlag(EFlagLongShiftKeyPress);                
-                TKeyEvent ccpuStart = {0, EStdKeyLeftShift, 0, 0};
-                CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKeyUp);                                       
-                }   
-            else
-                {
-                TBool isToSupressCursorMove = IsCcpuFlagSet(ECcpuStateSupressCursorMoveToEnd);
-                TBool isCommitPredictiveWord = IsCcpuFlagSet(ECcpuStataCommitPredictiveWord);
-                CancelCcpuMode();               
-                if(isToSupressCursorMove)
-                    SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
-                if(isCommitPredictiveWord)
-                    SetCcpuFlag(ECcpuStataCommitPredictiveWord);                
-                }    
-            
-            }
-        SetCcpuFlag(ECcpuSupressEditMenuFromShiftUp);        
-        iPreviousEditingState = EStateNone;
-        iEditIndicatorAtLastUpdate = NULL;
-        ClearFlag( EFlagBidiCursorIsInitialized );
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-// removing the no match indicator is not necessary for ITI 
-        if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-            {
-            TryRemoveNoMatchesIndicatorL();
-            }
-#endif             
-        UpdateCbaL(NULL);
-                    
-        if (iFepFullyConstructed)
-            {
-            SetCcpuFlag(ECcpuStateLosingFocus); // CommitInlineEditL needs to now we're losing focus (for cursor handling):           
-            CancelAllTimerActivity();
-            FepUI()->ExpireMultitapTimer();
-            ClearCcpuFlag(ECcpuStateLosingFocus); // Cleared right away to make sure nothing else is affected.              
-            }
-        // Forget shift key and chr key press if application or UI component is
-        // changed during shiftkey press.
-        ClearFlag(EFlagQwertyChrKeyDepressed);
-        //If candidate list was closed by long keypress of shift key, set the flag EFlagShiftKeyDepressed for CCPU mode
-        //to work correctly once it re-focuses on the editor.
-        if(isToSetShiftKeyStateDown)
-            {
-            SetFlag(EFlagShiftKeyDepressed);
-            ClearCcpuFlag(ECcpuStateShiftkeyWasPressedBeforeLosingFocus);
-            }
-        else
-            {
-            ClearFlag(EFlagShiftKeyDepressed);
-            }
-        if ( iFepFullyConstructed && IsFepAwareTextEditor() )
-            {
-            //save state of old item
-            TransferFepStateToEditorL();
-
-            if ( WesternPredictive() )
-                {                                            
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-                // To rip off suggested word completion when there is a change in focus
-                if(IsAutoCompleteOn())
-                	{
-                	RemoveSuggestedCompletionL();
-
-                	}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                SetCcpuFlag(ECcpuStateLosingFocus);    // CommitInlineEditL needs to now we're losing focus (for cursor handling):                
-                CommitInlineEditL(); 
-                ClearCcpuFlag(ECcpuStateLosingFocus);  // Cleared right away to make sure nothing else is affected.                              
-                }
-            else
-                {
-                TryCloseUiL();
-                }
-                                 
-            iRememberLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-            if (iLastFocusedEditor && !IsExtendedFlagSet(EExtendedFlagFepAwareDialogLaunched))
-                {
-                iLastFocusedEditor->SetObserver(NULL);
-                iLastFocusedEditor = NULL;
-                }            
-			// When editor launches a non-fep aware dialog, then we
-			// should not set the observer to Null. Because if the dialog is 
-			// destroyed we will not know and the dialog will remain orphaned.                                     
-			// Also we need to know the fep editor pointer.
-            iLastFocusedEditor = EditorState();        
-            iEditorCcpuStatus = EditorCcpuStatus(iLastFocusedEditor); 
-            //iLastFocusedEditor->SetObserver(NULL);    
-#ifdef RD_SCALABLE_UI_V2            
-            UnregisterObserver();
-#endif // RD_SCALABLE_UI_V2 
-            }
-
-        if (iPermittedInputModes & EAknEditorSecretAlphaInputMode &&
-            !(iPermittedInputModes & EAknEditorTextInputMode))
-            {
-            // For password editors.                
-            ClearFlag(EFlagSupressAutoUpdate);
-            } 
-
-        // Losing focus is over, from this point on we are gaining focus.
-        ClearCcpuFlag(ECcpuStateLosingFocus);   
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        if(iFnKeyManager)
-                iFnKeyManager->ClearFnKeyState();
-                
-        if(iResourceString)
-          {
-          delete iResourceString;
-          iResourceString = NULL;
-          }
-#endif // RD_INTELLIGENT_TEXT_INPUT
-        
-        // get input capabilities from newly focused item
-        CCoeEnv* coeEnv = CCoeEnv::Static();
-        iInputCapabilities = static_cast<const CCoeAppUi*>(coeEnv->AppUi())->InputCapabilities();
-        SetQwertyModeToInputcapbility();
-        if ( IsFepAwareTextEditor() )
-            {
-            // Now at the launch of non-fep aware dialogs we do not set the editor observer to NULL,
-            // and retain the editor pointer in iLastFocusedEditor. 
-            // So in case the editor is back in focus, we set iLastFocusedEditor to NULL
-            // and set the editor observer again.
-            
-			// At launch of fep aware dialog on a fep aware editor say spell query launched on messaging editor,
-            // we have the flag EExtendedFlagFepAwareDialogLaunched set. 
-			// So in this scenario we retain the observer for both the editor as we need to close the spell query
-            // on close of messaging editor. 
-            // Specific scenario is explained, the same is applicable for all general scenarios, for any
-            // fep aware dialog launched on any other fep aware editor.
-            if (iLastFocusedEditor && !IsExtendedFlagSet(EExtendedFlagFepAwareDialogLaunched))
-                {
-                iLastFocusedEditor->SetObserver(NULL);
-                iLastFocusedEditor = NULL;
-                }
-            if( EditorState() )
-                {
-            	EditorState()->SetObserver(this);
-                }
-            ConfigureFEPFromEditorStateL();
-#ifdef RD_INTELLIGENT_TEXT_INPUT	
-			if( PtiEngine() )
-				{
-	            if(!IsAutoCompleteOn())
-	                {
-					TInt tailLength = 0;
-		            TRAP_IGNORE( PtiEngine()->HandleCommandL( 
-									EPtiCommandGetAutoCompletionTailLength,
-									&tailLength ));	
-					if(tailLength)
-						{					
-						RemoveSuggestedAdvanceCompletionL();
-						}
-	                }	
-				}
-#endif
-            if (!iWesternPredictive && iMode == ELatin)
-                {
-                // It is possible to cause situation (by ill-acting client
-                // app) where focus handling goes out of sync and there actually
-                // is uncomitted inline edit operation going on in to-be-focused
-                // editor. Multitapping mode doesn't like that, so we make sure here
-                // that it won't happen.
-                CancelInlineEdit();                         
-                }             
-            AdjustCursorTypeForCurrentPosition();
-            
-            if (IsCcpuFlagSet(ECcpuStateUncommitWhenFocused))
-                {
-                // One of the ccpu editing options mode was started from
-                // options menu. If there is active predictive word it
-                // needs to be deactivated.
-                ClearCcpuFlag(ECcpuStateUncommitWhenFocused);               
-                DeactivatePredicitveWordAndMoveCursorL();                        
-                }
-#ifdef RD_SCALABLE_UI_V2                   
-            RegisterObserver();
-#endif // RD_SCALABLE_UI_V2            		
-            }
-        else // no FepAwareTextEditor
-            {
-#ifdef RD_SCALABLE_UI_V2
-            // register to receive TInputCapabilitiesEvent events
-            if ( SemiFepAwareTextEditor() )
-                {
-                RegisterObserver();
-                TLanguage localLanguage = ELangTest;
-                if (GetLocalLanguage( localLanguage ) )
-                    {
-                    iLanguageCapabilities.iLocalInputLanguageInUse = ETrue;
-                    if ( localLanguage != iLanguageCapabilities.iInputLanguageCode )
-                        {
-                        ChangeInputLanguageL(localLanguage);
-                        }
-                    }
-                else if (iLanguageCapabilities.iLocalInputLanguageInUse)
-                    {
-                    iLanguageCapabilities.iLocalInputLanguageInUse = EFalse;
-                    ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-                    }
-
-                if (IsFlagSet(EFlagNewSharedDataInputLanguage) )
-                    {
-                    //Global mode or input language has been changed in general settings
-                    if ( !iLanguageCapabilities.iLocalInputLanguageInUse)
-                        {
-                        ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-                        }
-                    ClearFlag(EFlagNewSharedDataInputLanguage);
-                    }
-                }
-#endif // RD_SCALABLE_UI_V2
-            // Check for non Edwin derived editors (eg mfne, tel no editor etc)
-            if (iInputCapabilities.SupportsWesternNumericIntegerPositive() || 
-                iInputCapabilities.SupportsWesternNumericIntegerNegative() || 
-                iInputCapabilities.SupportsWesternNumericReal() )
-                {
-                SyncStates(EAknFepStateInitial);
-                iPermittedInputModes = EAknEditorNumericInputMode;
-                iAknEditorNumericKeymap = EAknEditorNativeKeysNumberModeKeymap;
-                iAknEditorFlags = 0;
-                iCharWidth = EHalfWidthChar;
-                UpdateNumericEditorDigitType();
-                
-                if ( IsMfneEditor() ) 
-                    {
-                    UpdateLocalDigitMode();
-                    }
-                
-                if( IsInputModeAvailable(ENativeNumber) &&
-                    ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ||
-                      iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ||
-                      iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) )
-                    {
-                    TryChangeModeL( ENativeNumber );
-                    }
-                else
-                    {
-                    TryChangeModeL( ENumber );
-                    }
-                }
-            else //we don't have a valid editor
-                {
-                SyncStates(EAknFepStateNull);
-                
-                // Reset the qwerty shift case mode when we do not have a valis editor.
-                ClearFlag(IsFlagSet( EFlagQwertyShiftMode ));
-                if (!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible) &&
-                    iIndicator)
-                    {
-                    iIndicator->SetState(EStateNone);
-                    iHybridAplphaChangedToAlphanumeric = EFalse; 
-                    }
-                ClearFlag(EFlagForegroundUIComponentVisible);
-                iPermittedInputModes = EAknEditorNullInputMode;
-                
-#ifdef RD_SCALABLE_UI_V2                
-                RegisterObserver();               
-#endif // RD_SCALABLE_UI_V2                      
-                }            
-            }
-        }
-    else if (Japanese() && iFepManState == EAknFepStateUIActive)
-        {
-        if (iInputCapabilities.FepAwareTextEditor())
-            {
-            TryCloseUiL();
-            }
-        }
-    
-#ifdef RD_SCALABLE_UI_V2
-        {
-        /*
-        if( iGainForeground )
-            {
-            iLoseForeAndGainFocus = EFalse;
-            }
-        else
-            {
-            iLoseForeAndGainFocus = ETrue;
-            }
-        SendEventsToPluginManL( EPluginFocusChanged, iGainForeground );
-        */
-        CCoeControl* focusCtrl = static_cast<const CCoeAppUi*>(CCoeEnv::Static()->AppUi())->TopFocusedControl();         
-       CAknAppUi* aui = static_cast<CAknAppUi*>(CEikonEnv::Static()->AppUi());
-       TBool bForeGround = aui->IsForeground();
-       if(iGainForeground && ! bForeGround)
-        {
-        iGainForeground = EFalse;
-        }
-        
-        if(iGainForeground && iNotifyPlugin)
-            {            
-            SendEventsToPluginManL( EPluginFocusChanged, 
-                                    iGainForeground && focusCtrl!=0 && focusCtrl->IsFocused());        
-            }
-        }
-#endif // RD_SCALABLE_UI_V2
-        if( PtiEngine() && FepAwareTextEditor() )
-            {
-            if( FepAwareTextEditor()->DocumentLengthForFep() == 0 &&
-                IsFlagSet(EFlagInsideInlineEditingTransaction)&&
-                iFepManState == EAknFepStateUIActive )
-              {
-              PtiEngine()->ClearCurrentWord();                
-              TryCloseUiL();                
-              }
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Predictive QWERTY (XT9) changes ---->
-    ShowExactWordPopupIfNecessaryL();
-    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    }
-
-void CAknFepManager::CleanUpFep()
-    {
-    if (iFepFullyConstructed)
-        {
-        CancelAllTimerActivity();
-        iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit();
-        }
-    else
-        {
-        CommonDestroyFep();
-        }
-    }
-
-#ifdef RD_SCALABLE_UI_V2
-void CAknFepManager::UnregisterObserver()
-    {
-
-		MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-    
-    	if ( mop )
-    		{
-    		CAknExtendedInputCapabilities* extendedInputCapabilities = 
-    		mop->MopGetObject( extendedInputCapabilities );
-
-    		if ( extendedInputCapabilities ) 
-    			{
-    			extendedInputCapabilities->UnregisterObserver( this );
-    			}
-    		}
-    }
-
-void CAknFepManager::RegisterObserver()
-    {
-
-	MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-
-	if ( mop )
-		{
-		CAknExtendedInputCapabilities* extendedInputCapabilities = 
-		mop->MopGetObject( extendedInputCapabilities );
-
-		if ( extendedInputCapabilities ) 
-			{
-			extendedInputCapabilities->RegisterObserver( this );
-			}
-		}
-    }    
- 
-#endif // RD_SCALABLE_UI_V2    
-    
-void CAknFepManager::SimulateKeyEventL(TUint aKeyCode, TBool aActiveObj)
-    {
-    if (aActiveObj)
-        {
-        iSimulateKey = aKeyCode;
-        iAsyncOwnSimulateKey.CallBack();
-        }
-    else
-        {
-        CArrayFix<TUint>* simCharArray = new(ELeave) CArrayFixFlat<TUint>(1);
-        CleanupStack::PushL(simCharArray);
-        simCharArray->AppendL(aKeyCode);
-        SimulateKeyEventsL(simCharArray->Array());
-        CleanupStack::PopAndDestroy(); // simCharArray
-        }
-    }
-
-TInt CAknFepManager::ResetShiftKeyMonitorCallback(TAny* aObj)
-    {
-    TRAPD(err, static_cast<CAknFepManager*>(aObj)->ResetShiftKeyMonitorL());
-    if (err)
-        {
-        static_cast<CAknFepManager*>(aObj)->CleanUpFep();
-        return KErrDied;
-        }
-    return KErrNone;
-    }
-
-void CAknFepManager::ResetShiftKeyMonitorL()
-    {
-    TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); 
-    if(phoneIdle)
-    	{
-    	iShiftKeypressMonitor->Cancel();
-    	return;
-    	}
-    
-    SetFlag(EFlagLongShiftKeyPress);
-#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__    
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Copy-paste with shift+SKs is always available on ITU-T. On QWERTY,
-    // it's available if activated in the Central Repository.
-    if ( (!iQwertyInputMode || iSharedDataInterface->ShiftCopyPastingOnQwerty()) && 
-         !(iAknEditorFlags & EAknEditorFlagFindPane) )
-#endif // RD_INTELLIGENT_TEXT_INPUT        
-#else    
-    if (!iQwertyInputMode && !(iAknEditorFlags & EAknEditorFlagFindPane))
-#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-        {
-        if (HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown)) 
-            {
-            SetCcpuFlag(ECcpuStateEdwinInSelectionMode);
-            iHashKeyMan->SetPreviousSelectionStyleModeL();
-            }
-    	if(iCandidatePopup)
-    		{	// if candidate list is launched and then a long key press of shift key is done, destroy the candidate list first
-				iCandidatePopup->AttemptExitL(EFalse);
-				HandleChangeInFocusL();
-    		}
-        if(!IsCcpuFlagSet(ECcpuStateCbaShown))
-			{       
-	        TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0};
-    	    // to enable copy/paste support on cba. We simulate via CCoeEnv
-        	// to avoid fep SimulateKeyEventL adding shift modifiers
-	        CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey);
-			SetCcpuFlag(ECcpuStateCbaShown);
-			}
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-#ifdef __HALF_QWERTY_KEYPAD   
-	// we should not enter the copy-paste mode in find pane editors
-    if( EPtiKeyboardHalfQwerty == KeyboardLayout() && !(iAknEditorFlags & EAknEditorFlagFindPane))
-        {
-        CAknFepFnKeyManager::TFnKeyState fnState = FnKeyState();
-        
-        if( CAknFepFnKeyManager::EFnKeyNone != fnState 
-        		|| iFnCharInsertedForShift )
-            {
-            TText prevCh = PreviousChar();
-            if (prevCh == '#' || prevCh == '/')
-                {
-                RemovePreviousCharacterL();             
-                }
-            // reset the fn state if it is FnNext
-            if( fnState == CAknFepFnKeyManager::EFnKeyNext )
-                {
-                SetFnKeyState( CAknFepFnKeyManager::EFnKeyNone );
-                }
-            }
-        SetCcpuFlag( CAknFepManager::ECcpuStateEdwinInSelectionMode );
-        if(!IsCcpuFlagSet(ECcpuStateCbaShown))
-            {		
-	        TKeyEvent ccpuStart = {EKeyF21, EStdKeyF21, 0, 0};
-         
-    	    // to enable copy/paste support on cba. We simulate via CCoeEnv
-        	// to avoid fep SimulateKeyEventL adding shift modifiers
-        	CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, EEventKey);    
-            SetCcpuFlag(ECcpuStateCbaShown); 			                                      
-			}
-        }  
-#endif //__HALF_QWERTY_KEYPAD
-		          
-#endif//RD_INTELLIGENT_TEXT_INPUT        
-    iShiftKeypressMonitor->Cancel();
-    }
-
-void CAknFepManager::CancelAllTimerActivity()
-    {
-    if (iShiftKeypressMonitor->IsActive())
-        {
-        iShiftKeypressMonitor->Cancel();
-        }
-    if (iConcatenationTimer->IsActive())
-        {
-        iConcatenationTimer->Cancel();
-        }
-    if (iChrKeypressMonitor->IsActive())
-        {
-        iChrKeypressMonitor->Cancel();
-        }
-    if (iPostEventCheck->IsActive())
-        {
-        iPostEventCheck->Cancel();
-        }
-    if ( iHashKeyMan )
-        {
-        iHashKeyMan->CancelHashKeyTimer();
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-    if( iNumericResourceTimer )
-        {
-        TRAP_IGNORE( NumericResourceMultiTapTimerTimeoutL());
-        }
-#endif
-    }
-
-TBool CAknFepManager::IsModePermitted(TInt aMode, TWidthChar aWidth) const
-    {
-    if (aWidth == ENoneWidthChar)
-        {
-        aWidth = iCharWidth;
-        }
-
-    TBool isModePermitted = ETrue;
-    const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode;    
-    
-    if ( aMode == ENativeNumber && !IsInputModeAvailable( aMode ) )
-        {
-        if ( inputLanguage == ELangThai && iFepPluginManager && 
-               iFepPluginManager->PluginInputMode() != EPluginInputModeItut &&
-               !iQwertyInputMode)
-               {
-               return ETrue;
-               }        
-        return EFalse;
-        }
-    
-    TUint editorMode = EditorMode(aMode, aWidth);
-
-    //Support Boxcn default Chinese inputmode when defaul inputmode is Cangjie Hongkong
-    //only if Chinese input is permitted in the editor
-    if (!( (iVariantPermittedModes | ELatinText | ELatinUpper | ELatinLower | EHiragana) & aMode) )
-        {
-        //the mode is never valid in this variant
-        isModePermitted = EFalse;
-        }
-    else if( aMode == ECangJie && !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))
-		{
-		if (iQwertyInputMode || iFepPluginManager->PluginInputMode() == EPluginInputModeVkb
-				|| iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ)
-			{
-			isModePermitted = ETrue;
-			}
-		else
-			{
-			isModePermitted = EFalse;
-			}
-		}
-    else if (!(iPermittedInputModes & editorMode))
-        {
-        isModePermitted = EFalse;
-        }
-    else if (((aMode == EPinyin) || (aMode == EZhuyin) || (aMode == EStroke) || (aMode == ECangJie)
-        ||   (aMode == EHiraganaKanji) || (aMode == EKatakana)
-        || (((aMode == ELatin) || (aMode == ENumber) || iMode == ENativeNumber ) && (iCharWidth == EFullWidthChar)))
-        && (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))
-        {
-        //the editor does not allow Chinese modes
-        isModePermitted = EFalse;
-        }
-    else if (((aMode == EStrokeFind) || (aMode == EZhuyinFind))
-        && (!(iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)))
-        {
-        //StrokeFind and ZhuyinFind modes are only valid in a chinese find pane
-        isModePermitted = EFalse;
-        }
-    else
-        {
-        TUint editorsWhichAllowThisMode;
-        if (aMode == ENumber || aMode == ENativeNumber )
-            {
-            //The FEP's ENumber mode has a direct mapping to EAknEditorNumericInputMode
-            // or EAknEditorFullWidthNumericInputMode
-            editorsWhichAllowThisMode = EAknEditorNumericInputMode;
-            if (aWidth == EFullWidthChar)
-                {
-                editorsWhichAllowThisMode = EAknEditorFullWidthNumericInputMode;
-                }
-            }
-        else if (aMode == EHiragana)
-            {
-            editorsWhichAllowThisMode = EAknEditorHiraganaInputMode;
-            }
-        else if (aMode == EKatakana || (aMode == ELatin && aWidth == EFullWidthChar))
-            {
-            editorsWhichAllowThisMode = EditorMode(aMode, aWidth);
-            }
-        else if (aMode == EHiraganaKanji)
-            {
-            // HiraganaKanji mode allows all input mode.
-            editorsWhichAllowThisMode = EAknEditorAllInputModes;
-            }
-        else if (aMode == EHangul)
-            {
-            editorsWhichAllowThisMode =(EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode | EAknEditorHalfWidthTextInputMode);     
-            }          
-        else
-            {
-            //if the editor allows Text Input or Secret Alpha Mode,
-            //we infer that Chinese Modes are valid
-            editorsWhichAllowThisMode =(EAknEditorTextInputMode | 
-                                        EAknEditorSecretAlphaInputMode | 
-                                        EAknEditorHalfWidthTextInputMode);
-            }
-        isModePermitted = iPermittedInputModes & editorsWhichAllowThisMode;
-        }
-
-    return isModePermitted;
-    }
-
-TInt CAknFepManager::SyncStates(TAknFepManagerState aState)
-    {
-    TInt ret = KErrNone;
-    
-    if (!iFepFullyConstructed)
-        {
-        if (aState == EAknFepStateNull)
-            {
-            return KErrNone;
-            }
-                       
-        TRAP(ret, ConstructFullyL());
-        }
-    if (iFepFullyConstructed)
-        {
-        iFepManState = aState;
-        iKeyCatcher->SetState(aState);
-        }
-   
-    return ret;    
-    }
-
-TUint CAknFepManager::EditorMode(TInt aMode, TWidthChar aWidth) const
-    {
-    TInt editorMode = 0;
-    switch(aMode)
-        {
-        case EPinyin:
-        case EZhuyin:
-        case EStroke:
-        case ECangJie:
-        case EPRCFind:
-        case EZhuyinFind:
-        case EStrokeFind:
-        case EHangul:
-            {
-            editorMode = EAknEditorTextInputMode;
-            }
-            break;
-        case EHindi:
-        case ELatin:
-        case ELatinText:
-        case ELatinUpper:
-        case ELatinLower:
-            {
-            if (iPermittedInputModes & EAknEditorTextInputMode)
-                {
-                 editorMode = EAknEditorTextInputMode;
-                }
-            else if (iPermittedInputModes & EAknEditorHalfWidthTextInputMode)
-                {
-                if (IsFeatureSupportedJapanese())
-                    {
-                    editorMode = EAknEditorHalfWidthTextInputMode;
-                    }
-                else
-                    {
-                    editorMode = EAknEditorTextInputMode;
-                    }
-                }
-            else
-                {
-                editorMode = EAknEditorSecretAlphaInputMode;
-                }
-            if (aWidth == EFullWidthChar)
-                {
-                editorMode = EAknEditorFullWidthTextInputMode;
-                }
-            }
-            break;
-        case EHiragana:
-            {
-            editorMode = EAknEditorHiraganaInputMode;
-            }
-            break;
-        case EHiraganaKanji:
-            {
-            editorMode = EAknEditorHiraganaKanjiInputMode;
-            }
-            break;
-        case EKatakana:
-            {
-            editorMode = EAknEditorKatakanaInputMode;
-            if (aWidth == EFullWidthChar)
-                {
-                editorMode = EAknEditorFullWidthKatakanaInputMode;
-                }
-            }
-            break;
-        case ENumber:
-        case ENativeNumber:
-            {
-            editorMode = EAknEditorNumericInputMode;
-            if (aWidth == EFullWidthChar)
-                {
-                editorMode = EAknEditorFullWidthNumericInputMode;
-                }
-            }
-            break;
-        default:
-            break;
-        }
-
-    return editorMode;
-    }
-
-void CAknFepManager::LaunchPenSupportMenuL()
-    {
-    if (HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown))
-        {
-        return;
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	if(iCandidatePopup)        
-		{
-		iCandidatePopup->AttemptExitL(EFalse);
-		HandleChangeInFocusL();
-		}
-#endif		
-    
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        TryRemoveNoMatchesIndicatorL();
-		/*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.
-	    When we launch Edit Menu.the word which in Inline Editing in the BackGorund 
-	    Should not Commit*/        
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        CommitInlineEditL();
-#endif
-		/*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.
-	    This Flag is useful for deciding whether "Matches" Menu Item can Visible 
-	    or not*/
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-        SetFlag(EFlagInlineEditInBackground);
-#endif
-		/*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.*/
-#ifndef RD_INTELLIGENT_TEXT_INPUT        
-        ClearFlag(EFlagInsideInlineEditingTransaction);
-#endif        
-        }
-    
-    CAknEdwinState* editorState = NULL;
-    if (iInputCapabilities.FepAwareTextEditor())
-        {
-        editorState = EditorState();
-        }
-    
-    iEditMenuBar = NULL;
-    if (editorState)
-        {
-        iEditMenuBar = iUiInterface->EditorStateMenuBar(editorState);
-        }
-    
-    if (iEditMenuBar && 
-        !iEditMenuBar->IsDisplayed())
-        {
-        
-        iPenSupportMenu = ETrue;
-       // SetFlag(EFlagLaunchEditMenu);
-        CAknFepUiInterfaceMenuPane* menuPane = iEditMenuBar->MenuPane();
-        
-        CEikMenuPane* oldMenuPane = menuPane->GetMenuPane();        
-        if (!oldMenuPane)
-            {
-            menuPane = NULL;    
-            }
-        
-        iRememberEditorState = EditorState();
-  
-        iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuEdit);        
-        // It is unnecessary to add ROW SCT in Editting option menu.
-        iEditMenuBar->TryDisplayMenuBarL();
-        if (menuPane && menuPane->NumberOfItemsInPane() == 0)
-            {
-            // Edit menu do not contain any items.
-            iEditMenuBar->StopDisplayingMenuBar();
-            }
-        else
-            {
-            //adjust menu position to the front of dialog to
-            //avoid input capability is wrongly got
-            CCoeEnv* coeEnv = CCoeEnv::Static();
-            CCoeAppUi* appUi = (CCoeAppUi*)(coeEnv->AppUi());
-            if( appUi->IsDisplayingDialog() )
-                {
-                iEditMenuBar->RemoveFromStack();
-                iEditMenuBar->AddToStackL(ECoeStackPriorityDialog + 1, ECoeStackFlagStandard);                              
-                }
-            }
-            
-        iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuOptions);
-        }
-        iPenSupportMenu = EFalse;
-    }
-
-void CAknFepManager::LaunchSelectModeMenuL()
-    {
-    if (HashKeySelectionInUse() && IsCcpuFlagSet(ECcpuStateHashDown))
-        {
-        return;
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	if(iCandidatePopup)        
-		{
-		iCandidatePopup->AttemptExitL(EFalse);
-		HandleChangeInFocusL();
-		}
-#endif		
-    
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        TryRemoveNoMatchesIndicatorL();
-		/*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.
-	    When we launch Edit Menu.the word which in Inline Editing in the BackGorund 
-	    Should not Commit*/        
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        CommitInlineEditL();
-#endif
-		/*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.
-	    This Flag is useful for deciding whether "Matches" Menu Item can Visible 
-	    or not*/
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-        SetFlag(EFlagInlineEditInBackground);
-#endif
-		/*
-	    This code is the part of fixing TSW Error ID: BSAN-7G58DB :  Edit Menu : 
-	    "Matches" and "insert word" options are not available under Edit Menu.*/
-#ifndef RD_INTELLIGENT_TEXT_INPUT        
-        ClearFlag(EFlagInsideInlineEditingTransaction);
-#endif        
-        }
-    
-    CAknEdwinState* editorState = NULL;
-    if (iInputCapabilities.FepAwareTextEditor())
-        {
-        editorState = EditorState();
-        }
-    
-    iEditMenuBar = NULL;
-    if (editorState)
-        {
-        iEditMenuBar = iUiInterface->EditorStateMenuBar(editorState);
-        }
-    
-    if (iEditMenuBar && 
-        !iEditMenuBar->IsDisplayed())
-        {
-       // SetFlag(EFlagLaunchEditMenu);
-        CAknFepUiInterfaceMenuPane* menuPane = iEditMenuBar->MenuPane();
-        CEikMenuPane* oldMenuPane = menuPane->GetMenuPane();        
-        if (!oldMenuPane)
-            {
-            menuPane = NULL;    
-            }        
-         if(menuPane)
-        	SetFlag(EFlagLaunchEditMenu);
-        
-        iRememberEditorState = EditorState();
-        
-        // It is unnecessary to add ROW SCT in Editting option menu.
-        if (!IsFeatureSupportedJapanese())
-            {
-            iEditCharsPtr.Copy(KNullDesC);
-            iEditCharsPtr.Set( iSctEditChars->Des() );
-            
-            // get the SCT resource id from editor default settings
-            TInt currentEditorSCTResId = GetCurrentEditorSCTResId();
-            TInt charResourceId = ENoCharacters;
-            if ( currentEditorSCTResId == EDefaultNumericCharMapResId)
-                {
-                charResourceId = NumericModeSCTResourceId();
-                if ( charResourceId != ENoCharacters && IsAbleToLaunchSCT()&& 
-                        EditorType() != CAknExtendedInputCapabilities::EEikSecretEditorBased)
-                    {
-                    
-                    if( menuPane != NULL )
-                        {
-                        menuPane->ConstructMenuSctRowL( iEditCharsPtr, charResourceId );
-                        }
-                    }
-                else
-                    {
-                    currentEditorSCTResId = charResourceId;
-                    }   
-                }
-            else
-                {
-                TInt sctChars = EAknSCTChiChineseInputModes;
-                if (iCharWidth == EFullWidthChar)
-                    {
-                    sctChars = EAknSCTFullCase;
-                    }
-                else
-                    {
-                    if (iMode == ELatin)
-                        {
-                        if ( FeatureManager::FeatureSupported(KFeatureIdChinese) )
-                            {
-                            sctChars = EAknSCTChiLatinInputModes;
-                            }
-                        else
-                            {
-                            if (iQwertyInputMode)
-                                {
-                                sctChars = EAknSCTQwerty;
-                                }
-                            else
-                                {
-                                sctChars = EAknSCTUpperCase;
-                                if (iCaseMan->CurrentCase() == EAknEditorLowerCase)
-                                    {
-                                    sctChars = EAknSCTLowerCase;
-                                    }
-                                }
-                            }
-                        }
-                    else if (iMode == ENumber || iMode == ENativeNumber)
-                        {
-                        sctChars = EAknSCTNumeric;
-                        if ( ((iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap) ||
-                            (iAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap)) &&
-                            !IsOnlyHalfWidthCharacterPermitted() )
-                            {
-                            sctChars = EAknSCTLowerCase;
-                            }
-                        }
-                    //delete for phrase creation
-//                    else if (iMode == EStroke && iFepManState == EAknFepStateUIActive)
-//                    	{
-//                    	return;
-//                    	}
-                    else if (iMode == EHiraganaKanji)
-                        {
-                        sctChars = EAknSCTFullCase;
-                        }
-                    else if(iMode == EKatakana)
-                        {
-                        sctChars = EAknSCTHalfCase;
-                        }
-                    }
-                    
-                if (!(ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EDisableSCT))                    
-                    {
-                    if( menuPane && (EditorType() != CAknExtendedInputCapabilities::EEikSecretEditorBased))
-                        {
-                        if(IsAbleToLaunchSmiley())
-                            {
-                            sctChars |= EAknCharMapEmotionUse;
-                            }
-                        
-                        menuPane->ConstructMenuSctRowFromDialogL( sctChars, iEditCharsPtr, 
-                                                                  currentEditorSCTResId );                    
-                        }
-                    }
-                }
-            }
-            iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuEdit);
-            iFepPluginManager->SetMenuState( ETrue ); 
-            iEditMenuBar->TryDisplayMenuBarL();
-            if (menuPane && menuPane->NumberOfItemsInPane() == 0)
-                {
-                // Edit menu do not contain any items.
-                iEditMenuBar->StopDisplayingMenuBar();
-                iFepPluginManager->ResetMenuState( ETrue );
-                }
-            else
-                {
-                //adjust menu position to the front of dialog to
-                //avoid input capability is wrongly got
-                CCoeEnv* coeEnv = CCoeEnv::Static();
-                CCoeAppUi* appUi = (CCoeAppUi*)(coeEnv->AppUi());
-                if( appUi->IsDisplayingDialog() )
-                    {
-                    iEditMenuBar->RemoveFromStack();
-                    // Set the MenuBar not focused, the later add to stack operation could unfocus other control correctly
-                    iEditMenuBar->SetFocus(EFalse);
-                    iEditMenuBar->AddToStackL(ECoeStackPriorityDialog + 1, ECoeStackFlagStandard);                              
-                    }
-                }
-                
-            iEditMenuBar->SetMenuType(CAknFepUiInterfaceMenuBar::EMenuOptions);
-        }
-    }
-
-void CAknFepManager::LaunchMatchesPopupListL()
-    {
-    TInt noOfMatches = iPtiEngine->NumberOfCandidates();
-    if (noOfMatches > 1)    // 1 => only current match available, 0 => not in inline edit
-        {
-        // Create a list to pass to the dialog
-        CDesCArrayFlat* matchesList=new(ELeave)CDesCArrayFlat(1);
-        CleanupStack::PushL(matchesList);
-        iPtiEngine->GetCandidateListL(*matchesList);
-        TBuf<EMaximumFepWordLength> matchListDesc;
-        TInt matchListItemCount = matchesList->MdcaCount();
-        TInt currentIndex = ResolveCurrentCandidateListIndex(matchesList);      
-        for ( TInt ii=0; ii < matchListItemCount ; ii++)
-            {   
-            matchListDesc = matchesList->MdcaPoint(ii);
-            TChar tempChar = matchListDesc[0];
-            if(tempChar.IsDigit())
-                {
-                AknTextUtils::ConvertDigitsTo(matchListDesc,iLanguageCapabilities.iLocalDigitType);
-                matchesList->Delete(ii);
-                matchesList->InsertL(ii,matchListDesc);
-                }
-            }
-
-        // add 'Spell' to the bottom of the list
-        TResourceReader reader;
-        CCoeEnv* coeEnv = CCoeEnv::Static();
-        coeEnv->CreateResourceReaderLC(reader, R_AVKON_T9_MATCHES_QUERY_SPELL_ITEM);
-        matchesList->AppendL(reader.ReadTPtrC());
-        CleanupStack::PopAndDestroy(); // reader
-
-        TInt index = 0;
-        SetFlag(EFlagForegroundUIComponentVisible);
-
-        TUid fepUid = CCoeEnv::Static()->FepUid();
-        ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-        // Fire up the dialog
-        TInt returnValue = iUiInterface->LaunchListPopupL(R_AVKON_T9_MATCHES_QUERY, index, 
-                                                          currentIndex, matchesList, NULL);
-        PrepareFepAfterDialogExitL(fepUid);
-        if(returnValue == EAknSoftkeyOk)
-            {// Selected item 'index' from the matches array
-            HandleChangeInFocusL();
-            TBuf<EMaximumFepWordLength> newText;
-            // Get current match from editor and show it as a default text in 'insert word' query.
-            iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, 
-                             iUncommittedText.iAnchorPos, iUncommittedText.Length());
-            
-            if (index==noOfMatches) // => 'spell' item at the bottom of the list
-                {
-                LaunchInsertWordQueryL(newText, iUncommittedText);
-                #ifdef RD_SCALABLE_UI_V2
-                if( iFepFullyConstructed && iFepPluginManager )
-                    {
-                    iFepPluginManager->ResetMenuState();
-                    }
-                #endif
-                }
-            else
-                { // insert word at index into text
-                TBuf<EMaximumFepWordLength> modifiedMatch;                
-                modifiedMatch.Copy(matchesList->MdcaPoint(index));
-                TChar first(newText[0]);
-                if (first.IsUpper())
-                    {
-                    TChar converted(modifiedMatch[0]);
-                    converted.UpperCase();
-                    modifiedMatch[0] = converted;
-                    }
-                InsertTextFromDialogL(modifiedMatch, iUncommittedText);
-                }
-            }
-        CleanupStack::PopAndDestroy(); // matchesList
-        }
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-// Predictive QWERTY (XT9) changes ---->
-void CAknFepManager::LaunchCandidatePopupListL( TInt aFocusedIndex )
-    {
-    iKeyBackSpaceHit = 1;
-    //CPtiEngine* ptiEngine = iPtiEngine;
-    
-    // Addition for ITI features on FSQ.
-    // Before open candidate list, if FSQ is opened, 
-    // also need to check and close tooltip on it.
-    SendEventsToPluginManL( EPluginHideTooltip );
-    
-    // Before open candidate list, if touch ui is opened, 
-    // also need to close touch ui firstly.
-    if ( iFepPluginManager->PluginInputMode() != EPluginInputModeNone )
-        {
-        iFepPluginManager->ClosePluginInputUiL( ETrue );
-        }              
-
-    iExactWordPopupContent->HidePopUp();
-        
-    TBool isShiftKeyDepressedAfterCandidateListLaunched = EFalse;
-    // Retrieve active index for QWERTY keypad when Best Prediction is Set
-    TInt activeIndex = KErrNotFound;
-                
-    if(iPrimaryCandidate && IsQwerty() && ( KeyboardLayout() != EPtiKeyboardHalfQwerty))
-        {           
-        iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &activeIndex );        
-        }
-            
-    TInt noOfMatches = iPtiEngine->NumberOfCandidates();
-    if (noOfMatches > 0)
-        {
-        //! The compact candidate popup that opens with when arrow down pressed while inline editing
-        //MAknFepCandidatePopup *candidatePopup;
-        
-        //Predictive QWERTY (XT9) changes for new Architecture ---->
-        iCandidatePopup = UiInterface()->NewCandidatePopupL(*this);
-        //Predictive QWERTY (XT9) changes for new Architecture <----
-            
-        // Determine the place where to spawn the candidate popup.
-        TPoint  inlineEditorTl;
-        TPoint  inlineEditorBr;
-        TInt    height;
-        TInt    ascent;
-        TInt    documentOffset = iPtiEngine->CurrentWord().Length();
-        
-        //  Popup Position was not right for RTL ---->
-        if(iLanguageCapabilities.iRightToLeftLanguage)
-        	documentOffset = 0;
-        //  Popup Position was not right for RTL <----
-        GetScreenCoordinatesL(inlineEditorTl, height, ascent, documentOffset);
-        
-        inlineEditorTl.iY -= height;
-        GetScreenCoordinatesL(inlineEditorBr, height, ascent);
-        
-        // Focus next word in list ---->
-        // To fix the bug STAA-7GYDB6, Candidate list opens with the highlight on 3rd candidate when Exact typing is use.
-        // Show the popup.
-        TInt selectedIdx = aFocusedIndex;
-        TKeyEvent lastKeyEvent;
-        
-        if(selectedIdx == KErrNotFound)
-            {
-            if (noOfMatches > 1)
-                {
-                selectedIdx = KWordToFocusInCandidateList;
-                }
-            // Focus next word in list <----
-            if(iSListLaunchedFromMenu)
-                {
-                iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &selectedIdx );
-                iSListLaunchedFromMenu = EFalse;
-                }
-            }
-        TUid fepUid = CCoeEnv::Static()->FepUid();
-        ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-        TInt popupCmd = iCandidatePopup->ExecutePopupL( TRect(inlineEditorTl, inlineEditorBr),
-                                                        selectedIdx, lastKeyEvent, iLanguageCapabilities.iRightToLeftLanguage,
-                                                        (TInt)KeyboardLayout() );
-        PrepareFepAfterDialogExitL(fepUid);      
-        
-        if((lastKeyEvent.iScanCode == EStdKeyDevice3 ) || 
-        		((lastKeyEvent.iScanCode == KAknFEPZeroKey)&& ((KeyboardLayout()== EPtiKeyboard12Key)||(KeyboardLayout()==EPtiKeyboardHalfQwerty))) 
-        		|| lastKeyEvent.iCode == EKeySpace )
-        	{
-        	SetExtendedFlag(EExtendedFlagOkKeyPressOnCandidatePopup);
-        	}
-       
-     
-        TBool needToExecute(EFalse);        
-        //The candidate list was closed by long key press of shift key
-        isShiftKeyDepressedAfterCandidateListLaunched = IsFlagSet(EFlagShiftKeyDepressed) && (KeyboardLayout()== EPtiKeyboard12Key);
-        if (popupCmd != EAknSoftkeyCancel)
-            {
-            HandleChangeInFocusL();
-                              
-            if (popupCmd == EAknFepSoftkeySpell)
-                {                               
-                // For QWERTY Input Mode
-                if (iQwertyInputMode && EPtiKeyboardHalfQwerty != iKeyboardType) 
-                    {   
-                    TInt activeIdx = KErrNotFound;
-                    TInt secondaryIdx = KErrNotFound;
-                                    
-                    iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, 
-                                                &activeIdx );
-                    iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, 
-                                                &secondaryIdx );
-                    
-                    if(activeIdx != secondaryIdx)
-                        {                        
-                        iPtiEngine->HandleCommandL( 
-                                 EPtiCommandUserActionSetCurrentIndexOfCandidates, &secondaryIdx );                         
-                        }
-                    else
-                        {
-                        secondaryIdx = 0;
-                        iPtiEngine->HandleCommandL( 
-                                 EPtiCommandUserActionSetCurrentIndexOfCandidates, &secondaryIdx );  
-                        }
-                    TPtrC selectedWord = iPtiEngine->CurrentWord();
-                    if(!IsFlagSet(EFlagInsideInlineEditingTransaction))
-                        {
-                        StartInlineEditingWithSelectedWord(selectedWord);
-                        }
-                    UpdateInlineEditL( selectedWord, selectedWord.Length() );
-                        
-                    } 
-                // For ITUT Keypad, remove autocompletion part before launching Query Dialog
-                else
-                    {
-                    RemoveSuggestedAdvanceCompletionL();
-                    }
-                
-                // delete the candidate popup before launching the edit word dialog
-                // as the candidate list has already been closed.
-                if(iCandidatePopup)
-                    {
-                    delete iCandidatePopup;
-                    iCandidatePopup = NULL;
-                    }
-                
-                LaunchEditWordQueryL(); 
-                }           
-            
-            // Close with space or selection key: Commit and add space or move cursor ahead one
-            // character if next character already is space
-            else if ( ( lastKeyEvent.iScanCode == EStdKeyDevice3 || lastKeyEvent.iScanCode == KAknFEPZeroKey )
-            		 && ( KeyboardLayout() == EPtiKeyboard12Key || KeyboardLayout() == EPtiKeyboardHalfQwerty ) )
-                {
-                iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, 
-                                            &selectedIdx ); 
-                TPtrC selectedWord = iPtiEngine->CurrentWord();
-                if(!IsFlagSet(EFlagInsideInlineEditingTransaction))
-                    {
-                     StartInlineEditingWithSelectedWord(selectedWord);
-                    }
-                UpdateInlineEditL( selectedWord, selectedWord.Length() );
-                iPtiEngine->CommitCurrentWord();
-                CommitInlineEditL();
-				#ifdef RD_INTELLIGENT_TEXT_INPUT    
-				    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-				#endif    
-
-                AddOneSpaceOrMoveCursorL();
-                }
-            // Close with right arrow commits the word, does not add space
-            else if ( lastKeyEvent.iScanCode == EStdKeyRightArrow )
-            	{
-                // Change of UI Spec
-                /*
-                 * The following codde change is a part of bug fix for improper 
-                 * behavior of right arrow key when the candidate list is open. The
-                 * right arrow key according to the UI specs should not the selected 
-                 * candicdate and cursor should be end of the word.
-                 */
-                iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, 
-                                            &selectedIdx );               
-                TPtrC selectedWord = iPtiEngine->CurrentWord();
-                if(!IsFlagSet(EFlagInsideInlineEditingTransaction))
-                    {
-                     StartInlineEditingWithSelectedWord(selectedWord);
-                    }
-                UpdateInlineEditL( selectedWord, selectedWord.Length() );  //selection.iAnchorPosition
-                iPtiEngine->CommitCurrentWord();
-                CommitInlineEditL();
-                #ifdef RD_INTELLIGENT_TEXT_INPUT    
-				    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-				#endif  
-
-                SimulateKeyEventL(EKeyF19);
-                }
-            else if(popupCmd == EAknSoftkeyOk)
-                {
-                iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, 
-                                            &selectedIdx ); 
-                TPtrC selectedWord = iPtiEngine->CurrentWord();
-                if(!IsFlagSet(EFlagInsideInlineEditingTransaction))
-                    {
-                     StartInlineEditingWithSelectedWord(selectedWord);
-                    }
-                UpdateInlineEditL( selectedWord, selectedWord.Length() );
-                iPtiEngine->CommitCurrentWord();
-                CommitInlineEditL();
-                AddOneSpaceOrMoveCursorL();
-                }
-            else
-                {
-                iPtiEngine->HandleCommandL( EPtiCommandUserActionSetCurrentIndexOfCandidates, 
-                                            &selectedIdx ); 
-                TPtrC selectedWord = iPtiEngine->CurrentWord();
-                if(!IsFlagSet(EFlagInsideInlineEditingTransaction))
-                    {
-                     StartInlineEditingWithSelectedWord(selectedWord);
-                    }
-                UpdateInlineEditL( selectedWord, selectedWord.Length() );
-                needToExecute = ETrue;
-                }
-            }
-        else if (popupCmd == EAknSoftkeyCancel && iPrimaryCandidate && IsQwerty() 
-				             && ( KeyboardLayout() != EPtiKeyboardHalfQwerty ) )
-            {
-            iPtiEngine->HandleCommandL( EPtiCommandUserActionSetIndexOfActiveCandidate, &activeIndex );             
-            iKeyBackSpaceHit = 0;
-            }            
-		else if(lastKeyEvent.iCode == EKeyPhoneEnd )
-			{
-			HandleChangeInFocusL();
-			CCoeEnv::Static()->SimulateKeyEventL( lastKeyEvent, EEventKey );
-			}		
-	    else if (popupCmd == EAknSoftkeyCancel && IsQwerty() && ( KeyboardLayout() != EPtiKeyboardHalfQwerty ) ) 
-           iKeyBackSpaceHit = 0;
-		
-        // If the dialog is not closed by pressing softkeys, escape, or right arrow
-        // then the pressed key is handled also by Fep. This way the user can keep typing when the popup is open.
-      
-        //=============== Error fixing and simplify the condition ==========================================
-        // The following piece of code should be excuted, if focus word
-        // in the candidate list is accept, otherwise word sholud remain as it is.
-        // If user does not accept the word,popupCmd always be EAknSoftkeyCancel.
-        // Insetead of earlier lengthy condition, makes it simple.
-           
-        if( needToExecute )
-           {
-            const TBool shifted = (lastKeyEvent.iModifiers & (EModifierLeftShift | 
-                                   EModifierRightShift | EModifierShift));
-            const TBool chrDown = (lastKeyEvent.iModifiers & (EModifierLeftFunc));                       
-            
-            const TBool fnDown = (lastKeyEvent.iModifiers & (EModifierRightFunc));                       
-            if(fnDown  ) 
-                iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyDown)  ;     
-
-         	if (shifted)
-          		{
-          		SetFlag(EFlagQwertyShiftMode|EFlagNoActionDuringShiftKeyPress);
-          		}
-            else
-                {
-                ClearFlag(EFlagQwertyShiftMode|EFlagNoActionDuringShiftKeyPress);
-                }
-            
-            if (chrDown)
-                {
-                SetFlag(EFlagQwertyChrKeyDepressed|EFlagNoActionDuringChrKeyPress);
-                }
-            else
-                {
-                ClearFlag(EFlagQwertyChrKeyDepressed|EFlagNoActionDuringChrKeyPress);
-                }
-            if ( lastKeyEvent.iScanCode == EStdKeyDevice3 )
-                {
-                CCoeEnv::Static()->SimulateKeyEventL( lastKeyEvent, EEventKey );
-                }
-            if (! ( lastKeyEvent.iScanCode == EStdKeyDevice3 || 
-                    lastKeyEvent.iScanCode == EStdKeyRightArrow ) )
-                {
-                /*
-                 * The following code change is a part of bug fix for improper 
-                 * behavior of any keypress when the candidate list is open. The
-                 * keypress according to the UI specs should lock the selected 
-                 * candidate to editor and the inserted letter is appended to it. 
-                 */                
-                iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate);
-                TPtrC selectedWord = iPtiEngine->CurrentWord();
-                if(!IsFlagSet(EFlagInsideInlineEditingTransaction))
-                    {
-                     StartInlineEditingWithSelectedWord(selectedWord);
-                    }
-                UpdateInlineEditL( selectedWord, selectedWord.Length() );  //selection.iAnchorPosition
-                // For QWERTY input mode, scanCode is used
-			#ifdef __HALF_QWERTY_KEYPAD
-                if( KeyboardLayout() == EPtiKeyboardHalfQwerty)
-                    {
-                    iHalfQwertyLastKeyEvent = lastKeyEvent;
-                    iAsyncOwnSimulateKey.CallBack();                    
-                    }
-                else 
-			#endif //__HALF_QWERTY_KEYPAD
-                if (iQwertyInputMode)
-                    {
-                    CCoeEnv::Static()->SimulateKeyEventL( lastKeyEvent, EEventKey );
-                    }
-                // For ITUT input Mode, keyCode is used
-                else
-                    {
-                    SimulateKeyEventL( lastKeyEvent.iCode);
-                    }
-                }
-            }
-            
-        ShowExactWordPopupIfNecessaryL();
-        if(iCandidatePopup)
-            {
-            delete iCandidatePopup;
-            iCandidatePopup = NULL;
-            }
-        }
-    //The flag ECcpuStateShiftkeyWasPressedBeforeLosingFocus suggests that the candidate list was closed with a 
-    //long key press of edit key (shift key). There are multiple calls to HandleChangedInFocusL() one manually and the other  through
-    //CONE focus change notifier. We want the flag to be set for CONE's focus handler.
-    if(isShiftKeyDepressedAfterCandidateListLaunched)
-        {
-        SetCcpuFlag(ECcpuStateShiftkeyWasPressedBeforeLosingFocus);
-        }
-    }
-void CAknFepManager::StartInlineEditingWithSelectedWord(TDesC& aTextToUncommit)
-    {
-    if(iConcatenationTimer->IsActive())
-    	iConcatenationTimer->Cancel();
-	
-    TInt docLenFep=iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-                if (iUncommittedText.iCursorPos>docLenFep)
-                    iUncommittedText.iCursorPos=docLenFep;
-                if (iUncommittedText.iAnchorPos>docLenFep)
-                    iUncommittedText.iAnchorPos=docLenFep;
-                        // Activates western predictive UI to an inline editing state.
-                FepUI()->ActivateUI();
-                SyncStates(EAknFepStateUIActive);
-                  // Predictive QWERTY (XT9) changes <----
-                TRAP_IGNORE(StartInlineEditL(iUncommittedText, aTextToUncommit,
-                        aTextToUncommit.Length(), EFalse));
-
-    }
-void CAknFepManager::ShowExactWordPopupIfNecessaryL()
-    {
-    iExactWordPopupContent->HidePopUp();
-    
-    // Before open tooltip,  
-    // also need to check and close tooltip on it.
-    SendEventsToPluginManL( EPluginHideTooltip );
-    
-    if ( iWesternPredictive && iQwertyInputMode 
-    	 && IsFlagSet( EFlagInsideInlineEditingTransaction ) 
-    	 && (EPtiKeyboardHalfQwerty != KeyboardLayout()))
-        {
-        // In the proactive mode this popup is used to show the exact input if it differs from the
-        // default candidate shown inline.
-        // In the reactive mode it is used to show the best guess candidate if it differs from the
-        // exact word shown inline.
-        
-        TInt activeIdx = KErrNotFound;
-        TInt secondaryIdx = KErrNotFound;
-                     
-        iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &activeIdx );
-        iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, 
-        							&secondaryIdx );
-        
-        TBool popupBelowInline = EFalse; // ETrue -> popup is above inline editor                                                                   
-                
-       if(iKeyBackSpaceHit)
-    	    secondaryIdx = activeIdx;
-
-        if ( activeIdx  != secondaryIdx )
-            {
-            popupBelowInline = EFalse;
-            
-            CDesCArray* candidates = new (ELeave) CDesCArrayFlat(16);
-            CleanupStack::PushL(candidates);
-            GetCandidatesL(*candidates, activeIdx);
-            
-            // There is a possibility that the secondary index of the candidate changes
-            iPtiEngine->HandleCommandL( EPtiCommandUserActionGetIndexOfSecondaryCandidate, 
-                                        &secondaryIdx );
-            // In case the active index and the secondary index is same, then we do not need to display the
-            // popup
-            if ( activeIdx  == secondaryIdx )
-                {
-                CleanupStack::PopAndDestroy(candidates);
-                return;
-                }
-            
-            TPtrC secondaryWord = (*candidates)[secondaryIdx];
-            iExactWordPopupContent->SetTextL( secondaryWord );
-            iExactWordPopupContent->SetArrowDirection( MAknFepUiWordPopupContent::EUpwards );
-            CleanupStack::PopAndDestroy(candidates);
-
-            // Open FSQ tooltip if FSQ is opened
-     	    SendEventsToPluginManL( EPluginShowTooltip, secondaryIdx );
-
-          
-            // For addtion of ITI features on FSQ.
-            // Showing tooltip on avkon editor and FSQ ICF editor at same time probably 
-            // cause flicker problem. Add this condition to ensure not to show tooltip on
-            // avkon editor when it is being displayed on FSQ.
-            if ( iFepPluginManager && !( iFepPluginManager->IsTooltipOpenOnFSQ() ) )
-                {
-                TPoint  popupTopRight;
-                TInt    height;
-                TInt    ascent;
-                TInt    documentOffset = iPtiEngine->CurrentWord().Length();
-                
-                GetScreenCoordinatesL(popupTopRight, height, ascent, documentOffset);
-
-                iExactWordPopupContent->UpdateContentSize();
-
-                TBool rightToLeftLang = IsRightToLeftParagraph( DocPos() );
-                if ( !rightToLeftLang )
-                    {
-                    popupTopRight.iX += iExactWordPopupContent->Size().iWidth;       
-                    }
-                    
-                if ( popupBelowInline )
-                    {
-                    popupTopRight.iY += ascent / 2;                                   
-                    }
-                else
-                    {
-                    popupTopRight.iY -= height + iExactWordPopupContent->Size().iHeight;
-                    }
-                    
-                iExactWordPopupContent->SetPosition( popupTopRight );
-                iExactWordPopupContent->ShowPopUp();         
-                }                
-            }  
-        }
-		else if(iWesternPredictive 
-    	 && IsFlagSet( EFlagInsideInlineEditingTransaction ) 
-    	 && IsFlagSet(CAknFepManager::EFlagNoMatches)) 
-    	{
-    	UpdateCbaL(R_AKNFEP_SOFTKEYS_SPELL_EMPTY);
-    	}
-    }
-
-void CAknFepManager::LaunchPredictiveSettingDialogL()
-	{
-#ifdef RD_SCALABLE_UI_V2	
-    // Addtion of ITI features on FSQ.
-    if ( iFepPluginManager 
-         && iFepPluginManager->IsSupportITIOnFSQ() )
-        {
-        // Hide touch input ui firstly,
-        // otherwise, touch ui can hide status pane.        
-        // Let CAknFepPluginManager know this setting dialog will be opened.
-        iFepPluginManager->ITISettingDialogOpen( ETrue );
-        iFepPluginManager->ClosePluginInputUiL( ETrue );
-        SendEventsToPluginManL( ELostForeground );
-        }
-#endif // RD_SCALABLE_UI_V2
-
-	// Hide fixed toolbar just before launching predictive settings dialog
-	CEikAppUiFactory * appUiFactory = NULL;
-	appUiFactory = static_cast<CEikAppUiFactory*>(CEikonEnv::Static()->AppUiFactory());
-	
-	CAknToolbar * fixedToolbar = NULL;
-	if(appUiFactory)
-	    fixedToolbar = appUiFactory->CurrentFixedToolbar();
-	
-	// If fixedtoolbar is not there in the current editor, we don't need to hide it before launching settings dialog 
-	// and unhide it after settings dialog is done.
-	if( fixedToolbar && !( fixedToolbar->IsShown() && fixedToolbar->CountComponentControls()>0 ) )
-	    fixedToolbar = NULL;
-	
-	if(fixedToolbar)
-		{
-	  fixedToolbar->SetDimmed(ETrue);
-	  fixedToolbar->DrawDeferred();
-	  }
-    TUid fepUid = CCoeEnv::Static()->FepUid();
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-	UiInterface()->LaunchPredictiveSettingDialogL(R_PREDICTIVESETTING_DIALOG,
-												  R_PREDICTIVESETTINGDIALOG_MENUBAR,
-												  R_PREDICTIVETEXTOFF_CONFIRMATION_QUERY,
-												  R_AKNFEP_PRED_INPUT_SETTINGS_TITLE);
-    PrepareFepAfterDialogExitL(fepUid);	
-#ifdef RD_SCALABLE_UI_V2	
-    // // Addtion of ITI features on FSQ.    
-    if ( iFepPluginManager 
-         && iFepPluginManager->IsSupportITIOnFSQ() )
-        {        
-        // Let CAknFepPluginManager know this setting dialog will be opened.
-        iFepPluginManager->ITISettingDialogOpen( EFalse );        
-        }
-#endif // RD_SCALABLE_UI_V2
-
-	// Enables fixed toolbar after predictive settings dialog is closed
-	if(fixedToolbar)
-		{
-	  fixedToolbar->SetDimmed(EFalse);
-	  fixedToolbar->DrawDeferred();
-	  }
-	}
-#ifdef FF_DUAL_LANGUAGE_SUPPORT
-void CAknFepManager::LaunchWritingLanguageSettingDialogL()
-    {
-    TUid fepUid = CCoeEnv::Static()->FepUid();
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-    UiInterface()->LaunchWritingLanguageSettingDialogL(R_INPUTLANGUAGE_DIALOG, R_PREDICTIVESETTINGDIALOG_MENUBAR, R_INPUT_LANGUAGE_SETTINGS_TITLE);
-    PrepareFepAfterDialogExitL(fepUid);	
-	}
-
-void  CAknFepManager:: LaunchDualLanguageSettingDialogL()
-    {
-    /* In Chinese language variant,if there are more than one languages supporting dual language feature,
-    display writing language setting view in which Primary and Secondary Languages can be selected from the list.
-    
-    In Chinese language variant,if there is only one language supporting dual language feature, 
-    no need to display the Writing language view which contains Primary and Secondary Language. 
-    Instead we can display the Writing language list directly to the user;from which the user can select the writing language*/
-
-    if( FeatureManager::FeatureSupported( KFeatureIdChinese ) || FeatureManager::FeatureSupported( KFeatureIdJapanese ))
-        {                        
-        CArrayFixFlat<TInt>* languages = new( ELeave )CArrayFixFlat<TInt>( ELanguageArrayGranularity );
-        CleanupStack::PushL( languages );
-        iPtiEngine->GetAvailableLanguagesL( languages );
-        
-        TInt count = languages->Count();   
-        TInt noLangSupportWesternPred = count;
-        for (TInt index = 0; index < count; index++)
-            {      
-            TInt langCode = languages->At(index);            
-            
-            if (langCode == ELangTaiwanChinese ||
-               langCode == ELangHongKongChinese ||
-               langCode == ELangPrcChinese ||
-               langCode == ELangJapanese ||
-               langCode == ELangKorean )
-                {
-                noLangSupportWesternPred--;
-                }            
-            }                         
-        CleanupStack::PopAndDestroy(languages);    
-        
-        if( noLangSupportWesternPred > 1 )
-            {             
-            SetFlag(CAknFepManager::EFlagNewSharedDataInputMode);
-            LaunchWritingLanguageSettingDialogL();            
-            if(IsFlagSet(CAknFepManager::EFlagNewSharedDataInputLanguage))
-                {
-                ClearFlag(CAknFepManager::EFlagNewSharedDataInputLanguage);
-                HandleChangeInFocusL();
-                ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-                }
-            }
-        else
-            LaunchLanguagesPopupListL();                                                
-        }   
-    else
-        {
-        LaunchWritingLanguageSettingDialogL();        
-        if(IsFlagSet(CAknFepManager::EFlagNewSharedDataInputLanguage))
-            {
-            ClearFlag(CAknFepManager::EFlagNewSharedDataInputLanguage);
-            HandleChangeInFocusL();
-            ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-            }
-        } 
-        
-    }
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-// Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::LaunchInsertWordQueryL(const TDesC& aInitialText, 
-                                            TCursorSelection aTextSpanToReplace)
-    {
-    TInt recourceId;
-    if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen)
-        {
-        recourceId = R_AVKON_INSERT_WORD_FS_QUERY;
-        }
-    else
-        {
-        recourceId = R_AVKON_INSERT_WORD_QUERY;
-        }
-    LaunchFepQueryDialogL(recourceId, aInitialText, aTextSpanToReplace);
-    }
-
-void CAknFepManager::LaunchEditWordQueryL()
-    {
-
-    TBuf<EMaximumFepWordLength> newText;
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-	if(IsAutoCompleteOn())
-  		{
-        RemoveSuggestedCompletionL();
-        }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, 
-                                                                    iUncommittedText.iAnchorPos, 
-                                                                    iUncommittedText.Length());
-
-    TInt recourceId;
-    if(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen)
-        {
-        recourceId = R_AVKON_INSERT_WORD_FS_QUERY;
-        }
-    else
-        {
-        recourceId = R_AVKON_INSERT_WORD_QUERY;
-        }
-    LaunchFepQueryDialogL(recourceId, newText, iUncommittedText);
-    }
-
-void CAknFepManager::LaunchFepQueryDialogL(TInt aResourceId, const TDesC& aInitialText, 
-                                           TCursorSelection aTextSpanToReplace)
-    {
-    HBufC* textBuf = HBufC::NewLC(EQueryBufferLength);  // buffer for inserted text
-    TPtr text = textBuf->Des();
-
-    if (aInitialText.Length() <= EQueryBufferLength)
-        text.Copy(aInitialText);
-    else // truncate the incoming text to EQueryBufferLength before copying
-        {
-        TPtrC truncatedText = aInitialText.Left(EQueryBufferLength);
-        text.Copy(truncatedText);
-        }
-
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        TryRemoveNoMatchesIndicatorL();
-        CommitInlineEditL();
-        }
-    UpdateCbaL(NULL);
-
-    TInt underlyingCase = iCaseMan->CurrentCase();
-    TBool isCaseUpdatesSupressed = IsFlagSet(EFlagSupressAutoUpdateAtEditorStart);
-
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-    if (aInitialText.Length())
-        {
-        iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-        if (aInitialText.Length() == 1)
-            {
-            if (STATIC_CAST(TChar, aInitialText[0]).IsUpper())
-                iCaseMan->SetCurrentCase(EAknEditorTextCase);
-            }
-        else // length of initial text > 1
-            {
-            if (STATIC_CAST(TChar, aInitialText[0]).IsUpper())
-                {
-                if (STATIC_CAST(TChar, aInitialText[1]).IsLower())
-                    iCaseMan->SetCurrentCase(EAknEditorTextCase);
-                else // 2nd character is upper case
-                    iCaseMan->SetCurrentCase(EAknEditorUpperCase);
-                }
-            }
-        }
-#endif // RD_INTELLIGENT_TEXT_INPUT
-
-    if (iCaseMan->CurrentCase() == EAknEditorLowerCase 
-     || iCaseMan->CurrentCase() == EAknEditorUpperCase)
-        {
-        SetFlag(EFlagSupressAutoUpdateAtEditorStart);
-        }
-
-    TransferFepStateToEditorL();
-
-    SetFlag(EFlagForegroundUIComponentVisible);
-    
-    TInt textQueryEditorFlag = 0;
-    if ((aResourceId == R_AVKON_INSERT_WORD_QUERY ||
-         aResourceId == R_AVKON_EDIT_WORD_QUERY ) &&
-        IsChineseInputLanguage())
-    	{
-	    textQueryEditorFlag = EAknEditorFlagLatinInputModesOnly;
-    	}
-#ifdef RD_SCALABLE_UI_V2     
-    if (iFepFullyConstructed && 
-        iFepPluginManager->PluginInputMode() == EPluginInputModeItut && 
-        !(EditorState()->Flags() & EAknEditorFlagEnablePartialScreen))
-        {
-        iFepPluginManager->SpellText(textBuf);
-        iFepPluginManager->DisplaySpellEditor(textQueryEditorFlag, aInitialText, 
-                                              TCursorSelection(aInitialText.Length(), 0));
-
-        delete iSpellInitText;
-        iSpellInitText = NULL;
-	    iSpellInitText = aInitialText.AllocL();
-	    iSpellInitCurSel = aTextSpanToReplace;
-
-        iFepPluginManager->SetCaseUpdatesSupressed(isCaseUpdatesSupressed);
-        iFepPluginManager->SetITUTSpellingStateL(ETrue);    
-        iFepPluginManager->SetCursorSelection(aTextSpanToReplace);
-        CleanupStack::PopAndDestroy();
-        
-        return;
-        }
-#endif    
-    
-    if(iFepPluginManager)
-        {
-        iFepPluginManager->SetInEditWordQueryFlag(ETrue);
-        }
-
-    PrepareFepForFepAwareDialogLaunch();
-    TUid fepUid = CCoeEnv::Static()->FepUid();
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-    TInt id = iUiInterface->TextQueryDialogL(text, *EditorState(), 
-                                             textQueryEditorFlag, aResourceId);
-    PrepareFepAfterFepAwareDialogExitL(fepUid);        
-    PrepareFepAfterDialogExitL(fepUid);
-
-    if(iFepPluginManager)
-        {
-        iFepPluginManager->SetInEditWordQueryFlag(EFalse);
-        }                                             
-    if (id == EAknSoftkeyOk)
-        {
-        // Insert the character into the edwin.
-        InsertTextFromDialogL(text, aTextSpanToReplace);
-        // Add the word to the user dictionary (except for single character)  after it has been added to the editor.
-        // FepUI of the main editor is used. Different FepUI is used in multitap
-        // query and predictive mode 'main' editor at least in Japanese variant.
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        if(text.Length() > 1)
-            FepUI()->AddTextToUserDictionaryL(text);
-#else
-        FepUI()->AddTextToUserDictionaryL(text); 
-#endif // RD_INTELLIGENT_TEXT_INPUT
-
-        }
-    else // restore original case and inline text
-        {
-        HandleChangeInFocus();
-        if (aTextSpanToReplace.Length())
-            {
-            EditorState()->SetInlineEditSpan(aTextSpanToReplace);
-            ConfigureFEPFromEditorStateL();
-            }
-        iCaseMan->SetCurrentCase(underlyingCase);
-        TransferFepStateToEditorL();
-        }
-
-    if (isCaseUpdatesSupressed)
-        {
-        SetFlag(EFlagSupressAutoUpdate);
-        }
-    else
-        {
-        ClearFlag(EFlagSupressAutoUpdate);
-        }
-    ClearFlag(EFlagSupressAutoUpdateAtEditorStart);
-    CleanupStack::PopAndDestroy(); // text
-    }
-
-void CAknFepManager::InsertTextFromDialogL(const TDesC& aTextFromDialog, 
-                                           TCursorSelection aExtentOfTextToReplace)
-    {
-    SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
-    // ensure we're back on the correct editor
- 
-#ifdef RD_SCALABLE_UI_V2   
-    iNotifyPlugin = EFalse; // not really focus change
-    HandleChangeInFocus();
-    iNotifyPlugin = ETrue;
-#else
-    HandleChangeInFocus();
-#endif    
-    // need to commit if the editor was previously performing an inline edit
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        CommitInlineEditL();
-
-    TInt addedTextLength=0;
-
-    TCursorSelection currentSelection;
-// In case input capabilities goes null leaving with an error code and allowing application to handle..
-    if (NULL == iInputCapabilities.FepAwareTextEditor())
-        User::Leave(KErrCorrupt);
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection);
-    // Prepare for the edit
-    TInt docLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-    TInt maxLength = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-
-    if (aExtentOfTextToReplace.Length())
-        {
-        if (currentSelection.Length())
-            // Want to 'cancel' the selection so move cursor & anchor to the end of
-            // the selection and then to the end of the current word
-            {
-            TInt endOfSelection=currentSelection.HigherPos();
-            iUncommittedText.SetSelection(endOfSelection, endOfSelection);
-            if (CursorInsideWord())
-                MoveCursorToEndOfWordL();
-            }
-        iUncommittedText = aExtentOfTextToReplace;
-        iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-        addedTextLength = aTextFromDialog.Length();
-        if (maxLength != 0)
-            {
-            addedTextLength = Min(addedTextLength,
-                (maxLength - docLength + iUncommittedText.Length()));
-            }
-        }
-    else
-        {
-        addedTextLength = aTextFromDialog.Length();
-
-        //maxLength of 0 means the editor has no limit
-        if (maxLength != 0)
-            {
-            addedTextLength = Min(addedTextLength,
-                                  (maxLength - docLength + currentSelection.Length()));
-            }
-        if (currentSelection.Length())
-            {
-            iUncommittedText.SetSelection(currentSelection.HigherPos(), 
-                                          currentSelection.LowerPos());
-            iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-            }
-        else // do this in order for editor to get the correct number of chars to format from GetFormatOfFepInlineText()
-            iUncommittedText.iCursorPos+=addedTextLength;
-        }
-    // if necessary trim text to fit into available space in the editor & perform the edit
-    TPtrC textToEditor = aTextFromDialog.Left(addedTextLength);
-
-    StartInlineEditL(textToEditor);
-    CommitInlineEditL();
-#ifdef RD_INTELLIGENT_TEXT_INPUT    
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-#endif    
-
-    EditorState()->SetInlineEditSpan(iUncommittedText);
-    }
-
-void CAknFepManager::LaunchKutenCodeQueryL()
-    {
-    TInt code;
-    TUid fepUid = CCoeEnv::Static()->FepUid();
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-    UiInterface()->JapaneseKutenQueryDialogL(R_AKNFEPUICTRLJAPANESEKUTEN_QUERY, code, 0);
-
-    PrepareFepAfterDialogExitL(fepUid);
-
-    HandleChangeInFocus();  // to re-establish contact with editor under KutenCode Query
-
-    if (code > 0 && EditorHasFreeSpace())
-        {
-        TBuf<ESingleCharacter> text;
-        text.Append((TText)code);
-        SetFlag(EFlagInsideInlineEditingTransaction);
-        iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(text, ESingleCharacter, 
-                                                                     ETrue, NULL, *this, *this);
-        CommitInlineEditL();
-        }
-    }
-
-TInt CAknFepManager::NumericModeSCTResourceId() const
-    {
-    TInt charMapResId = EDefaultNumericCharMapResId;
-    TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor);            
-    
-    if( phoneIdle )
-        {
-        charMapResId=R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD;
-        return charMapResId;
-        }
-
-    switch (iAknEditorNumericKeymap)
-        {
-        case EAknEditorStandardNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD;
-            break;
-        case EAknEditorCalculatorNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_CALCULATOR;
-            break;
-        case EAknEditorConverterNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_CONVERTER;
-            break;
-        case EAknEditorFixedDiallingNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_FIXED_DIALLING;
-            break;
-        case EAknEditorSATNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_SAT;
-            break;
-        case EAknEditorToFieldNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_TO_FIELD;
-            break;
-        case EAknEditorPlainNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_PLAIN;
-            break;
-        case EAknEditorNativeKeysNumberModeKeymap:
-            //currently this is not in use
-            break;
-        case EAknEditorSATHiddenNumberModeKeymap:
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_SAT_HIDDEN;
-            break;
-        default:
-            //We reach here because there is no valid SCT resource ID set
-            //by the current editor. So best we can do now is set the 
-            //default mode for numeric editors.
-            charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD;
-            break;
-        }
-    if(IsHybridAplhaEditor() && !IsHybridAlphaModeChangedtoAplhanumeric())
-        {
-        charMapResId = R_AKNFEP_SCT_NUMERIC_MODE_CHARS_STANDARD;
-        }
-    return charMapResId;
-    }
-
-
-TBool CAknFepManager::HashKeyModeChangeBlockedInSearchField() const
-    {
-    if ((iAknEditorFlags & EAknEditorFlagFindPane) && 
-         iSharedDataInterface->HashKeySelectionInUse() &&                
-         !IsChineseInputLanguage() &&
-         !IsKoreanInputLanguage() &&
-         iLanguageCapabilities.iInputLanguageCode != ELangVietnamese &&
-         !FeatureManager::FeatureSupported(KFeatureIdJapanese))
-         {
-         if (iMode == ELatin || iMode == ENumber || iMode == ENativeNumber )
-            {
-            return ETrue;               
-            }                               
-         }
-             
-    return EFalse;         
-    }
-
-    
-TKeyResponse CAknFepManager::HandleHashKeyL(TKeyPressLength aLength)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-    if (IsFlagSet(EFlagPassNextKey))
-        {
-        ClearFlag(EFlagPassNextKey);
-        }
-    else if (IsFlagSet(EFlagShiftKeyDepressed))
-        {
-        response = EKeyWasConsumed;
-        }
-    else if (HashKeyModeChangeBlockedInSearchField())      
-        {
-        // Do not allow case changes for latin languages in search field
-        // if hash key selection is active.
-        response = EKeyWasConsumed;
-        }
-    else
-        {
-        if ( IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) )
-            {
-#ifdef RD_HINDI_PHONETIC_INPUT	                    
-		if(iSharedDataInterface->InputTextLanguage() != KLangHindiPhonetic)    
-#endif            
-            FepUI()->ExpireMultitapTimer();
-            // For Japanese, send backspace key event in case hash key
-            // is pressed while secret text input.
-           if (IsFeatureSupportedJapanese())
-                {
-                if (iInputCapabilities.SupportsSecretText())
-                    {
-                    SimulateKeyEventL(EKeyF20);          //backspace
-                    }
-                }
-#ifdef RD_HINDI_PHONETIC_INPUT	                    
-		if(iSharedDataInterface->InputTextLanguage() != KLangHindiPhonetic)    
-#endif            
-                ClearFlag(EFlagInsideMultitapInlineEditingTransaction);
-            iCaseMan->UpdateCase(ENullNaviEvent);
-            }
-        if (aLength == EShortKeyPress)
-            {
-            if ( iMode != ENumber && iMode != ENativeNumber )
-                {
-                iModeBefore = iMode;
-                if (iModeBefore == ELatin)
-                    {
-                    iCaseBefore = iCaseMan->CurrentCase();
-                    }
-                }
-            }
-
-       // always keep previous input mode for Japanese input
-       if (IsFeatureSupportedJapanese())
-            {
-            iModeBefore = iMode;
-            if (iModeBefore == ELatin)
-                {
-                iCaseBefore = iCaseMan->CurrentCase();
-                }
-            }
-       if (iMode == EHangul && aLength == ELongKeyPress)
-       		{       
-       		if (IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-                {
-                TPtrC text = iPtiEngine->CurrentWord();
-                if (text.Length() > 0)
-            		{
-            		CancelInlineEdit();
-            		StartInlineEditL();
-            		UpdateInlineEditL(iPtiEngine->PreviousCandidate(), iPtiEngine->PreviousCandidate().Length());
-            		CommitInlineEditL();
-            		}
-            	else
-            		{
-            		CancelInlineEdit();          		
-            		}
-            	iPtiEngine->ClearCurrentWord();
-                }
-       		}
-		
-        response = iHashKeyMan->HandleKeyEventL(aLength);
-        if (response == EKeyWasNotConsumed)
-            {
-            switch (iAknEditorNumericKeymap)
-                {
-            case EAknEditorStandardNumberModeKeymap: //fall through
-            case EAknEditorFixedDiallingNumberModeKeymap:
-            case EAknEditorSATNumberModeKeymap:
-            case EAknEditorSATHiddenNumberModeKeymap:
-            case EAknEditorAlphanumericNumberModeKeymap:
-                if (!EditorHasFreeSpace())
-                    {
-                    response=EKeyWasConsumed;
-                    }
-                break;
-            case EAknEditorCalculatorNumberModeKeymap: //fall through
-            case EAknEditorConverterNumberModeKeymap:
-                SimulateKeyEventL(CurrentDecimalSeparator());
-                if (EditorHasFreeSpace())
-                    {
-                    SetFlag(EFlagCharacterAdded);
-                    }
-                response=EKeyWasConsumed;
-                break;
-            case EAknEditorToFieldNumberModeKeymap:
-                SimulateKeyEventL(text_to_field_mode_hash_key);
-                if (EditorHasFreeSpace())
-                    {
-                    SetFlag(EFlagCharacterAdded);
-                    }
-                response=EKeyWasConsumed;
-                break;
-            case EAknEditorPlainNumberModeKeymap:
-                response=EKeyWasConsumed;
-                break;
-            case EAknEditorNativeKeysNumberModeKeymap:
-                break;
-            default:
-                break;
-                }
-            }
-        }
-    return response;
-    }
-
-TInt CAknFepManager::EditorNumericKeymap() const
-    {
-    return iAknEditorNumericKeymap;
-    }
-
-
-TBool CAknFepManager::HashKeySelectionInUse() const
-    {       
-	if (ExtendedInputCapabilities() 
-    & CAknExtendedInputCapabilities::EForceHashKeySelectionStatusFlagOff)
-	    {
-	    return EFalse;
-	    }
-        
-    return iSharedDataInterface->HashKeySelectionInUse();           
-    }     
-  
-
-TBool CAknFepManager::EditSubmenuInUse() const
-	{
-	if (RProcess().SecureId().iId == KPhoneSecureId)
-		{
-		if (iQwertyInputMode)
-			{
-			return EFalse;				
-			}
-		} 
-			
-	if (ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EForceEditSubmenuStatusFlagOff)
-	    {
-	    return EFalse;
-	    }			
-			
-	return iSharedDataInterface->EditSubmenuInUse();			
-	} 
-
-
-void CAknFepManager::DimEditMenuModeItems(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    // current item
-    DimMenuItem(aMenuPane, iMode);
-
-    // dim menu items for Chinese input modes that aren't valid in the current editor
-    // or the device subvariant
-    for (TInt mode = KFirstMode; mode <= KLastMode; mode = mode << 1)
-        {
-        if (!IsModePermitted(mode))
-            {
-            DimMenuItem(aMenuPane, mode);
-            }
-        }
-    
-    if (IsAbleToLaunchSmiley())
-        {
-        TInt index;
-        if (aMenuPane->MenuItemExists(EAknCmdEditInsertSmiley, index))
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditInsertSmiley, EFalse);
-            }
-        }        
-    }
-
-void CAknFepManager::DimMenuItem(CAknFepUiInterfaceMenuPane* aMenuPane, TInt aMode)
-    {
-    TInt dimmedMenuItem = 0;
-    switch (aMode)
-        {
-        case EPinyin:
-            dimmedMenuItem = EChinFepCmdModePinyin;
-            break;
-        case EZhuyin:
-            dimmedMenuItem = EChinFepCmdModeZhuyin;
-            break;
-        case EStroke:
-            dimmedMenuItem = EChinFepCmdModeStroke;
-            break;
-        case ECangJie:
-            dimmedMenuItem = EChinFepCmdModeCangJie;
-            break;
-        case EZhuyinFind:
-            dimmedMenuItem = EChinFepCmdModeZhuyinFind;
-            break;
-        case EStrokeFind:
-            dimmedMenuItem = EChinFepCmdModeStrokeFind;
-            break;
-        case ELatin:
-            if ( iLanguageCapabilities.iInputLanguageCode != ELangJapanese)
-                {
-                // According Katja's info, dim the current case item in the 
-                // indicator menu.
-                if ( iCaseMan->CurrentCase() == EAknEditorUpperCase )
-                    {
-                    dimmedMenuItem = EChinFepCmdModeLatinUpper;
-                    }
-                else if(iCaseMan->CurrentCase() == EAknEditorLowerCase)
-                    {
-                    dimmedMenuItem = EChinFepCmdModeLatinLower;
-                    }
-                else if(iCaseMan->CurrentCase() == EAknEditorTextCase)
-                    {
-                    dimmedMenuItem = EAknCmdEditModeLatinText;
-                    }
-                }
-            break;
-        case ENativeNumber:
-            {
-            aMenuPane->SetItemDimmed(EAknCmdEditModeArabicIndicNumber, ETrue);
-            aMenuPane->SetItemDimmed(EAknCmdEditModeEasternArabicIndicNumber, ETrue);
-            aMenuPane->SetItemDimmed(EAknCmdEditModeIndicNumber, ETrue);
-            }
-            break;
-        default:
-            break;
-        }
-    TInt index;
-    if (dimmedMenuItem && aMenuPane->MenuItemExists(dimmedMenuItem, index))
-        {
-        aMenuPane->SetItemDimmed(dimmedMenuItem, ETrue);
-        }
-    }
-
-void CAknFepManager::LaunchConfirmationNoteL(TInt aResourceId)
-    {
-    SetFlag(EFlagForegroundUIComponentVisible);
-	iUiInterface->LaunchConfirmationNoteL(aResourceId);
-    }
-
-void CAknFepManager::NewCharacterL(const TDesC& aChar)
-    {
-    if ( aChar.Length() == 0 )
-    	{
-    	return;
-    	}
-    TChar ch = aChar[0];
-
-    TBool validNewCandidate = CharIsValidInEditor(ch);
-    // Check if the character is valid for the editor.
-    if ( !validNewCandidate )
-        {
-        TChar firstNewCandidate = ch;
-        TBool goneThroughAllCandidates(EFalse);
-        TPtrC8 sequence = iPtiEngine->CurrentInputSequence();
-
-        if ( sequence.Length() )
-            {
-            TPtiKey key = (TPtiKey)sequence[0];
-                        
-            TBuf<20> mapData;              
-            iPtiEngine->MappingDataForKey(key, mapData, iPtiEngine->Case()); 
-            // If the character was not coming from ptiengine mappings, fail instantly.              
-            if (mapData.Locate(firstNewCandidate) != KErrNotFound)
-                {                
-                // If there is an ivalid character in chr-loop, try to jump to next valid one.
-                for (TInt jj = 0; jj < mapData.Length(); jj++)
-                    {
-                    TPtrC text = iPtiEngine->AppendKeyPress(key);
-				    if ( text.Length() == 0 )
-				    	{
-				    	continue;
-				    	}
-                    ch = text[0];
-                    goneThroughAllCandidates = (ch == firstNewCandidate);                    
-                    validNewCandidate = CharIsValidInEditor(ch);
-                    if (validNewCandidate || goneThroughAllCandidates)
-                        {
-                        break;
-                        }                                        
-                    }
-                }            
-            }
-        }
-    if (!validNewCandidate)
-        {
-        // No valid characters at all.
-        CancelInlineEdit();
-        return;
-        }
-
-    if ( (ch == KAknFEPLineFeedSymbol ||
-          ch == KAknFEPMirroredLineFeedSymbol) &&
-        (EditorHasFreeSpace() || IsFlagSet(EFlagLastCharacterInEditor)))
-        {
-        SetFlag(EFlagLineFeedCharacter);
-        }
-    else
-        {
-        ClearFlag(EFlagLineFeedCharacter);
-        }
-        
-    if ( (ch == EKeySpace) &&
-        (EditorHasFreeSpace() || IsFlagSet(EFlagLastCharacterInEditor)))
-        {
-        SetFlag(EFlagSpaceCharacter);
-        }
-    else
-        {
-        ClearFlag(EFlagSpaceCharacter);
-        }
-
-
-    if (iInputCapabilities.SupportsSecretText())
-        {
-        if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))
-            {
-            SimulateKeyEventL(EKeyF20); // to delete previous char in secret text editor
-            }
-        //we receive an extra key press if we simulate a key that is also a device key
-        if (ch.IsDigit() || TUint(ch) == EStarKeyUnicodeValue || TUint(ch) == EHashKeyUnicodeValue)
-            {
-            SetFlag(EFlagPassNextKey);
-            }
-        if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic )
-            {
-            ClearFlag(EFlagPassNextKey);
-            SimulateKeyEventL(ch + (TChar)KLatinToArabicIndicDigitsDelta ); 
-            }
-        else if ( ch.IsDigit() 
-               && iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic )
-            {
-            ClearFlag(EFlagPassNextKey);
-            if(iLanguageCapabilities.iInputLanguageCode == ELangUrdu 
-            || iLanguageCapabilities.iInputLanguageCode == ELangFarsi)
-                {
-                SimulateKeyEventL(ch + (TChar)KLatinToEasternArabicIndicDigitsDelta );  
-                }
-            }    
-        else if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari )
-            {
-            ClearFlag(EFlagPassNextKey);
-            SimulateKeyEventL(ch + (TChar)KLatinToDevanagariDigitsDelta);
-            }
-        else
-            {
-            SimulateKeyEventL(ch);
-            }
-        SetFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction);
-        }
-    else if (EditorHasFreeSpace() || IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))
-        {
-        TBuf<1> buf;
-        if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic )
-            {
-            buf.Append( ch + (TChar)KLatinToArabicIndicDigitsDelta );   
-            }
-        else if ( ch.IsDigit() 
-               && iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic )
-            {
-            if(iLanguageCapabilities.iInputLanguageCode == ELangUrdu 
-            || iLanguageCapabilities.iInputLanguageCode == ELangFarsi)
-                {
-                buf.Append( ch + (TChar)KLatinToEasternArabicIndicDigitsDelta );                    
-                }
-            }    
-        else if ( ch.IsDigit() && iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari )
-            {
-            buf.Append( ch + (TChar)KLatinToDevanagariDigitsDelta );    
-            }
-        else
-            {
-            buf.Append( ch );
-            }
-
-        if (iFepManState == EAknFepStateInitial) //multitapping
-            {
-            if (!IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))
-                {
-                TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-                if (iAknEditorFlags & EAknEditorFlagMTAutoOverwrite && iMode == ELatin 
-                    && !WesternPredictive()
-                    && iUncommittedText.iCursorPos < edSize 
-                    && iUncommittedText.Length() == 0)
-                    {
-                    // If the cursor is at the beginning or in the middle of the text,
-                    // existing characters are replaced with new ones in latin multitap input.
-                    iUncommittedText.iCursorPos++;
-                    StartInlineEditL(iUncommittedText, buf, ESingleCharacter, EFalse);
-                    SetFlag(EFlagInsideMultitapInlineEditingTransaction);
-                    UpdateInlineEditL(buf, ESingleCharacter);
-                    }
-                else
-                    {
-                    StartInlineEditL(buf);
-                    SetFlag(EFlagInsideMultitapInlineEditingTransaction);
-                    }
-                }
-            else
-                {
-                UpdateInlineEditL(buf, ESingleCharacter);
-                }
-
-            if(!EditorHasFreeSpace())
-                {
-                SetFlag(EFlagLastCharacterInEditor);
-                }
-            }
-        else
-            {
-            iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(buf, ESingleCharacter, 
-                                                                        ETrue, NULL, *this, *this);
-            }
-        SetFlag(EFlagInsideInlineEditingTransaction);
-        }
-    }
-
-void CAknFepManager::NewTextL(const TDesC& aText)
-    {
-    ClearFlag(EFlagLineFeedCharacter);
-    TBool unlimit = EFalse;
-    TInt freeSpace = EditorFreeSpace(unlimit);
-
-    if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) ||
-        unlimit || freeSpace > 0 ) //
-        {
-        if( unlimit || freeSpace > aText.Length() )
-            {
-            iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(aText, aText.Length(), ETrue, 
-                                                                                 NULL, *this, *this);
-            }
-        else  
-            {
-            iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(aText.Left(freeSpace), freeSpace, ETrue, 
-                                                                                 NULL, *this, *this);
-            }
-        
-        SetFlag(EFlagInsideInlineEditingTransaction);
-        }
-    }
-
-
-void CAknFepManager::NewCharacterSequenceL(const TDesC& aText, TIndicInputResponse aResponse)
-    {
-    TChar zws((ZERO_WIDTH_SPACE));
-    TChar virama((TAknFepUiIndicInputManager::Virama(TLanguage(
-                    iLanguageCapabilities.iInputLanguageCode))));
-    TBool ret = ETrue;
-	TBuf<CAknFepManager::EMaximumFepWordLength> buf;
-    buf.Zero();
-    TBool isTextLayoutPresent = (AknFepDocumentNavigation() || TextLayout()) ? ETrue : EFalse;
-    switch( aResponse )
-        {
-        case EIndicInputResponseNone:
-            {
-            NewCharacterL(aText);
-            }
-            break;
-        case EIndicInputResponseNumber:
-            {
-            NewCharacterL(aText);
-            CommitInlineEditL();
-            }
-            break;
-        case EIndicInputResponseZWSandCharacter:
-            {
-            if (! iInputCapabilities.SupportsSecretText() && isTextLayoutPresent)
-                {
-                buf.Append(zws);
-                NewCharacterL(buf);
-                CommitInlineEditL();
-                }
-            NewCharacterL(aText);           
-            }
-            break;
-        case EIndicInputResponseInsertZWS:
-            {
-            buf.Append(virama);
-            if(isTextLayoutPresent)
-                buf.Append(zws);
-            ret = EFalse;           
-            }
-            break;
-        case EIndicInputResponseInsertZWSandLigature:
-            {
-            buf.Append(virama);
-            if(isTextLayoutPresent)
-                buf.Append(zws);
-            if ( iInputCapabilities.SupportsSecretText() )
-                {
-                buf.Append(aText);  
-                }
-            ret = EFalse;           
-            }
-            break;
-
-        case EIndicInputResponseInsertRepha:
-            {
-            MCoeFepAwareTextEditor* fepAwareTextEditor = 
-                iInputCapabilities.FepAwareTextEditor();
-
-            if( fepAwareTextEditor )
-                {
-                TInt nextCharPos = 0;
-                TCursorSelection curSel;
-            
-                fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-                
-                // Insert Repha before the desired syllable.
-                TBool leftFlag = GetNextVisualLeftCharacter( nextCharPos );
-                if( leftFlag )
-                    {
-                    curSel.iCursorPos = nextCharPos;
-                    curSel.iAnchorPos = nextCharPos;
-                    
-                    fepAwareTextEditor->SetCursorSelectionForFepL( curSel );
-                                                
-                    TAknFepUiIndicInputManager::GetRepha( buf, 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) );
-
-                    ret = EFalse;
-                    }
-                }
-            break;
-            }
-
-        case EIndicInputResponseInsertRakar:
-            {
-            TAknFepUiIndicInputManager::GetRakar( buf, 
-                TLanguage( iLanguageCapabilities.iInputLanguageCode ) );
-            ret = EFalse;
-            }
-            break;
-#ifdef RD_HINDI_PHONETIC_INPUT      
-    	case EIndicInputResponsePhoneticMultitapText:
-    		{
-    		buf.Append(aText);
-			ret = EFalse;	
-    		}
-    		break;
-        case EIndicInputResponsePhoneticQwertyText:
-            {
-            buf.Append(aText);
-            ret = EFalse;   
-            }
-            break;
-#endif          
-
-        case EIndicInputResponseInsertDirectLigature:
-            {
-            // In key-0, the new line character preceeds the Ksha.
-            // First clear the new line flag.
-            ClearFlag( EFlagLineFeedCharacter );
-            
-            buf.Append( aText );
-            ret = EFalse;
-            }
-            break;
-
-        case EIndicInputResponseInsertViramaZWSandDirectLigature:
-            {
-            // This case handles the insertion of Virama when star key
-            // is pressed.
-
-            // In key-0, the new line character preceeds the Ksha.
-            // First clear the new line flag.
-            ClearFlag( EFlagLineFeedCharacter );
-
-            buf.Append(virama);
-            if(isTextLayoutPresent)
-                buf.Append(zws);
-            if ( iInputCapabilities.SupportsSecretText() )
-                {
-                buf.Append(aText);  
-                }
-            ret = EFalse;
-            }
-            break;
-
-        case EIndicInputResponseZWSandDirectLigature:
-            {
-            if (! iInputCapabilities.SupportsSecretText() && isTextLayoutPresent)
-                {
-                buf.Append(zws);
-                NewCharacterL(buf);
-                CommitInlineEditL();
-                }
-            buf.Zero();
-            buf.Append( aText );
-            ret = EFalse;
-            }
-            break;
-
-#ifdef RD_MARATHI
-		case EIndicInputResponseInsertEyeLashRa:
-			{
-			TAknFepUiIndicInputManager::GetEyeLashRa( buf, 
-				(TLanguage)iLanguageCapabilities.iInputLanguageCode );
-			ret = EFalse;
-    		}
-			break;
-
-		case EIndicInputResponseInsertChandraA:
-			{
-			TAknFepUiIndicInputManager::GetChandraA( buf );
-			ret = EFalse;
-			}
-			break;
-#endif // RD_MARATHI
-
-        default:
-            break;
-        }
-        
-    if(ret)
-        return;
-    
-    if ( iInputCapabilities.SupportsSecretText() )
-        {
-        if ( IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) )
-            {
-            SimulateKeyEventL(EKeyF20); // to delete previous char in secret text editor
-            }
-        for( TInt counter=0; counter<buf.Length(); counter++ )
-            {
-            if( (buf[counter] != ZERO_WIDTH_SPACE) )
-                SimulateKeyEventL(buf[counter]);    
-            }
-        SetFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction);
-        }
-    else if ( EditorHasFreeSpace() || IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) )
-        {
-        if ( iFepManState == EAknFepStateInitial ) //multitapping
-            {
-            if ( !IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) )
-                {
-                TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-                if (iAknEditorFlags & EAknEditorFlagMTAutoOverwrite && iMode == ELatin 
-                    && !WesternPredictive()
-                    && iUncommittedText.iCursorPos < edSize 
-                    && iUncommittedText.Length() == 0)
-                    {
-                    // If the cursor is at the beginning or in the middle of the text,
-                    // existing characters are replaced with new ones in latin multitap input.
-                    iUncommittedText.iCursorPos++;
-                    StartInlineEditL(iUncommittedText, buf, ESingleCharacter, EFalse);
-                    }
-                else
-                    {
-                    StartInlineEditL();
-                    }
-                SetFlag(EFlagInsideMultitapInlineEditingTransaction);
-                }
-            UpdateInlineEditL(buf, buf.Length());
-
-            if( !EditorHasFreeSpace() )
-                {
-                SetFlag(EFlagLastCharacterInEditor);
-                }
-            }
-        SetFlag(EFlagInsideInlineEditingTransaction);
-
-        // Check if text needs to be committed   		
-        if( ( TAknFepUiIndicInputManager::IsToCommitCharSeq( aResponse ) ) )
-            {
-            CommitInlineEditL();    
-            }
-        if( aResponse == EIndicInputResponseInsertZWSandLigature )
-            {
-            NewCharacterL(aText);   
-            }    
-        else if( aResponse == EIndicInputResponseInsertViramaZWSandDirectLigature )
-            {
-            // Doing this here because we first commit the virama 
-            // and ZWS and keep the ligature in the inline buffer.
-            NewLigatureL( aText );
-            }
-        }
-    }
-
-void CAknFepManager::CommitInlineEditL()
-    {   
-    if ( !IsFlagSet( CAknFepManager::EFlagInsideInlineEditingTransaction ) )
-        {
-        return;
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Before commit inline, check and close 
-    // tooltip on FSQ first.
-    SendEventsToPluginManL( EPluginHideTooltip );
-
-    // Predictive QWERTY (XT9) changes ---->
-    // Exact word popup is hidden when the inline editor is closed
-    iExactWordPopupContent->HidePopUp();
-    // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    if (iInputCapabilities.FepAwareTextEditor())
-			{
-	    if  (IsFlagSet(EFlagLineFeedCharacter))
-	        {
-	        if (iInputCapabilities.SupportsSecretText())
-	            {
-	            SimulateKeyEventL(EKeyF20); // backspace to delete previous char in secret text editor
-	            SimulateKeyEventL(EKeyEnter);
-	            SimulateKeyEventL(EKeyF19); // Asyncronous case update
-	            }
-	        else
-	            {
-	            __ASSERT_DEBUG(iInputCapabilities.FepAwareTextEditor(),
-	                           AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor));
-	            iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(ETrue);
-	            iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit();
-	            
-	            // Multitapping enter event is not posted for find pane.
-	            // It would never accept it anyway but the event causes problems in gallery's find.
-	            // Allow real enter from qwerty keyboard though.
-	            if (!(iAknEditorFlags & EAknEditorFlagFindPane) || iQwertyInputMode)
-	                {                
-	                SimulateKeyEventL(EKeyEnter);
-	                SimulateKeyEventL(EKeyF19); // Asyncronous case update
-	                }            
-	            }
-	        }
-	    else if (IsFlagSet(EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter))
-	        {
-	        TBuf<ESingleCharacter> charAsDesc(ESingleCharacter);
-	
-	        if (IsFlagSet(EFlagSpaceCharacter))
-	            {
-	            charAsDesc[0] = TText(0x0020);      // 0x0020 is space
-	            }
-	        else
-	            {
-	            charAsDesc[0] = TText(0x3000);      // 0x3000 is full-width space
-	            }
-	
-	        if (iInputCapabilities.SupportsSecretText())
-	            {
-	            SimulateKeyEventL(EKeyF20); // backspace to delete previous char in secret text editor
-	            SimulateKeyEventL(charAsDesc[0]);
-	            SimulateKeyEventL(EKeyF19); // Asyncronous case update
-	            }
-	        else
-	            {
-	            iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(charAsDesc, 1);
-	            iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(ETrue);
-	            CCoeEnv* coeEnv = CCoeEnv::Static();
-	            iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv);
-	            iCaseMan->UpdateCase(ENullNaviEvent);
-	            if (!EditorHasFreeSpace())
-	                {
-	                SetFlag(EFlagEditorFull);
-	                }
-	            else
-	            	{
-	            	ClearFlag(EFlagEditorFull);
-	            	}
-	            }
-	        }
-	    else if (IsFlagSet(EFlagInsideInlineEditingTransaction) 
-	         && !iInputCapabilities.SupportsSecretText())
-	        {
-	        // Chinese languages seem not to support this
-	        if ( !IsChineseInputLanguage() &&
-	            (iUncommittedText.Length() == 0 || 
-	                    (
-	#ifdef RD_INTELLIGENT_TEXT_INPUT
-	                    !IsAutoCompleteOn() &&
-	#endif //RD_INTELLIGENT_TEXT_INPUT                    
-	                    !EditorSupportsNeutralProtection()
-	                    ) 
-	            )
-	           )
-	                    
-	            { // empty insertions need no resolution.
-	            /*Hindi*/
-	            if( (TAknFepUiIndicInputManager :: IsIndicLangauge(
-	                      TLanguage(iLanguageCapabilities.iInputLanguageCode))) 
-	#ifdef RD_HINDI_PHONETIC_INPUT
-	                || ( TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage(
-	                      TLanguage(iLanguageCapabilities.iInputLanguageCode)) )
-	#endif
-	            )
-	                {
-	                // NOTE! Need to get cursor visibility information from some where.
-	                CommitInlineEditWithoutResolutionL( *(iInputCapabilities.FepAwareTextEditor()), 
-	                                                    ETrue, EFalse); 
-	                }
-	            else
-	                {
-	                // NOTE! Need to get cursor visibility information from some where.
-	                CommitInlineEditWithoutResolutionL( *(iInputCapabilities.FepAwareTextEditor()), 
-	                                                    ETrue);
-	                }
-	            }
-	        else
-	            {
-	
-	            //note secret text editors do not use the MCoeFepAwareTextEditor interface,
-	            //we only need to clear the flags to 'commit' a character
-	
-	            __ASSERT_DEBUG(iInputCapabilities.FepAwareTextEditor(),
-	                           AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor));
-	            CCoeEnv* coeEnv = CCoeEnv::Static();
-	
-	            TBool showCursor = ETrue;
-	            if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) ||
-	                IsCcpuFlagSet(ECcpuStateLosingFocus))
-	                {
-	                showCursor = EFalse;
-	                }
-                else
-                    {
-                    if(IsKoreanInputLanguage( ) && IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-                        {
-                        showCursor = EFalse;
-                        }
-                    }
-
-	            iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(showCursor);
-	            ClearFlag(EFlagInsideInlineEditingTransaction);
-	            iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv);
-	
-	            // Arabic & Hebrew required functionality added ---->
-	            if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction)) // Condition added for AknFep.
-	                {
-	                // 3 * as each original character can potentially take 2 markers
-	                HBufC* decoratedTextBuf = HBufC::NewLC(KMaxInlineEditSize + 2); // +2 to accommodate previous and next charcaters
-	                TPtr decoratedText = decoratedTextBuf->Des();
-	                // Resolve in a slightly wider range than the new text. Attempt to expand 1 character in each direction
-	                TCursorSelection resolveSpan(iUncommittedText.HigherPos(), 
-	                                             iUncommittedText.LowerPos());
-	                TInt decCursor = 0;
-	
-	                // Gets the CPlainText object from the focused editor if it exists.
-	                CPlainText* plainText = PlainText();
-	                TBool containsTextField = EFalse;
-	                if (resolveSpan.iAnchorPos > 0)
-	                    {
-	                    if (plainText)
-	                        {
-	                        // Check if surrounding document position contains text field.
-	                        containsTextField = plainText->FindFields(resolveSpan.iAnchorPos - 1);
-	                        }
-	                    TBuf<ESingleCharacter> chDes;
-	                    iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep( chDes, 
-	                                              resolveSpan.iAnchorPos - 1, ESingleCharacter);
-	                    if ( chDes.Length() != 0 && chDes[0] != CEditableText::EPictureCharacter && !containsTextField)
-	                        {
-	                        // Resolve span is not extended if surrounding character is picture character or it
-	                        // contains text field. Text field data would be lost when FEP replaces existing editor
-	                        // content with new text buffer content that does not have text field data.
-	                        // ResolveDecoratedText() call does not handle these special cases which can has some 
-	                        // effects to Arabic & Hebrew text rendering.
-	                        resolveSpan.iAnchorPos--;
-	                        }
-	                    }
-	                if (resolveSpan.iCursorPos < 
-	                    iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep())
-	                    {
-	                    containsTextField = EFalse;
-	                    if (plainText)
-	                        {
-	                        // Check if surrounding document position contains text fields.
-	                        containsTextField = plainText->FindFields(resolveSpan.iCursorPos);
-	                        }
-	                    TBuf<ESingleCharacter> chDes;
-	                    iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep( chDes, 
-	                                                  resolveSpan.iCursorPos, ESingleCharacter);
-	                    if ( chDes.Length() != 0 && chDes[0] != CEditableText::EPictureCharacter && !containsTextField)
-	                        {
-	                        // Resolve span is not extended if surrounding character is picture character or it
-	                        // contains text field. Text field data would be lost when FEP replaces existing editor
-	                        // content with new text buffer content that does not have text field data.
-	                        // ResolveDecoratedText() call does not handle these special cases which can has some 
-	                        // effect to Arabic & Hebrew text rendering.
-	                        resolveSpan.iCursorPos++;
-	                        decCursor++;
-	                        }
-	                    }
-	
-	                // resolveSpan has been widened. Now go get the text for that span.
-	                iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(decoratedText, 
-	                                                 resolveSpan.iAnchorPos, resolveSpan.Length());
-	
-	                if ( decoratedText.Length() != resolveSpan.Length() )
-	                    {
-	                    // This assert checks is we have failed to retrieve enough text.  Should not happen
-	                    // __ASSERT_DEBUG( decoratedText.Length() == resolveSpan.Length(),  Panic(EEikPanicT9CharPosOutOfRange) );
-	                    // Abondon the resolution.
-	
-	                    iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL( ETrue );
-	                    }
-	                else
-	                    {
-	                    TInt lowerOffset = iUncommittedText.LowerPos() - resolveSpan.LowerPos();
-	
-	                    TBool needsResolving = iInlineTextDecorator->ResolveDecoratedText(decoratedText,
-	                        TCursorSelection(lowerOffset, lowerOffset + iUncommittedText.Length()));
-	
-	                    if ( needsResolving )
-	                        {                      
-	                        TBool setToTrue=EFalse;
-	                        iInputCapabilities.FepAwareTextEditor()->Extension1()->StartFepInlineEditL(
-	                            setToTrue,
-	                            resolveSpan,
-	                            decoratedText,
-	                            decoratedText.Length() - decCursor,
-	                            EFalse,
-	                            0, // MFormCustomDrawer*
-	                            *this,
-	                            *this);
-	
-	                        iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL( ETrue );
-	                        if (IsFeatureSupportedJapanese())
-	                            {
-	                            // need to call clear buffer of PtiEngine for Japanese varint
-	                            // before calling second CommitFepInlineEditL().
-	                            // because the committed string is set as reading string twice
-	                            iPtiEngine->ClearCurrentWord();
-	                            }
-	                        iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv);
-	                        }
-	                    else
-	                        {
-	                        // Go directly via CTextView because the normal way via the FepAwareEditor can only be called
-	                        // during an inline edit.
-	                        // Line cursor is made invisible here.  There is no line cursor in S60 LAF, even though there is
-	                        // an Edwin flag which govern this.  See CEikEdwin::SetCursorVisibilityL(TBool)
-	                        // Cursor is not set if this CommitInlineEditL call was prompted when losing focus.
-	                        MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-	                        if ( (docNavi || TextView()) && !IsCcpuFlagSet(ECcpuStateLosingFocus) )
-	                        	{
-	                        	if (docNavi)
-	                        		{
-		                            docNavi->SetCursorVisibilityL( TCursor::EFCursorInvisible, 
-	                                                             TCursor::EFCursorFlashing );
-	                        		}
-	                        	else 
-	                        		{
-		                            TextView()->SetCursorVisibilityL( TCursor::EFCursorInvisible, 
-	                                                                TCursor::EFCursorFlashing );
-	                        		}
-	                        	}
-	                        }
-	                    }
-	                // iMatchState=EWordMatchFirst;
-	
-	                CleanupStack::PopAndDestroy(); // decoratedTextBuf
-	                }
-	            if (iInputCapabilities.FepAwareTextEditor())
-	                {
-	                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);   
-	                }
-	            
-	            iCaseMan->UpdateCase(ENullNaviEvent);
-	            // <---- Arabic & Hebrew required functionality added
-	            if (!EditorHasFreeSpace())
-	                {
-	                SetFlag(EFlagEditorFull);
-	                }
-	            else
-	            	{
-	            	ClearFlag(EFlagEditorFull);
-	            	}
-	            }
-	        }
-	    else if (IsFlagSet(EFlagInsideInlineEditingTransaction) 
-	          && iInputCapabilities.SupportsSecretText())
-	        {
-	        CCoeEnv* coeEnv = CCoeEnv::Static();
-	        iInputCapabilities.FepAwareTextEditor()->CommitFepInlineEditL(*coeEnv);
-	        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-	        
-	        if (iQwertyInputMode)
-	            {
-	            // Case may need to updated automatically in case of qwerty secret text editor
-	            // beause of the sticky shift feature.
-	            if (iCaseMan->CurrentCase() == EAknEditorLowerCase)
-	                {
-	                SetCase(ELowerCase);            
-	                }
-	            else
-	                {
-	                SetCase(EUpperCase);                        
-	                }               
-	            UpdateIndicators();         
-	            }
-	        }
-			}
-    
-//    SendEventsToPluginManL( EPluginSyncFepAwareText, EPluginSyncUpdatedText );
-      
-    ClearFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction |
-        EFlagLineFeedCharacter | EFlagLastCharacterInEditor | EFlagSpaceCharacter |
-        EFlagFullWidthSpaceCharacter);
-        
-    // No-edit_key devices: Inline editing ending, allow edit-menu again.    
-    ClearCcpuFlag(ECcpuStateIgnoreStarUp | ECcpuStateNewPredictiveWord);        
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    iUncommittedText.iCursorPos=0;
-    iUncommittedText.iAnchorPos=0;
-#endif 
-    if (!iInputCapabilities.FepAwareTextEditor())
-        {
-        // In case while updating the inline edit, 3rd party app removes the focus out of editor before the transaction
-        // completes, we return with an error.
-        User::Leave(KErrCorrupt);
-        }
-
-    }
-
-void CAknFepManager::CommitInlineEditL(const TDesC& aText, TInt aUncommitedTextChange)
-    {
-    if (iMode == EHiraganaKanji)
-        {
-        // When there is not enough editing space to enter the selected candidate,
-        // the error tone is played.
-        if ((iFreeSpaceOfEditor > 0) && (iFreeSpaceOfEditor < aText.Length()))
-            {
-            PlaySound(EAvkonSIDErrorTone);
-            }
-        }
-
-    //maxLength of 0 means the editor has no limit
-    TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-    if ( maxEdSize != 0 && iFreeSpaceOfEditor < aText.Length())
-        {
-        TPtrC charbuf = aText.Left(iFreeSpaceOfEditor);
-        TInt uncommitedTextChange = charbuf.Length();
-        UpdateInlineEditL(charbuf, uncommitedTextChange);
-        }
-    else
-        {
-        UpdateInlineEditL(aText, aUncommitedTextChange);
-        }
-
-    ClearFlag(EFlagInsideMultitapInlineEditingTransaction);
-    CommitInlineEditL();
-    }
-
-void CAknFepManager::CancelInlineEdit()
-    {
-    if( !EditorState()->CurrentInlineEditSpan().Length() )
-    	{
-    	ClearFlag(EFlagInsideInlineEditingTransaction);
-    	if(IsFlagSet(CAknFepManager::EFlagNoMatches))
-    		{
-    		ClearFlag(CAknFepManager::EFlagNoMatches); 
-    		}
-    	}
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        TRAP_IGNORE(TryRemoveNoMatchesIndicatorL());
-
-        if (iInputCapabilities.SupportsSecretText())
-            {
-            TRAP_IGNORE(SimulateKeyEventL(EKeyF20)); // backspace to delete previous char in secret text editor
-            }
-        else if (IsFeatureSupportedJapanese()
-              && iFepManState == EAknFepStateUIActive)
-            {
-            FepUI()->CloseUI();
-            FepUI()->ExpireMultitapTimer();
-            iPtiEngine->ClearCurrentWord();
-            SyncStates(EAknFepStateInitial);
-            }
-        }
-
-    iUncommittedText.iCursorPos=0;
-    
-    iUncommittedText.iAnchorPos=0;
-    
-    iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit();
-    ClearFlag(EFlagInsideMultitapInlineEditingTransaction | EFlagInsideInlineEditingTransaction 
-              | EFlagLineFeedCharacter | EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter);
-    ClearCcpuFlag(ECcpuStateNewPredictiveWord);    
-    }
-
-void CAknFepManager::GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, 
-                                           TInt& aAscent, TInt aDocumentOffset)
-    {
-    TCursorSelection cursorSelection;
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSelection);
-    TInt documentPosition = cursorSelection.LowerPos()  - aDocumentOffset;
-    if (documentPosition < 0)
-        documentPosition = 0;
-    iInputCapabilities.FepAwareTextEditor()->GetScreenCoordinatesForFepL(aLeftSideOfBaseLine, 
-                                                          aHeight, aAscent, documentPosition);
-    }
-
-void CAknFepManager::GetScreenCoordinatesL(TPoint& aLeftSideOfBaseLine, 
-                                           TInt& aHeight, TInt& aAscent)
-    {
-    TCursorSelection cursorSelection;
-    MCoeFepAwareTextEditor* fepAwareTextEditor = iInputCapabilities.FepAwareTextEditor();
-
-    fepAwareTextEditor->GetCursorSelectionForFep(cursorSelection);
-    fepAwareTextEditor->GetScreenCoordinatesForFepL(aLeftSideOfBaseLine, aHeight, aAscent, 
-                                                    cursorSelection.LowerPos());
-    }
-
-TBool CAknFepManager::EditorHasFreeSpace( TInt aRequiredNumberOfCharacter ) const
-    {
-    TBool unlimit = EFalse;
-    TInt freeSpace = 0;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	if(WesternPredictive())
-	    {
-	    freeSpace = EditorFreeSpaceForAutoWordCompletion(unlimit);	
-	    }
-	else
-		{
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    	freeSpace = EditorFreeSpace(unlimit);			
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-		}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    if( unlimit || freeSpace > aRequiredNumberOfCharacter )
-        {
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-TBool CAknFepManager::IsEditorHasFreeSpace() const
-    {
-    TBool unlimit = EFalse;
-    TInt freeSpace = 0;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	if(WesternPredictive())
-	    {
-	    freeSpace = EditorFreeSpaceForAutoWordCompletion(unlimit);	
-	    }
-	else
-		{
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    	freeSpace = EditorFreeSpace(unlimit);			
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-		}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    if( unlimit || freeSpace > 0 )
-        {
-        return ETrue;
-        }
-    return EFalse;
-    }
-    
-TInt CAknFepManager::EditorFreeSpace(TBool& aUnlimit, 
-    TBool isToCountUncommittedTextLength /*= EFalse */) const
-    {
-    aUnlimit = EFalse;
-
-    if (!iInputCapabilities.FepAwareTextEditor())
-        {
-        //no handle to MCoeFepAwareTextEditor in non Edwin derived editors
-        return 0;
-        }
-
-    //maxLength of 0 means the editor has no limit
-    TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-    TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-    TCursorSelection currentSelection;
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelection);
-
-    aUnlimit = (maxEdSize == 0 || ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) &&
-                                   (currentSelection.iCursorPos >= 0 && 
-                                    currentSelection.iCursorPos < maxEdSize) ));
-    if(aUnlimit)
-        {
-        return 0;
-        }
-    else
-        {
-        if( isToCountUncommittedTextLength )
-            {
-            return ( maxEdSize - edSize + 
-                currentSelection.Length() + UncommittedText().Length() );
-            }
-        return (maxEdSize - edSize + currentSelection.Length());
-        }
-    }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-TInt CAknFepManager::EditorFreeSpaceForAutoWordCompletion(TBool& aUnlimit, 
-    TBool /* isToCountUncommittedTextLength = EFalse*/ ) const
-    {
-    aUnlimit = EFalse;
-
-    if (!iInputCapabilities.FepAwareTextEditor())
-        {
-        //no handle to MCoeFepAwareTextEditor in non Edwin derived editors
-        return 0;
-        }
-
-    //maxLength of 0 means the editor has no limit
-    TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-    TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-    TInt keySequenceLength = iPtiEngine->CurrentInputSequence().Length();
-    TCursorSelection currentSelectionOrUncommitted;    
-	iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentSelectionOrUncommitted);
-
-    aUnlimit = (maxEdSize == 0 || ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) &&
-                                   (currentSelectionOrUncommitted.iCursorPos >= 0 && 
-                                    currentSelectionOrUncommitted.iCursorPos < maxEdSize) ));
-    if(aUnlimit)
-        {
-        return 0;
-        }
-    else
-        {
-
-        if ( !iQwertyInputMode )
-            {
-            return ( maxEdSize - edSize + currentSelectionOrUncommitted.Length() );
-            }
-        else
-            {
-            // In the predictive QWERTY mode, the keySequenceLength doesn't necessarily have anything
-            // to do with the amount of characters on screen. At least entering accented characters with
-            // Chr-multitapping will increase the key sequence length although number of characters 
-            // doesn't change (this is either bug or feature of ZiCore). Ask the auto-completion
-            // length directly from PtiEngine instead of trying to calculate it on our own.
-            TInt tailLength = 0;
-            TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ));
-            if( tailLength < 0 )
-             {
-             tailLength = 0;
-             }
-            return (maxEdSize - edSize + currentSelectionOrUncommitted.Length() + tailLength);
-            }
-        }
-    }
-#endif
-#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-#ifdef RD_INTELLIGENT_TEXT_INPUT  
-
-TInt CAknFepManager::DocumentLength() const
-    {
-    TInt ret = 0;
-    if ( iInputCapabilities.FepAwareTextEditor() )
-        {
-        ret = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-        }
-    return ret;
-    }
-    
-TBool CAknFepManager::KeyEventWillReplaceCharacter( const TKeyEvent& aKeyEvent )
-    {
-    // The function is currently used only in QWERTY mode. It might not work correctly
-    // with ITU-T input.
-    TBool ret = EFalse;
-    if ( IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) )
-        {
-        // Multitapping
-        ret = ETrue;
-        }
-    else if ( aKeyEvent.iRepeats &&
-              LongPressNumberEntryOnQwerty() &&
-              FnKeyState() == CAknFepFnKeyManager::EFnKeyNone &&
-              KeyMapsDifferentCharacterWithFn( (TPtiKey)aKeyEvent.iScanCode ) )
-        {
-        // QWERTY key long press producing another charcter
-        ret = ETrue;
-        }
-    return ret;    
-    }
-#endif
-#endif
-TChar CAknFepManager::CurrentDecimalSeparator() const
-    {
-    TLocale tLoc;
-    return tLoc.DecimalSeparator();
-    }
-
-void CAknFepManager::ConfigureFEPFromEditorStateL()
-    {
-    User::LeaveIfError(SyncStates(EAknFepStateInitial));
-
-    CAknEdwinState* editorState = EditorState();
-    TInt editorMode = editorState->CurrentInputMode();
-    TInt sharedDataMode = iSharedDataInterface->InputMode();
-    TBool latinCaseSet = EFalse;
-    iPermittedInputModes = editorState->PermittedInputModes();
-    TInt defaultInputMode = editorState->DefaultInputMode();
-    if(iAknEditorFlags != editorState->Flags())
-        {
-        iAknEditorFlags = editorState->Flags();
-        UpdateLocalDigitMode();
-        }
-    iAknEditorNumericKeymap = editorState->NumericKeymap();
-
-    TLanguage localLanguage = ELangTest;
-    if (GetLocalLanguage( localLanguage ) )
-        {
-        iLanguageCapabilities.iLocalInputLanguageInUse = ETrue;
-        if ( localLanguage != iLanguageCapabilities.iInputLanguageCode )
-            {
-            ChangeInputLanguageL(localLanguage);
-            }
-        }
-    else if (iLanguageCapabilities.iLocalInputLanguageInUse)
-        {
-        ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-        iLanguageCapabilities.iLocalInputLanguageInUse = EFalse;
-        ClearFlag(EFlagNewSharedDataInputMode);
-		}
-
-    if (IsFlagSet(EFlagNewSharedDataInputLanguage) )
-        {
-        //Global mode or input language has been changed in general settings
-        if ( !iLanguageCapabilities.iLocalInputLanguageInUse)
-            {
-            ChangeInputLanguageL(iSharedDataInterface->InputTextLanguage());
-            }
-        ClearFlag(EFlagNewSharedDataInputLanguage);
-        }
-
-    if (IsFeatureSupportedJapanese())
-        {
-        // set Japanese predicitve ON/OFF
-        if (iAknEditorFlags & EAknEditorFlagNoT9)
-            {
-            iJapanesePredictive = EFalse;
-            }
-        else
-            {
-            // Is it supported Japanese predictive input
-            if (HasJapanesePredictionInputMode())
-                {
-                iJapanesePredictive = iSharedDataInterface->PredictiveTextJapaneseOn();
-                }
-            else
-                {
-                // if Predictive Japanese input isn't supported in PtiEngine, set to OFF.
-                iJapanesePredictive = EFalse;
-                iSharedDataInterface->ResetJapanesePredictiveTextOn();
-                }
-            }
-
-        // In Japanese variant, EAknEditorTextInputMode of allow input mode
-        // means all input mode.
-        if (iPermittedInputModes & EAknEditorTextInputMode)
-            {
-            iPermittedInputModes |= (EAknEditorKatakanaInputMode |
-                                    EAknEditorHalfWidthTextInputMode |
-                                    EAknEditorFullWidthTextInputMode |
-                                    EAknEditorFullWidthNumericInputMode |
-                                    EAknEditorFullWidthKatakanaInputMode |
-                                    EAknEditorHiraganaKanjiInputMode |
-                                    EAknEditorHiraganaInputMode);
-            }
-
-        if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)
-            {
-            if (iPermittedInputModes == EAknEditorNumericInputMode)
-                {
-                iPermittedInputModes = EAknEditorNumericInputMode;
-                }
-            else if (iPermittedInputModes & EAknEditorNumericInputMode)
-                {
-                iPermittedInputModes = (EAknEditorHalfWidthTextInputMode 
-                                      | EAknEditorNumericInputMode);
-                }
-            else
-                {
-                iPermittedInputModes = EAknEditorHalfWidthTextInputMode;
-                }
-            }
-
-        if (editorMode)
-            {
-            editorMode = ConfigureFepModeFromEditorMode(editorMode);
-            }
-        else // for new editors
-            {
-            iCharWidth = EHalfWidthChar;
-            sharedDataMode = EHiraganaKanji;
-            // First input mode is changed to Latin from Hiragana/Kanji
-            // if display language is English.
-            TInt dispLang = iSharedDataInterface->DisplayLanguage();
-            // ELangTest means Automatic as display language in GS
-            if (dispLang == ELangTest)
-                {
-                // UiLanguage isn't Japanese, Latin is set.
-                if (iUiLanguage != ELangJapanese)
-                    {
-                    sharedDataMode = ELatin;
-                    }
-                }
-            else if (dispLang != ELangJapanese)
-                {
-                // Display language isn't Japanese, Latin is set.
-                sharedDataMode = ELatin;
-                }
-
-            if (!(iPermittedInputModes & EAknEditorHiraganaKanjiInputMode))
-                {
-                if (IsOnlyFullWidthCharacterPermitted())
-                    {
-                    iCharWidth = EFullWidthChar;
-                    }
-                else if (IsOnlyHalfWidthCharacterPermitted())
-                    {
-                    iCharWidth = EHalfWidthChar;
-                    }
-
-                if (iPermittedInputModes & (EAknEditorKatakanaInputMode |
-                                        EAknEditorFullWidthKatakanaInputMode))
-                    {
-                    // In case setting Latin as above, Latin is used preferentially.
-                    if (sharedDataMode == ELatin
-                     && (iPermittedInputModes & 
-                           (EAknEditorHalfWidthTextInputMode | EAknEditorFullWidthTextInputMode)))
-                        {
-                        sharedDataMode = ELatin;
-                        }
-                    else
-                        {
-                        sharedDataMode = EKatakana;
-                        }
-                    }
-                else if (iPermittedInputModes & (EAknEditorHalfWidthTextInputMode |
-                                             EAknEditorFullWidthTextInputMode))
-                    {
-                    sharedDataMode = ELatin;
-                    }
-                else if (iPermittedInputModes & (EAknEditorNumericInputMode |
-                                                 EAknEditorFullWidthNumericInputMode))
-                    {
-                    sharedDataMode = ENumber;
-                    }
-                // First input mode is changed to latin from katakana
-                // if display language is English.
-                if (!(dispLang == ELangTest || dispLang == ELangJapanese))
-                    {
-                    if ((iPermittedInputModes &  EAknEditorKatakanaInputMode) &&
-                        (iPermittedInputModes & EAknEditorHalfWidthTextInputMode))
-                        {
-                        sharedDataMode = ELatin;
-                        }
-
-                    if ((iPermittedInputModes &  EAknEditorKatakanaInputMode) &&
-                        (iPermittedInputModes & EAknEditorFullWidthTextInputMode))
-                        {
-                        sharedDataMode = ELatin;
-                        }
-                    }
-                }
-            }
-        }
-    else // for other variants (western or chinese)
-        {
-        if (!(iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorNumericInputMode 
-            | EAknEditorSecretAlphaInputMode)))
-            {
-            // Any latin input mode is not permitted by the editor.
-            // For compatibility permitted japanese input modes are checked and
-            // corresponding latin input modes are allowed.
-            if ( iPermittedInputModes & (EAknEditorKatakanaInputMode |
-                                    EAknEditorHalfWidthTextInputMode |
-                                    EAknEditorFullWidthTextInputMode |
-                                    EAknEditorFullWidthKatakanaInputMode |
-                                    EAknEditorHiraganaKanjiInputMode |
-                                    EAknEditorHiraganaInputMode))
-                {
-                iPermittedInputModes |= EAknEditorTextInputMode;
-                }
-            if ( iPermittedInputModes & EAknEditorFullWidthNumericInputMode )
-                {
-                iPermittedInputModes |= EAknEditorNumericInputMode;
-                }
-
-            if ( !(defaultInputMode & (EAknEditorTextInputMode | EAknEditorNumericInputMode)))
-                {
-                if (defaultInputMode & (EAknEditorKatakanaInputMode |
-                                    EAknEditorHalfWidthTextInputMode|
-                                    EAknEditorFullWidthTextInputMode |
-                                    EAknEditorFullWidthKatakanaInputMode |
-                                    EAknEditorHiraganaKanjiInputMode |
-                                    EAknEditorHiraganaInputMode))
-                    {
-                    defaultInputMode = EAknEditorTextInputMode;
-                    }
-                else if (defaultInputMode & EAknEditorFullWidthNumericInputMode)
-                    {
-                    defaultInputMode = EAknEditorNumericInputMode;
-                    }
-                }
-            }
-        }
-
-    // object provider items
-    iEditMenuBar = NULL;
-    editorState->SetMenu();
-    editorState->SetCba();
-
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__
-    iOptionsMenuBar = NULL;
-#endif    
-
-    SetWesternPredictive(iSharedDataInterface->PredictiveTextOn());
-    //check that we don't have a Chinese find mode saved to an editor that is
-    //not a Chinese find pane
-    __ASSERT_DEBUG( !((editorMode == EZhuyinFind || editorMode == EStrokeFind) &&
-        !(iAknEditorFlags & EAknEditorFlagForceTransparentFepModes))
-        , AknFepPanic(EAknFepPanicFindModeSavedToNonFindEditor));
-
-    ReadHashKeyLoopL();
-
-    UpdateNumericEditorDigitType();
-    if ( IsMfneEditor() ) 
-        {
-        UpdateLocalDigitMode();
-        }
-    
-    if (editorMode) //should be an editor that has been used before
-        {
-        if (IsFlagSet(EFlagNewSharedDataInputMode) && (IsModePermitted(sharedDataMode)) && !IsKoreanInputLanguage()
-                && (!(iAknEditorFlags & EAknEditorFlagForceTransparentFepModes)))
-            {
-            
-                {
-                //change to global mode, except in Find Pane, where we ignore
-                //GS setting
-                TryChangeModeL(sharedDataMode);
-                ClearFlag(EFlagNewSharedDataInputMode);
-                latinCaseSet = sharedDataMode & (ELatinUpper | ELatinLower);
-                if (sharedDataMode == ELatinText)
-                    {
-                    editorState->SetFlags( editorState->Flags() & ~EFlagSupressAutoUpdate );
-                    }
-                }
-            }
-
-        // Next two cases are apps/UI intitialinsg their editors in the
-        // with the modes defined in uikon.hrh, change these to an appropriate
-        // FEP mode
-        else if (editorMode == EAknEditorNumericInputMode)
-            {
-            iCharWidth = EHalfWidthChar;
-            if ( (iMode == ENumber || iMode == ENativeNumber) && 
-                 IsModePermitted(iMode))
-                {
-                TryChangeModeL( iMode );
-                }
-            else if ( IsInputModeAvailable(ENativeNumber) &&
-                 ( iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic || 
-                   iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ||
-                   iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ) )
-                {
-                TryChangeModeL( ENativeNumber );
-                }
-            else
-                {
-                TryChangeModeL( ENumber );
-                }
-            }
-        else if (editorMode == EAknEditorSecretAlphaInputMode)
-            {
-            //this is safe default as it is currently allowed in all FEPs
-            SetWesternPredictive(EFalse);
-            TryChangeModeL(ELatin);
-            }
-        else if (editorMode == EAknEditorTextInputMode)
-            {        
-            if (IsKoreanInputLanguage())
-            	{
-                if(iMode == EHangul || iMode == ENumber || iMode == EAknEditorNullInputMode )
-            		{
-            		SetWesternPredictive(EFalse);
-         			TryChangeModeL(EHangul);
-            		}
-            	else
-            		{
-            		TryChangeModeL(ELatin);
-            		}
-            	}
-            else
-            	{
-            	//this is safe default as it is currently allowed in all FEPs
-            	TryChangeModeL(ELatin); 
-            	}
-            }
-        else if (!iStrokeUsedInQWERTY)
-        	{
-        	if (editorMode == EStroke && sharedDataMode == ECangJie)
-        		{
-        		TryChangeModeL(sharedDataMode);
-        		}
-        	else
-        		{
-        		TryChangeModeL(editorMode);
-        		}
-        	}
-        else  //normal case, use locally stored mode
-            {
-            if (editorMode == ECangJie && sharedDataMode == ECangJie && iQwertyInputMode)
-            	{
-            	TryChangeModeL(EStroke);
-            	}
-            else
-            	{
-            	TryChangeModeL(editorMode);
-            	}
-            }
-        }
-    else if ((iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) 
-              && !IsFeatureSupportedJapanese())  //new find pane
-        {
-        // the default chinese find mode is the first mode in the hash key loop, except PrcChinese
-        if( iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese)
-            {
-            // Fix bug EHST-6DBFUJ: Default searching language shall be ELatin
-            // Changed from EPinyin to ELatin here
-            TryChangeModeL(ELatin);
-            }
-        else
-            {
-            TryChangeModeL(iHashKeyLoop[0]); 
-            }
-        }
-    else    //new editor
-        {
-        if (defaultInputMode == EAknEditorNumericInputMode)
-            {
-            //numeric mode is not saved to/retreived from shared data
-            iCharWidth = EHalfWidthChar;
-            
-            if( IsInputModeAvailable(ENativeNumber) && 
-                ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) )
-                {
-                TryChangeModeL( ENativeNumber );
-                }
-            else
-                {
-                TryChangeModeL( ENumber );
-                }
-            }
-        else if ((defaultInputMode == EAknEditorTextInputMode) &&
-                 ((iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) ||
-                 (iAknEditorFlags & EAknEditorFlagNoT9)))
-            {
-            //Chinese Modes or Western Predictive mode not allowed.
-            //See if we are ok going to the current shared data mode,
-            //otherwise go for a safe default
-            if (TryChangeModeL(sharedDataMode))
-                {
-                latinCaseSet = sharedDataMode & (ELatinUpper | ELatinLower);
-                }
-            else
-                {
-                TryChangeModeL(ELatin);
-                }
-            }
-        else if (defaultInputMode == EAknEditorHalfWidthTextInputMode)
-            {
-            iCharWidth = EHalfWidthChar;
-            TryChangeModeL(ELatin);
-            }
-        else if (defaultInputMode == EAknEditorHiraganaInputMode)
-            {
-            TryChangeModeL(EHiragana);
-            }
-        else if (  iLanguageCapabilities.iInputLanguageCode == ELangJapanese
-              && (defaultInputMode == EAknEditorKatakanaInputMode
-              || defaultInputMode == EAknEditorFullWidthKatakanaInputMode))
-            {
-            iCharWidth = (defaultInputMode == EAknEditorKatakanaInputMode)?
-                                EHalfWidthChar : EFullWidthChar;
-            TryChangeModeL(EKatakana);
-            }
-        else if (defaultInputMode == EAknEditorFullWidthTextInputMode)
-            {
-            iCharWidth = EFullWidthChar;
-            TryChangeModeL(ELatin);
-            }
-        else if (defaultInputMode == EAknEditorFullWidthNumericInputMode)
-            {
-            iCharWidth = EFullWidthChar;
-            if( IsInputModeAvailable(ENativeNumber) && 
-                ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) )
-                {
-                TryChangeModeL( ENativeNumber );
-                }
-            else
-                {
-                TryChangeModeL( ENumber );
-                }
-            }
-        else if (defaultInputMode == EAknEditorTextInputMode 
-            && iLanguageCapabilities.iInputLanguageCode == ELangHindi )
-            {
-            TryChangeModeL( EHindi );
-            }
-        else // Default input mode is EAknEditorTextInputMode
-            {
-            // Check possibility move this section on else if
-            if (IsKoreanInputLanguage())
-            	{
-            	TryChangeModeL(EHangul);
-            	}
-            else if (TryChangeModeL(sharedDataMode))
-                {
-                latinCaseSet = sharedDataMode & (ELatinUpper | ELatinLower);
-                }
-            else
-                {
-                TryChangeModeL(ELatin);
-                }
-                
-            }
-        }
-
-    if (!iMode)
-        {
-        // If mode change wasn't successful, try latin mode as fallback.
-        TryChangeModeL(ELatin);             
-        }
-
-    // if also fallback fails, panic.
-    __ASSERT_DEBUG(iMode, AknFepPanic(EAknFepPanicNoPermittedEditorModesAvailable));
-
-    if (iCaseMan && !latinCaseSet)
-        {
-        iCaseMan->ConfigureCaseStateFromEditorState();
-        if ( (editorState->Flags() & EFlagSupressAutoUpdate) ||
-            editorMode == EAknEditorSecretAlphaInputMode )
-            {
-            SetFlag(EFlagSupressAutoUpdate);
-            }
-        else
-            {
-            ClearFlag(EFlagSupressAutoUpdate);
-            }
-        }
-    if ((iAknEditorFlags & EAknEditorFlagForceTransparentFepModes) &&
-        IsChineseInputLanguage() && iCaseMan != NULL )
-        {
-        SetFlag(EFlagSupressAutoUpdate);
-        iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-        }
-
-    UpdateEditorContext();
-
-    // Check if this editor was previously inline editing
-    if ( WesternPredictive() && editorState->CurrentInlineEditSpan().Length())
-        { // restore the fep to an inline editing state
-        iUncommittedText = editorState->CurrentInlineEditSpan();
-        TInt docLenFep=iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-        if (iUncommittedText.iCursorPos>docLenFep)
-            iUncommittedText.iCursorPos=docLenFep;
-        if (iUncommittedText.iAnchorPos>docLenFep)
-            iUncommittedText.iAnchorPos=docLenFep;
-
-        TBuf<EMaximumFepWordLength> textToUncommit;
-        iInputCapabilities.FepAwareTextEditor()->
-            GetEditorContentForFep(textToUncommit, iUncommittedText.iAnchorPos, 
-                                   Min(iUncommittedText.Length(), EMaximumFepWordLength));
-
-        // Activates western predictive UI to an inline editing state.
-        FepUI()->ActivateUI();
-        SyncStates(EAknFepStateUIActive);
-        TInt err = iPtiEngine->SetCurrentWord(textToUncommit);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Predictive QWERTY (XT9) changes (TEST) ---->
-        // The PtiXt9Core may choose to ignore the SetCurrentInputSequence() call.
-        // Make sure our text buffer is in sync with the one in PtiEngine.
-        if(KErrNone != err)
-        	textToUncommit = iPtiEngine->CurrentWord();
-        TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-        if((maxEdSize > 0) && (iUncommittedText.iAnchorPos + textToUncommit.Length() > maxEdSize))
-        {
-        	textToUncommit.SetLength(maxEdSize - iUncommittedText.iAnchorPos);
-        	iUncommittedText.iCursorPos = maxEdSize;
-        }	
-        // Predictive QWERTY (XT9) changes <----
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        StartInlineEditL(iUncommittedText, textToUncommit, textToUncommit.Length(), EFalse);
-       
-        // Make sure editor character case in sync
-        if( iUncommittedText.iAnchorPos == 0 )
-        	iCaseMan->UpdateCase(ENullNaviEvent);
-        
-        }
-
-    if (editorState != iPreviousEditorState)
-        {
-        // we have changed editor, time to update local digits mode
-        UpdateLocalDigitMode(); 
-        iPreviousEditorState = editorState;
-        }
-
-    if(IsExtendedFlagSet(EExtendedFlagShiftReleasedOnPopup) && !(iAknEditorFlags & EAknEditorFlagFindPane) )
-        {
-        // If in FEP context, shift is released on a non fep aware dialog
-        // like "text copied to clipboard", then release the shift 
-        // when the editor comes in focus by simulating shift up event.
-        ClearExtendedFlag(EExtendedFlagShiftReleasedOnPopup);
-        TKeyEvent shiftUp = {0, EStdKeyLeftShift, 0, 0};
-        CCoeEnv::Static()->SimulateKeyEventL(shiftUp, EEventKeyUp);     
-        }
-    else if (IsFlagSet(EFlagLongShiftKeyPress) && !(iAknEditorFlags & EAknEditorFlagFindPane))
-        {
-        // Find pane editor does not require any shift simulation
-        
-        // After the "text copied" note and if the shift key was not released
-        // then simulate shift down event.
-        TKeyEvent shiftDown = {0, EStdKeyLeftShift, 0, 0};
-        CCoeEnv::Static()->SimulateKeyEventL(shiftDown, EEventKeyDown);      
-        if((!iCandidatePopup) && (KeyboardLayout() != EPtiKeyboard12Key ))
-        ResetShiftKeyMonitorL();
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    TransferFepStateToEditorL(EFalse); // ensure editor has up to date state
-#else
-    TransferFepStateToEditorL(); // ensure editor has up to date state
-#endif   
-    
-    iHashKeyMan->ResetIndicHashKeyStateL();
-    ClearExtendedFlag(EExtendedFlagShortPressHashKey);
-    }
-
-TInt CAknFepManager::ConfigureFepModeFromEditorMode(TInt aEditorMode)
-    {
-    TInt fepMode(aEditorMode);
-
-    switch (aEditorMode)
-        {
-        case EAknEditorNumericInputMode:
-            if( IsInputModeAvailable(ENativeNumber) && 
-                ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) )
-                {
-                fepMode = ENativeNumber;
-                }
-            else
-                {
-                fepMode = ENumber;
-                }
-            iCharWidth = EHalfWidthChar;
-            break;
-        case EAknEditorSecretAlphaInputMode:
-        case EAknEditorTextInputMode:
-        case EAknEditorHalfWidthTextInputMode:
-            fepMode = ELatin;
-            iCharWidth = EHalfWidthChar;
-            break;
-        case EAknEditorKatakanaInputMode:
-            fepMode = EKatakana;
-            iCharWidth = EHalfWidthChar;
-            break;
-        case EAknEditorFullWidthTextInputMode:
-            fepMode = ELatin;
-            iCharWidth = EFullWidthChar;
-            break;
-        case EAknEditorFullWidthKatakanaInputMode:
-            fepMode = EKatakana;
-            iCharWidth = EFullWidthChar;
-            break;
-        case EAknEditorFullWidthNumericInputMode:
-            if( IsInputModeAvailable(ENativeNumber) && 
-                ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ||
-                  iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) )
-                {
-                fepMode = ENativeNumber;
-                }
-            else
-                {
-                fepMode = ENumber;
-                }
-            iCharWidth = EFullWidthChar;
-            break;
-        case EAknEditorHiraganaKanjiInputMode:
-            fepMode = EHiraganaKanji;
-            break;
-        case EAknEditorHiraganaInputMode:
-            fepMode = EHiragana;
-            break;
-        default:
-            break;
-        }
-    return fepMode;
-    }
-
-void CAknFepManager::LaunchHelpTextQueryL()
-    {
-    TUid fepUid = CCoeEnv::Static()->FepUid();  
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-    iUiInterface->LaunchHelpTextQueryL(R_AKNFEP_HELP_TEXT);
-    PrepareFepAfterDialogExitL(fepUid);
-    }
-
-void CAknFepManager::UpdateEditorContext() const
-    {
-    if(EditingStateIndicator())
-        {
-        iUiInterface->UpdateEditorContext(*EditingStateIndicator(), *FepUI());
-        }
-    }
-
-TBool CAknFepManager::TextIsValidInEditor(const TDesC& aText)
-    {
-    TBool ret = ETrue;
-    TUint length = aText.Length();
-    TCoeInputCapabilities::MCoeFepSpecificExtensions* ipCapExt = 
-                           iInputCapabilities.FepSpecificExtensions(TUid::Uid(EAknFepUid));
-    if (ipCapExt)
-        {
-        while(length--)
-            {
-            if (!ipCapExt->IsValidCharacter(aText[length]))
-                {
-                ret = EFalse;
-                }
-            }
-        }
-    return ret;
-    }
-
-TBool CAknFepManager::CharIsValidInEditor(TChar aChar)
-    {
-    TBool ret = ETrue;
-    TCoeInputCapabilities::MCoeFepSpecificExtensions* ipCapExt = 
-                           iInputCapabilities.FepSpecificExtensions(TUid::Uid(EAknFepUid));
-    if (ipCapExt)
-        {
-        if (!ipCapExt->IsValidCharacter(aChar))
-            {
-            ret = EFalse;
-            }
-        }
-    return ret;
-    }
-
-void CAknFepManager::SetCursorType(TChineseFepCursorType aType)
-    {
-    TBool setToTrue = ETrue;
-    TTextCursor newCursor;
-
-    newCursor.iType=TTextCursor::ETypeRectangle;
-    if (aType == EPassive)
-        {
-        newCursor.iType=TTextCursor::ETypeHollowRectangle;
-        }
-    if ( IsFepAwareTextEditor() )
-        {
-        iInputCapabilities.FepAwareTextEditor()->Extension1()->SetCursorType(setToTrue, newCursor);
-        }
-    }
-
-MAknEditingStateIndicator* CAknFepManager::EditingStateIndicator() const
-    {
-    MAknEditingStateIndicator* indicator = NULL;
-
-    // First ask indicator from controls owning the editor.
-    // For example CAknQueryControl and CAknSearchField implement
-    // their own indicators.
-
-    MObjectProvider* objectProvider = NULL;
-
-    // First try through CAknEdwinState object.
-    // It exists with CEikEdwin-derived editors.
-    
-		MCoeFepAwareTextEditor* editor = NULL;
-		MCoeFepAwareTextEditor_Extension1* ext1 = NULL;
-		CAknEdwinState* state = NULL;
-
-    editor = iInputCapabilities.FepAwareTextEditor();
-    
-    if(editor)
-    	ext1 = editor->Extension1() ;
-    if(ext1)
-      state = (CAknEdwinState*)ext1->State( KNullUid ) ;
-      
-    if ( IsFepAwareTextEditor() && ( editor  ) && ( ext1) && ( state ))
-        {
-        objectProvider = state->ObjectProvider();
-        }
-
-    // If not found, try to get object provider from input capabilities.
-    // It is set there with CEikMfne-derived editors.
-
-    if ( !objectProvider )
-        {
-        objectProvider = iInputCapabilities.ObjectProvider();
-        }
-
-    if ( objectProvider )
-        {
-        indicator = objectProvider->MopGetObject( indicator );
-        }
-
-    // If no indicator was supplied, get one from CAknEnv.
-    // By default, this one is FEP's own indicator.
-
-    if ( !indicator )
-        {
-        indicator = CAknEnv::Static()->EditingStateIndicator();
-        if (indicator != iIndicator)
-            {
-            CAknEnv::Static()->SwapEditingStateIndicator(iIndicator);
-            indicator = iIndicator;
-            }
-        }
-
-    return indicator;
-    }
-
-TBool CAknFepManager::TryHandleArrowRightEventL(TInt aDokumentLength)
-    {
-    TBool ret = EFalse;
-    TBool thai = (iLanguageCapabilities.iInputLanguageCode == ELangThai);
-    if (  iInputCapabilities.FepAwareTextEditor() &&
-          (iSharedDataInterface->SpaceWithScrollRight() || thai ) &&
-          (!(iAknEditorFlags & EAknEditorFlagNoLRNavigation)) &&
-          iFepManState == EAknFepStateInitial &&
-          (!IsFlagSet(EFlagInsideInlineEditingTransaction) ) &&
-          (!IsFlagSet(EFlagShiftKeyDepressed)) &&
-          iMode != EHiragana )          //  Not supported in only Hiragana input mode
-        {
-        TInt cursorPos = DocPos().iPos;
-        TCursorSelection cursorSel;
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSel);
-        if (( cursorPos == aDokumentLength)
-            && !cursorSel.Length()
-            && (IsFeatureSupportedJapanese() || (PreviousChar() != 0x0020)) )
-            {
-            // set to half-width space or full-width space by current input mode.
-            //    0x0020 is unicode for half-width space
-            //    0x3000 is unicode for full-width space
-            TUint code(0);
-            switch (iMode)
-                {
-                case EHiraganaKanji:
-                    code = 0x3000;
-                    break;
-                case ELatin:
-                    code = (!WesternPredictive() && iCharWidth == EFullWidthChar)?
-                            0x3000 : 0x0020;
-                    break;
-                case EHiragana:
-                    // Not supported in only Hiragana input mode
-                    break;
-                case EHangul:
-                	code = 0x0020;
-                	break;
-                case ENumber:
-                case ENativeNumber:
-                case EKatakana:
-                default:
-                    code = (iCharWidth == EFullWidthChar)? 0x3000 : 0x0020;
-                    break;
-                }
-            if (code)
-                {
-                SimulateKeyEventL(code); // add a space
-                SimulateKeyEventL(EKeyF19); // Asyncronous case update
-                ret = ETrue;
-                }
-            }
-        }
-    return ret;
-    }
-
-TBool CAknFepManager::TryHandleArrowLeftEventL(TInt aDokumentLength)
-    {
-    TBool ret = EFalse;
-    if (iInputCapabilities.FepAwareTextEditor() &&
-        iSharedDataInterface->SpaceWithScrollRight() &&
-        (!(iAknEditorFlags & EAknEditorFlagNoLRNavigation)) &&
-        iFepManState == EAknFepStateInitial &&
-        (!IsFlagSet(EFlagInsideInlineEditingTransaction) ) &&
-        (!IsFlagSet(EFlagShiftKeyDepressed)) &&
-        iMode != EHiragana )          //  Not supported in only Hiragana input mode
-        {
-        TInt cursorPos = DocPos().iPos;
-        TCursorSelection cursorSel;
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSel);
-        TText previousChar = PreviousChar();
-        if (( cursorPos == aDokumentLength)
-            && !cursorSel.Length()
-            && (IsFeatureSupportedJapanese()
-            && (previousChar == 0x3000 || previousChar == 0x0020) )) // full width or half-width space.
-            {
-            SimulateKeyEventL(EKeyBackspace);
-            SimulateKeyEventL(EKeyF19); // Asyncronous case update
-            ret = ETrue;
-            }
-        }
-    return ret;
-    }
-
-TBool CAknFepManager::TryHandleArrowDownEventL(TInt aDokumentLength)
-    {
-    TBool ret = EFalse;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // Predictive QWERTY (XT9) changes ---->
-    if ( iWesternPredictive &&
-         IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) && !(iAknEditorFlags & EAknEditorFlagNoT9) 
-         && !IsFlagSet(EFlagInsideMultitapInlineEditingTransaction) && !IsFlagSet(EFlagNoMatches))
-        {
-        LaunchCandidatePopupListL();
-        ret = ETrue;
-        }
-    // Predictive QWERTY (XT9) changes <----
-    else 
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    if  ( ( iAknEditorFlags & EAknEditorFlagAllowEntersWithScrollDown ) &&
-          iInputCapabilities.FepAwareTextEditor() &&
-          ( iSharedDataInterface->EntersWithScrollDown() ) &&
-          iFepManState == EAknFepStateInitial &&
-          !IsFlagSet(EFlagInsideInlineEditingTransaction) &&
-          !IsFlagSet(EFlagShiftKeyDepressed) )
-        {
-        TInt cursorPos = DocPos().iPos;
-        TCursorSelection cursorSel;
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(cursorSel);
-        if ( cursorPos == aDokumentLength &&
-            !cursorSel.Length() )
-            {
-            SimulateKeyEventL(EKeyEnter); // add line feed
-            SimulateKeyEventL(EKeyF19); // Asyncronous case update
-            ret = ETrue;
-            }
-        }
-    return ret;
-    }
-
-TUint CAknFepManager::EditorModeFromFepMode(TInt aFepMode)
-    {
-    TUint editorMode(aFepMode);
-    switch (aFepMode)
-        {
-        case ELatin:
-            if (iPermittedInputModes & EAknEditorTextInputMode)
-                {
-                editorMode = EAknEditorTextInputMode;
-                if (IsFeatureSupportedJapanese())
-                    {
-                    if (iCharWidth == EHalfWidthChar 
-                    && (iPermittedInputModes & EAknEditorHalfWidthTextInputMode))
-                        {
-                        editorMode = EAknEditorHalfWidthTextInputMode;
-                        }
-                    else if (iCharWidth == EFullWidthChar 
-                         && (iPermittedInputModes & EAknEditorFullWidthTextInputMode))
-                        {
-                        editorMode = EAknEditorFullWidthTextInputMode;
-                        }
-                    }
-                }
-            else if (iPermittedInputModes & EAknEditorHalfWidthTextInputMode)
-                {
-                editorMode = EAknEditorTextInputMode;
-                if (IsFeatureSupportedJapanese())
-                    {
-                    editorMode = EAknEditorHalfWidthTextInputMode;
-                    if (iCharWidth == EFullWidthChar 
-                     &&(iPermittedInputModes & EAknEditorFullWidthTextInputMode))
-                        {
-                        editorMode = EAknEditorFullWidthTextInputMode;
-                        }
-                    }
-                }
-            else if (iPermittedInputModes & EAknEditorFullWidthTextInputMode)
-                {
-                editorMode = EAknEditorTextInputMode;
-                if (IsFeatureSupportedJapanese())
-                    {
-                    editorMode = EAknEditorFullWidthTextInputMode;
-                    }
-                }
-            else
-                {
-                editorMode = EAknEditorSecretAlphaInputMode;
-                }
-            break;
-        case ENumber:
-        case ENativeNumber:
-            editorMode = EAknEditorNumericInputMode;
-            if (iCharWidth == EFullWidthChar 
-            && (iPermittedInputModes & EAknEditorFullWidthNumericInputMode))
-                {
-                editorMode = EAknEditorFullWidthNumericInputMode;
-                }
-            break;
-    	case EHangul: 
-       		editorMode = EAknEditorTextInputMode;       	
-       		break;
-        default:
-            if (IsFeatureSupportedJapanese())
-                {
-                editorMode = EditorMode(aFepMode, iCharWidth);
-                }
-            break;
-        }
-    return editorMode;
-    }
-
-CAknKeySoundSystem* CAknFepManager::SoundSystem() const
-    {
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    if (coeEnv->AppUi())
-        {
-        return iAvkonAppUiBase->KeySounds();
-        }
-    return NULL;
-    }
-
-void CAknFepManager::SetHashKeyStyle()
-    {
-    CAknFepHashKeyManager::THashKeyStyle style = CAknFepHashKeyManager::EHashKeyStyleWestern;
-
-    switch (iLanguageCapabilities.iInputLanguageCode)
-        {
-        case ELangPrcChinese:
-        case ELangHongKongChinese:
-        case ELangTaiwanChinese:
-            style = CAknFepHashKeyManager::EHashKeyStyleChineseWithWestern;
-            break;
-        case ELangJapanese:
-            style = CAknFepHashKeyManager::EHashKeyStyleJapanese;
-            break;
-        case ELangKorean:
-        	style = CAknFepHashKeyManager::EHashKeyStyleKoreanWithWestern;
-        	break;
-        default:
-            break;
-        }
-
-    iHashKeyMan->SetHashKeyStyle( style );
-    }
-
-void CAknFepManager::ReadHashKeyLoopL()
-    {
-    iHashKeyLoop.Reset();
-
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    TResourceReader reader;
-    coeEnv->CreateResourceReaderLC(reader, R_HASH_KEY_LOOP_ALL_INPUT_MODES);
-
-    iVariantPermittedModes = 0;
-    const TInt count = reader.ReadInt16();
-    for (TInt ii=0; ii<count; ii++)
-        {
-        TInt mode = reader.ReadInt32();
-        if ( IsInputModeAvailable(mode) )
-            {
-            if ( mode == EPRCFind)
-                {
-                mode = ELatin;
-                }
-            iHashKeyLoop.Append(mode);
-            iVariantPermittedModes |= mode;
-            }
-        }
-    CleanupStack::PopAndDestroy(); //reader
-    }
-
-TBool CAknFepManager::IsValidInLineCharacter(TChar aCharacter) const
-    {
-    TBool validInlineCharacter = ETrue;
-    TChar::TCategory category = aCharacter.GetCategory();
-    TChar::TBdCategory bdCategory = aCharacter.GetBdCategory();
-    switch (iLanguageCapabilities.iInputLanguageCode)
-        {
-        case ELangArabic:
-            {
-            // Needs more specific category
-            validInlineCharacter = ( (category & TChar::ELetterOtherGroup) &&
-                (bdCategory == TChar::ERightToLeftArabic) );
-            break;
-            }
-        case ELangHebrew:
-            {
-            // Needs more specific category
-            validInlineCharacter = ( (category & TChar::ELetterOtherGroup) &&
-                (bdCategory == TChar::ERightToLeft) );
-            break;
-            }
-        case ELangFarsi:
-        case ELangUrdu:
-            {
-            // Needs more specific category
-            validInlineCharacter = ( (category & TChar::ELetterOtherGroup) &&
-                (bdCategory == TChar::ERightToLeftArabic) );
-            break;
-            }
-            /*Hindi*/            
-        case ELangHindi:
-#ifdef RD_MARATHI
-			/* Same for Marathi */
-        case ELangMarathi:
-#endif
-            {
-            // Needs more specific category
-            validInlineCharacter = IsValidInlineIndicCharacter(aCharacter);
-            
-            break;
-            }
-        case ELangVietnamese:
-            {
-            validInlineCharacter = (aCharacter.IsAlpha() &&
-                                    !((category & TChar::ELetterOtherGroup))) ||
-                                    ((category == TChar::EMarkGroup) && 
-                                    (bdCategory == TChar::ENonSpacingMark));
-            break;
-            }
-        case ELangThai:
-            {
-            validInlineCharacter = (!(aCharacter.IsSpace() || (aCharacter == 0x2029))) &&
-                                   ((aCharacter.IsAlpha() && 
-                                    !(category & TChar::ELetterOtherGroup)) ||
-                                   ((category & TChar::EMarkGroup) && 
-                                    (bdCategory == TChar::ENonSpacingMark)) ||
-                                   ((category & TChar::ELetterModifierGroup) && 
-                                    (bdCategory == TChar::ELeftToRight)) ||
-                                   ((category & TChar::ESeparatorGroup ) && 
-                                    (bdCategory == TChar::EWhitespace))||
-                                   ((category & TChar::EMcCategory) && 
-                                    (bdCategory == TChar::ELeftToRight)));
-            break;                                    
-            }
-        case ELangTaiwanChinese:
-        case ELangHongKongChinese:
-        case ELangPrcChinese:
-        case ELangEnglish:
-            {                           
-#ifdef RD_INTELLIGENT_TEXT_INPUT   
-            // for qwerty special characters should not break the word
-            if( iQwertyInputMode && ( KeyboardLayout() !=EPtiKeyboardHalfQwerty ))
-                {
-                validInlineCharacter = (!( aCharacter.IsSpace() || (aCharacter == 0x2029) || 
-                                        ( aCharacter.IsAlpha() && 
-                                         (category & TChar::ELetterOtherGroup))||
-                                        ((category & TChar::EMarkGroup) && 
-                                         (bdCategory == TChar::ENonSpacingMark)) ||
-                        				((category & TChar::ELetterModifierGroup) && 
-                        		 		 (bdCategory == TChar::ELeftToRight)) ||
-                        				((category & TChar::ESeparatorGroup ) && 
-                        		 		 (bdCategory == TChar::EWhitespace))));
-                }            
-            else                
-#endif      // whereas for ITUT and Half Qwerty they should
-                {
-                validInlineCharacter = ( aCharacter.IsAlpha() && !(category & TChar::ELetterOtherGroup) );
-                }            
-            break;
-            }
-        default:
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT            
-			// for qwerty special characters should not break the word
-			
-			if( iQwertyInputMode && ( KeyboardLayout() !=EPtiKeyboardHalfQwerty ) )
-				{
-				validInlineCharacter = (!(aCharacter.IsSpace() || (aCharacter == 0x2029)));	
-				}
-			else	            
-#endif		// whereas for ITUT and Half Qwerty they should
-				{
-				validInlineCharacter = ( aCharacter.IsAlpha() && !(category & TChar::ELetterOtherGroup) );
-				}
-			
-
-            break;
-            }
-        }
-	
-	TUint16 key = 0;
-	if(validInlineCharacter)
-		{
-		validInlineCharacter = EFalse;
-        ConvertCharToKey(aCharacter, key);
-		if(0 != key)
-			{
-			validInlineCharacter = ETrue;
-			}
-		}
-		
-    return validInlineCharacter;
-    }
-TBool CAknFepManager::IsValidInlineIndicCharacter(TChar aCharacter) const
-    {
-    TBool validInlineCharacter = ETrue;
-    TChar::TCategory category = aCharacter.GetCategory();
-    TChar::TBdCategory bdCategory = aCharacter.GetBdCategory();
-    
-    if(!((category == TChar::EPoCategory) || aCharacter == 0x0950 || aCharacter == 0x093D))
-        {
-        validInlineCharacter = ((( (category & TChar::ELetterOtherGroup) 
-                                      && (bdCategory == TChar::ELeftToRight) )
-                                  ||( (category & TChar::EMcCategory) 
-                                      && (bdCategory == TChar::ELeftToRight) )
-                                  ||( (category & TChar::EMarkGroup) 
-                                      && (bdCategory == TChar::ENonSpacingMark)) )
-                                 &&( ! ( aCharacter.IsAlpha() 
-                                      && !(category & TChar::ELetterOtherGroup) )));
-        }
-    else 
-        {
-        validInlineCharacter = EFalse;
-        }
-    return  validInlineCharacter;
-    }
-
-TInt CAknFepManager::WordConcatenationTimerTimeoutCallback(TAny* aObj)
-    {
-    TRAPD(err, static_cast<CAknFepManager*>(aObj)->WordConcatenationTimerTimeoutL());
-    if (err)
-        {
-        static_cast<CAknFepManager*>(aObj)->CleanUpFep();
-        return KErrNoMemory;
-        }
-    return KErrNone;
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    
-TBool CAknFepManager::IsHybridAplhaEditor() const
-    {
-    TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EHybridAlphaNumericEditor);
-    return phoneIdle;
-    }
-
-TBool CAknFepManager::IsHybridAlphaModeChangedtoAplhanumeric() const
-    {
-    return iHybridAplphaChangedToAlphanumeric;
-    }
-
-TBool CAknFepManager::IsPhoneNumberEditor() const
-    {
-    TBool phoneEditor = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor);
-    return phoneEditor;
-    }
-CAknFepFnKeyManager::TFnKeyState CAknFepManager::FnKeyState()
-    {
-    return iFnKeyManager->FnKeyState();
-    }
-void CAknFepManager::SetFnKeyState(CAknFepFnKeyManager::TFnKeyState aState)
-    {
-    iFnKeyManager->SetFnKeyState(aState);
-    }
-#ifdef __REVERSE_FN_KEY_SUPPORTED
-TBool CAknFepManager::IsReverseFnkeyInput()
-    {
-    return iIsReverseFnkeyInput;
-    }
-void CAknFepManager::SetReverseFnkeyInputMode(TBool iIsOn)
-	{
-	iIsReverseFnkeyInput = iIsOn;
-	}
-TBool CAknFepManager::IsValidCharInNumericEditorL( TChar aChar ) const
-    {
-    if(!EditorState())
-        {
-    	return EFalse;    	
-        }
-    TBool validChar = EFalse;
-    if( aChar.IsDigit() )
-        {
-        return ETrue;
-        }
-    TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor);            
-    if( (phoneIdle || (IsHybridAplhaEditor() && !IsHybridAlphaModeChangedtoAplhanumeric()))
-	 	&& aChar == '#')    
-    	{
-    	return ETrue;
-    	}
-	if( aChar == '.' && EAknEditorConverterNumberModeKeymap == iAknEditorNumericKeymap)
-        {
-        return ETrue;
-        }	
-    if( IsAllowedKeymappingForNumberMode(aChar) )
-    	{
-    	return ETrue;
-    	}
-    	
-    TInt resourceSCTId = EditorState()->SpecialCharacterTableResourceId();  
-    // No SCT table use default SCT
-    if( resourceSCTId == KErrNotFound || !resourceSCTId || 
-            (IsHybridAplhaEditor()&& !IsHybridAlphaModeChangedtoAplhanumeric()))
-        {
-        resourceSCTId = NumericModeSCTResourceId();
-        }   
-    
-    if( resourceSCTId )
-        {
-        TResourceReader reader;
-        CEikonEnv::Static()->CreateResourceReaderLC(reader,resourceSCTId);
-        reader.ReadInt32(); // skip sct id    
-        TPtrC chars=reader.ReadTPtrC(); // read special char        
-        validChar = ( chars.Locate(aChar)>=0 );                      
-        CleanupStack::PopAndDestroy();
-        }
-    return validChar;
-    
-    }
-TInt CAknFepManager::GetNumericSCTResID()
-    {
-    if(!EditorState())
-      	{
-        return NumericModeSCTResourceId();
-    	  }
-    TInt resourceSCTId = EditorState()->SpecialCharacterTableResourceId();
-    if(resourceSCTId == KErrNotFound || !resourceSCTId )
-        {
-        resourceSCTId = NumericModeSCTResourceId();
-        }
-    return resourceSCTId;
-    }
-
-TBool CAknFepManager::IsValidCharForNumericInFnReverseL(TInt aKey, TPtiTextCase aCase) 
-    {
-    if(!EditorState())
-        {
-    	return EFalse;    	
-        }
-    TBuf<32> keyMaps;
-    iPtiEngine->MappingDataForKey( (TPtiKey)aKey, keyMaps, aCase);  
-    
-    TBool validKey(EFalse);   
-    if( keyMaps.Length()<= 0 )
-        {
-        return validKey;
-        }
-    TChar chr =keyMaps[0];
-    if( chr.IsDigit() )
-        {
-        return ETrue;
-        }
-
-    TInt resourceSCTId = EditorState()->SpecialCharacterTableResourceId();  
-    // No SCT table use default SCT
-    if( resourceSCTId == KErrNotFound || !resourceSCTId )
-        {
-        resourceSCTId = NumericModeSCTResourceId();
-        }   
-    
-    if( resourceSCTId )
-        {
-        TResourceReader reader;
-        CEikonEnv::Static()->CreateResourceReaderLC(reader,resourceSCTId);
-        reader.ReadInt32(); // skip sct id    
-        TPtrC chars=reader.ReadTPtrC(); // read special char
-        
-        validKey = (chars.Locate(chr)>=0 );
-        if(chr.IsAlpha())
-            {
-            chr.UpperCase();
-            validKey |= (chars.Locate(chr)>=0 ) ;
-            }                 
-            
-        CleanupStack::PopAndDestroy();
-        }
-         
-    return validKey;
-    
-    }
-#endif //__REVERSE_FN_KEY_SUPPORTED
-void CAknFepManager::AddOneSpaceOrMoveCursorL()
-	{
-	if(static_cast<TChar>(NextChar()).IsSpace())
-		{
-		TCursorSelection sel;
-		iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(sel);
-		sel.iCursorPos++;
-		sel.iAnchorPos++;
-		iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);	                		
-		}
-	else if(IsEditorHasFreeSpace())
-    	{
-        SimulateKeyEventL(EKeySpace);
-    	}
-	SimulateKeyEventL(EKeyF19);
-	}
-#endif
-TBool CAknFepManager::IsOnlyNumericPermitted() const
-    {
-    if (IsFeatureSupportedJapanese())
-        {
-        return !(iPermittedInputModes & ~(EAknEditorNumericInputMode 
-               | EAknEditorFullWidthNumericInputMode) );
-        }
-    else
-        {
-        // Only non-japanese modes are considered.
-        return !( iPermittedInputModes & 
-                  (EAknEditorTextInputMode | EAknEditorSecretAlphaInputMode) );
-        }
-    }
-
-void CAknFepManager::TryIncrementModeL(TInt aCurrentMode)
-    {
-    //check that we are currently in the correct mode
-    __ASSERT_DEBUG(IsModePermitted(iMode),
-                   AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-    __ASSERT_DEBUG(iInputCapabilities.FepAwareTextEditor(),
-                   AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor));
-
-    const TInt lastModePos = iHashKeyLoop.Count()-1 ;
-    const TInt currentModePos = iHashKeyLoop.Find(aCurrentMode);
-    TInt newModePos = currentModePos;
-
-    __ASSERT_DEBUG(currentModePos != KErrNotFound ,
-                   AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-
-    do  {
-        if (newModePos == lastModePos)
-            {
-            //we've got to the end of the hash key loop, go back to the beginning
-            newModePos = 0;
-            }
-        else
-            {
-            newModePos++;
-            }
-
-        if (TryChangeModeL(iHashKeyLoop[newModePos]))
-            {
-            return; //succeeded to move to next available mode
-            }
-        }
-        while (newModePos != currentModePos);
-    }
-
-void CAknFepManager::TryIncrementModeChineseQwertyL(TInt aCurrentMode)
-    {
-    __ASSERT_DEBUG(IsModePermitted(aCurrentMode),AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-
-    const TInt lastModePos = iHashKeyLoop.Count() - 1 ;
-    const TInt currentModePos = iHashKeyLoop.Find(aCurrentMode);
-    TInt newModePos = currentModePos;
-
-    __ASSERT_DEBUG(currentModePos != KErrNotFound ,
-                   AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-
-    do  
-        {
-        if (newModePos == lastModePos)
-            {
-            //we've got to the end of the hash key loop, go back to the beginning
-            newModePos = 0;
-            }
-        else
-            {
-            newModePos++;
-            }
-        }while(iHashKeyLoop[newModePos] == ENumber && !IsOnlyNumericPermitted()); // no number mode in Chinese qwerty input, except those editors which only support number
-            
-    SendEventsToPluginManL( EPluginCloseMode, EFalse );
-    if(TryChangeModeL(iHashKeyLoop[newModePos]))
-        {
-        return; //succeeded to move to next available mode
-        }
-    }
-
-void CAknFepManager::TryIncrementChineseModeForQwertyL( TInt aCurrentMode )
-    {
-    __ASSERT_DEBUG(IsModePermitted(aCurrentMode),AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-
-    const TInt lastModePos = iHashKeyLoop.Count() - 1;
-    const TInt currentModePos = iHashKeyLoop.Find( aCurrentMode );
-    TInt newModePos = currentModePos;
-
-    __ASSERT_DEBUG(currentModePos != KErrNotFound ,
-        AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-
-    do
-        {
-        if ( newModePos == lastModePos )
-            {
-            //we've got to the end of the hash key loop, go back to the beginning
-            newModePos = 0;
-            }
-        else
-            {
-            newModePos++;
-            }
-        }
-    while ( (iHashKeyLoop[newModePos] == ENumber
-        && !IsOnlyNumericPermitted()) || (iHashKeyLoop[newModePos] == ELatin
-        && IsChangeModeByShiftAndSpace() ) ); // no number mode and latin in Chinese qwerty input, except those editors which only support number
-
-    SendEventsToPluginManL( EPluginCloseMode, EFalse );
-    if ( TryChangeModeL( iHashKeyLoop[newModePos] ) )
-        {
-        return; //succeeded to move to next available mode
-        }
-    }
-
-void CAknFepManager::TryChangeToSharedDataModeL()
-    {
-    TInt sharedDataMode = iSharedDataInterface->InputMode();
-    TryChangeModeL(sharedDataMode);
-    }
-
-void CAknFepManager::TryChangeToModeBeforeL()
-    {
-    if (TryChangeModeL(iModeBefore))
-        {
-        if (iModeBefore==ELatin)
-            {
-            if ( iCaseBefore )
-                {
-                iCaseMan->SetCurrentCase(iCaseBefore);
-                }
-            else
-                {
-                iCaseMan->UpdateCase(ENullNaviEvent);
-                }
-            }
-        }
-    }
-
-#ifdef RD_HINDI_PHONETIC_INPUT    
-
-TBool CAknFepManager::IsIndicPhoneticInputLanguage() const
-    {
-    MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage();
-    TInt currentPtiLang = (ptilang)? ptilang->LanguageCode() : 0;
-    return (TAknFepUiIndicInputManager::IsIndicPhoneticLanguage(TLanguage(currentPtiLang)));
-    }
-
-void CAknFepManager::TryChangePhoneticModeL()
-    {
-    MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage();
-    TInt currentPtiLang = (ptilang)? ptilang->LanguageCode() : 0;
-    TInt lang = 0;
-    
-    (TAknFepUiIndicInputManager :: IsIndicPhoneticLanguage(TLanguage(currentPtiLang)))? 
-    lang = ELangEnglish : lang = iLanguageCapabilities.iInputLanguageCode;
-    
-    iPtiEngine->ActivateLanguageL(lang);
-    iLangMan->SetInputLanguageL(lang);
-    InternalFepUI()->SetMode(iMode, EFalse, iQwertyInputMode);  
-    iCaseMan->UpdateCase(ENullNaviEvent);
-    UpdateIndicators();
-    CommitInlineEditL();
-    }
-    
-TInt CAknFepManager::SetPhoneticIndicator(TLanguage aInputLanguage)
-    {
-    TInt newState = 0;
-    TInt currentCase = iCaseMan->CurrentCase();
-
-    switch(aInputLanguage)
-        {
-        case KLangHindiPhonetic: 
-            if(currentCase == EAknEditorUpperCase)  
-                {
-                newState = EIndicatorStateHindiPhoneticUpper;   
-                }
-            else
-                {
-                newState = EIndicatorStateHindiPhoneticLower;   
-                }
-        break;
-        default:
-        break;
-        }
-    return newState;        
-    }
-#endif
-TBool CAknFepManager::TryChangeModeL(TInt aMode)
-    {
-    CAknEdwinState* editorState = EditorState();
-    TInt sharedDataMode = iSharedDataInterface->InputMode();
-
-    if (aMode == EStroke && iQwertyInputMode && sharedDataMode == ECangJie)
-    	{
-    	iEditorStateStrokeUsed = editorState;
-    	iStrokeUsedInQWERTY = ETrue;
-    	}
-    else if (iEditorStateStrokeUsed == editorState)
-    	{
-    	iStrokeUsedInQWERTY = EFalse;
-    	}
-    
-    if (aMode == ECangJie && !iQwertyInputMode && 
-    		(iFepPluginManager->PluginInputMode() != EPluginInputModeVkb
-			|| iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ))
-        {
-        aMode = EStroke;
-        }
-    
-    if (aMode == ELatinText ||aMode == ELatinUpper || aMode == ELatinLower)
-        {
-        if (TryChangeModeL(ELatin))
-            {
-            if ( !(iAknEditorFlags & EAknEditorFlagFixedCase) )
-                {
-                if (aMode == ELatinText)
-                    {
-                    ClearFlag(EFlagSupressAutoUpdate);
-                    }
-                else if (aMode == ELatinUpper)
-                    {
-                    //Modify for allow text case after entering a dot and space
-                    ClearFlag(EFlagSupressAutoUpdate);
-                    //Modify for allow text case after entering a dot and space
-                    iCaseMan->SetCurrentCase(EAknEditorUpperCase);
-                    }
-                else //lower
-                    {
-                    //Modify for allow text case after entering a dot and space
-                    ClearFlag(EFlagSupressAutoUpdate);
-                    //Modify for allow text case after entering a dot and space
-                    iCaseMan->SetCurrentCase(EAknEditorLowerCase);
-                    }
-                UpdateIndicators();
-                }
-            return ETrue;
-            }
-        return EFalse;
-        }
-
-    if ( iQwertyInputMode && ( aMode == ENumber || aMode == ENativeNumber ) && 
-         !IsOnlyNumericPermitted() 
-         // Add this condition to exclude all touch inputmethods. 
-         // When change to number range on touch inputmethods, fn key state can't be locked.          
-         && iFepPluginManager 
-         && iFepPluginManager->PluginInputMode() == EPluginInputModeNone )
-        {
-        if (TryChangeModeL(ELatin))
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            // If editor should be launched in FnLock state, because in case of QWERTY keypad
-            // Current numeric mode converted to alphanumeric mode.
-            if( iFnKeyManager )
-                {
-                iFnKeyManager->SetFnKeyState(CAknFepFnKeyManager::EFnKeyLock);
-                SetCase((TCase)EFnKeyLowerCase);
-                }
-#endif // RD_INTELLIGENT_TEXT_INPUT
-            return ETrue;
-            }
-        }
-
-    if (IsModePermitted(aMode))
-        {
-        if (aMode == ELatin)
-            {
-            if (iAknEditorFlags & EAknEditorFlagNoT9)
-                {
-                SetWesternPredictive(EFalse);
-                }
-
-            if (iAknEditorFlags & EAknEditorFlagFixedCase)
-                {
-                iCaseMan->ConfigureCaseStateFromEditorState();
-                }
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-        if (!iQwertyInputMode && WesternPredictive() && iFepManState == EAknFepStateUIActive)
-#else
-        if (WesternPredictive() && iFepManState == EAknFepStateUIActive)
-#endif            
-            {
-            TryRemoveNoMatchesIndicatorL();
-            UpdateCbaL(NULL);
-            }
-        TryCloseUiL();
-
-        // getting a new ui manager object corresponded in aMode.
-        MAknFepManagerInterface* fepUI = iLangMan->GetFepUI(aMode, iCharWidth, 
-                                                            IsPredictive(aMode));
-        // getting the currect language id from ptiengine.
-        MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage();
-        TInt currentPtiLang = (ptilang)? ptilang->LanguageCode() : 0;
-        // getting the supported language id in current ui manager.
-        TInt currentUiLang = fepUI->SupportLanguage(aMode);
-
-        // changing language id both ptiengine and ui manager
-        // 1. check the currect ui manager for input mode
-        // 2. check the current ptiengine and ui manager
-        if (iCurrentFepUI != fepUI
-         || currentPtiLang != currentUiLang)
-            {
-            iCurrentFepUI = fepUI;
-            TInt err = iPtiEngine->ActivateLanguageL(currentUiLang);
-            if (err != KErrNone)
-                {
-#ifdef _DEBUG
-                RDebug::Print(_L("ActivateLanguageL error return code=[%d] language id=[%d]"),
-                                err, iLanguageCapabilities.iInputLanguageCode);
-#endif
-                ChangeInputLanguageL(ELangEnglish);
-                return ETrue;
-                }
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef FF_DUAL_LANGUAGE_SUPPORT
-        // Change secondary input
-        iPtiEngine->SetSecondaryInputL(iSharedDataInterface->InputTextLanguageSecondary());
-#endif //FF_DUAL_LANGUAGE_SUPPORT
-#endif
-
-//#ifndef RD_INTELLIGENT_TEXT_INPUT 
-            TBuf<50> mapData;
-            //Init Data
-            for (TInt i = 0; i < 50; i++)
-                {
-                mapData.Append(0);
-                }
-
-            //Backup original input mode
-            TPtiEngineInputMode oriMode = iPtiEngine->InputMode();
-            
-            //Change current input mode, since MappingDataForKey I/F only worked
-            //when in EPtiEngineMultitapping mode
-            iPtiEngine->SetInputMode(EPtiEngineMultitapping);
-            iPtiEngine->MappingDataForKey(EPtiKey1, mapData, iPtiEngine->Case());
-            
-            //Restore
-            iPtiEngine->SetInputMode(oriMode);
-
-            //Get first three symbols
-			if(mapData.Length() > 0)
-				{
-	        	iSymbolData.iSymbol1 = mapData[0];
-	            
-				if (mapData.Length() > 1)
-	            	iSymbolData.iSymbol2 = mapData[1];
-	        	if (mapData.Length() > 2)
-	        		iSymbolData.iSymbol3 = mapData[2];
-				}
-            
-            //Write data to stream
-            if (iFepPluginManager && iFepPluginManager->CurrentPluginInputFepUI())
-                {
-                iFepPluginManager->CurrentPluginInputFepUI()->HandleCommandL(
-                            ECmdPenInputSymbolOfHardKeyOne, reinterpret_cast<TInt>(&iSymbolData));
-                }
-//#endif                
-        iMode = aMode;
-        
-#ifdef RD_SCALABLE_UI_V2 
-        if ( IsChineseInputMode( aMode ) )
-            {
-            iLastChineseInputMode = aMode;
-            }        
-#endif // RD_SCALABLE_UI_V2
-        if(iMode == ENumber || iMode == ENativeNumber )
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-            ClearFlag(CAknFepManager::EFlagNewSharedDataInputLanguage);
-            ClearFlag(CAknFepManager::EFlagNewSharedDataInputMode);
-#endif //  RD_INTELLIGENT_TEXT_INPUT  
-            InternalFepUI()->SetNumberModeKeyMappingL(iAknEditorNumericKeymap);
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT            
-        InternalFepUI()->SetMode(iMode, IsPredictive(), iQwertyInputMode, KeyboardLayout());
-#else
-        InternalFepUI()->SetMode(iMode, IsPredictive(), iQwertyInputMode);
-#endif        
-        iHashKeyMan->SetMode(iMode, IsPredictive());
-        // ensure editor is aware of new fep mode
-        if ( IsFepAwareTextEditor() )
-            {
-            EditorState()->SetCurrentInputMode(EditorModeFromFepMode(aMode));
-            iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-            AdjustCursorTypeForCurrentPosition();
-            }
-
-        // when cursor is in between two words and SCT is launched and
-        // cancel key is pressed, dont move the cursor at the end of
-        // second word.     
-         if (WesternPredictive(aMode) && !iUncommittedText.Length()
-            && CursorInsideWord() && !IsCcpuFlagSet(ECcpuStateSupressCursorMoveToEnd)
-#ifdef RD_INTELLIGENT_TEXT_INPUT            
-            && (!iSupressCursorMoveToEndChrKeyPressed)
-#endif //RD_INTELLIGENT_TEXT_INPUT       
-            )
-            {
-            MoveCursorToEndOfWordL();
-            }
-        else
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT              
-            iSupressCursorMoveToEndChrKeyPressed = EFalse;
-#endif //RD_INTELLIGENT_TEXT_INPUT             
-            ClearCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
-            }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Ensure that autocompletion state is updated
-        if (WesternPredictive())
-        	{
-        	SetAutoCompletionState(iSharedDataInterface->PredictiveTextAutoCompleteOn());
-        	}
-#endif
-        // Set multitap timer to PtiEngine for Japanese variant only
-        if (IsFeatureSupportedJapanese())
-            {
-            TInt timeout = (iInputCapabilities.SupportsSecretText())? 
-            					KSyncPasswdTimeout : iMultiTapTimer;
-            iPtiEngine->HandleCommandL(EPtiCommandSetMultitapTimer, &timeout);
-            iPtiEngine->HandleCommandL(EPtiCommandSetJapaneseQwertyFlags, &iJapaneseQwertyFlags);
-            TInt clear = iSharedDataInterface->ClearDirection();
-            iPtiEngine->HandleCommandL(EPtiCommandSetClearFunction, &clear);
-            // Send PtiEngine the command whether Pictograph is allowed in Candidate list
-            TInt allow = IsAbleToLaunchPCT();
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-            iPtiEngine->HandleCommandL(EPtiCommandAllowPictographCandidate, &allow);
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            }
-
-        UpdateIndicators(); // moved to bottom to avoid extra indicator updates
-
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-void CAknFepManager::ChangeInputLanguageL(TInt aInputLanguage)
-    {
-    	if(iLangMan)
-    	{
-    	iLangMan->SetInputLanguageL(aInputLanguage);
-
-    	SetInputLanguageCapabilities(aInputLanguage);
-
-    	ReadHashKeyLoopL();
-		// we need to make sure that we commit the word to ptiengine, 
-		// so that the word gets added to the UWD 
-    	SetCcpuFlag(ECcpuStataCommitPredictiveWord);
-    	// Addition for ITI on FSQ
-    	// When FSQ is opened with the ITI-supported input language, 
-    	// if switch to another language which doesn't support ITI, such as Korean,
-    	// need to restore the previous configuration on FEP
-        if ( iFepPluginManager )
-        	{    	
-        	iFepPluginManager->ResetItiStateL();
-        	}    	
-    	if ( !TryChangeModeL(NewInputModeAfterLanguageChange()) )
-	        {
-	        if ( !TryChangeModeL(ELatin) )
-	            {
-	            // If the editor does not support text input mode, we try number mode.
-	            if( IsInputModeAvailable(ENativeNumber) && 
-	                ( iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic ||
-	                  iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic ||
-	                  iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari ) )
-	                {
-	                TryChangeModeL(ENativeNumber);;
-	                }
-	            else
-	                {
-	                TryChangeModeL(ENumber);
-	                }
-	            }
-	        }
-  
-        if (!iLanguageCapabilities.iLocalInputLanguageInUse)
-        	{
-        	switch (iSharedDataInterface->InputTextLanguage())
-            	{
-            	case ELangPrcChinese:
-            		{
-            		iSharedDataInterface->SetInputMode(EPinyin);
-            		SetFlag(EFlagNewSharedDataInputMode);
-            		break;            		
-            		}
-            	case ELangTaiwanChinese:
-            		{
-            	    iSharedDataInterface->SetInputMode(EZhuyin);
-            	    SetFlag(EFlagNewSharedDataInputMode);
-            	    break;
-            		}
-            	case ELangHongKongChinese:
-            		{
-            	    iSharedDataInterface->SetInputMode(EStroke);
-            	    iSharedDataInterface->SetCangJieMode(ECangJieNormal);
-            	    SetFlag(EFlagNewSharedDataInputMode);
-            	    break;
-            		}
-            	default:
-            		break;
-            	}
-            }
-
-    	SetHashKeyStyle();
-    	UpdateEditorContext();
-  		}
-    //add notify to phrase creation udbmanagement view
-    
-    if(iUserdbdlg)
-	    {
-	    iUserdbdlg->OnChangeLanguageL( aInputLanguage );	
-	    if ( aInputLanguage != ELangPrcChinese &&
-	        	 aInputLanguage != ELangTaiwanChinese &&
-	        	 aInputLanguage != ELangHongKongChinese )
-	    	{
-	    	iUserdbdlg = NULL;
-	    	}
-	    }
-    }
-
-void CAknFepManager::RemovePreviousCharacterL()
-    {
-    if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-        {
-        CommitInlineEditL();
-        }
-
-    // Set cursor span on previous character
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-    if (iUncommittedText.iAnchorPos > 0)
-        {
-        iUncommittedText.iAnchorPos--;
-        }
-    
-
-    // get text to replace
-    TBuf<ESingleCharacter> charToReplace;
-    iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(charToReplace, 
-                                                                    iUncommittedText.iAnchorPos, 
-                                                                    ESingleCharacter);
-
-    // delete the character with an inline edit
-    StartInlineEditL(iUncommittedText, charToReplace, ESingleCharacter, EFalse);
-    UpdateInlineEditL(KNullDesC, 0);
-    CommitInlineEditL();
-    }
-
-void CAknFepManager::RemoveZWSCharacterL( TBool aIsViramaInputted, 
-                                            TBool aIsInMultitappingHalant, 
-                                            TBool aIsCharModifier, 
-                                            TBool aIsLigaturePresent /*= EFalse*/)
-    {
-    CTextLayout* textLayout = TextLayout();
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if(!textLayout && !docNavi)
-        return;
-
-    if( aIsLigaturePresent )
-        {
-        TTmDocPosSpec pos = DocPos();
-        TTmPosInfo2 info;
-        TTmLineInfo lineInfo;
-        if (docNavi)
-        	{
-        	docNavi->FindDocPos(pos, info, lineInfo);
-        	}
-        else
-        	{
-        	textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo);      
-        	}
-
-        if( IsZWSCharacterPresent( ETrue ) )
-            {
-            TInt commitPoint = pos.iPos - 2;
-            if( IsFlagSet( EFlagInsideInlineEditingTransaction ) )
-                {
-                CommitInlineEditL();
-                }
-
-            TCursorSelection sel( commitPoint, commitPoint );
-            iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);
-            }
-        }
-    else
-        {
-        if ( IsFlagSet(EFlagInsideInlineEditingTransaction) && IsZWSCharacterPresent())
-            {
-            CommitInlineEditL();
-            }
-        }
-
-    TTmDocPosSpec pos = DocPos();
-    pos.iType = TTmDocPosSpec::ETrailing;
-    TTmPosInfo2 info;
-    TTmLineInfo lineInfo;
-    if ( ! iInputCapabilities.SupportsSecretText() )
-        {
-        if (docNavi)
-        	{
-        	docNavi->FindDocPos(pos, info, lineInfo);
-        	}
-        else
-        	{
-        	textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo);
-        	}
-        TBuf<2> previousCharacter;
-        TBuf<1> zwsPrevChar;
-        previousCharacter.FillZ();
-        zwsPrevChar.FillZ();
-        TBool found = EFalse;
-
-        TCursorSelection curSel;
-        if ( IsFepAwareTextEditor() )
-            {
-            iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel);
-            TInt lowerpos = curSel.LowerPos();
-            if( lowerpos > 0)
-                {
-                if(lowerpos > 1)
-                iInputCapabilities.FepAwareTextEditor()->
-                    GetEditorContentForFep(previousCharacter, lowerpos - 2, 2);
-                else
-                iInputCapabilities.FepAwareTextEditor()->
-                    GetEditorContentForFep(previousCharacter, lowerpos - 1, 1);
-                    
-                if( lowerpos > 1 )
-                    {
-                    if(previousCharacter[1] == ZERO_WIDTH_SPACE)
-                        {
-                        zwsPrevChar.Append(previousCharacter[1]);
-                        if( aIsInMultitappingHalant )
-                            {
-                            curSel.iAnchorPos = lowerpos - 2;
-                            }
-                        else
-                            {
-                            curSel.iAnchorPos = lowerpos - 1;
-                            }
-                        found = ETrue;      
-                        }
-                    else if( previousCharacter[0] == ZERO_WIDTH_SPACE )
-                        {
-                        zwsPrevChar.Append(previousCharacter[0]);
-                        curSel.iAnchorPos = lowerpos - 2;
-                        curSel.iCursorPos = lowerpos - 1;                       
-                        found = ETrue;
-                        }   
-                    }
-                else
-                    {
-                    if(previousCharacter[0] == ZERO_WIDTH_SPACE)
-                        {
-                        zwsPrevChar.Append(previousCharacter[0]);
-                        if( aIsInMultitappingHalant )
-                            {
-                            curSel.iAnchorPos = lowerpos - 2;
-                            }
-                        else
-                            {
-                            curSel.iAnchorPos = lowerpos - 1;
-                            }
-                        found = ETrue;    
-                        }   
-                    }    
-                
-                }
-            }
-        if( found )
-            {
-            StartInlineEditL(curSel, zwsPrevChar, ESingleCharacter, ETrue);
-            UpdateInlineEditL(KNullDesC, 0);
-            CommitInlineEditL();    
-            if ( !aIsInMultitappingHalant && ! iInputCapabilities.SupportsSecretText() )
-                {
-                if ( aIsViramaInputted )
-                    {
-                    TTmDocPosSpec pos = DocPos();
-                    TTmPosInfo2 infotemp;
-                    if (docNavi)
-                    	{
-                    	docNavi->FindDocPos(pos, info, lineInfo);      
-                    	}
-                    else
-                    	{
-                    	textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo);      
-                    	}
-                    if(NextChar() && TAknFepUiIndicInputManager::IsCharBaseConsonant(NextChar(), 
-                                           TLanguage(iLanguageCapabilities.iInputLanguageCode)))
-	                    {
-	                    TInt nextPos;                  
-	                    if (docNavi)
-	                    	{
-	                    	nextPos = docNavi->FindNextPos(pos.iPos);
-	                    	}
-	                    else
-	                    	{
-		                    nextPos = textLayout->TagmaTextLayout().FindNextPos(pos.iPos);                 
-	                    	}
-	                    info.iDocPos.iPos  = nextPos;   
-	                    }
-                    else if((TAknFepUiIndicInputManager::IsCharAnVowel(NextChar(), 
-                             TLanguage(iLanguageCapabilities.iInputLanguageCode)))
-                         &&(aIsCharModifier && TAknFepUiIndicInputManager::IsCharVirama(
-                             PreviousChar(), TLanguage(iLanguageCapabilities.iInputLanguageCode))))
-                        {
-                        bool posFound;
-		                if (docNavi)
-		                	{
-		                	posFound = docNavi->GetNextVisualCursorPos(pos, infotemp, EFalse);      
-		                	}
-		                else
-		                	{
-		                	posFound = textLayout->TagmaTextLayout().GetNextVisualCursorPos(pos, 
-                                                                                      infotemp, 
-                                                                                      EFalse);      
-		                	}
-                        
-                    	if (posFound)
-                            {
-                            info.iDocPos.iPos = infotemp.iDocPos.iPos;
-                            }
-                        }
-                    TCursorSelection sel(info.iDocPos.iPos ,info.iDocPos.iPos );
-                    iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);    
-                    }
-                else
-                    {
-                    TCursorSelection sel(info.iDocPos.iPos - 1,info.iDocPos.iPos - 1);
-                    iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);        
-                    }   
-                
-                SendEventsToPluginManL( EPluginSyncFepAwareText );
-                }
-            }
-        }
-    }
-
-void  CAknFepManager::TryChangePredictiveInputModeL(TBool aFlag)
-    {
-    if(Japanese() && iMode != ELatin)
-        {
-        if(aFlag)
-            {
-            if (!(iAknEditorFlags & EAknEditorFlagNoT9)
-               && HasJapanesePredictionInputMode())
-                {
-                iJapanesePredictive = aFlag;
-                iSharedDataInterface->SetJapanesePredictiveTextOn();
-                }
-            }
-        else
-            {
-            iJapanesePredictive = aFlag;
-            iSharedDataInterface->ResetJapanesePredictiveTextOn();
-            }
-        }
-    else
-        {
-        SetWesternPredictive(aFlag);
-        }
-    TryChangeModeL(iMode);
-    }
-
-MCoeFepAwareTextEditor* CAknFepManager::FepAwareTextEditor() const
-    {
-    return iInputCapabilities.FepAwareTextEditor();
-    }
-
-TBool CAknFepManager::IsFepAwareTextEditor() const
-    {
-#ifdef RD_SCALABLE_UI_V2   
-    return FullyFepAwareTextEditor();
-#else
-		return ( iInputCapabilities.FepAwareTextEditor() ? ETrue : EFalse );
-#endif    
-    }
-    
-TCursorSelection CAknFepManager::UncommittedText() const
-    {
-    return iUncommittedText;
-    }
-
-void CAknFepManager::SetCase(TCase aCase)
-    {
-    // For QWERTY only keypad, extended input state like FnLock is applicable.
-    // In case of ITU-T keypad, this flag should not be part of editor flag.
-    // In case of numeric only editor Only FnReverse state is valid and editor will be on EFnReverse
-    // State if FnKey is hold on state.
-    
-    //TODO: In case of other functionized input state like (FnNext), it should be stored in editor
-    
-#ifdef  RD_INTELLIGENT_TEXT_INPUT
-    if(EditorState())
-        {
-        if( iFnKeyManager &&  ( iFnKeyManager->FnKeyState()== CAknFepFnKeyManager::EFnKeyLock ) )
-            {
-            EditorState()->SetFlags( EditorState()->Flags() | EAknEditorFlagFnLock );
-            }
-        else
-            {
-            EditorState()->SetFlags( EditorState()->Flags() & ~EAknEditorFlagFnLock );       
-            }
-        }
-#endif
-
-    InternalFepUI()->SetCase(aCase);
-    }
-
-CAknEdwinState* CAknFepManager::EditorState() const
-    {
-    if ( IsFepAwareTextEditor() )
-        {
-        MCoeFepAwareTextEditor* fepAvareTextEditor = iInputCapabilities.FepAwareTextEditor();
-        
-        if ( fepAvareTextEditor && fepAvareTextEditor->Extension1() )
-            {
-            return static_cast<CAknEdwinState*>( fepAvareTextEditor->Extension1()->State( KNullUid ) );
-            }
-        }
-    return NULL;
-    }
-
- void CAknFepManager::SetPredictiveIndicatorState(TAknEditingState& aState)
-	{
-	
-	TInt currentCase = iCaseMan->CurrentCase();
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-    if(iIsAutoCompleteOn && iLanguageCapabilities.iInputLanguageCode != ELangThai)
-    	{
-       	if (iLanguageCapabilities.iInputLanguageCode == ELangArabic)
-        	aState=EAutoCompleteArabic;
-       	
-       	else if (iLanguageCapabilities.iInputLanguageCode == ELangHebrew)
-           		 aState=EAutoCompleteHebrew;
-       	
-        else if (iLanguageCapabilities.iInputLanguageCode == ELangFarsi ||
-            	 iLanguageCapabilities.iInputLanguageCode == ELangUrdu)
-            	 aState=EAutoCompleteFarsiAndUrdu;
-             	/*Hindi*/
-        else if ( (iLanguageCapabilities.iInputLanguageCode == ELangHindi) || (iLanguageCapabilities.iInputLanguageCode == ELangMarathi))
-        		  aState = EAutoCompleteHindi;
-        
-        else if(iLanguageCapabilities.iInputLanguageCode == ELangVietnamese)
-            	{
-            	switch (currentCase)
-                	{
-                	case EAknEditorUpperCase:
-                    	aState =  EAutoCompleteUpperVietnamese;
-                    	break;
-                	case EAknEditorLowerCase:
-                    	aState =  EAutoCompleteLowerVietnamese;
-                    	break;
-                    case EAknEditorTextCase:
-                        aState = EAutoCompleteShiftedVietnamese;
-                        break;
-                    default:
-                        break;
-                    }    
-                }
-        else
-                {
-                switch (currentCase)
-                    {
-                    case EAknEditorUpperCase:
-                        aState =  EAutoCompleteUpper;
-                        break;
-                    case EAknEditorLowerCase:
-                        aState =  EAutoCompleteLower;
-                        break;
-                    case EAknEditorTextCase:
-                        aState = EAutoCompleteShifted;
-                        break;
-                    default:
-                        break;
-                    }
-                }
-            
-    	}
-    else
-#endif //RD_INTELLIGENT_TEXT_INPUT
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-		if(iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone)
-			{
-			aState = EFnKeyPressed;
-			if(iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyLock)
-	            aState = EFnKeyLocked;    
-			}
-        else
-#endif
-        {
-    	if (iLanguageCapabilities.iInputLanguageCode == ELangArabic)
-      	 	 aState = ET9Arabic;
-    	
-   		else if (iLanguageCapabilities.iInputLanguageCode == ELangHebrew)
-        	     aState = ET9Hebrew;
-   		
-    	else if (iLanguageCapabilities.iInputLanguageCode == ELangFarsi ||
-        	     iLanguageCapabilities.iInputLanguageCode == ELangUrdu)
-        		 aState = ET9FarsiAndUrdu;
-        		 
-    	else if (iLanguageCapabilities.iInputLanguageCode == ELangThai)
-        		 aState = ET9Thai;
-    	
-    	/*Hindi*/
-#ifdef RD_MARATHI
-                        /*Marathi*/
-                        else if ( iLanguageCapabilities.iInputLanguageCode == ELangMarathi )
-                        	aState = EIndicatorStatePredictiveMarathi;
-#endif // RD_MARATHI
-    	
-    	else if(iLanguageCapabilities.iInputLanguageCode == ELangVietnamese)
-        	{
-        	switch (currentCase)
-            	{
-            	case EAknEditorUpperCase:
-                	aState =  ET9UpperVietnamese;
-                	break;
-            	case EAknEditorLowerCase:
-                	aState =  ET9LowerVietnamese;
-                	break;
-                case EAknEditorTextCase:
-                    aState = ET9ShiftedVietnamese;
-                    break;
-                default:
-                    break;
-                }    
-            }
-        
-        else if(iLanguageCapabilities.iInputLanguageCode == ELangGreek)
-            {
-            switch (currentCase)
-                {
-                case EAknEditorUpperCase:
-                    aState =  ET9UpperGreek;
-                    break;
-                case EAknEditorLowerCase:
-                    aState =  ET9LowerGreek;
-                    break;
-                case EAknEditorTextCase:
-                    aState = ET9ShiftedGreek;
-                    break;
-                default:
-                    break;
-                }    
-            }
-        
-        //Cyrillic alphabet is used for Russian, Bulgarian and 
-        //Ukranian languages
-        else if(iLanguageCapabilities.iInputLanguageCode == ELangRussian ||
-                iLanguageCapabilities.iInputLanguageCode == ELangBulgarian ||
-                iLanguageCapabilities.iInputLanguageCode == ELangUkrainian )
-            {
-            switch (currentCase)
-                {
-                case EAknEditorUpperCase:
-                    aState =  ET9UpperCyrillic;
-                    break;
-                case EAknEditorLowerCase:
-                    aState =  ET9LowerCyrillic;
-                    break;
-                case EAknEditorTextCase:
-                    aState = ET9ShiftedCyrillic;
-                    break;
-                default:
-                    break;
-                }    
-            }
-        else
-            {
-            switch (currentCase)
-                {
-                case EAknEditorUpperCase:
-                    aState = ET9Upper;
-                    break;
-                case EAknEditorLowerCase:
-                    aState = ET9Lower;
-                    break;
-                case EAknEditorTextCase:
-                    aState = ET9Shifted;
-                    break;
-                default:
-                    break;
-                }
-            }
-        
-    	}
-	}
-void CAknFepManager::UpdateIndicators()
-    { 
-    if(ELongKeyPress == iKeyRepeat)
-        return;	
-	// If it is fepware editor update the Indicators
-	// otherwise not need excute remainig part of code.
-	if( !iInputCapabilities.FepAwareTextEditor() || !iFepFullyConstructed ) 
-		{
-        //Ensure, If no idicator is require, make indicator state None 
-        if (!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible))
-            iIndicator->SetState(EStateNone);
-		return;
-		}
-
-    TAknEditingState newState = EStateNone;
-    MPtiLanguage* ptiLang = PtiEngine()->CurrentLanguage();    
-    MAknEditingStateIndicator* editingStateIndicator = EditingStateIndicator();
-
-    TBool findPaneIndicator(
-        iAknEditorFlags & EAknEditorFlagNoEditIndicators &&
-        iAknEditorFlags & EAknEditorFlagForceTransparentFepModes &&
-        editingStateIndicator != (MAknEditingStateIndicator*)iIndicator );
-
-#ifdef RD_SCALABLE_UI_V2
-    TBool fingerItutIndicator = ( iFepPluginManager && 
-                                  iFepPluginManager->PluginInputMode() == EPluginInputModeItut );
-#else
-    TBool fingerItutIndicator = EFalse;
-    
-#endif
-    if ( IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric )
-            {
-            newState = EHybridModeLatin;
-            }    
-    else if (!(iAknEditorFlags & EAknEditorFlagNoEditIndicators) 
-        || findPaneIndicator || fingerItutIndicator)
-        {
-        
-#ifdef RD_SCALABLE_UI_V2
-        if ( ( IsFlagSet(EFlagQwertyShiftMode)  || IsFlagSet(EFlagLongShiftKeyPress)) &&
-             ((iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeVkb) ||
-        #ifndef RD_INTELLIGENT_TEXT_INPUT
-			      iQwertyInputMode
-      	#else	       								
-		           ( iQwertyInputMode && (IsFlagSet(EFlagQwertyShiftMode) ||IsFlagSet(EFlagLongShiftKeyPress))
-		           && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNext)
-		           && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyLock)
-		           && (iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyForced)
-		           )
-		#endif
-             ))
-#else
-        if ( iQwertyInputMode && IsFlagSet(EFlagQwertyShiftMode))
-    
-#endif        
-            {
-            newState = EQwertyShift;
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT 
-			// To keep the shift key indicator in         
-            // Check if fn/shift both key are pressed 
-            if((iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone) &&
-            	(IsFlagSet(EFlagQwertyShiftMode) || IsFlagSet(EFlagLongShiftKeyPress)))
-	            {
-	            newState = EFnKeyPressed;	
-	            }
-#endif            
-            
-            }
-        else
-            {
-            switch (iMode)
-                {
-                case EHiraganaKanji:
-                    if (IsPredictive())
-                        {
-                        newState = EIndicatorStateJapanesePredictive;
-                        }
-                    else
-                        {
-                        newState = EIndicatorStateHiraganaKanji;
-                        }
-                    break;
-                case EKatakana:
-                    if (iCharWidth == EHalfWidthChar)
-                        {
-                        newState = EIndicatorStateHalfKatakana;
-                        }
-                    else if (iCharWidth == EFullWidthChar)
-                        {
-                        newState = EIndicatorStateFullKatakana;
-                        }
-                    break;
-                case EHiragana:
-                    {
-                    newState = EIndicatorStateHiragana;
-                    }
-                    break;
-                case EPinyin:
-                    if (ptiLang->HasInputMode(EPtiEnginePinyinByPhrase))
-                        {
-                        newState = EIndicatorStatePinyinPhrase;
-                        }                        
-                    else
-                        {
-                        newState = EIndicatorStatePinyin;
-                        }                        
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                    if ( iFnKeyManager->FnKeyState()
-                        == CAknFepFnKeyManager::EFnKeyLock )
-                        newState = EFnKeyLocked;
-                    else if ( iFnKeyManager->FnKeyState()
-                        != CAknFepFnKeyManager::EFnKeyNone )
-                        newState = EFnKeyPressed;
-#endif
-                    break;
-                case EZhuyin:
-                    if (ptiLang->HasInputMode(EPtiEngineZhuyinByPhrase))
-                        {
-                        newState = EIndicatorStateZhuyinPhrase;
-                        }                        
-                    else
-                        {
-                        newState = EIndicatorStateZhuyin;
-                        }                        
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                    if ( iFnKeyManager->FnKeyState()
-                        == CAknFepFnKeyManager::EFnKeyLock )
-                        newState = EFnKeyLocked;
-                    else if ( iFnKeyManager->FnKeyState()
-                        != CAknFepFnKeyManager::EFnKeyNone )
-                        newState = EFnKeyPressed;
-#endif
-                    break;
-                case EStroke:
-                    {
-                    TBool flag = ptiLang->HasInputMode(EPtiEngineStrokeByPhrase);
-                    if (iLanguageCapabilities.iInputLanguageCode == ELangPrcChinese)
-                        {
-                        if (flag)
-                            {
-                            newState = EIndicatorStateStrokePhrase;
-                            }                            
-                        else
-                            {
-                            newState = EIndicatorStateStroke;
-                            }                            
-                        }
-                    else
-                        {
-                        if (flag)
-                            {
-                            newState = EIndicatorStateStrokeTradPhrase;
-                            }                            
-                        else
-                            {
-                            newState = EIndicatorStateStrokeTrad;
-                            }                            
-                        }
-                        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                    if ( iFnKeyManager->FnKeyState()
-                        == CAknFepFnKeyManager::EFnKeyLock )
-                        newState = EFnKeyLocked;
-                    else if ( iFnKeyManager->FnKeyState()
-                        != CAknFepFnKeyManager::EFnKeyNone )
-                        newState = EFnKeyPressed;
-#endif
-                    break;
-                case ECangJie:
-                    newState = EIndicatorStateCangJie;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-                    if ( iFnKeyManager->FnKeyState()
-                        == CAknFepFnKeyManager::EFnKeyLock )
-                        newState = EFnKeyLocked;
-                    else if ( iFnKeyManager->FnKeyState()
-                        != CAknFepFnKeyManager::EFnKeyNone )
-                        newState = EFnKeyPressed;
-#endif
-                    break;
-                case EZhuyinFind:
-                    newState = EIndicatorStateZhuyinFind;
-                    break;
-                case EStrokeFind:
-                    newState = EIndicatorStateStrokeFind;
-                    break;
-                case ENumber:
-                    {
-                    newState = ENumeric;
-                    //iLanguageCapabilities.iLocalDigitType = EDigitTypeWestern;
-                    }
-                    break;
-                case ENativeNumber:
-                    {
-                    UpdateNumberIndicator( newState );
-                    }
-                    break;
-                case EHangul:
-                	{
-                	newState = EIndicatorStateHangul;            	              	
-                	}
-                	break;
-                case ELatin:
-                    {
-                    UpdateLatinIndicator( newState );
-                    }
-                    break;
-                case EHindi:
-                    {
-                    UpdateHindiIndicator( newState );
-                    }
-                    break;
-                default:
-                    break;
-           }
-        }
-    }
-
-    if ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeVkb )
-        {
-        newState = iFepPluginManager->VKBIndicatorState( newState );
-        }
-
-    // Update indicators only if the state has been changed, or if the indicator has swapped
-    if ((iPreviousEditingState != newState) || (editingStateIndicator != iEditIndicatorAtLastUpdate))
-        {
-        if (editingStateIndicator)
-            {
-            // because current avkon have not find chinese phrase indicator,
-            // so change back to no-phrase
-           if (findPaneIndicator || iAknEditorFlags & EAknEditorFlagFindPane )
-                {
-                switch(newState)
-                    {
-                    case EIndicatorStateStrokePhrase:
-                        {
-                        newState = EIndicatorStateStroke; 
-                        }
-                    break;
-                    case EIndicatorStateStrokeTradPhrase:
-                        {
-                        newState = EIndicatorStateStrokeTrad; 
-                        }
-                    break;
-                    case EIndicatorStatePinyinPhrase:
-                        {
-                        newState = EIndicatorStatePinyin; 
-                        }
-                    break;
-                    case EIndicatorStateZhuyinPhrase:
-                        {
-                        newState = EIndicatorStateZhuyin; 
-                        }
-                    break;
-                    default:
-                        {
-                        break;
-                        }
-                    }
-                }
-           // Add This condition for Fixing EYYE-7HHBWW: Phonebook, ReTe, PF52.50_2008_wk32: 
-           // Navigation bar disappears after tapping find pane and then returning back to Names list view.
-           if (!(editingStateIndicator == (MAknEditingStateIndicator*)iIndicator &&
-               ( iFepPluginManager && iFepPluginManager->PluginInputMode() == EPluginInputModeItut ) &&
-               IsFindPaneEditor()))
-               {
-               editingStateIndicator->SetState(newState);
-               }
-
-            // Ensure that no indicator is shown in navi pane when other
-            // indicator is changed in use.
-            if ( editingStateIndicator != (MAknEditingStateIndicator*)iIndicator &&
-                 iPreviousEditingState == EStateNone &&
-                 (!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible)) )
-
-                {
-                iIndicator->SetState( EStateNone );
-                }
-
-            iPreviousEditingState = newState;
-            iEditIndicatorAtLastUpdate=editingStateIndicator;
-            }
-        }
-    }
-
-void CAknFepManager::UpdateNumberIndicator( TAknEditingState& aNewState )
-    {
-    
- // chnage for AIYR-6L7DGU; This problrm persist in all variants. 
- // The fix is made only for Hindi
-    UpdateNumericEditorDigitType();
-    TBool supportsWesternNumericIntegerOrReal =
-        ( iInputCapabilities.SupportsWesternNumericIntegerPositive() ||
-        iInputCapabilities.SupportsWesternNumericIntegerNegative() ||
-        iInputCapabilities.SupportsWesternNumericReal() );
-
-#ifdef RD_SCALABLE_UI_V2                        
-        iFepPluginManager->SetPluginNativeRange( ETrue );
-#endif // RD_SCALABLE_UI_V2 
-        // In usual case digit mode is Arabic-Indic digits if local digit mode is
-        // Arabic-Indic and current input language is Arabic.
-        if ( (!supportsWesternNumericIntegerOrReal &&
-            iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic /* &&
-            iLanguageCapabilities.iInputLanguageCode == ELangArabic*/
-            )
-            ||
-            // But digit mode is Arabic-Indic digit in MFNE and real number
-            // editors if UI language is Arabic and global digit setting is
-            // Arabic-Indic digits.
-            ( !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeArabicIndic && // AknTextUtils::DigitModeQuery(AknTextUtils::EDigitModeShownToUser) &&
-            supportsWesternNumericIntegerOrReal &&
-            iUiLanguage == ELangArabic
-            )
-            )
-            {
-            aNewState=EArabicIndicNumeric;
-                        
-            }
-        else if ( (!supportsWesternNumericIntegerOrReal &&
-            iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic /* &&
-            iLanguageCapabilities.iInputLanguageCode == ELangUrdu,Farasi*/
-            )
-            ||
-            // But digit mode is Arabic-Indic digit in MFNE and real number
-            // editors if UI language is Arabic and global digit setting is
-            // Arabic-Indic digits.
-            ( !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-            iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeEasternArabicIndic && // AknTextUtils::DigitModeQuery(AknTextUtils::EDigitModeShownToUser) &&
-            supportsWesternNumericIntegerOrReal &&
-            (iUiLanguage == ELangUrdu || iUiLanguage == ELangFarsi)))
-            {
-            aNewState=EArabicIndicNumeric;                            
-            }    
-        /* Devanagari Scripts */
-        else if ( (!supportsWesternNumericIntegerOrReal &&
-                iLanguageCapabilities.iLocalDigitType == EDigitTypeDevanagari //&&
-                //iLanguageCapabilities.iInputLanguageCode == ELangHindi
-                )
-                ||
-                ( !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) &&
-                iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeDevanagari && // AknTextUtils::DigitModeQuery(AknTextUtils::EDigitModeShownToUser) &&
-                supportsWesternNumericIntegerOrReal &&
-                TAknFepUiIndicInputManager::IsScriptDevanagari( iUiLanguage )
-                )
-                )
-            {
-            aNewState= EDevanagariIndicNumeric;                            
-            }
-        else
-        {
-        if ( iLanguageCapabilities.iInputLanguageCode == ELangArabic )
-            {
-            //iLanguageCapabilities.iLocalDigitType = EDigitTypeArabicIndic;
-            aNewState=EArabicIndicNumeric;
-            }
-        else if ( iLanguageCapabilities.iInputLanguageCode == ELangFarsi 
-               || iLanguageCapabilities.iInputLanguageCode == ELangUrdu )
-            {
-            //iLanguageCapabilities.iLocalDigitType = EDigitTypeEasternArabicIndic;
-            aNewState=EArabicIndicNumeric;
-            }    
-        else if ( iLanguageCapabilities.iInputLanguageCode == ELangHindi )
-            {
-            //iLanguageCapabilities.iLocalDigitType = EDigitTypeDevanagari;
-            aNewState= EDevanagariIndicNumeric;
-            }
-        }
-    }
-    
-void CAknFepManager::UpdateLatinIndicator( TAknEditingState& aNewState )
-    {  
-    if (IsPredictive())
-        {
-        //AutoComplete - Begin
-        SetPredictiveIndicatorState( aNewState );
-        //AutoComplete - End
-
-        return;           
-        }
-
-    TInt currentCase = iCaseMan->CurrentCase();
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	if(iFnKeyManager->FnKeyState() == CAknFepFnKeyManager::EFnKeyLock)
-		aNewState = EFnKeyLocked;
-    else if(iFnKeyManager->FnKeyState() != CAknFepFnKeyManager::EFnKeyNone)
-		aNewState = EFnKeyPressed;
-	else    
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		{
-#ifdef RD_SCALABLE_UI_V2                        
-    if( iFepPluginManager &&
-        ( !iFepPluginManager->SyncWithPluginRange() || iFepPluginManager->PluginNativeRange() ) )
-        {
-        iFepPluginManager->SetPluginNativeRange( ETrue );
-#endif // RD_SCALABLE_UI_V2 
-        switch ( iLanguageCapabilities.iInputLanguageCode )
-            {
-            case ELangArabic:
-                {
-                aNewState=EMultitapArabic; 
-                }
-                return;
-            case ELangHebrew:
-                {
-                aNewState=EMultitapHebrew;                              
-                }
-                return;
-            case ELangFarsi:
-            case ELangUrdu:
-                {
-                aNewState=EMultitapFarsiAndUrdu;                                 
-                }
-                return;
-            case ELangThai:
-                {
-                aNewState = EMultitapThai;                               
-                }
-                return;
-                
-#ifdef RD_MARATHI
-            case ELangMarathi:
-                {
-                aNewState = EIndicatorStateMultitapMarathi;                                
-                }
-            	return;
-#endif // RD_MARATHI
-
-#ifdef RD_HINDI_PHONETIC_INPUT  
-            case KLangHindiPhonetic:
-                {                            
-                TInt currentPtiLang = (ptiLang)? ptiLang->LanguageCode() : 0;
-                
-                if(TAknFepUiIndicInputManager::IsIndicPhoneticLanguage(TLanguage(currentPtiLang)))
-                    {
-                    aNewState = TAknEditingState(SetPhoneticIndicator(TLanguage(currentPtiLang)));
-                    }
-                else
-                    {
-                     switch ( currentCase )
-                        {
-                        case EAknEditorUpperCase:
-                            aNewState=EMultitapUpper;
-                            if (iCharWidth == EFullWidthChar)
-                                {
-                                aNewState=EIndicatorStateFullLatinUpper;
-                                }
-                            break;
-                        case EAknEditorLowerCase:
-                            aNewState=EMultitapLower;
-                            if (iCharWidth == EFullWidthChar)
-                                {
-                                aNewState=EIndicatorStateFullLatinLower;
-                                }
-                            break;
-                        case EAknEditorTextCase:
-                            aNewState=EMultitapShifted;
-                            if (iCharWidth == EFullWidthChar)
-                                {
-                                aNewState=EIndicatorStateFullLatinText;
-                                }
-                            break;
-                        default:
-                            break;
-                        }
-                    }       
-                
-                }
-            return;
-#endif
-            case ELangVietnamese:
-                {                          
-                switch (currentCase)
-                    {
-                    case EAknEditorUpperCase:
-                        aNewState =  EMultitapUpperVietnamese;
-                        break;
-                    case EAknEditorLowerCase:
-                        aNewState =  EMultitapLowerVietnamese;
-                        break;
-                    case EAknEditorTextCase:
-                        aNewState = EMultitapShiftedVietnamese;
-                        break;
-                    default:
-                        break;
-                    }
-				return;	  
-                }
-                
-            case ELangGreek:
-                {
-                switch (currentCase)
-                    {
-                    case EAknEditorUpperCase:
-                        aNewState =  EMultitapUpperGreek;
-                        break;
-                    case EAknEditorLowerCase:
-                        aNewState =  EMultitapLowerGreek;
-                        break;
-                    case EAknEditorTextCase:
-                        aNewState = EMultitapShiftedGreek;
-                        break;
-                    default:
-                        break;
-                    }
-				return;  
-                }
-            
-            //Cyrillic alphabet is used for Russian, Bulgarian and 
-            //Ukranian languages. So fall through for all these languages -
-            case ELangRussian:
-            case ELangBulgarian:
-            case ELangUkrainian:
-                {
-                switch (currentCase)
-                    {
-                    case EAknEditorUpperCase:
-                        aNewState =  EMultitapUpperCyrillic;
-                        break;
-                    case EAknEditorLowerCase:
-                        aNewState =  EMultitapLowerCyrillic;
-                        break;
-                    case EAknEditorTextCase:
-                        aNewState = EMultitapShiftedCyrillic;
-                        break;
-                    default:
-                        break;
-                    } 
-				return; 
-                }
-            }
-#ifdef RD_SCALABLE_UI_V2     
-        }
-        // if plugin is not native range
-    
-    if(iFepPluginManager && iLanguageCapabilities.iInputLanguageCode != ELangRussian &&
-       iLanguageCapabilities.iInputLanguageCode != ELangBulgarian &&
-       iLanguageCapabilities.iInputLanguageCode != ELangUkrainian &&
-       iLanguageCapabilities.iInputLanguageCode != ELangGreek )
-        {
-        iFepPluginManager->SetPluginNativeRange( EFalse );
-        }
-    
-#endif // RD_SCALABLE_UI_V2                                 
-		}
-#ifdef RD_INTELLIGENT_TEXT_INPUT		
-	if(FnKeyState() == CAknFepFnKeyManager::EFnKeyNone)
-#endif //RD_INTELLIGENT_TEXT_INPUT		
-	    {
-        switch (currentCase)
-        {
-        case EAknEditorUpperCase:
-            aNewState=EMultitapUpper;
-            if (iCharWidth == EFullWidthChar)
-                {
-                aNewState=EIndicatorStateFullLatinUpper;
-                }
-            break;
-        case EAknEditorLowerCase:
-            aNewState=EMultitapLower;
-            if (iCharWidth == EFullWidthChar)
-                {
-                aNewState=EIndicatorStateFullLatinLower;
-                }
-            break;
-        case EAknEditorTextCase:
-            aNewState=EMultitapShifted;
-            if (iCharWidth == EFullWidthChar)
-                {
-                aNewState=EIndicatorStateFullLatinText;
-                }
-            break;
-        default:
-            break;
-        }
-        }
-    }
-void CAknFepManager::UpdateHindiIndicator( TAknEditingState& aNewState )
-    {
-    if ( IsPredictive() )
-        {
-        if( iIsAutoCompleteOn )
-            aNewState = EAutoCompleteHindi; 
-        else
-            aNewState = EIndicatorStatePredictiveHindi;
-        }
-    else
-        {
-        aNewState = EIndicatorStateMultitapHindi;
-        }
-    }
-TBool CAknFepManager::GetIndicatorImgID(TInt& aIndicatorImgID, TInt& aIndicatorTextID)
-    {
-    if (iPreviousEditingState == EStateNone)
-        {
-        UpdateIndicators();
-        if (iPreviousEditingState == EStateNone)
-            {
-            return EFalse;    
-            }
-        }
- 
-	TBool predictiveMode = QueryPredictiveState(iPreviousEditingState);
-	TBool predictiveAutoCompleteMode = EFalse;
-	if(!predictiveMode)
-		{
-		predictiveAutoCompleteMode = QueryPredictiveAutoCompleteState(iPreviousEditingState);		
-		}
-    
-    if (predictiveMode)
-        {
-        aIndicatorImgID = EAknNaviPaneEditorIndicatorT9;
-        }
-    else if (predictiveAutoCompleteMode)
-        {
-        aIndicatorImgID = EAknNaviPaneEditorIndicatorAutoComplete;   
-        }
-    else 
-        {
-        aIndicatorImgID = EAknNaviPaneEditorIndicatorQuery;
-        }
-   
-    aIndicatorTextID = EvaluateState(iPreviousEditingState);
-    
-    return ETrue;
-    }
-    
-TInt CAknFepManager::EvaluateState(const TAknEditingState aState)
-{
-	TInt result = 0;
-	switch(aState)
-	{
-		case EArabicIndicNumeric:
-  			 result = EAknNaviPaneEditorIndicatorArabicIndicNumberCase;
-  			 break;
-  			 
-		case ET9Thai:
-		case EMultitapThai:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteThai:
-#endif
-			result = EAknNaviPaneEditorIndicatorThai;
-			break;				
-			
-		case EIndicatorStatePredictiveHindi:
-		case EIndicatorStateMultitapHindi:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteHindi:
-#endif
-#ifdef RD_MARATHI
-		case EIndicatorStateMultitapMarathi:
-		case EIndicatorStatePredictiveMarathi:
-#endif // RD_MARATHI
-			result = EAknNaviPaneEditorIndicatorDevanagariCase;
-			break;	
-			
-		case ET9Arabic:
-		case EMultitapArabic:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteArabic:
-#endif
-			result = EAknNaviPaneEditorIndicatorArabicCase;
-			break;	
-
-		case ET9Hebrew:
-		case EMultitapHebrew:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteHebrew:
-#endif
-			result = EAknNaviPaneEditorIndicatorHebrewCase;
-			break;	
-			
-		case ET9FarsiAndUrdu:
-		case EMultitapFarsiAndUrdu:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteFarsiAndUrdu:
-#endif
-			result = EAknNaviPaneEditorIndicatorFarsiAndUrduCase;
-			break;					
-
-
-		case ET9Upper:
-		case EMultitapUpper:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteUpper:
-#endif
-			result = EAknNaviPaneEditorIndicatorUpperCase;	
-			break;
-
-		case ET9Lower:
-		case EMultitapLower:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteLower:
-#endif
-			result = EAknNaviPaneEditorIndicatorLowerCase;	
-			break;
-
-		case ET9Shifted:
-		case EMultitapShifted:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteShifted:
-#endif
-			result = EAknNaviPaneEditorIndicatorTextCase;	
-			break;
-			
-		case ENumeric:
-			result = EAknNaviPaneEditorIndicatorNumberCase;	
-			break;		
-  			 
-  			 	
-		case EIndicatorStatePinyin:
-			result = EAknNaviPaneEditorIndicatorPinyin;
-			break;
-		case EIndicatorStatePinyinPhrase:
-			result = EAknNaviPaneEditorIndicatorPinyinPhrase;
-			break;
-			
-		case EIndicatorStateZhuyin:
-			 result = EAknNaviPaneEditorIndicatorZhuyin;
-			break;
-		case EIndicatorStateZhuyinPhrase:
-			 result = EAknNaviPaneEditorIndicatorZhuyinPhrase;
-			break;
-
-		case EIndicatorStateZhuyinFind:
-			result = EAknNaviPaneEditorIndicatorZhuyinFind;
-			break;
-
-		case EDevanagariIndicNumeric :
-			result = EAknNaviPaneEditorIndicatorDevanagariIndicNumberCase;
-			break;
-		
-		case EIndicatorStateHiraganaKanji:
-		case EIndicatorStateJapanesePredictive:
-			result = EAknNaviPaneEditorIndicatorJapaneseHiraganaKanji;
-			break;
-
-		case EIndicatorStateFullKatakana:
-			result = EAknNaviPaneEditorIndicatorJapaneseFullKatakana;
-			break;
-
-		case EIndicatorStateHalfKatakana:
-			result = EAknNaviPaneEditorIndicatorJapaneseHalfKatakana;
-			break;
-
-		case EIndicatorStateFullLatinText:
-			result = EAknNaviPaneEditorIndicatorJapaneseFullTextAlphabet;
-			break;
-
-		case EIndicatorStateFullLatinUpper:
-			result = EAknNaviPaneEditorIndicatorJapaneseFullUpperAlphabet;
-			break; 
-
-		case EIndicatorStateFullLatinLower:
-			result = EAknNaviPaneEditorIndicatorJapaneseFullLowerAlphabet;
-			break;
-
-		case EIndicatorStateFullNumeric:
-			result = EAknNaviPaneEditorIndicatorJapaneseFullNumeric;
-			break;
-
-		case EIndicatorStateHiragana:
-			result = EAknNaviPaneEditorIndicatorJapaneseHiragana;
-			break;
-
-		case EIndicatorStateStroke:
-			result = EAknNaviPaneEditorIndicatorStroke;
-			break;
-		case EIndicatorStateStrokePhrase:
-			result = EAknNaviPaneEditorIndicatorStrokePhrase;
-			break;
-
-		case EIndicatorStateStrokeTrad:
-			result = EAknNaviPaneEditorIndicatorStrokeTrad;
-			break;
-		case EIndicatorStateStrokeTradPhrase:
-			result = EAknNaviPaneEditorIndicatorStrokeTradPhrase;
-			break;
-
-		case EQwertyShift:
-			result = EAknNaviPaneEditorIndicatorQwertyShift;
-			break;
-
-		case EIndicatorStateStrokeFind:
-			result = EAknNaviPaneEditorIndicatorStrokeFind;
-			break;
-
-		case EIndicatorStateCangJie:
-			result = EAknNaviPaneEditorIndicatorCangJie;
-			break;
-		
-		case ET9UpperVietnamese:
-		case EMultitapUpperVietnamese:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteUpperVietnamese:
-#endif
-			result = EAknNaviPaneEditorIndicatorVietnameseUpperCase;
-			break;			
-			
-		case ET9LowerVietnamese:
-		case EMultitapLowerVietnamese:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteLowerVietnamese:
-#endif
-			result = EAknNaviPaneEditorIndicatorVietnameseLowerCase;
-			break;	
-			
-		case ET9ShiftedVietnamese:
-		case EMultitapShiftedVietnamese:
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-		case EAutoCompleteShiftedVietnamese:
-#endif
-			result = EAknNaviPaneEditorIndicatorVietnameseTextCase;
-			break;
-#ifdef RD_HINDI_PHONETIC_INPUT	
-		case EIndicatorStateHindiPhoneticUpper:
-			result = EAknNaviPaneEditorIndicatorDevanagariPhoneticUpperCase;
-			break;
-		case EIndicatorStateHindiPhoneticLower:
-			result = EAknNaviPaneEditorIndicatorDevanagariPhoneticLowerCase;
-			break;
-#endif
-        case ET9UpperGreek:
-        case EMultitapUpperGreek:
-            result = EAknNaviPaneEditorIndicatorGreekUpperCase;
-            break;
-            
-        case ET9LowerGreek:
-        case EMultitapLowerGreek:
-            result = EAknNaviPaneEditorIndicatorGreekLowerCase;
-            break;
-        
-        case ET9ShiftedGreek:
-        case EMultitapShiftedGreek:
-            result = EAknNaviPaneEditorIndicatorGreekTextCase;
-            break;
-            
-        case ET9UpperCyrillic:
-        case EMultitapUpperCyrillic:
-            result = EAknNaviPaneEditorIndicatorCyrillicUpperCase;
-            break;
-            
-        case ET9LowerCyrillic:
-        case EMultitapLowerCyrillic:
-            result = EAknNaviPaneEditorIndicatorCyrillicLowerCase;
-            break;
-        
-        case ET9ShiftedCyrillic:
-        case EMultitapShiftedCyrillic:
-            result = EAknNaviPaneEditorIndicatorCyrillicTextCase;
-            break;
-            
-        case EHybridModeLatin:
-            result = EAknNaviPaneEditorIndicatorHybridLatin;
-            break;
-        case EIndicatorStateHangul:
-            result = EAknNaviPaneEditorIndicatorKoreanHangul;
-            break;
-        
-	}
-	return result;
-
-}    
-
-TBool CAknFepManager::IsAbleToLaunchSCT() const
-    {
-    TBool ableToLaunchSCT = ETrue;
-
-    if (ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EDisableSCT && 
-        PluginInputMode() == EPluginInputModeNone )
-        {
-        // The editor doesn't allow SCT.
-        return EFalse;
-        }
-
-    if (iMode == ENumber || iMode == ENativeNumber)
-        {
-        if (iPermittedInputModes == EAknEditorNumericInputMode || !NumericModeSCTResourceId()) 
-            {
-            // SCT is not launched if the number mode is the only input mode or
-            // if there is not keymap resource for the current numeric keymap mode.
-            ableToLaunchSCT = EFalse;
-            }
-        if (iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap ||
-            ( (iAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap) &&
-              (iPermittedInputModes != EAknEditorNumericInputMode) ))
-            {
-            // SCT is launched in the number mode if requested by editor flag
-            // EAknEditorFlagUseSCTNumericCharmap or if also text input modes are
-            // allowed and the keymap is EAknEditorAlphanumericNumberModeKeymap.
-            ableToLaunchSCT = ETrue;
-            }
-        }
-    if (!(EditorHasFreeSpace() && EditorState() 
-        && EditorState()->SpecialCharacterTableResourceId()))
-        {
-        ableToLaunchSCT = EFalse;
-        }
-
-    return ableToLaunchSCT;
-    }
-
-TBool CAknFepManager::QueryPredictiveState(const TAknEditingState aState)
- { 
-    return  (( aState == EIndicatorStatePinyin) ||
-             ( aState == EIndicatorStatePinyinPhrase) ||
-             ( aState == EIndicatorStateZhuyin) ||
-             ( aState == EIndicatorStateZhuyinPhrase) ||
-             ( aState == EIndicatorStateZhuyinFind) ||
-             ( aState == EIndicatorStateStrokeFind) ||
-             ( aState == EIndicatorStateStroke) || 
-             ( aState == EIndicatorStateStrokePhrase) ||
-			 ( aState == EIndicatorStateCangJie) ||
-             ( aState == EIndicatorStateStrokeTrad) || 
-             ( aState == EIndicatorStateStrokeTradPhrase) ||
-             ( aState == ET9Upper) ||
-             ( aState == ET9Shifted) ||
-             ( aState == ET9Lower) ||
-             ( aState == ET9Arabic) ||
-             ( aState == ET9Hebrew) ||
-             ( aState == ET9FarsiAndUrdu) ||
-             ( aState == ET9Thai) ||
-             ( aState == EIndicatorStatePredictiveHindi) ||
-#ifdef RD_MARATHI
-             ( aState == EIndicatorStatePredictiveMarathi) ||
-#endif // RD_MARATHI
-             ( aState == EIndicatorStateJapanesePredictive) ||
-             ( aState == ET9UpperVietnamese) ||
-             ( aState == ET9LowerVietnamese) ||
-             ( aState == ET9ShiftedVietnamese) ||
-             ( aState == ET9UpperGreek) ||
-             ( aState == ET9LowerGreek) ||
-             ( aState == ET9ShiftedGreek) ||
-             ( aState == ET9UpperCyrillic) ||
-             ( aState == ET9LowerCyrillic) ||
-             ( aState == ET9ShiftedCyrillic) );  
- }
-
- TBool CAknFepManager::QueryPredictiveAutoCompleteState(TAknEditingState aState)
- {
- 	 	        
-    return (( aState == EAutoCompleteUpper ) ||  
-     		( aState == EAutoCompleteShifted )  ||
-     		( aState == EAutoCompleteLower ) || 
-     		( aState == EAutoCompleteHindi ) ||
-     		( aState == EAutoCompleteArabic ) ||
-     		( aState == EAutoCompleteHebrew ) ||
-     		( aState == EAutoCompleteFarsiAndUrdu ) ||
-     		( aState == EAutoCompleteThai ) ||
-     		( aState == EAutoCompleteUpperVietnamese ) ||
-     		( aState == EAutoCompleteLowerVietnamese ) ||
-     		( aState == EAutoCompleteShiftedVietnamese ));
- }
-
-void CAknFepManager::LaunchSpecialCharacterTableL(TInt aResourceId, TBool aLaunchedByTouchWin, TBool aSmileyFirst)
-    {
-#ifdef RD_INTELLIGENT_TEXT_INPUT    
-    // Set the iSupressCursorMoveToEndChrKeyPressed when cursor is in 
-	// between two words and SCT is launched
-    iSupressCursorMoveToEndChrKeyPressed = ETrue;
-#endif //RD_INTELLIGENT_TEXT_INPUT    
-#ifdef RD_SCALABLE_UI_V2
-    if ( iStarKeyPressed && iFepPluginManager && 
-         iFepPluginManager->PluginInputMode() == EPluginInputModeItut )
-            {
-            aLaunchedByTouchWin = ETrue;
-            }
-    iCancelPopupInQwerty = aLaunchedByTouchWin;
-#endif //RD_SCALABLE_UI_V2
-    DoLaunchSctAndPctL(aResourceId, aSmileyFirst ? EShowSmileyFirst : EShowSctFirst );
-#ifdef RD_SCALABLE_UI_V2
-    iCancelPopupInQwerty = EFalse;
-#endif //RD_SCALABLE_UI_V2    
-#ifdef RD_INTELLIGENT_TEXT_INPUT    
-    iSupressCursorMoveToEndChrKeyPressed = ETrue;  
-#endif //RD_INTELLIGENT_TEXT_INPUT     
-    }
-
-TBool CAknFepManager::IsAbleToLaunchPCT() const
-    {
-    TBool isAbleToLaunch = EFalse;
-    if (FeatureManager::FeatureSupported(KFeatureIdJapanesePicto)
-     && (iAknEditorFlags & EAknEditorFlagEnablePictographInput))
-        {
-        isAbleToLaunch = ETrue;
-        }
-    return isAbleToLaunch;
-    }
-
-TBool CAknFepManager::IsAbleToLaunchSmiley() const
-    {
-    TBool ableToLaunchSmiley(EFalse);
-    
-    CAknEdwinState* edwinState = EditorState();
-    if(edwinState)
-        {
-        CAknEdwinFormAccessor* formAccessor = edwinState->FormAccessor();
-        if(formAccessor)
-            {
-            CEikEdwin *edwin = static_cast<CEikEdwin*>(formAccessor->FormClientControl());
-            if(edwin)
-                {
-                ableToLaunchSmiley = ((edwin->UserFlags()&CEikEdwin::EAvkonEnableSmileySupport) != 0);
-                }
-            }
-        }
-
-    return ableToLaunchSmiley;
-    }
-
-TInt CAknFepManager::GetCurrentEditorSCTResId() const
-    {
-    if(!EditorState())
-        {
-    	return NumericModeSCTResourceId();    	
-        }
-    TInt currentEditorSCTResId = EditorState()->SpecialCharacterTableResourceId();
-    if ( FeatureManager::FeatureSupported(KFeatureIdChinese) )
-        {        
-        if (currentEditorSCTResId == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
-            {
-            if (iMode == EZhuyin)
-            	{
-            	currentEditorSCTResId = 
-                                  R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_FOR_ZHUYIN_SYMBOL_INPUT;
-        	    }
-            else
-            	{
-            	currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
-        	    }        
-            }
-        }
-    if (currentEditorSCTResId == EDefaultSCTResourceId) // -1 forces the default in SCT resource definition
-        {
-        if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly)
-            {
-            currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_LATIN_ONLY;
-            }        
-        else	
-            {        		        	
-            // only ITU-T and when Bopomofo symbol input mode is supported, we use new sct table
-            TInt supportSCTToneMarks = EFalse;
-            MPtiCoreInfo* ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineZhuyin);
-            
-            if(ptiCoreInfo)
-                {
-                supportSCTToneMarks = ptiCoreInfo->CapsBits() & ESupportSCTToneMarks;
-                }
-            
-            ptiCoreInfo = iPtiEngine->CoreInfo(EPtiEngineZhuyinByPhrase);
-            if(ptiCoreInfo)    
-                {
-                supportSCTToneMarks = supportSCTToneMarks || 
-                                      (ptiCoreInfo->CapsBits() & ESupportSCTToneMarks);
-                }
-            
-            if(!iQwertyInputMode && (iMode == EZhuyin) && supportSCTToneMarks)
-                {
-                currentEditorSCTResId = 
-                                  R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_FOR_ZHUYIN_SYMBOL_INPUT;
-                }
-            else
-                {
-                if ( FeatureManager::FeatureSupported(KFeatureIdChinese) )
-                    {    
-                    currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
-                    }
-                else
-                    {                    
-                    currentEditorSCTResId = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;
-                    }
-                }
-            }
-        }  
-    return currentEditorSCTResId;         
-    }
-
-void CAknFepManager::LaunchPictographCharacterTableL()
-    {
-    DoLaunchSctAndPctL(NULL, EShowPctFirst);
-    }
-
-
-void CAknFepManager::UpdateInlineEditL(const TDesC& aNewInlineText, 
-                                       TInt aPositionOfInsertionPointInInlineText)
-    {
-    if ( ! IsFlagSet ( EFlagInsideInlineEditingTransaction ) )
-        {
-        return;
-        }
-    // Japanese implementation needs to be merged with functionality of other languages. Now they are separate.
-    if (iLanguageCapabilities.iInputLanguageCode == ELangJapanese)
-        {
-        iUncommittedText.iCursorPos = iUncommittedText.iAnchorPos + 
-                                      aPositionOfInsertionPointInInlineText;
-
-        if (aNewInlineText.Length() == 1)
-            {
-            if (aNewInlineText[0] == KAknFEPLineFeedSymbol ||
-                aNewInlineText[0] == KAknFEPMirroredLineFeedSymbol)
-                {
-                SetFlag(EFlagLineFeedCharacter);
-                ClearFlag(EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter);
-                }
-            else if (aNewInlineText[0] == iSpaceCharacterCode)
-                {
-                SetFlag(EFlagSpaceCharacter);
-                ClearFlag(EFlagLineFeedCharacter | EFlagFullWidthSpaceCharacter);
-                }
-            else if (aNewInlineText[0] == iFullWidthSpaceCharacterCode)
-                {
-                SetFlag(EFlagFullWidthSpaceCharacter);
-                ClearFlag(EFlagLineFeedCharacter | EFlagSpaceCharacter);
-                }
-            else
-                {
-                ClearFlag(EFlagLineFeedCharacter 
-                          | EFlagSpaceCharacter 
-                          | EFlagFullWidthSpaceCharacter);
-                }
-            if (iInputCapabilities.SupportsSecretText())
-                {
-                TBuf<1> buf;
-                buf.Append(aNewInlineText[0]);
-                NewCharacterL(buf);
-                }
-            else
-                {
-                SetFlag(EFlagInsideMultitapInlineEditingTransaction);
-                iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(aNewInlineText, 
-                                                  aPositionOfInsertionPointInInlineText);
-                }
-            }
-        else
-            {
-            ClearFlag(EFlagLineFeedCharacter | EFlagSpaceCharacter | EFlagFullWidthSpaceCharacter);
-            iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(aNewInlineText, 
-                                                   aPositionOfInsertionPointInInlineText);
-            }
-#ifdef _DEBUG
-        RDebug::Print(_L("UpdateInlineEditL text=[%S] len=[%d] CurPos=[%d] AncPos=[%d] change=[%d]"),
-            &aNewInlineText, iUncommittedText.Length(),
-            iUncommittedText.iCursorPos, iUncommittedText.iAnchorPos,
-            aPositionOfInsertionPointInInlineText);
-#endif
-        }
-    else
-        {
-        	TInt curPos = iUncommittedText.iAnchorPos + aNewInlineText.Length();
-        	
-        	TInt deltaCur = curPos - iUncommittedText.iCursorPos;
-        	
-        	TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-        	
-        	TInt docLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-        	
-        	HBufC* newInlineText=NULL;
-	        	
-        	TBool syncLater = ETrue;
-			// we have to restrict to a length that is permissible in the editor
-        	// this situation comes when we select the max length condition is reached 
-        	// in the editor and we navigate to one of the words in the middle 
-        	// and select a longer word from the candidate list        	
-        	
-
-        	if( (maxEdSize > 0) && ( deltaCur > 0 ) 
-        							&& (( docLength + deltaCur) > maxEdSize ) )
-        	{
-        		newInlineText= aNewInlineText.Left( aNewInlineText.Length() - (docLength + deltaCur - maxEdSize )).AllocLC();
-        		aPositionOfInsertionPointInInlineText=newInlineText->Length();
-        	}
-        	else if((maxEdSize > 0) && (curPos > maxEdSize))
-        	{
-        		newInlineText= aNewInlineText.Left(maxEdSize - iUncommittedText.iAnchorPos).AllocLC();
-        		aPositionOfInsertionPointInInlineText=newInlineText->Length();
-        	}        	
-        	else
-        	{
-        		newInlineText=aNewInlineText.AllocLC();
-        		syncLater = EFalse;        	
-        	} 
-	// The Below code changes are made to sync iTextBuffer and the last word in the editor.When the 
-	// cursor position reaches more than the max length of editor, tail length is modified according 
-	// to truncated last word and Autocompletion bit length (Element count) value to display last 
-	// word in the editor properly. 			       	        	        	
-    #ifdef RD_INTELLIGENT_TEXT_INPUT        	 	
-			if(syncLater)
-        	    {       	    
-    	        TBuf<CAknFepManager::EMaximumFepWordLength> currentText = iPtiEngine->CurrentWord();
-    	        currentText.SetLength(newInlineText->Length());        	        
-    	        iPtiEngine->HandleCommandL( EPtiCommandSetCursorCrossedMaxLength );
-    	        iPtiEngine->SetCurrentWord(currentText); 
-    	        TransferFepStateToEditorL();
-    	        iPtiEngine->HandleCommandL( EPtiCommandResetCursorCrossedMaxLength );
-        	    }
-	#endif 	
-        	// CleanupStack::PushL(TCleanupItem(ClearFepStateOnLeave,this));
-        	iUncommittedText.iCursorPos = iUncommittedText.iAnchorPos + aPositionOfInsertionPointInInlineText;
-
-		HBufC* decoratedInlineEdit = HBufC::NewLC(aNewInlineText.Length()*3);
-		TPtr bufferPtr(decoratedInlineEdit->Des());
-
-        if ( EditorSupportsNeutralProtection() )
-            {
-        		if ( newInlineText->Length() > 0 )
-                {
-                iInlineTextDecorator->DecorateInlineText(
-        			newInlineText->Des(),
-                    bufferPtr,
-                    aPositionOfInsertionPointInInlineText,
-                    static_cast<TChar>(PreviousChar()),
-                    IsRightToLeftParagraph(DocPos() ),
-                    ( CurrentInputDirectionality() == TBidiText::ERightToLeft ) );
-                }
-
-            // Because the length of the new inline edit may bear no relation to the old inline edit,
-            // the passed desired position of the cursor (which is hidden in S60 anyway) in the new
-            // inline edit is restricted to its Length(). The input value of parameter
-            // aPositionOfInsertionPointInInlineText is ignored, and its modified value
-            // from the DecorateInlineText routine is also ignored.
-            
-			aPositionOfInsertionPointInInlineText = decoratedInlineEdit->Length();
-
-            iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(
-                bufferPtr, aPositionOfInsertionPointInInlineText);
-            	
-            iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-            iUncommittedText.iAnchorPos-=decoratedInlineEdit->Length();
-        	}
-
-        	else
-        	{
-        		// Even without the issue of decoration, the length of the new inline edit may bear no
-        		// relation to the old inline edit. It is always set to length (the end) of the new inline edit
-        		aPositionOfInsertionPointInInlineText = newInlineText->Length();
-
-        		iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(
-        			newInlineText->Des(), aPositionOfInsertionPointInInlineText);
-
-        		// This is needed here too because we should not insist that the new text is the same length
-        		// as the old, and so the iUncommitted text should be reset.
-        		iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-        		iUncommittedText.iAnchorPos-=newInlineText->Length();
-        	}       
-
-        	
-        CleanupStack::PopAndDestroy(decoratedInlineEdit);  
-        SendEventsToPluginManL( EPluginSyncFepAwareText, EPluginSyncUpdatedText );
-        CleanupStack::PopAndDestroy(newInlineText);
-        //Send info to engine to set EPtiXt9FlagAutoCompletionSetOnToOff flag as false 
-        TInt value = 0;
-        TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandAutoCompletionOnToOff,&value));			
-        }  
-    }
-
-void CAknFepManager::StartInlineEditL()
-    {
-    if(iConcatenationTimer->IsActive())
-    	iConcatenationTimer->Cancel();
-	
-    //currently western only, would need to sort out flags if this were to be used
-    //in multitap modes
-    switch (iMode)
-        {
-        case ELatin:
-        case EKatakana:
-        case EHiragana:
-            iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(KNullDesC, 0, EFalse, 
-                                                                         NULL, *this, *this);
-            iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-            break;
-        default:
-            iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(KNullDesC, 0, EFalse, 
-                                                                         NULL, *this, *this);
-            break;
-        }
-#ifdef _DEBUG
-    RDebug::Print(_L("StartInlineEditL len=[%d] CurPos=[%d] AncPos=[%d]"),
-        iUncommittedText.Length(),
-        iUncommittedText.iCursorPos, iUncommittedText.iAnchorPos );
-#endif
-
-    // have to calculate the number of free space on current EDITOR after StartFepInlineEditL().
-    TInt maxEdSize = iInputCapabilities.FepAwareTextEditor()->DocumentMaximumLengthForFep();
-    TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-    iFreeSpaceOfEditor = maxEdSize - edSize;
-
-    SetFlag(EFlagInsideInlineEditingTransaction);
-    }
-
-void CAknFepManager::StartInlineEditL(const TDesC& aText)
-    {
-    if(iConcatenationTimer->IsActive())
-    	iConcatenationTimer->Cancel();
-	
-    TInt textLength = aText.Length();
-
-    // CleanupStack::PushL(TCleanupItem(ClearFepStateOnLeave,this));
-    
-	HBufC* decoratedInlineEdit = HBufC::NewLC(aText.Length()*3);
-	TPtr bufferPtr(decoratedInlineEdit->Des());
-
-    // decorate the inline edit
-    if( aText.Length() > 0 && EditorSupportsNeutralProtection() )
-        {
-        iInlineTextDecorator->DecorateInlineText(
-            aText,
-            bufferPtr,
-            textLength, // aPositionOfInsertionPointInInlineText,
-            static_cast<TChar>(PreviousChar()),
-            IsRightToLeftParagraph( DocPos() ),
-            ( CurrentInputDirectionality() == TBidiText::ERightToLeft ) );
-        }
-    else
-        {
-
-        bufferPtr.Copy(aText);
-        }
-    
-    // Before starting editor inline, we cancel editor inline if by any chance editor ends up in inline edit and fep does not
-        TBool phoneIdle = (EditorType() == CAknExtendedInputCapabilities::EPhoneNumberEditor); 
-        
-        if(phoneIdle)
-            {
-            iInputCapabilities.FepAwareTextEditor()->CancelFepInlineEdit();
-            }
-    
-    // operates at the current insertion point or selection
-    iInputCapabilities.FepAwareTextEditor()->StartFepInlineEditL(
-
-        bufferPtr,
-        textLength, // aPositionOfInsertionPointInInlineText,
-        EFalse,  // Cursor visibility
-        0, // MFormCustomDrawer*
-        *this,
-        *this);
-
-    // CleanupStack::Pop(); // cleanupitem for FEP state.
-
-    if (!iInputCapabilities.FepAwareTextEditor())
-        {
-        // In case while starting the inline edit, 3rd party app removes the focus out of editor before the transaction
-        // completes, we return with an error.
-        User::Leave(KErrCorrupt);
-        }
-    // cursor span needs to be updated following potential modification
-    // of the inline edit content before it was started
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-	iUncommittedText.iAnchorPos-=decoratedInlineEdit->Length();
-	CleanupStack::PopAndDestroy(decoratedInlineEdit);
-
-    SetFlag(EFlagInsideInlineEditingTransaction);
-    }
-
-void CAknFepManager::StartInlineEditL(TCursorSelection aCursorSelection, 
-                                      const TDesC& aInitialInlineText, 
-                                      TInt aPositionOfInsertionPointInInlineText, 
-                                      TBool aCursorVisibility)
-    {
-    	
-		if(iConcatenationTimer->IsActive())
-    	iConcatenationTimer->Cancel();
-	
-    TBool setToTrue=EFalse;
-
-    // setToTrue parameter forces use of selection hiding inline edit editor API -
-    // this method also sets the cursor selection to the second parameter
-    // CleanupStack::PushL(TCleanupItem(ClearFepStateOnLeave,this));
-    iInputCapabilities.FepAwareTextEditor()->Extension1()->StartFepInlineEditL(
-        setToTrue,
-        aCursorSelection,
-        aInitialInlineText,
-        aPositionOfInsertionPointInInlineText,
-        aCursorVisibility,
-        0, // MFormCustomDrawer* ?
-        *this,
-        *this);
-    // CleanupStack::Pop(); // cleanupitem for FEP state.
-    SetFlag(EFlagInsideInlineEditingTransaction);
-    //This will suppress Edit submenu from poping up
-    SetCcpuFlag(ECcpuStateIgnoreStarUp);
-    }
-
-TBool CAknFepManager::CloseUiIfWordDeletedL()
-    {
-    if (iUncommittedText.Length()==0)
-        {
-        // word has been totally deleted
-        ClearFlag(EFlagCompoundWord);
-        TryCloseUiL();
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-TBool CAknFepManager::TryGetTextToUncommitL(TDes& aText, TInt aCode, TBool& aComsumeKey)
-    {
-    TWesternNaviEvent naviEvent = ENullNaviEvent;
-    if (aCode == EKeyLeftArrow)
-        {
-        naviEvent = ELeftNaviEvent;
-        }
-    else if (aCode == EKeyRightArrow)
-        {
-        naviEvent = ERightNaviEvent;
-        }
-    else if (aCode == EKeyBackspace)
-        {
-        naviEvent = EBackspaceEvent;
-        }
-
-    TInt nextCharPos = 0;  // Character ordinal in logical memory (0 - n-1)
-    TBool hindibackspace = 0 ;  
-    TBool nextPositionFound = EFalse;
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-    if ( naviEvent == ERightNaviEvent )
-        {
-        nextPositionFound = GetNextVisualRightCharacter( nextCharPos );
-        if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || 
-                (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))
-            {
-            FindStartOfWord(nextCharPos);   
-                        
-            if(nextCharPos < iUncommittedText.LowerPos())
-                {
-                nextCharPos = iUncommittedText.LowerPos();
-                }
-            }
-        }
-    else if ( naviEvent == ELeftNaviEvent )
-        {
-        nextPositionFound = GetNextVisualLeftCharacter( nextCharPos );
-        if( nextPositionFound && (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) ||
-                (nextPositionFound && (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)))
-            {
-            FindEndOfWord(nextCharPos);
-            if(nextCharPos > iUncommittedText.HigherPos())
-                {
-                nextCharPos = iUncommittedText.HigherPos();
-                }
-            }
-            
-        }
-    else if ( naviEvent == EBackspaceEvent )
-        {
-        if (iLanguageCapabilities.iRightToLeftLanguage)
-            {
-            nextPositionFound = GetNextVisualRightCharacter( nextCharPos );
-            }
-        else
-            {
-            if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) ||
-                    (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))
-                {
-                TCursorSelection curSel;
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel);
-                nextCharPos = curSel.iCursorPos;        
-                hindibackspace = ETrue;
-                }
-            else
-                {
-            nextPositionFound = GetNextVisualLeftCharacter( nextCharPos );
-                }   
-            }
-        }
-
-    if ( !nextPositionFound && !hindibackspace )
-        {
-        aComsumeKey = EFalse;
-        return EFalse;
-        }
-
-    TInt anchorPos = 0;
-    TInt cursorPos = 0;
-    TTmDocPosSpec pos = DocPos();
-    CTmTextLayout::TTmChunkDescription leftChunk;
-    CTmTextLayout::TTmChunkDescription rightChunk;
-    FindAdjacentChunks(pos, leftChunk, rightChunk);
-
-    if (( naviEvent == ELeftNaviEvent && leftChunk.iRightToLeft ) ||
-        ( naviEvent == ERightNaviEvent && !rightChunk.iRightToLeft ))
-        {
-        anchorPos = nextCharPos;
-        cursorPos = nextCharPos;
-        FindEndOfWord(cursorPos);
-        }
-    else
-        {
-        if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) ||
-                (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))
-            {
-            cursorPos = nextCharPos;
-            }
-        else
-            {
-            cursorPos = nextCharPos + 1;    
-            }
-        anchorPos = nextCharPos;
-        FindStartOfWord(anchorPos);
-        }
-        
-#ifdef RD_INTELLIGENT_TEXT_INPUT    
-	TCursorSelection curSel;
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel);
-    // if selection happens dont consume the event pass it to editor
-    if((naviEvent == EBackspaceEvent)
-            && (!IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-            && (curSel.iAnchorPos != curSel.iCursorPos))
-        {
-        aComsumeKey = EFalse;
-        return EFalse;
-        }
-#endif
-
-    iUncommittedText.SetSelection(cursorPos, anchorPos);
-
-    if (iUncommittedText.Length() <= EMaximumFepWordLength)
-        {
-        iInputCapabilities.FepAwareTextEditor()->
-            GetEditorContentForFep(aText, iUncommittedText.iAnchorPos, iUncommittedText.Length());
-        aComsumeKey = ETrue;
-        return ETrue;
-        }
-    else
-        {
-        if (naviEvent == EBackspaceEvent)
-            {
-            // delete the last character
-            cursorPos--;
-            iUncommittedText.SetSelection(cursorPos, cursorPos);
-            aComsumeKey = EFalse;
-            }
-        else
-            {
-            TInt newCursorPosition= (pos.iPos == cursorPos) ? anchorPos : cursorPos;
-            iUncommittedText.SetSelection(newCursorPosition, newCursorPosition);
-            iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-            aComsumeKey = ETrue;
-            }
-        // The word is longer than EMaximumFepWordLength. Ui is deactivated.
-        TryCloseUiL();
-        return EFalse;
-        }
-    }
-
-
-TBool CAknFepManager::TryGetTextToUncommitL(TDes& aText, TBool& aComsumeKey)
-    {
-    TInt nextCharRightPos = 0;  // Character ordinal in logical memory (0 - n-1)
-    TInt nextCharLeftPos = 0; 
-    TBool nextRightPosFound = EFalse;
-    TBool nextLeftPosFound = EFalse;
-    
-    nextRightPosFound = GetNextVisualRightCharacter( nextCharRightPos );
-    if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) || 
-            (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))
-        {
-        FindStartOfWord(nextCharRightPos);   
-                    
-        if(nextCharRightPos < iUncommittedText.LowerPos())
-            {
-            nextCharRightPos = iUncommittedText.LowerPos();
-            }
-        }
-    
-    
-    nextLeftPosFound = GetNextVisualLeftCharacter( nextCharLeftPos );
-    if( nextLeftPosFound && (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) ||
-            (nextLeftPosFound && (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai)))
-        {
-        FindEndOfWord(nextCharLeftPos);
-        if(nextCharLeftPos > iUncommittedText.HigherPos())
-            {
-            nextCharLeftPos = iUncommittedText.HigherPos();
-            }
-        }
-            
-
-
-
-    if ( !nextRightPosFound && !nextLeftPosFound )
-        {
-        aComsumeKey = EFalse;
-        return EFalse;
-        }
-
-    TInt anchorPos = 0;
-    TInt cursorPos = 0;
-
-    
-    
-    TTmDocPosSpec pos = DocPos();
-    CTmTextLayout::TTmChunkDescription leftChunk;
-    CTmTextLayout::TTmChunkDescription rightChunk;
-    FindAdjacentChunks(pos, leftChunk, rightChunk);
-
-    /*
-    if( (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode))) ||
-            (TLanguage(iLanguageCapabilities.iInputLanguageCode) == ELangThai))
-        {
-        cursorPos = pos.iPos;
-        }
-    else
-        {
-        cursorPos = pos.iPos + 1;    
-        }
-    */
-    
-    anchorPos = pos.iPos;
-    cursorPos = pos.iPos;
-    FindEndOfWord(cursorPos);          
-    FindStartOfWord(anchorPos);
-    
-    
-    if(cursorPos == pos.iPos || anchorPos == pos.iPos)
-        {
-        iUncommittedText.SetSelection(pos.iPos, pos.iPos);
-        aComsumeKey = ETrue;
-        return EFalse;
-        }
-    else
-        {
-        iUncommittedText.SetSelection(cursorPos, anchorPos);
-        }  
-    
-    if (iUncommittedText.Length() <= EMaximumFepWordLength)
-        {
-        iInputCapabilities.FepAwareTextEditor()->
-            GetEditorContentForFep(aText, iUncommittedText.iAnchorPos, iUncommittedText.Length());
-        aComsumeKey = ETrue;
-        return ETrue;
-        }
-    else
-        {
-        /*
-        TInt newCursorPosition= (pos.iPos == cursorPos) ? anchorPos : cursorPos;
-        iUncommittedText.SetSelection(newCursorPosition, newCursorPosition);
-        iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-        */
-        aComsumeKey = ETrue;
-        // The word is longer than EMaximumFepWordLength. Ui is deactivated.
-        TryCloseUiL();
-        return EFalse;
-        }
-    }
-
-void CAknFepManager::UpdateCbaL(TInt aResourceId)
-    {
-    if ( !IsFepAwareTextEditor() )
-        {
-        return;
-        }
-
-    if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateCopy | ECcpuStateStartCut | ECcpuStateCut))
-        {
-        return;
-        }
-    
-    //For bug ESSG-7RXC96
-    if((iAknEditorFlags & EAknEditorFlagFindPane)&& IsChineseInputLanguage()&& aResourceId != NULL)
-        {
-        return;
-        }
-
-	iUiInterface->UpdateSoftkeysL(aResourceId, EditorState(), this, 
-                                iSharedDataInterface->InputMode());
-    }
-
-
-TBool CAknFepManager::TryRemoveNoMatchesIndicatorL()
-    {
-    __ASSERT_DEBUG(IsFlagSet(EFlagInsideInlineEditingTransaction), 
-                   AknFepPanic(EAknFepPanicNotInsideInlineEdit));
-
-    if (IsFlagSet(CAknFepManager::EFlagNoMatches))
-        {
-        ClearFlag(CAknFepManager::EFlagNoMatches); 
-        TBuf<EMaximumFepWordLength> newText;
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(newText, 
-                                                                      iUncommittedText.iAnchorPos,
-                                                                      iUncommittedText.Length());
-        iInputCapabilities.FepAwareTextEditor()->UpdateFepInlineTextL(newText, 
-                                                                      iUncommittedText.Length());
-        SendEventsToPluginManL( EPluginSyncFepAwareText );
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-TBool CAknFepManager::IsMoreGoodWordsComing(TInt aNewWordLength) const
-    {
-    return (aNewWordLength == iUncommittedText.Length() + 1);
-    }
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-TBool CAknFepManager::IsMoreGoodAutoCompleteWordsComing(TInt aInputMode,TInt aPreviousWordLength, 
-                                                        TInt aNewWordLength) const
-	{
-	return ((aInputMode == EPtiEngineWordCompletion) && (aPreviousWordLength != aNewWordLength ));	
-	}
-#endif
-
-void CAknFepManager::TryStartCompoundWord()
-    {
-    // check if this word constitutes a 'compound' word
-    // i.e. is either adjacent char is an alphabetic characeter
-    TBuf<ESingleCharacter> ch;
-    // check the previous character
-    if(iUncommittedText.iAnchorPos>0)
-        {
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(ch, 
-                                                                     iUncommittedText.iAnchorPos-1,
-                                                                     ESingleCharacter);
-        if (ch.Length()>0 && STATIC_CAST(TChar, IsValidInLineCharacter(ch[0])))
-            {
-            SetFlag(EFlagCompoundWord);
-            }
-        }
-
-    // check the next character
-    TInt edSize = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-    if (!IsFlagSet(EFlagCompoundWord) && iUncommittedText.iAnchorPos < edSize)
-        {
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(ch, 
-                                                                     iUncommittedText.iAnchorPos,
-                                                                     ESingleCharacter);
-        if (ch.Length()>0 && STATIC_CAST(TChar, IsValidInLineCharacter(ch[0])))
-            {
-            SetFlag(EFlagCompoundWord);
-            }
-        }
-    }
-
-void CAknFepManager::AddCompoundWordToUdbL()
-    {
-    __ASSERT_DEBUG(WesternPredictive() , AknFepPanic(EAknFepPanicNonPermittedEditorMode));
-
-    HBufC* compoundWordBuf = 
-                   HBufC::NewLC(iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()); // buffer for text
-    TPtr compoundWord=compoundWordBuf->Des();
-
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-
-    // reset cursor span on word
-    FindStartOfWord(iUncommittedText.iAnchorPos);
-    FindEndOfWord(iUncommittedText.iCursorPos);
-
-    iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(compoundWord, 
-                                                                    iUncommittedText.iAnchorPos, 
-                                                                    iUncommittedText.Length());
-    FepUI()->AddTextToUserDictionaryL(compoundWord);
-    CleanupStack::PopAndDestroy();  // compoundWordBuf
-    }
-
-void CAknFepManager::SetWesternPredictive( const TBool aWesternPredictive )
-    {
-    const TInt previousValue = iWesternPredictive;
-    iWesternPredictive = aWesternPredictive && !(iAknEditorFlags & EAknEditorFlagNoT9) &&
-    // Predictive QWERTY (XT9) changes ---->
-        (   
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        (
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		iLanguageCapabilities.iSupportsWesternPredictive 
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        && !iQwertyInputMode)
-         || (iLanguageCapabilities.iSupportsWesternQwertyPredictive && iQwertyInputMode) 
-#ifdef __HALF_QWERTY_KEYPAD
-         || (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive && iQwertyInputMode) 
-#endif //__HALF_QWERTY_KEYPAD
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		);
-    // Predictive QWERTY (XT9) changes <----
-    if ( (previousValue != iWesternPredictive) && !(iAknEditorFlags & EAknEditorFlagNoT9) )
-        {
-        if (iWesternPredictive)
-            {
-            iSharedDataInterface->SetPredictiveTextOn();
-            }
-        else
-            {
-            iSharedDataInterface->ResetPredictiveTextOn();
-            }
-        }
-    }
-
-void CAknFepManager::SetWesternAutoComplete( const TBool aWesternAutoComplete )
-    {
-    const TInt previousValue = iIsAutoCompleteOn;
-    iIsAutoCompleteOn = aWesternAutoComplete && !(iAknEditorFlags & EAknEditorFlagNoT9);
-    if ( (previousValue != iIsAutoCompleteOn) && !(iAknEditorFlags & EAknEditorFlagNoT9) )
-        {
-        if (iIsAutoCompleteOn)
-            {
-            iSharedDataInterface->SetPredictiveTextAutoCompleteOn();
-            }
-        else
-            {
-            iSharedDataInterface->ResetPredictiveTextAutoCompleteOn();
-            }
-        }
-    }
-
-void CAknFepManager::SetJapanesePredictive(const TBool aJapanesePredictive)
-    {
-    if (iJapanesePredictive != aJapanesePredictive)
-        {
-        iJapanesePredictive = aJapanesePredictive;
-        }
-    if (iJapanesePredictive & iSharedDataInterface->PredictiveTextJapaneseOn()
-     || !iJapanesePredictive & !iSharedDataInterface->PredictiveTextJapaneseOn())
-        {
-        if(iJapanesePredictive)
-            {
-            iSharedDataInterface->SetJapanesePredictiveTextOn();
-            }
-        else
-            {
-            iSharedDataInterface->ResetJapanesePredictiveTextOn();
-            }
-        }
-    }
-
-void CAknFepManager::SetQwertyMode(const TBool aQwertyInputMode)
-    {
-#ifdef RD_SCALABLE_UI_V2
-    if( aQwertyInputMode && iFepPluginManager && 
-        iSharedDataInterface->PluginInputMode() != EPluginInputModeNone
-        // Add this condition for addtion of ITI features on FSQ.
-        // iSharedDataInterface->QwertyInputMode() == 1, means that 
-        // hw keyboard is slided, then need to close touch inputmethods.
-        && iSharedDataInterface->QwertyInputMode() )
-        {
-        iFepPluginManager->ResetMenuState(EFalse);        
-        ExitPluginSpellModeByCancel();
-        TRAP_IGNORE(iFepPluginManager->ClosePluginInputModeL( ETrue ));
-        if ( iCancelPopupInQwerty )
-            {
-            TRAP_IGNORE( SimulateKeyEventL( EKeyCBA2 ) );
-            }
-        }
-    SetQwertyModeToInputcapbility();
-#endif//RD_SCALABLE_UI_V2
-    if (!COMPARE_BOOLS(aQwertyInputMode, iQwertyInputMode))
-        {
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-        if(IsAutoCompleteOn())
-        	{
-            TRAP_IGNORE(RemoveSuggestedCompletionL());
-            }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        iQwertyInputMode = aQwertyInputMode;
-        if (!iQwertyInputMode)
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            SetTypingCorrectionLevel(EPtiErrorCorrectionLevelHigh);
-            SetNumberCandidateState(ETrue); // ETrue
-            SetPrimaryCandidate(EFalse); // Best prediction
-#endif            
-            ClearFlag(EFlagQwertyShiftMode | EFlagNoActionDuringChrKeyPress);
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        else
-	        {
-	        iSharedDataInterface->HandlePredictiveTextNumberCandidateSettingChange();
-	        iSharedDataInterface->HandlePredictiveTextTypingCorrectionLevelChange();
-	        iSharedDataInterface->HandlePredictiveTextPrimaryCandidateChange();	
-	        }
-#endif        
-
-        if ( iFepManState != EAknFepStateNull && IsFepAwareTextEditor() )
-            {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
-			   // In case of layout remove the auto completion part
-			   // Before transfer fep state to editor state.        
-               if(IsAutoCompleteOn())
-            	{
-#ifdef RD_SCALABLE_UI_V2            	
-                if( iFepPluginManager 
-                        && iFepPluginManager->IsSupportITIOnFSQ()
-                        && !iQwertyInputMode )
-                    {
-                    TRAP_IGNORE( iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate ) );
-                    }
-                else
-#endif //RD_SCALABLE_UI_V2                	
-                    {
-                    TInt tailLength = 0;
-                    TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ));
-                    if(tailLength > 0)
-                        {
-                        TRAP_IGNORE(
-                            {
-                            RemoveSuggestedAdvanceCompletionL();
-                            iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate );
-                            });                       
-                        }
-                    }
-            	}
-#endif 
-            if ( !iFocusedItemDestroy )
-            	{            	
-                TRAP_IGNORE(
-                    {
-                    TransferFepStateToEditorL();
-                    TryCloseUiL();
-                    ConfigureFEPFromEditorStateL();
-                    });                
-            	}            
-            }
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(iFnKeyManager)
-        iFnKeyManager->SetQwertyInputMode(aQwertyInputMode);
-#endif
-    }
-
-TBool CAknFepManager::WesternPredictive(TInt aMode) const
-    {
-    TInt mode = iMode;
-    if ( aMode )
-        {
-        mode = aMode;
-        }
-    return (mode == ELatin && iWesternPredictive &&
-    // Predictive QWERTY (XT9) changes ---->
-      
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        ((
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		iLanguageCapabilities.iSupportsWesternPredictive 
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        && !iQwertyInputMode)
-         || (iLanguageCapabilities.iSupportsWesternQwertyPredictive && iQwertyInputMode)
-#ifdef __HALF_QWERTY_KEYPAD
-		|| (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive && iQwertyInputMode)
-#endif //__HALF_QWERTY_KEYPAD
-		)
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		);
-    // Predictive QWERTY (XT9) changes <----
-    }
-
-TBool CAknFepManager::IsPredictive(TInt aMode) const
-    {
-    TBool isPredictive = EFalse;
-    TInt mode = iMode;
-    if ( aMode )
-        {
-        mode = aMode;
-        }
-    if (mode == EHiraganaKanji )
-        {
-        if ((iPermittedInputModes & EAknEditorHiraganaKanjiInputMode)
-         && iJapanesePredictive
-         && !(iAknEditorFlags & EAknEditorFlagNoT9)
-         && HasJapanesePredictionInputMode())
-            {
-            isPredictive = ETrue;
-            // Japanese predictive input is available on both Qwerty and not Qwerty
-            return isPredictive;
-            }
-        }
-    else if (mode == ELatin)
-        {
-        if ((iPermittedInputModes & (EAknEditorTextInputMode | EAknEditorHalfWidthTextInputMode))
-          && !(iAknEditorFlags & EAknEditorFlagNoT9)
-          && iWesternPredictive && 
-          (iLanguageCapabilities.iSupportsWesternPredictive
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-           ||iLanguageCapabilities.iSupportsWesternQwertyPredictive 
-#ifdef __HALF_QWERTY_KEYPAD           
-           ||iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive
-#endif //__HALF_QWERTY_KEYPAD           
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		)) // Predictive QWERTY (XT9) changes
-            {
-            isPredictive = ETrue;
-            }
-        }
-#ifdef RD_SCALABLE_UI_V2
-	#ifdef RD_INTELLIGENT_TEXT_INPUT
-	    return isPredictive; //&& (iFepPluginManager->PluginInputMode() == EPluginInputModeNone);
-	#else
-	    return isPredictive && !iQwertyInputMode 
-             && ((iFepPluginManager->PluginInputMode() == EPluginInputModeItut) 
-	    			|| (iFepPluginManager->PluginInputMode() == EPluginInputModeNone));
-	#endif //RD_INTELLIGENT_TEXT_INPUT
-#else
-	#ifdef RD_INTELLIGENT_TEXT_INPUT
-	    return isPredictive;
-	#else
-	    return isPredictive && !iQwertyInputMode;
-	#endif //RD_INTELLIGENT_TEXT_INPUT
-#endif //RD_SCALABLE_UI_V2
-    }
-
-TBool CAknFepManager::Japanese() const
-    {
-    TBool rtn = EFalse;
-    switch (iMode)
-        {
-        case EHiraganaKanji:
-        case EKatakana:
-        case EHiragana:
-            rtn = ETrue;
-            break;
-        case ELatin:
-            if ((!WesternPredictive()) && iCharWidth == EFullWidthChar)
-                {
-                rtn = ETrue;
-                }
-            break;
-        case ENumber:
-            if (iCharWidth == EFullWidthChar)
-                {
-                rtn = ETrue;
-                }
-            break;
-        default:
-            break;
-        }
-    return rtn;
-    }
-
-TBool CAknFepManager::IsOnlyFullWidthCharacterPermitted() const
-    {
-    CAknEdwinState* editorState = EditorState();
-    TUint permittedInputModes = editorState->PermittedInputModes();
-    TUint fullWidthPermitted = (EAknEditorFullWidthTextInputMode
-                              | EAknEditorFullWidthNumericInputMode
-                              | EAknEditorFullWidthKatakanaInputMode);
-    TUint fullWidthNotPermitted = ~fullWidthPermitted;
-    TBool isfullchar = ETrue;
-    if (permittedInputModes & fullWidthNotPermitted)
-        {
-        isfullchar = EFalse;
-        }
-
-    if (!(permittedInputModes & fullWidthPermitted))
-        {
-        isfullchar = EFalse;
-        }
-
-    return isfullchar;
-    }
-
-TBool CAknFepManager::IsOnlyHalfWidthCharacterPermitted() const
-    {
-    CAknEdwinState* editorState = EditorState();
-    TUint permittedInputModes;
-    if( editorState )
-        {
-        permittedInputModes= editorState->PermittedInputModes();
-        }
-    else
-        {
-        permittedInputModes = EAknEditorNumericInputMode;
-        }
-    TUint halfWidthNotPermitted = (EAknEditorFullWidthTextInputMode
-                                 | EAknEditorFullWidthNumericInputMode
-                                 | EAknEditorFullWidthKatakanaInputMode
-                                 | EAknEditorHiraganaKanjiInputMode
-                                 | EAknEditorHiraganaInputMode);
-
-    TUint halfWidthPermitted  = ~halfWidthNotPermitted;
-    TBool ishalfchar = ETrue;
-    if (permittedInputModes & halfWidthNotPermitted)
-        {
-        ishalfchar = EFalse;
-        }
-
-    if (!(permittedInputModes & halfWidthPermitted))
-        {
-        ishalfchar = EFalse;
-        }
-    if (permittedInputModes & EAknEditorTextInputMode)
-        {
-        ishalfchar = EFalse;
-        }
-    if (editorState && (editorState->Flags() & EAknEditorFlagLatinInputModesOnly))
-        {
-        ishalfchar = ETrue;
-        }
-    return ishalfchar;
-    }
-
-TBool CAknFepManager::IsHalfAndFullKatakanaPermitted() const
-    {
-    CAknEdwinState* editorState = EditorState();
-    TUint permittedInputModes = editorState->PermittedInputModes();
-    TUint katakanaInputMode = (EAknEditorKatakanaInputMode
-                              | EAknEditorFullWidthKatakanaInputMode);
-    TBool iskatakana = EFalse;
-    if ((permittedInputModes & katakanaInputMode) == katakanaInputMode)
-        {
-        iskatakana = ETrue;
-        }
-    return iskatakana;
-    }
-
-TBool CAknFepManager::IsHalfAndFullLatinPermitted() const
-    {
-    CAknEdwinState* editorState = EditorState();
-    TUint permittedInputModes = editorState->PermittedInputModes();
-    TUint latinInputMode = (EAknEditorHalfWidthTextInputMode
-                              | EAknEditorFullWidthTextInputMode);
-    TBool islatin = EFalse;
-
-    if ((permittedInputModes & latinInputMode) == latinInputMode)
-        {
-        islatin = ETrue;
-        }
-    return islatin;
-    }
-
-TBool CAknFepManager::IsHalfAndFullNumberPermitted() const
-    {
-    CAknEdwinState* editorState = EditorState();
-    TUint permittedInputModes = editorState->PermittedInputModes();
-    TUint numInputMode = (EAknEditorNumericInputMode
-                              | EAknEditorFullWidthNumericInputMode);
-    TBool isnum = EFalse;
-    if ((permittedInputModes & numInputMode) == numInputMode)
-        {
-        isnum = ETrue;
-        }
-
-    return isnum;
-    }
-
-TWidthChar CAknFepManager::CharacterWidth() const
-    {
-    return iCharWidth;
-    }
-
-CPtiEngine* CAknFepManager::PtiEngine() const
-    {
-    return iPtiEngine;
-    }
-
-void CAknFepManager::SetInlineEditingCursorVisibilityL(TBool aCursorVisibility)
-    {
-#ifdef RD_SCALABLE_UI_V2
-    if ( SemiFepAwareTextEditor( ETrue ) )
-#else
-    if (iInputCapabilities.FepAwareTextEditor())
-#endif // RD_SCALABLE_UI_V2
-        {
-        iInputCapabilities.FepAwareTextEditor()->SetInlineEditingCursorVisibilityL(aCursorVisibility);
-        }
-    }
-
-TInt CAknFepManager::InputMode() const
-    {
-    return iMode;
-    }
-    
-TInt CAknFepManager::CangJieMode() const
-    {
-    TInt shareMode = iSharedDataInterface->CangJieMode();
-    TInt cangjieMode = shareMode + EPtiEngineNormalCangjieQwerty;
-    return cangjieMode;
-    }    
-
-TBool CAknFepManager::InputLanguageSupportsCaseChanges() const
-    {
-    return iLanguageCapabilities.iSupportsCase;
-    }
-
-TBool CAknFepManager::IsAbleScrollLatinPredictive() const
-    {
-    return iSharedDataInterface->ScrollLatinPredictiveCandidates();
-    }
-
-TText CAknFepManager::PreviousChar( TBool /*aContextSensitive*/ )
-    {
-    TBuf<ESingleCharacter> previousCharacter(ESingleCharacter);
-    previousCharacter.FillZ();
-
-    TCursorSelection curSel;
-    if ( IsFepAwareTextEditor() )
-        {
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel);
-        TInt lowerpos = curSel.LowerPos();
-        if(lowerpos > 0)
-            {
-            iInputCapabilities.FepAwareTextEditor()->
-                GetEditorContentForFep(previousCharacter, lowerpos-1, ESingleCharacter);
-            if (previousCharacter.Length())
-                return previousCharacter[0];
-            }
-        }
-    return NULL;
-    }
-
-TBool CAknFepManager::IsZWSCharacterPresent( TBool aLigaturePresent /* = EFalse*/ )
-    {
-    TBuf<3> previousCharacter;
-    previousCharacter.Zero();
-    TBool found = EFalse;
-    previousCharacter.FillZ();
-
-    TCursorSelection curSel;
-    if ( IsFepAwareTextEditor() )
-        {
-        MCoeFepAwareTextEditor* fepAwareTextEditor = 
-            iInputCapabilities.FepAwareTextEditor();
-        fepAwareTextEditor->GetCursorSelectionForFep(curSel);
-        TInt lowerpos = curSel.LowerPos();
-        if( lowerpos > 1 )
-            {
-            if( aLigaturePresent && lowerpos > 3 )
-                {
-                fepAwareTextEditor->
-                    GetEditorContentForFep(previousCharacter, 
-                                            lowerpos - 4, 2);
-                }
-            else
-                {
-                fepAwareTextEditor->
-                    GetEditorContentForFep(previousCharacter, 
-                                            lowerpos - 2, 2);
-                }
-            if( previousCharacter[0] == ZERO_WIDTH_SPACE
-                     || previousCharacter[1] == ZERO_WIDTH_SPACE )
-                {
-                found = ETrue;
-                }   
-            }
-        }
-    return found;
-    }
-
-TText CAknFepManager::NextChar()    
-    {
-    TBuf<ESingleCharacter> nextCharacter(ESingleCharacter);
-    nextCharacter.FillZ();
-
-    TCursorSelection curSel;
-    if ( IsFepAwareTextEditor() )
-        {
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(curSel);
-        TInt higherpos = curSel.HigherPos();
-        TInt maxLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-        if ( higherpos >= 0 && higherpos <= maxLength && maxLength >= 1 ) 
-            {
-            iInputCapabilities.FepAwareTextEditor()->
-                GetEditorContentForFep(nextCharacter, higherpos, ESingleCharacter);
-            if( nextCharacter.Length() )    
-                return nextCharacter[0];
-            }
-        }
-    return NULL;    
-    }
-    
-void CAknFepManager::FindStartOfWord(TInt& aAnchorPos) const
-    {
-    TBuf<ESingleCharacter> characterBuffer;
-    FOREVER
-        {
-        if (aAnchorPos<=0)
-            {
-            break; // start of editor
-            }
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, 
-                                                                        aAnchorPos-1, 
-                                                                        ESingleCharacter);
-        if (!IsValidInLineCharacter(characterBuffer[0]))
-            {
-            break;
-            }
-        aAnchorPos--;
-        }
-    }
-
-void CAknFepManager::FindEndOfWord(TInt& aCursorPos) const
-    {
-    TBuf<ESingleCharacter> characterBuffer;
-    FOREVER
-        {
-        if (aCursorPos>=iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep())
-            {
-            break; // end of editor
-            }
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, 
-                                                                        aCursorPos, 
-                                                                        ESingleCharacter);
-        if (!IsValidInLineCharacter(characterBuffer[0]))
-            {
-            break;
-            }
-        aCursorPos++;
-        }
-    }
-
-TBool CAknFepManager::CursorInsideWord()
-    {
-    TBuf<ESingleCharacter> characterBuffer;
-    TBool insideWord=ETrue;
-
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-    TInt cursorPos=iUncommittedText.iCursorPos;
-
-    if (cursorPos)
-        {
-        // check character before cursor
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, 
-                                                                        cursorPos-1, 
-                                                                        ESingleCharacter);
-        if (characterBuffer.Length())
-			{
-            if (!IsValidInLineCharacter(characterBuffer[0]))
-                {
-                insideWord=EFalse;
-                }
-			}	
-        }
-    else // at start of editor
-        {
-        insideWord=EFalse;
-        }
-
-    if (insideWord && cursorPos<iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep())
-        {
-        // put character after cursor into buffer
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, cursorPos,
-                                                                        ESingleCharacter);
-        if (characterBuffer.Length())
-			{
-            if (!IsValidInLineCharacter(characterBuffer[0]))
-                {
-                insideWord=EFalse;
-                }
-			}	
-        }
-    else // at end of editor
-        {
-        insideWord=EFalse;
-        }
-
-    return insideWord;
-    }
-
-void CAknFepManager::MoveCursorToStartOfWordL()
-    {
-    TInt anchorPos=iUncommittedText.iAnchorPos;
-    FindStartOfWord(anchorPos);
-    iUncommittedText.SetSelection(anchorPos, anchorPos);
-    iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-    }
-
-void CAknFepManager::MoveCursorToEndOfWordL()
-    {
-    TInt cursorPos=iUncommittedText.iCursorPos;
-    
-    if(!IsExtendedFlagSet(EExtendedFlagOkKeyPressOnCandidatePopup))    
-    	FindEndOfWord(cursorPos);
-    iUncommittedText.SetSelection(cursorPos, cursorPos);
-    iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-    }
-
-TKeyResponse CAknFepManager::HandleNaviEventOutsideInlineEditL(TUint aCode, 
-                                                               TKeyPressLength aLength)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-
-    if (TryHandleCommonArrowAndBackspaceFunctionalityL(aCode, response))
-        {
-        return response;
-        }
-    if (WesternPredictive())
-        {
-        response = HandlePredictiveNaviEventOutsideInlineEditL(aCode, aLength);
-        }
-
-    return response;
-    }
-
-TKeyResponse CAknFepManager::HandleWesternPredictiveArrowKeyL(TInt aCode, TKeyPressLength aLength)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-    
-    if (IsFlagSet(EFlagLineFeedCharacter))
-        {
-        // This event will stop the multitapping timer for enter chr.
-        // just return.
-        return EKeyWasConsumed;                
-        }
-
-	TCursorSelection selection;
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(selection);
-    if(!IsMfneEditor() &&
-         ( iFepPluginManager->PluginInputMode() == EPluginInputModeItut) &&
-         selection.Length() > 0)
-        {
-        // If open virtual ITUT and highlight some chars
-        return EKeyWasConsumed;
-        }        
-    if (aCode == EKeyUpArrow || aCode == EKeyDownArrow)
-        {
-        ClearFlag(EFlagCompoundWord);
-        if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-            {
-            // moving out of an inline edit
-            TryRemoveNoMatchesIndicatorL();
-            UpdateCbaL(NULL);
-            // To rip off suggested word completion when user presses UP / DOWN arrow keys
-            if(IsAutoCompleteOn())
-           		{
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-           		
-           		RemoveSuggestedCompletionL();
-           		
-#else
-           		TInt tailLength = 0;
-           		iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, 
-										&tailLength );
-           		if(tailLength > 0)
-           			{
-           			RemoveSuggestedAdvanceCompletionL();
-           			return EKeyWasConsumed;
-           			}
-#endif          	
-            	}
-            if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown))
-                {
-                CommitInlineEditL();
-                TryCloseUiL();
-                SimulateKeyEventL(EKeyF19);  // Asyncronous case update
-                // pass to editor for text selection.
-                response=EKeyWasNotConsumed;
-                }
-            }
-		if ((iInputCapabilities.FepAwareTextEditor() && !TryHandleTextSelectedNaviEventL(aCode, response)) && !IsFlagSet(EFlagShiftKeyDepressed))
-            {
-            if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-                {
-                ClearFlag(CAknFepManager::EFlagNoMatches);
-                TryRemoveNoMatchesIndicatorL();
-                CommitInlineEditL();
-                }
-            UpdateCbaL(NULL);
-
-            // simulate a designated key event to catch and check if we're inside a word
-            if (aCode == EKeyDownArrow)
-                {
-                SimulateKeyEventL(EKeyF22);
-                }
-            else
-                {
-                SimulateKeyEventL(EKeyF23);
-                }
-            // pass to editor for text selection.
-            response=EKeyWasNotConsumed;
-            }
-        else if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown))
-            {
-            // Need to update case indicator if text selection is made upwards.
-            SimulateKeyEventL(EKeyF19);
-            }
-        }
-    else // right or left
-        {
-        if (IsFlagSet(EFlagInsideInlineEditingTransaction))
-            {
-            // moving out of an inline edit
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-                if(IsAutoCompleteOn())
-                	{
-                	if((aCode == EKeyLeftArrow && 
-                	    		CurrentInputDirectionality() == TBidiText::ELeftToRight) || 
-                	    (aCode == EKeyRightArrow && 
-                	    		CurrentInputDirectionality() == TBidiText::ERightToLeft))
-                		{
-                		RemoveSuggestedCompletionL();	
-                		}
-                	}
-#else
-            if(IsAutoCompleteOn())
-            	{
-                TInt tailLength = 0;
-            	iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength );
-            	// In case the inline editing is ongoing and there is a word completion
-                // currently shown, the first backwards tap will remove the suggested 
-                // completion. 
-                if(tailLength > 0)
-	                {
-	                if (((CurrentInputDirectionality()==TBidiText::ERightToLeft) && aCode == EKeyLeftArrow) 
-	                	|| ((CurrentInputDirectionality()==TBidiText::ELeftToRight) && aCode == EKeyRightArrow ))
-	                    {
-					    iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate);
-					    TPtrC selectedWord = iPtiEngine->CurrentWord();
-                        UpdateInlineEditL( selectedWord, selectedWord.Length() );  //selection.iAnchorPosition
-                        iPtiEngine->CommitCurrentWord();
-                        TryCloseUiL();
-                        // Asyncronous case update after the editor has handled the key
-                		SimulateKeyEventL(EKeyF19); 
-	                    response=EKeyWasConsumed;
-	                    }
-	                else if(((CurrentInputDirectionality()== TBidiText::ERightToLeft ) && aCode == EKeyRightArrow) 
-	                	|| ((CurrentInputDirectionality()== TBidiText::ELeftToRight) && aCode == EKeyLeftArrow )) 
-		                {
-	                    RemoveSuggestedAdvanceCompletionL();
-	                    response=EKeyWasConsumed;
-		                } 
-			           return response;   	
-	                }
-	                else if (!IsQwerty())
-		                {
-		                iPtiEngine->CommitCurrentWord();
-		                }
-				
-            	}
-#endif // RD_INTELLIGENT_TEXT_INPUT
-            TryRemoveNoMatchesIndicatorL();
-            UpdateCbaL(NULL);
-            if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateHashDown))
-                {
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-                 if(IsAutoCompleteOn()) // To rip off suggested completion when shift key is pressed 
-                 	{
-                 	RemoveSuggestedCompletionL();
-                	}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-                CommitInlineEditL();
-                TryCloseUiL();
-                SimulateKeyEventL(EKeyF19);  // Asyncronous case update
-                // pass to editor for text selection.
-                response=EKeyWasNotConsumed;
-                }
-            else
-                {
-                TWesternNaviEvent naviEvent = ELeftNaviEvent;
-                if (aCode == EKeyRightArrow)
-                    {
-                    naviEvent = ERightNaviEvent;
-                    }
-                // Find the visual left/right end of the current word
-                TTmDocPosSpec pos;
-                GetAvkonDefinedVisualLimitsOfSelection(
-                    iUncommittedText, naviEvent, pos, NULL );
-
-                if (IsCcpuFlagSet(ECcpuStateNewPredictiveWord))
-                    {
-                    // This is new predictive word which is being committed with arrow
-                    // key. Force ::TryCloseUiL to commit PtiEngie word to keep
-                    // frequency information in sync.
-                    SetCcpuFlag(ECcpuStataCommitPredictiveWord);
-                    }
-
-                TryCloseUiL();
-
-                // Position should be dis-ambiguated based on last navigation and direction of blocks.
-                AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( pos, naviEvent );
-
-                SetCursorPositionL( pos );
-                if (CursorInsideWord() && naviEvent == ERightNaviEvent)
-                {
-                    MoveCursorToEndOfWordL();
-                }
-
-                iCaseMan->UpdateCase(ENullNaviEvent);
-                response=EKeyWasConsumed;
-                }
-            }
-        else
-            {
-#ifndef RD_INTELLIGENT_TEXT_INPUT            
-            if ( iLanguageCapabilities.iInputLanguageCode == ELangThai ) // Without this, t9 goes inside words
-                {                               // That is not allowed in Thai
-                response = EKeyWasNotConsumed;
-                }
-            else
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            response = HandleNaviEventOutsideInlineEditL(aCode, aLength);
-            if (response == EKeyWasNotConsumed)
-                {
-                // moving over a space
-                if (aCode == EKeyLeftArrow && !IsFlagSet(EFlagShiftKeyDepressed))
-                    {
-                    iCaseMan->UpdateCase(ELeftNaviEvent);
-                    }
-                else if (!IsFlagSet(EFlagShiftKeyDepressed)) // EKeyRightArrow
-                    {
-                    iCaseMan->UpdateCase(ERightNaviEvent);
-                    }
-                }
-            else
-                iCaseMan->UpdateCase(ENullNaviEvent);
-            }
-        }
-    return response;
-    }
-
-TBool CAknFepManager::TryHandleTextSelectedNaviEventL(TInt aCode, TKeyResponse& response)
-    {
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-
-    if (!IsFlagSet(EFlagShiftKeyDepressed) && iUncommittedText.Length())
-        {
-        if (aCode == EKeyBackspace)
-            {
-            iCaseMan->UpdateCase(EBackspaceEvent);
-            response = EKeyWasNotConsumed;
-            }
-        else
-            {
-            TInt newCursorPos = iUncommittedText.HigherPos(); //default, right or down
-            if (aCode == EKeyLeftArrow || aCode == EKeyUpArrow)
-                {
-                newCursorPos = iUncommittedText.LowerPos();
-                }
-            iUncommittedText.SetSelection(newCursorPos, newCursorPos);
-            iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-
-            if (WesternPredictive())
-                {
-                if (CursorInsideWord())
-                    {
-                    if (aCode == EKeyLeftArrow || aCode == EKeyUpArrow)
-                        {
-                        MoveCursorToStartOfWordL();
-                        }
-                    else //right or down
-                        {
-                        MoveCursorToEndOfWordL();
-                        }
-                    }
-                iCaseMan->UpdateCase(ENullNaviEvent);
-                }
-            response = EKeyWasConsumed;
-            }
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-TBool CAknFepManager::TryHandleCommonArrowAndBackspaceFunctionalityL(TInt aCode, 
-                                                                     TKeyResponse& aResponse)
-    {
-    TBool keyHandled = ETrue;
-    if ( !IsFepAwareTextEditor() )
-        {
-        aResponse=EKeyWasNotConsumed;
-        return keyHandled;
-        }
-#ifdef RD_HINDI_PHONETIC_INPUT        
-	if(iLanguageCapabilities.iInputLanguageCode == KLangHindiPhonetic)
-		{
-		if (aCode == EKeyBackspace)
-        	{
-        	CommitInlineEditL();
-        	FepUI()->HandleKeyL(aCode, EShortKeyPress);
-        	}
-		if(IsFlagSet(CAknFepManager::EFlagNoMatches)) 
-			{
-			if(PreviousChar() == 0x003F && aCode != EKeyBackspace)
-				{
-				RemovePreviousCharacterL();		
-				}
-			ClearFlag(CAknFepManager::EFlagNoMatches);
-			FepUI()->ExpireMultitapTimer();
-			}
-		iPtiEngine->HandleCommandL(EPtiCommandBreakSyllable, NULL );
-		}
-#endif		
-    if (IsFlagSet(EFlagInsideMultitapInlineEditingTransaction))
-        {
-        FepUI()->ExpireMultitapTimer();
-
-        if (aCode == EKeyBackspace)
-            {
-            aResponse = EKeyWasNotConsumed; // let editor handle the move
-            }
-        else
-            {
-            aResponse = EKeyWasConsumed;
-            }
-        }
-    else
-        {
-        //selecting text
-        if (IsFlagSet(EFlagShiftKeyDepressed) || IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut))
-            {
-            if (iShiftKeypressMonitor->IsActive())
-                {
-                ResetShiftKeyMonitorL();    //don't want edit menu
-                }
-            ClearFlag(EFlagQwertyShiftMode);
-            SimulateKeyEventL(EKeyF19);  // Asyncronous case update
-            aResponse = EKeyWasNotConsumed;
-            return keyHandled;
-            }
-
-        TCursorSelection currentEditorSelection;
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(currentEditorSelection);
-
-        TWesternNaviEvent naviEvent = ENullNaviEvent;
-
-        // Translate key code to internal navi-event
-        switch( aCode )
-            {
-            case EKeyUpArrow:
-                naviEvent = EUpNaviEvent;
-                break;
-            case EKeyDownArrow:
-                naviEvent = EDownNaviEvent;
-                break;
-            case EKeyRightArrow:
-                naviEvent = ERightNaviEvent;
-                break;
-            case EKeyLeftArrow:
-                naviEvent = ELeftNaviEvent;
-                break;
-            default: // just leave it as NULL
-                break;
-            }
-
-        if (currentEditorSelection.Length())
-            {
-            // we have text selected - set cursor to start/end of current selection
-            TTmDocPosSpec newPos;
-            aResponse = NavigateFromSelectionL( currentEditorSelection, naviEvent, newPos );
-            if ( aCode != EKeyBackspace && WesternPredictive() )
-                {
-                if (CursorInsideWord())
-                    {
-                    TBool rightToleftParagraph = IsRightToLeftParagraph(newPos);
-                    if ( (rightToleftParagraph && naviEvent == ELeftNaviEvent) ||
-                         (!rightToleftParagraph && naviEvent == ERightNaviEvent) )
-                        {
-                        MoveCursorToEndOfWordL();
-                        }
-                    else
-                        {
-                        MoveCursorToStartOfWordL();
-                        }
-                    }
-
-                }
-            }
-        else if (!(EditorState()->Flags() & EAknEditorFlagNoLRNavigation))
-            {
-            if ((naviEvent != ENullNaviEvent) && HandleLoopingInNaviEventL(naviEvent))
-                {
-                aResponse=EKeyWasConsumed;
-                }
-            else
-                {
-                if (iMode == ELatin)
-                    {
-                    // normal operation of Down/Up scroll keypress action.
-                    switch( aCode )
-                        {
-                        case EKeyUpArrow:
-                        case EKeyDownArrow:
-                            SimulateKeyEventL(EKeyF22);
-                            break;
-                        case EKeyRightArrow:
-                        case EKeyLeftArrow:
-                            {
-                            /*Hindi*/
-                            if( (TAknFepUiIndicInputManager :: IsIndicLangauge(
-                                      TLanguage(iLanguageCapabilities.iInputLanguageCode))) 
-                                 && IsZWSCharacterPresent() )
-                                {
-                                RemoveZWSCharacterL(EKeyLeftArrow); 
-                                }
-                            }
-                            break;
-                        default: // nothing
-                            break;
-                        }
-                    }
-                keyHandled = EFalse;
-                }
-            }
-        }
-
-    return keyHandled;
-    }
-
-/**
-* Routine handled navigation and also backspace events at "beginning" of document
-*
-*/
-TBool CAknFepManager::HandleLoopingInNaviEventL(TWesternNaviEvent aNaviEvent)
-    {
-    TBool looping = EFalse;
-    TBool eventHandled = EFalse;
-    TTmDocPosSpec newCursorPos;
-
-    // This routine may handle Left, Right and Backspace and nothing else
-    // Note that Up and Down cannot do any sort of document looping in FEP
-    if ( aNaviEvent != ELeftNaviEvent
-        && aNaviEvent != ERightNaviEvent
-        && aNaviEvent != EBackspaceEvent )
-        return eventHandled; // not consumed
-
-    TTmDocPosSpec pos = DocPos();
-    TBool rightToLeftParagraph = IsRightToLeftParagraph(pos);
-
-    TWesternNaviEvent incrementingNaviEvent = 
-                                          rightToLeftParagraph ? ELeftNaviEvent : ERightNaviEvent;
-    TWesternNaviEvent decrementingNaviEvent = 
-                                          rightToLeftParagraph ? ERightNaviEvent : ELeftNaviEvent;
-
-    if (aNaviEvent == decrementingNaviEvent)
-        {
-        // Abandon early if we are not in the first line.
-        if ( InFirstLineAndFormatted( pos ) )
-            {
-            TTmDocPosSpec startPos;
-            GetVisualDocStart( startPos );
-             if( AtVisualStart( pos, startPos ) )
-                {
-                TTmDocPosSpec endPos;
-                if ( !GetVisualDocEnd( endPos ) )
-                    {
-                    // End of document is not formatted. Value returned is just pos at DocLength.
-                    // So actually move the cursor there (this is guranteed to format the last line)
-                    // and the end End position is found a 2nd time.
-                    newCursorPos = endPos;
-                    SetCursorPositionL( newCursorPos );
-                    GetVisualDocEnd( endPos );
-                    }
-                newCursorPos = endPos;
-                looping = ETrue;
-                }
-            }
-        }
-    else if (aNaviEvent == incrementingNaviEvent )
-        {
-        if ( InLastLineAndFormatted( pos ) )
-            {
-            TTmDocPosSpec endPos;
-            GetVisualDocEnd( endPos );
-            if( AtVisualEnd( pos, endPos, 
-                             iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() ) )
-                {
-                TTmDocPosSpec startPos;
-                if ( !GetVisualDocStart( startPos ) )
-                    {
-                    // Document was not formatted at docPos(0).  So actually move the cursor
-                    // to that line at least, and then ask for the start pos again.
-                    newCursorPos = startPos;
-                    SetCursorPositionL( newCursorPos );
-                    GetVisualDocStart( startPos );
-                    }
-                newCursorPos = startPos;
-                looping = ETrue;
-                }
-            }
-        }
-    else if ( aNaviEvent == EBackspaceEvent )
-        {
-        // Deletion is always logical, so the condition is simply to test the logical pos.
-        if ( pos.iPos ==0 )
-            {
-            eventHandled = ETrue;
-            }
-        }
-
-    if (looping)
-        {
-        // This takes language issues into account, adjusting the cursor position:
-        AdjustPosSpecForInputLanguageAfterDocumentLoop( newCursorPos, aNaviEvent, 
-                                                        (aNaviEvent == incrementingNaviEvent) );
-        SetCursorPositionL( newCursorPos );
-        eventHandled = ETrue;
-        }
-    return eventHandled;
-    }
-
-void CAknFepManager::TransferFepStateToEditorL( TBool aFnLockSync )
-    {
-    // If editor in Fnlock state, need to set actual input mode
-    // because, in case of qwerty keypad alphanumeric editor there is no numeric mode
-    // numeric mode handle as FnLock
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-
-   if( aFnLockSync && iQwertyInputMode && iFnKeyManager && iFnKeyManager->FnKeyState()==CAknFepFnKeyManager::EFnKeyLock)
-        {
-        EditorState()->SetCurrentInputMode(EditorModeFromFepMode(ENumber));
-        // Indicator should not be reset, if menu is displaying from editor.
-        if(!IsFlagSet(EFlagForegroundUIComponentVisible | EFlagMenuPaneVisible))
-            iFnKeyManager->ClearFnKeyState(); 
-        }
-    else
-        {
-#endif
-        EditorState()->SetCurrentInputMode(EditorModeFromFepMode(iMode));
-        
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-        }
-   if(iFnKeyManager && iFnKeyManager->FnKeyState()!=CAknFepFnKeyManager::EFnKeyLock)
-       iFnKeyManager->ClearFnKeyState();       
-
-#endif
-
-    
-    if ((iMode == ELatin && iWesternPredictive &&
-        IsFlagSet(EFlagInsideInlineEditingTransaction)) 
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        ||(IsLanguageSupportPrediction() && IsFlagSet(EFlagInsideInlineEditingTransaction))
-#endif //RD_INTELLIGENT_TEXT_INPUT
-		)
-        {
-        EditorState()->SetInlineEditSpan(iUncommittedText);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        if (IsFlagSet(CAknFepManager::EFlagNoMatches))
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        TryRemoveNoMatchesIndicatorL();
-        UpdateCbaL(NULL);
-        }
-    else
-        {
-        EditorState()->SetInlineEditSpan(TCursorSelection(0,0));
-        }
-    EditorState()->SetCurrentCaseWithNoInitialisation(iCaseMan->CurrentCase());
-    if ( IsFlagSet( EFlagSupressAutoUpdate ) )
-        {
-        EditorState()->SetFlags( EditorState()->Flags() | EFlagSupressAutoUpdate );
-        }
-    else
-        {
-        EditorState()->SetFlags( EditorState()->Flags() & ~EFlagSupressAutoUpdate );
-        }
-    SetQwertyModeToInputcapbility();
-    }
-
-MAknFepManagerInterface* CAknFepManager::FepUI() const
-    {
-#ifdef RD_SCALABLE_UI_V2
-    if ( iFepFullyConstructed && ( iFepPluginManager->PluginInputMode() != EPluginInputModeNone ) )
-        {
-        if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut)
-            {
-            return iFepPluginManager->CurrentFepInputUI() ?
-                iFepPluginManager->CurrentFepInputUI() : iCurrentFepUI;
-            }
-        if ( iFepPluginManager->EnableITIOnFSQ() )
-            {
-            return iCurrentFepUI;
-            }
-        return iFepPluginManager->CurrentPluginInputFepUI();
-        }
-#endif        
-    return iCurrentFepUI;
-    }
-
-void CAknFepManager::LaunchLanguagesPopupListL(TBool aLaunchedByTouchWin)
-    {
-#ifdef RD_SCALABLE_UI_V2
-    if( iFepPluginManager->PluginInputMode() != EPluginInputModeNone &&
-        iFepPluginManager->PluginInputMode() != EPluginInputModeItut
-        // Add this condition for correction of dim features on FSQ
-        && iFepPluginManager->PluginInputMode() != EPluginInputModeFSQ )
-        {
-        iFepPluginManager->LaunchPenInputLanguageSelectionL(aLaunchedByTouchWin);
-        return;
-        }
-#endif //RD_SCALABLE_UI_V2
-       
-    CArrayFixFlat<TInt>* languages = 
-        new( ELeave )CArrayFixFlat<TInt>( ELanguageArrayGranularity );
-    CleanupStack::PushL( languages );
-    iPtiEngine->GetAvailableLanguagesL( languages );
-
-    // Create a list of languages for the dialog
-    CDesCArrayFlat* languagesList = 
-        new( ELeave )CDesCArrayFlat( ELanguageArrayGranularity );
-    CleanupStack::PushL( languagesList );
-
-    // Item format should be "<icon_index>\t<item_text>"
-    _LIT( KIconIndexSelected,    "0\t" );
-    _LIT( KIconIndexNotSelected, "\t" );// No icon
-    
-    MPtiLanguage* lang = NULL;
-    TInt  currentLanguage = iSharedDataInterface->InputTextLanguage();
-    TInt selectedLanguageIndex = 0;
-    
-    for (TInt ii=0; ii < languages->Count(); ii++)
-        {
-        lang = iPtiEngine->GetLanguage( ( *languages )[ii] );
-        if (!lang)
-            {
-            User::Leave( KErrCorrupt );
-            }
-        // Buffer should contain both tabulator string and localized name:
-        HBufC* langStrBuf = HBufC::NewL( lang->LocalizedName().Length() + 3 );
-        CleanupStack::PushL( langStrBuf );
-        
-        TPtr langStrPtr = langStrBuf->Des();
-
-        // If language is current language - use selected icon in lbx:
-        if( lang->LanguageCode() == currentLanguage )
-            {
-            langStrPtr.Append( KIconIndexSelected );
-            selectedLanguageIndex = ii;
-            }
-        else
-            {
-            langStrPtr.Append( KIconIndexNotSelected );    
-            }
-        langStrPtr.Append( lang->LocalizedName() );
-        languagesList->AppendL( langStrPtr );
-        CleanupStack::PopAndDestroy( langStrBuf );
-        }
-
-    // Add icons to the listbox:
-    CArrayPtr<CGulIcon>* icons = new( ELeave ) CArrayPtrFlat<CGulIcon>(10);
-    CleanupStack::PushL( icons );
-    LoadIconL( icons, EMbmAvkonQgn_prop_sub_current, 
-               EMbmAvkonQgn_prop_sub_current_mask );
-
-    TInt index = 0;
-    SetFlag( EFlagForegroundUIComponentVisible );
-    CleanupStack::Pop( icons );	// iUiInterface->LaunchListPopupL takes ownership immediately
-#ifdef RD_SCALABLE_UI_V2 
-    /* tp teleca fix 17.9.2009 to IKIM-7VK8GG*/
-    /*if( iFepFullyConstructed && iFepPluginManager)
-            {
-            iFepPluginManager->SetMenuState();            
-            }*/
-    // tp teleca fix end
-#endif              
-    // Fire up the dialog
-#ifdef RD_SCALABLE_UI_V2
-    iCancelPopupInQwerty = aLaunchedByTouchWin;
-#endif //RD_SCALABLE_UI_V2
-    TUid fepUid = CCoeEnv::Static()->FepUid();
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-    TInt returnValue = iUiInterface->LaunchListPopupL(R_AVKON_T9_LANGUAGES_QUERY, index, 
-                                                      selectedLanguageIndex, languagesList, icons);
-#ifdef RD_SCALABLE_UI_V2
-    iCancelPopupInQwerty = EFalse;
-#endif //RD_SCALABLE_UI_V2    
-    PrepareFepAfterDialogExitL(fepUid);
-    CleanupStack::PopAndDestroy( languagesList );
-
-    if(returnValue == EAknSoftkeyOk)
-        {
-        // Selected item index from the languages array
-        HandleChangeInFocusL();
-
-        // The user has changed language and the local language is not used any more.
-        iLanguageCapabilities.iLocalInputLanguageInUse = EFalse;
-        if (EditorState())
-            {
-            EditorState()->SetLocalLanguage( ELangTest );
-            }
-
-        TBool westernPredictiveInUse = WesternPredictive();
-
-// Truncate autocompletion portion on change of writing language
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-		RemoveSuggestedAdvanceCompletionL();
-#endif // RD_INTELLIGENT_TEXT_INPUT   
-        //Hindi Change Bug Fix
-        iSharedDataInterface->SetInputTextLanguage(languages->At(index));
-        CAknEnv::Static()->SettingCache().Update(KEikInputLanguageChange);
-        ChangeInputLanguageL(languages->At(index));           
-        SetFlag( EFlagNewSharedDataInputLanguage | EFlagNewSharedDataInputMode );
-	  	// This pice of code TSW Fute error fixing.
-        // Display the confirmation msg if the dictionary is not available for
-        // Current language.
-#ifdef RD_INTELLIGENT_TEXT_INPUT         
-        // Display the confirmation msg only for Western languages
-        if (!IsChineseInputLanguage())
-        	{
-	        if (!IsLanguageSupportPrediction())
-	        	{
-	        	LaunchConfirmationNoteL(R_AVKON_T9_NOTE_NO_AVAILABLE);
-	        	}     
-        	}
-#endif
-        
-          
-        }
-    CleanupStack::PopAndDestroy( languages );
-    }
-
-void CAknFepManager::LaunchRecognitionWithDictionaryPopupListL()
-    {
-#ifdef RD_SCALABLE_UI_V2
-    if( iFepPluginManager && (iFepPluginManager->PluginInputMode() == EPluginInputModeHwr) )
-        {
-        iFepPluginManager->LaunchPenInputRecognitionWithDictionarySelectionL();
-        return;
-        }
-#endif //RD_SCALABLE_UI_V2
-    }
-
-void CAknFepManager::LoadIconL( CArrayPtr<CGulIcon>* aIcons, 
-                                TInt aBitmapId, 
-                                TInt aMaskId )
-    {
-    CGulIcon* icon = CGulIcon::NewLC();
-    CFbsBitmap* bitmap = 0;
-    CFbsBitmap* mask = 0;
-    AknIconUtils::CreateIconL(  bitmap, mask, KAvkonBitmapFile, aBitmapId, aMaskId );
-    icon->SetBitmap( bitmap );
-    icon->SetMask( mask );
-    aIcons->AppendL( icon );
-    CleanupStack::Pop( icon );
-    }
-
-
-TBool CAknFepManager::IsInputModeAvailable(TInt aMode) const
-    {
-    TBool isAvailable = ETrue;
-    const TInt inputLanguage = iLanguageCapabilities.iInputLanguageCode;
-    switch (aMode)
-        {
-        case ELatin:
-            isAvailable = !( ( inputLanguage == ELangPrcChinese ) &&
-                (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes));
-            break;
-        case EPinyin:
-            isAvailable = ( inputLanguage == ELangPrcChinese );
-            break;
-        case EStroke:
-            isAvailable = ( inputLanguage == ELangPrcChinese || 
-                inputLanguage == ELangHongKongChinese || 
-                inputLanguage == ELangTaiwanChinese);
-            break;
-        case ECangJie:
-            {
-            isAvailable = ( ( inputLanguage == ELangHongKongChinese ) &&
-                          iQwertyInputMode );
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-#ifdef __HALF_QWERTY_KEYPAD            
-            isAvailable = isAvailable && (EPtiKeyboardHalfQwerty != KeyboardLayout()); 
-#endif //__HALF_QWERTY_KEYPAD
-#endif //RD_INTELLIGENT_TEXT_INPUT
-            }
-            
-            break;
-        case EZhuyin:
-            isAvailable = ( inputLanguage == ELangTaiwanChinese );
-            break;
-        case EPRCFind:
-            isAvailable = ( ( inputLanguage == ELangPrcChinese ) &&
-                (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes));
-            break;
-        case EZhuyinFind:
-            isAvailable = ( ( inputLanguage == ELangTaiwanChinese ) &&
-                (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes));
-            break;
-        case EStrokeFind:
-            isAvailable = ( ( inputLanguage == ELangHongKongChinese ) &&
-                (iAknEditorFlags & EAknEditorFlagForceTransparentFepModes));
-            break;
-        case EHiraganaKanji:
-            isAvailable = (inputLanguage == ELangJapanese);
-            break;
-        case EKatakana:
-            isAvailable = (inputLanguage == ELangJapanese );
-            break;
-        case EHindi:
-            isAvailable = (inputLanguage == ELangHindi );
-            break;
-        case EHangul:
-            isAvailable = (inputLanguage == ELangKorean );
-            break;
-        case ENativeNumber:
-            isAvailable = (inputLanguage == ELangHindi 
-                || inputLanguage == ELangArabic 
-                || inputLanguage == ELangUrdu
-                || inputLanguage == ELangFarsi/*
-                || ( inputLanguage == ELangThai && iFepPluginManager && 
-                     iFepPluginManager->PluginInputMode() != EPluginInputModeItut &&
-                     iFepPluginManager->PluginInputMode() != EPluginInputModeNone)*/ );
-        default:
-            break;
-        }
-    return isAvailable;
-    }
-
-TInt CAknFepManager::NewInputModeAfterLanguageChange() const
-    {
-    TInt inputMode = 0;
-    switch (iLanguageCapabilities.iInputLanguageCode)
-        {
-        case ELangPrcChinese:
-            if ( iAknEditorFlags & EAknEditorFlagForceTransparentFepModes )
-                {
-                inputMode = ELatin; // EPRCFind from hashkey loop
-                }
-            else
-                {
-                inputMode = EPinyin;
-                }
-            break;
-        case ELangHongKongChinese:
-            if ( iAknEditorFlags & EAknEditorFlagForceTransparentFepModes )
-                {
-                inputMode = EStrokeFind;
-                }
-            else
-                {
-                TInt sharedDataMode = iSharedDataInterface->InputMode();
-	            if (iQwertyInputMode && 
-	            	sharedDataMode == ECangJie)
-	            	{
-	            	inputMode = ECangJie;
-	            	}
-	            else
-	            	{
-	            	inputMode = EStroke;
-	            	}
-                }
-            break;
-        case ELangTaiwanChinese:
-            if ( iAknEditorFlags & EAknEditorFlagForceTransparentFepModes )
-                {
-                inputMode = EZhuyinFind;
-                }
-            else
-                {
-                inputMode = EZhuyin;
-                }
-            break;
-        case ELangJapanese:
-            inputMode = EHiraganaKanji;
-            break;
-        case ELangKorean:
-            inputMode = EHangul;
-            break;
-        default:
-            inputMode = ELatin;
-            break;
-        }
-    return inputMode;
-    }
-
-void CAknFepManager::SetInputLanguageCapabilities(const TInt aInputLanguage)
-    {
-    iLanguageCapabilities.iInputLanguageCode = aInputLanguage;
-
-    if ( aInputLanguage == ELangArabic || aInputLanguage == ELangHebrew || 
-         aInputLanguage == ELangFarsi  || aInputLanguage == ELangUrdu )
-        {
-        iLanguageCapabilities.iSupportsCase = EFalse;
-        iLanguageCapabilities.iRightToLeftLanguage = ETrue;
-        SetCursorTypeForInputDirection(EFalse);
-        }
-    else
-        {
-        /*Hindi*/
-        if ( aInputLanguage == ELangThai 
-        || (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(aInputLanguage)))
-        ) 
-            {
-            iLanguageCapabilities.iSupportsCase = EFalse;
-            }
-        else
-            {
-            iLanguageCapabilities.iSupportsCase = ETrue;
-            }
-        iLanguageCapabilities.iRightToLeftLanguage = EFalse;
-        SetCursorTypeForInputDirection(ETrue);
-        }
-
-    TLanguage uiLanguage = User::Language();
-    iLanguageCapabilities.iArabicIndicDigitsAllowed = 
-             ( aInputLanguage == ELangArabic || uiLanguage == ELangArabic);
-    iLanguageCapabilities.iEasternArabicIndicDigitsAllowed = ( 
-        ( aInputLanguage == ELangUrdu || uiLanguage == ELangUrdu ) ||
-        ( aInputLanguage == ELangFarsi|| uiLanguage == ELangFarsi ) );
-    /*Hindi*/
-    iLanguageCapabilities.iIndicDigitsAllowed =  
-             ( (TAknFepUiIndicInputManager :: IsIndicDigitsSupported(TLanguage(aInputLanguage))) );
-    UpdateLocalDigitMode();
-
-    MAknFepManagerInterface* fepUI = iLangMan->GetFepUI(ELatin, iCharWidth, ETrue);
-    MPtiLanguage* ptiLanguage = iPtiEngine->GetLanguage(fepUI->SupportLanguage(ELatin));
-    if (ptiLanguage) // can be NULL in some uncommon situations, see TAVN-6SWB4Z
-        {
-        iLanguageCapabilities.iSupportsWesternPredictive = 
-                                           ptiLanguage->HasInputMode(EPtiEnginePredictive);
-        // tp teleca change Korean lang does not support predictive
-        // and we want to disable predictive even with local editors
-        if(/*IsKoreanInputLanguage()*/GetInputLanguageFromSharedDataInterface() == ELangKorean )
-            {
-            iLanguageCapabilities.iSupportsWesternPredictive = EFalse;
-            }
-        
-        
-        // tp teleca change end
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        // Predictive QWERTY (XT9) changes ---->
-        iLanguageCapabilities.iSupportsWesternQwertyPredictive = 
-                                           ptiLanguage->HasInputMode(EPtiEngineQwertyPredictive );
-        if ( GetInputLanguageFromSharedDataInterface() == ELangKorean )
-            {
-            iLanguageCapabilities.iSupportsWesternQwertyPredictive = EFalse;            
-            }
-        
-        // Predictive QWERTY (XT9) changes <----
-#ifdef __HALF_QWERTY_KEYPAD
-		iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive = ptiLanguage->HasInputMode(EPtiEngineHalfQwertyPredictive );
-#endif         
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        }
-
-    if (!iLanguageCapabilities.iSupportsWesternPredictive 
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        && !iLanguageCapabilities.iSupportsWesternQwertyPredictive 
-        // Predictive QWERTY changes
-#ifdef __HALF_QWERTY_KEYPAD
-		&& !iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive 
-#endif //__HALF_QWERTY_KEYPAD        
-#endif //RD_INTELLIGENT_TEXT_INPUT
-        ) // Predictive QWERTY changes
-        {
-        SetWesternPredictive(EFalse);
-        }
-    }
-
-TInt CAknFepManager::SubstituteSublanguageId(const TInt aUiLanguage) const
-    {
-    return DefaultInputLanguageFromUILanguage(aUiLanguage);
-    }
-
-TTmDocPosSpec CAknFepManager::DocPos()
-    {
-    TTmDocPosSpec docPos = TTmDocPosSpec();
-    TTmDocPos rawDocPos;
-    TBool gotPos = EFalse;
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-        docNavi->GetDocPos(rawDocPos);
-        gotPos = ETrue;
-    	}
-    else
-    	{
-	    CTextView* textView = TextView();
-	    if (textView)
-	        {
-	        TextView()->GetCursorPos(rawDocPos);
-	        gotPos = ETrue;
-	        }
-    	}
-    if (gotPos)
-    	{
-        docPos.iPos = rawDocPos.iPos;
-        TTmDocPosSpec::TType docPosType = 
-                      rawDocPos.iLeadingEdge ? TTmDocPosSpec::ELeading : TTmDocPosSpec::ETrailing;
-        docPos.iType = docPosType;
-        }
-    return docPos;
-    }
-
-/**
-* This method needs EditorState() to exist
-*
-*/
-CTextView* CAknFepManager::TextView() const
-    {
-    if (EditorState())
-        {
-        CAknEdwinFormAccessor* formAccessor = EditorState()->FormAccessor();
-        if (formAccessor)
-            {
-            return formAccessor->GetTextView();
-            }
-        }
-    return NULL;
-    }
-
-CTextLayout* CAknFepManager::TextLayout() const
-    {
-    if( EditorState() )
-        {
-        CAknEdwinFormAccessor* formAccessor = EditorState()->FormAccessor();
-        if (formAccessor)
-            {
-            return formAccessor->GetTextLayout();
-            }
-        }
-    return NULL;
-    }
-    
-CPlainText* CAknFepManager::PlainText() const
-    {
-    return iUiInterface->PlainText(EditorState());
-    }
-
-/**
-* Checks if the paragraph containing aPos is Right to left.
-* This routine will return nonsense if
-*   - TextLayout() does not return a pointer
-*   - the position passed is not in the formatted region
-*
-* Note, the return value from FindDocPos is thrown away
-*/
-TBool CAknFepManager::IsRightToLeftParagraph(TTmDocPosSpec aPos) const
-    {
-    TTmPosInfo2 posInfo;
-    TTmLineInfo lineInfo;
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	docNavi->FindDocPos(aPos, posInfo, lineInfo);
-    	}
-	else
-		{
-	    CTextLayout* textLayout = TextLayout();
-	    if (textLayout)
-	        {
-	        textLayout->TagmaTextLayout().FindDocPos(aPos, posInfo, lineInfo);
-	        }
-		}
-		
-    return lineInfo.iFlags & TTmLineInfo::EParRightToLeft;
-    }
-
-
-void CAknFepManager::FindAdjacentChunks(const TTmDocPosSpec& aPos,
-                                        CTmTextLayout::TTmChunkDescription& aLeft, 
-                                        CTmTextLayout::TTmChunkDescription& aRight) const
-    {
-    aLeft.iStart = -1;
-    aLeft.iEnd = -1;
-    aLeft.iRightToLeft = EFalse;
-    aRight.iStart = -1;
-    aRight.iEnd = -1;
-    aRight.iRightToLeft = EFalse;
-
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	docNavi->FindAdjacentChunks(aPos, aLeft, aRight);
-    	}
-    else
-    	{
-    CTextLayout* textLayout = TextLayout();
-    if (textLayout)
-        {
-        textLayout->TagmaTextLayout().FindAdjacentChunks(aPos, aLeft, aRight);
-        }
-    	}
-    }
-
-
-TBool CAknFepManager::GetNextVisualRightCharacter( TInt& aPosition )
-    {
-    TTmDocPosSpec pos = DocPos();
-    TTmPosInfo2 info;
-    TBool nextPositionFound = EFalse;
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	nextPositionFound = docNavi->GetNextVisualCursorPos(pos, info, EFalse);
-    	}
-    else
-    	{
-	    CTextLayout* textLayout = TextLayout();
-	    if (textLayout)
-	        {
-	        nextPositionFound = textLayout->TagmaTextLayout().GetNextVisualCursorPos(pos, 
-                                                                                   info, 
-                                                                                   EFalse);
-	        }
-        }
-    if (nextPositionFound)
-        {
-        aPosition = info.iDocPos.iPos;
-
-        CTmTextLayout::TTmChunkDescription leftChunk;
-        CTmTextLayout::TTmChunkDescription rightChunk;
-        FindAdjacentChunks(pos, leftChunk, rightChunk);
-
-        if ( !rightChunk.iRightToLeft )
-            {
-            aPosition -= 1;
-            }
-        }
-    return nextPositionFound;
-    }
-
-TBool CAknFepManager::GetNextVisualLeftCharacter( TInt& aPosition )
-    {
-    TTmDocPosSpec pos = DocPos();
-    TTmPosInfo2 info;
-    TBool nextPositionFound = EFalse;
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	nextPositionFound = docNavi->GetNextVisualCursorPos(pos, info, ETrue);
-    	}
-    else
-    	{
-	    CTextLayout* textLayout = TextLayout();
-	    if (textLayout)
-	        {
-	        nextPositionFound = TextLayout()->TagmaTextLayout().GetNextVisualCursorPos(pos, 
-                                                                                     info, 
-                                                                                     ETrue);
-	        }
-        }
-    if (nextPositionFound)
-        {
-        aPosition = info.iDocPos.iPos;
-        CTmTextLayout::TTmChunkDescription leftChunk;
-        CTmTextLayout::TTmChunkDescription rightChunk;
-        FindAdjacentChunks(pos, leftChunk, rightChunk);
-
-        if ( leftChunk.iRightToLeft )
-            {
-            aPosition -= 1;
-            }
-        if (iLanguageCapabilities.iInputLanguageCode == ELangVietnamese)
-            {
-            aPosition = pos.iPos -1;
-            }
-        }
-    return nextPositionFound;
-    }
-
-void CAknFepManager::FindVisualRightOfWord(TInt& aPosition)
-    {
-    TTmDocPosSpec pos = DocPos();
-    CTmTextLayout::TTmChunkDescription leftChunk;
-    CTmTextLayout::TTmChunkDescription rightChunk;
-    FindAdjacentChunks(pos, leftChunk, rightChunk);
-
-    if ( rightChunk.iRightToLeft )
-        {
-        FindStartOfWord(aPosition);
-        }
-    else
-        {
-        FindEndOfWord(aPosition);
-        }
-    }
-
-void CAknFepManager::FindVisualLeftOfWord(TInt& aPosition)
-    {
-    TTmDocPosSpec pos = DocPos();
-    CTmTextLayout::TTmChunkDescription leftChunk;
-    CTmTextLayout::TTmChunkDescription rightChunk;
-    FindAdjacentChunks(pos, leftChunk, rightChunk);
-
-    if ( leftChunk.iRightToLeft)
-        {
-        FindEndOfWord(aPosition);
-        }
-    else
-        {
-        FindStartOfWord(aPosition);
-        }
-    }
-
-
-
-TBool CAknFepManager::GetVisualDocStart( TTmDocPosSpec& aPos) const
-    {
-    // Set up the initial try as leading to the first logical character
-    // It is a requirement that this position is at least in the first line
-    TTmDocPosSpec pos(0, TTmDocPosSpec::ELeading);
-
-    // Need to record if we are in aleft to right paragraph or not
-    TBool leftToRightParagraph = !IsRightToLeftParagraph(pos);
-
-    TBool success(EFalse);
-    CTextLayout* textLayout = TextLayout();
-    TTmDocPosSpec docPos;
-    if (AknFepDocumentNavigation() || textLayout)
-        {
-//      This was written because Tagma's LineExtreme() method did not seem to work
-        success = GetAknFepLineExtreme( pos, !leftToRightParagraph, docPos );
-        }
-
-    if (success)
-        aPos = docPos;
-    else // Possible cleanup; action for when there is insufficient information
-        {
-        aPos.iPos = 0;
-        aPos.iType = TTmDocPosSpec::ELeading;
-        }
-
-    return success;
-    }
-
-TBool CAknFepManager::GetVisualDocEnd( TTmDocPosSpec& aPos) const
-    {
-    TInt docLength = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-
-    // Set up the initial try as trailing after the last logical character
-    // It is a requirement that this position is at least in the last line
-    TTmDocPosSpec pos(docLength, TTmDocPosSpec::ETrailing);
-
-    // Need to record if we are in a left to right paragraph or not
-    TBool leftToRightParagraph = !IsRightToLeftParagraph(pos);
-
-    TBool success(EFalse);
-    CTextLayout* textLayout = TextLayout();
-    TTmDocPosSpec docPos;
-    if (AknFepDocumentNavigation() || textLayout)
-        {
-        // This was written because Tagma's LineExtreme() method did not seem to work
-        success = GetAknFepLineExtreme( pos, leftToRightParagraph, docPos );
-        }
-
-    if (success)
-        aPos = docPos;
-    else // Possible cleanup; action for when there is insufficient information
-        {
-        aPos.iPos = docLength;
-        aPos.iType = TTmDocPosSpec::ETrailing;
-        }
-    return success;
-    }
-
-
-TBool CAknFepManager::GetAknFepLineExtreme( const TTmDocPosSpec& aPos, TBool aToRight,
-        TTmDocPosSpec& aExtreme) const
-    {
-    TBool success(EFalse);
-
-    TTmPosInfo2 posInfo;
-    TTmLineInfo lineInfo;
-    TBool found = EFalse;
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	found = docNavi->FindDocPos(aPos, posInfo, lineInfo);
-    	}
-    else
-    	{
-	    CTextLayout* textLayout = TextLayout();
-	    if ( textLayout )
-	        {
-	        found = textLayout->TagmaTextLayout().FindDocPos(aPos, posInfo, lineInfo);
-	        }
-    	}
-
-    if ( found )
-        {
-        // Make a selection of the line info.  Cursor first, Anchar 2nd:
-        TCursorSelection theWholeLine( lineInfo.iEnd-1, lineInfo.iStart );
-
-        TWesternNaviEvent event;
-        if ( aToRight )
-            event = ERightNaviEvent;
-        else
-            event = ELeftNaviEvent;
-
-        GetAvkonDefinedVisualLimitsOfSelection( theWholeLine, event, aExtreme, NULL );
-        success = ETrue;
-        }
-
-    return success;
-    }
-
-
-/**
-* This routine analyses a selection (Does not have to be a real selection, but the datastructure
-* is used as input) to find its visual start or end, according to the passed parameter
-* The algo used is:
-* - First find the top line of the selection.
-* - Then find the bottom line of the selection.
-* - Look at the two lines' directionality (from the paragraph they belong to) and decide what the overall
-* directionality of the selection is.  Thus right/left can be translated to increment/decrement.
-* (Note that Up is always decrement; down is always increment). So that allows the key actions to be
-* correctly grouped, and allows it to be determined which keys act from the top or the bottom line
-* (Decrement always acts from the top line; Increment always acts from the bottom line)
-*
-* - When the keys are handled, the action is again translated back to right/left according to the key-
-* grouping and whether you are acting from the top line or from the bottom line.  Eg, decrement in RTL
-* line is visually to the Right.
-* - the appropriate "ExtremePos" API is called passing in the position on the line in which we are acting
-*
-*/
-void CAknFepManager::GetAvkonDefinedVisualLimitsOfSelection(
-    const TCursorSelection& aSelection,
-    TWesternNaviEvent aEvent,
-    TTmDocPosSpec& aLimitPos,
-    TWesternNaviEvent* aEffectiveRightOrLeftEvent ) const
-    {
-    // in case an irrelvant event is sent, initialize aLimitPos to something safe
-    aLimitPos.iPos = 0;
-    aLimitPos.iType = TTmDocPosSpec::ELeading;
-
-    TTmDocPosSpec lowLogicalPos( aSelection.LowerPos(), TTmDocPosSpec::ELeading );
-    TTmDocPosSpec highLogicalPos( aSelection.HigherPos(), TTmDocPosSpec::ETrailing );
-
-    // this records what the resulting Right/left direction (for optional return)
-    TWesternNaviEvent effectiveEvent = aEvent;
-
-    // Get line and paragraph of the lower limit of the selection:
-    TTmPosInfo2 posInfo;
-    TTmLineInfo lineInfo;
-    TBool lowIsRightToLeft;
-    TBool highIsRightToLeft;
-    TBool layoutExists = EFalse;
-    
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	docNavi->FindDocPos(lowLogicalPos, posInfo, lineInfo);
-        lowIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft;
-    	docNavi->FindDocPos(highLogicalPos, posInfo, lineInfo);
-        highIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft;
-        layoutExists = ETrue;
-    	}
-    else
-    	{
-	    CTextLayout* textLayout = TextLayout();
-	    if (textLayout)
-	        {
-	        textLayout->TagmaTextLayout().FindDocPos(lowLogicalPos, posInfo, lineInfo);
-	        lowIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft;
-	        textLayout->TagmaTextLayout().FindDocPos(highLogicalPos, posInfo, lineInfo);
-	        highIsRightToLeft = lineInfo.iFlags & TTmLineInfo::EParRightToLeft;
-	        layoutExists = ETrue;
-	        }
-    	}
-        
-    if (layoutExists)
-    	{
-        // Decide on the net directionality. This if looks a bit laboured, but it
-        // exhibits the Averell policy.
-        TBool netDirectionIsRightToLeft(EFalse);
-        if ( lowIsRightToLeft == highIsRightToLeft )
-            netDirectionIsRightToLeft = lowIsRightToLeft;
-        else
-            netDirectionIsRightToLeft = lowIsRightToLeft;// ambiguous - Take first paragraph
-
-        if ( netDirectionIsRightToLeft )
-            switch ( aEvent )
-            {
-            case ELeftNaviEvent:
-            case EDownNaviEvent:
-                effectiveEvent = ELeftNaviEvent;
-                aLimitPos = LeftVisualExtremePos( highLogicalPos, lowLogicalPos.iPos, 
-                                                  highLogicalPos.iPos );
-                break;
-            case ERightNaviEvent:
-            case EUpNaviEvent:
-                effectiveEvent = ERightNaviEvent;
-                aLimitPos = RightVisualExtremePos(lowLogicalPos, lowLogicalPos.iPos, 
-                                                  highLogicalPos.iPos );
-                break;
-            default:
-            // No action. Only the events above are handled.
-                break;
-            }
-        else
-            switch (aEvent)
-            {
-            case ELeftNaviEvent:
-            case EUpNaviEvent:
-                effectiveEvent = ELeftNaviEvent;
-                aLimitPos = LeftVisualExtremePos( lowLogicalPos, lowLogicalPos.iPos, 
-                                                  highLogicalPos.iPos);
-                break;
-            case ERightNaviEvent:
-            case EDownNaviEvent:
-                effectiveEvent = ERightNaviEvent;
-                aLimitPos = RightVisualExtremePos( highLogicalPos, lowLogicalPos.iPos, 
-                                                   highLogicalPos.iPos );
-                break;
-            default:
-            // No action. Only the events above are handled.
-                break;
-            }
-        }
-
-    else
-        {
-        // No text layout: Left or Up naviEvent gives low end; Right or down give high end
-        switch ( aEvent )
-            {
-            case ELeftNaviEvent:
-            case EUpNaviEvent:
-                effectiveEvent = ELeftNaviEvent;
-                aLimitPos = lowLogicalPos;
-                break;
-            case ERightNaviEvent:
-            case EDownNaviEvent:
-                effectiveEvent = ERightNaviEvent;
-                aLimitPos = highLogicalPos;
-                break;
-            default:
-            // No action. Only the events above are handled.
-                break;
-            }
-        }
-    // return the effective direction (Right or Left)
-    if ( aEffectiveRightOrLeftEvent )
-        *aEffectiveRightOrLeftEvent = effectiveEvent;
-
-    }
-
-
-TTmDocPosSpec CAknFepManager::LeftVisualExtremePos( const TTmDocPosSpec& aStartPos, 
-                                                    TInt aMinPos, TInt aMaxPos ) const
-    {
-    // Start at start and find adjacent left chunks repeatedly until we find no more chunks, or our max or min
-    // is within a chunk
-    TTmDocPosSpec currentPos = aStartPos;
-    CTextLayout* textLayout = TextLayout();
-    if (AknFepDocumentNavigation() || textLayout)
-        {
-        CTmTextLayout::TTmChunkDescription leftChunk;
-        CTmTextLayout::TTmChunkDescription rightChunk;
-
-        TInt iterations(0);
-        TBool endFound(EFalse);
-
-        while( !endFound && iterations < KMaxChunkWalkIterations )
-            {
-            iterations++;
-            FindAdjacentChunks(currentPos, leftChunk, rightChunk);
-            // Try to move to left end of left chunk
-            endFound = LeftEndOfChunkWithinRange( leftChunk, aMinPos, aMaxPos, currentPos );
-            }
-        }
-    return currentPos;
-    }
-
-TTmDocPosSpec CAknFepManager::RightVisualExtremePos( const TTmDocPosSpec& aStartPos, 
-                                                     TInt aMinPos, TInt aMaxPos ) const
-    {
-    // Start at start and find adjacent right chunks repeatedly until we find no more chunks, or our max or min
-    // is within a chunk
-    TTmDocPosSpec currentPos = aStartPos;
-    CTextLayout* textLayout = TextLayout();
-    if (AknFepDocumentNavigation() || textLayout)
-        {
-        CTmTextLayout::TTmChunkDescription leftChunk;
-        CTmTextLayout::TTmChunkDescription rightChunk;
-
-        TInt iterations(0);
-        TBool endFound(EFalse);
-
-        while( !endFound && iterations < KMaxChunkWalkIterations )
-            {
-            iterations++;
-            FindAdjacentChunks(currentPos, leftChunk, rightChunk);
-            // Try to move to left end of left chunk
-            endFound = RightEndOfChunkWithinRange( rightChunk, aMinPos, aMaxPos, currentPos );
-            }
-        }
-    return currentPos;
-    }
-
-TBool CAknFepManager::LeftEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk,
-                                         TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const
-    {
-    TBool constrained = EFalse;
-    TInt leftEnd;
-    if ( !ChunkIsValid( aChunk ) )
-        {
-        constrained = ETrue; // leave the aNewPos as it is
-        }
-    else if ( aChunk.iStart >= iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() )
-        {
-        constrained = ETrue; // That chunk was a ficticious one:
-        }
-    else if ( aChunk.iEnd <= aMinPos || aChunk.iStart >= aMaxPos )
-        {
-        constrained = ETrue; // That chunk found does not actually overlap with valid range. Don't go there
-        }
-    else
-        {
-        if ( aChunk.iRightToLeft )
-            {
-            leftEnd =  aChunk.iEnd;
-            if ( leftEnd >= aMaxPos )
-                {
-                constrained = ETrue;
-                aNewPos.iPos = aMaxPos;
-                }
-            else
-                {
-                aNewPos.iPos = leftEnd;
-                }
-            aNewPos.iType = TTmDocPosSpec::ETrailing;
-            }
-        else
-            {
-            leftEnd = aChunk.iStart;
-            if ( leftEnd <= aMinPos )
-                {
-                constrained = ETrue;
-                aNewPos.iPos = aMinPos;
-                }
-            else
-                {
-                aNewPos.iPos = leftEnd;
-                }
-            aNewPos.iType = TTmDocPosSpec::ELeading;
-            }
-        }
-    return constrained;
-    }
-
-TBool CAknFepManager::RightEndOfChunkWithinRange( const CTmTextLayout::TTmChunkDescription& aChunk,
-                                         TInt aMinPos, TInt aMaxPos, TTmDocPosSpec& aNewPos) const
-    {
-    TBool constrained = EFalse;
-    TInt rightEnd;
-    if ( !ChunkIsValid( aChunk ) )
-        {
-        constrained = ETrue; // leave the aNewPos as it is
-        }
-    else if ( aChunk.iStart >= iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep() )
-        {
-        constrained = ETrue; // That chunk was a ficticious one:
-        }
-    else if ( aChunk.iEnd <= aMinPos || aChunk.iStart >= aMaxPos )
-        {
-        constrained = ETrue; // That chunk found does not actually overlap with valid range. Don't go there
-        }
-    else
-        {
-        if ( aChunk.iRightToLeft )
-            {
-            rightEnd =  aChunk.iStart;
-            if ( rightEnd <= aMinPos )
-                {
-                constrained = ETrue;
-                aNewPos.iPos = aMinPos;
-                }
-            else
-                {
-                aNewPos.iPos = rightEnd;
-                }
-            aNewPos.iType = TTmDocPosSpec::ELeading;
-            }
-        else
-            {
-            rightEnd = aChunk.iEnd;
-            if ( rightEnd >= aMaxPos )
-                {
-                constrained = ETrue;
-                aNewPos.iPos = aMaxPos;
-                }
-            else
-                {
-                aNewPos.iPos = rightEnd;
-                }
-            aNewPos.iType = TTmDocPosSpec::ETrailing;
-            }
-        }
-    return constrained;
-    }
-
-/**
-* This method handles the attachment to the chunk being navigated toward.
-* Should only be used for Right and Left navigation.
-* The actual direction of that chunk does not need to be looked at. Even if
-* is the same direction as the one being moved from, you still attach to it, as it may not
-* be logically contiguous.
-*/
-void CAknFepManager::AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( TTmDocPosSpec& aPos, 
-                                                              TWesternNaviEvent aEvent ) const
-    {
-
-    CTmTextLayout::TTmChunkDescription leftChunk;
-    CTmTextLayout::TTmChunkDescription rightChunk;
-    FindAdjacentChunks(aPos, leftChunk, rightChunk);
-
-    TBool inputDirectionIsRTL = ( CurrentInputDirectionality() == TBidiText::ERightToLeft );
-
-    switch (aEvent)
-        {
-        case ELeftNaviEvent:
-            {
-            // Do not attach to the left chunk if its directionality is not the same as aDirection
-            if ( ChunkIsValid( leftChunk ) )
-                if ( COMPARE_BOOLS(inputDirectionIsRTL, leftChunk.iRightToLeft) )
-                    AttachToLeftChunk( aPos, leftChunk );
-            break;
-            }
-        case ERightNaviEvent:
-            {
-            if ( ChunkIsValid( rightChunk ) )
-                if ( COMPARE_BOOLS(inputDirectionIsRTL, rightChunk.iRightToLeft) )
-                    AttachToRightChunk( aPos, rightChunk );
-            break;
-            }
-        default:
-            break;
-        }
-
-    }
-
-
-void CAknFepManager::AttachToRightChunk( TTmDocPosSpec& aPos, 
-                                         const CTmTextLayout::TTmChunkDescription& aRightChunk )
-    {
-    if ( aRightChunk.iRightToLeft )
-        {
-        aPos.iPos = aRightChunk.iEnd;
-        aPos.iType = TTmDocPosSpec::ETrailing;
-        }
-    else
-        {
-        aPos.iPos = aRightChunk.iStart;
-        aPos.iType = TTmDocPosSpec::ELeading;
-        }
-    }
-
-void CAknFepManager::AttachToLeftChunk( TTmDocPosSpec& aPos, 
-                                        const CTmTextLayout::TTmChunkDescription& aLeftChunk )
-    {
-    if ( aLeftChunk.iRightToLeft )
-        {
-        aPos.iPos = aLeftChunk.iStart;
-        aPos.iType = TTmDocPosSpec::ELeading;
-        }
-    else
-        {
-        aPos.iPos = aLeftChunk.iEnd;
-        aPos.iType = TTmDocPosSpec::ETrailing;
-        }
-    }
-
-/**
-* This routine ensures that the cursor position is not attached to a chunk of opposite direction.
-* For end of document, the normal routine can be used.
-* For the start, usually do nothing, but there is the possibility of forcing position 0/Trailing, when
-* the edge chunk and the input directionality are opposite.
-*/
-void CAknFepManager::AdjustPosSpecForInputLanguageAfterDocumentLoop( TTmDocPosSpec& aPos, 
-                                     TWesternNaviEvent /*aNaviEvent*/, TBool aLoopToTop ) const
-    {
-
-    // Looping based on a Left event should adjust the cursor position as if that point had
-    // been reached by navigation to that same visual position outwards from the body
-    // Define this as the effective navigation that has just happened:
-    TWesternNaviEvent effectiveEvent(ELeftNaviEvent);
-
-    // Rule for this effective navigation is
-    // move to top of document : if paradirection is LTR then treat it as a LEFT navi
-    // move to top of document : if paradirection is RTL then treat it as RIGHT navi
-    // move to bottom of document : if paradirection is LTR then treat is as RIGHT navi
-    // move to bottom of document : if paradirection is RTL then treat as LEFT navi
-    // However, NOTE that decrementing events leads to looping to the END! (and vice versa)
-    TBool newParaIsRTL = IsRightToLeftParagraph(aPos);
-    if ( aLoopToTop && newParaIsRTL ) // move to top; RTL
-        effectiveEvent = ERightNaviEvent;
-    else if ( !aLoopToTop && !newParaIsRTL ) // move to bottom; LTR
-        effectiveEvent = ERightNaviEvent;
-
-    if ( aLoopToTop )
-        {
-        //  There is no ficticious block of the paragraph direction at -1 to 0.  So we have to
-        // behave as if there is one:
-        //
-        CTmTextLayout::TTmChunkDescription leftChunk;
-        CTmTextLayout::TTmChunkDescription rightChunk;
-        CTmTextLayout::TTmChunkDescription& edgeChunk = leftChunk;
-
-        FindAdjacentChunks(aPos, leftChunk, rightChunk);
-
-        // Get input language direction
-        TBool inputDirectionIsRTL = ( CurrentInputDirectionality() == TBidiText::ERightToLeft );
-        if ( effectiveEvent == ELeftNaviEvent )
-            edgeChunk = leftChunk;
-        else
-            edgeChunk = rightChunk;
-
-        // Check edgechunk for its direction
-        if ( !COMPARE_BOOLS( edgeChunk.iRightToLeft, inputDirectionIsRTL ) )
-            {
-            // Input language disagrees with the chunk that we are on,
-            aPos.iPos = 0;
-            aPos.iType = TTmDocPosSpec::ETrailing;
-            }
-
-        }
-    else // Looping to the end of document
-        {
-        // There IS a ficticious block at the doc end, so use the usual routine.
-        AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( aPos, effectiveEvent );
-        }
-
-    }
-
-TBool CAknFepManager::ChunkIsValid( const CTmTextLayout::TTmChunkDescription& aChunk )
-    {
-    TBool isValid(ETrue);
-
-    const TInt KNotValid = -1;
-    if ( aChunk.iRightToLeft == KNotValid )
-        isValid = EFalse;
-    else if (aChunk.iStart == KNotValid )
-        isValid = EFalse;
-    else if (aChunk.iEnd == KNotValid )
-        isValid = EFalse;
-
-#ifdef _DEBUG
-    if (isValid)
-        __ASSERT_DEBUG( aChunk.iStart <= aChunk.iEnd, 
-                        AknFepPanic( EAknFepPanicBadCursorNavigationState ) );
-#endif
-
-    return isValid;
-    }
-/**
-* Finds the current input direction. This is determined as best as it can using
-* - T9Interface as the preferred source of information
-* - shared data (via AknTextUtils) if that fails
-* - localLanguage overrides the above sources of information
-* - when fep is in numeric mode it returns LTR
-* - if FEP is in an irelevant mode, then LTR is returned
-*
-* @return TDirectionality::ELeftToRight for LTR alpha mode or numeric mode
-*/
-TBidiText::TDirectionality CAknFepManager::CurrentInputDirectionality() const
-    {
-    TBidiText::TDirectionality directionality(TBidiText::ELeftToRight);
-
-    // See if we are in a mode where the directionality is defined:
-    TBool checkForRTLValid(EFalse);
-
-    switch (iMode )
-        {
-        case ELatin:
-        case ENumber:
-            checkForRTLValid = ETrue;
-            break;
-        default:
-            break;
-        }
-
-    if ( checkForRTLValid )
-        {
-            MPtiLanguage* ptilang = iPtiEngine->CurrentLanguage(); // No need to get language from PtiEngine ?
-            TInt inputLanguage = (ptilang)? ptilang->LanguageCode() : 0;
-            if ( inputLanguage )
-                {
-                directionality = TBidiText::ScriptDirectionality( (TLanguage)inputLanguage );
-                checkForRTLValid = EFalse;
-                }
-        }
-
-    // if no T9 interface information is available, then go for other sources
-    // Note that you have to check for local language in this case (belt-and-braces)
-    if ( checkForRTLValid )
-        {
-        TLanguage localLanguage = ELangTest;
-        if ( GetLocalLanguage( localLanguage ) )
-            directionality = TBidiText::ScriptDirectionality( localLanguage );
-        else
-            directionality = AknTextUtils::CurrentScriptDirectionality();
-        }
-
-    return directionality;
-    }
-
-
-TBool CAknFepManager::GetLocalLanguage( TLanguage& aLanguage ) const
-    {
-    TBool result(EFalse);
-    // Check for a local language override
-    if ( IsFepAwareTextEditor() )
-        {
-        // For ITU-T keyboard we always use english in latin-only editors.               
-        // In case of qwerty keyboard, some languages can be used in latin
-        // only-editors, some require that english is used instead. That
-        // is decided here.
-        const TInt globalLang = iSharedDataInterface->InputTextLanguage();        
-        TBool allowTest = 
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-                           !iQwertyInputMode ||
-#endif
-                           globalLang == ELangPrcChinese ||
-                           globalLang == ELangHongKongChinese ||
-                           globalLang == ELangTaiwanChinese ||
-                           globalLang == ELangThai ||
-                           globalLang == ELangGreek ||
-                           globalLang == ELangArabic ||
-                           globalLang == ELangFarsi ||                           
-                           globalLang == ELangUrdu ||
-                           globalLang == ELangHebrew ||
-                           globalLang == ELangRussian ||
-                           globalLang == ELangUkrainian ||
-                           globalLang == ELangHindi ||
-#ifdef RD_MARATHI
-                           globalLang == ELangMarathi ||
-#endif // RD_MARATHI
-
-#ifdef RD_HINDI_PHONETIC_INPUT  
-                           globalLang == KLangHindiPhonetic ||
-#endif                           
-                           globalLang == ELangBulgarian || 
-                           globalLang == ELangVietnamese;
-                                          
-        if (allowTest && iAknEditorFlags & EAknEditorFlagLatinInputModesOnly &&
-            iLanguageCapabilities.iInputLanguageCode != ELangJapanese)
-            {
-            aLanguage = ELangEnglish;               
-            }
-        else
-            {
-            aLanguage = EditorState()->LocalLanguage();
-            }
-            
-        if ( aLanguage != ELangTest )
-            {   
-            MPtiLanguage* languageObject = NULL;
-            languageObject = iPtiEngine->GetLanguage(aLanguage);
-            if (languageObject)  // Check if the input language is supported.
-                {                
-                result = ETrue;
-                }
-            else
-                {
-                aLanguage = ELangTest;
-                }
-            }
-        }
-    return result;
-    }
-
-
-TBool CAknFepManager::GetExposedDirectionOfText( TInt aPos, TBool aForward, 
-                                                 TBool& aIsRightToLeft ) const
-    {
-    TBool hasStrongCharacter(EFalse);
-
-    // Access the plain text from the editor, getting a little bit at a time.
-
-    TInt docLen = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-
-    // Init with defaults for aForward = ETrue
-    TInt limit = docLen;
-    TInt increment = 1;
-    if ( !aForward )
-        {
-        limit = -1; // Loop does not execute if == limit
-        increment = -1;
-        }
-
-    for ( TInt index = aPos; index != limit ; index += increment )
-        {
-        TChar ch = CharAt(index);
-        if ( iInlineTextDecorator->CharacterIsStrongRightToLeft( (TText)ch ) )
-            {
-            hasStrongCharacter = ETrue;
-            aIsRightToLeft = ETrue;
-            break;
-            }
-        else if ( iInlineTextDecorator->CharacterIsStrongLeftToRight( (TText)ch ) )
-            {
-            hasStrongCharacter = ETrue;
-            aIsRightToLeft = EFalse;
-            break;
-            }
-        }
-
-    return hasStrongCharacter;
-    }
-
-TBool CAknFepManager::GetExposedDirectionOfTextInDescriptor( const TDesC& aText, TBool aForward, 
-                                                             TBool& aIsRightToLeft ) const
-    {
-    TBool hasStrongCharacter(EFalse);
-
-    TInt textLen = aText.Length();
-
-    TInt start = 0;
-    TInt limit = textLen;
-    TInt increment = 1;
-    if ( !aForward )
-        {
-        start = textLen-1;
-        limit = -1; // Loop does not execute if == limit
-        increment = -1;
-        }
-
-    for ( TInt index = start; index != limit ; index += increment )
-        {
-        if ( iInlineTextDecorator->CharacterIsStrongRightToLeft( (TText)aText[index] ) )
-            {
-            hasStrongCharacter = ETrue;
-            aIsRightToLeft = ETrue;
-            break;
-            }
-        else if (  iInlineTextDecorator->CharacterIsStrongLeftToRight( (TText)aText[index] ) )
-            {
-            hasStrongCharacter = ETrue;
-            aIsRightToLeft = EFalse;
-            break;
-            }
-        }
-
-    return hasStrongCharacter;
-    }
-
-TChar CAknFepManager::CharAt( TInt aPos ) const
-    {
-    TBuf<ESingleCharacter> chDes;
-#ifdef RD_SCALABLE_UI_V2
-    if ( SemiFepAwareTextEditor( ETrue ) )
-#else
-    if ( iInputCapabilities.FepAwareTextEditor() )
-#endif // RD_SCALABLE_UI_V2    
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep( chDes, aPos, 
-                                                                         ESingleCharacter);
-    if( chDes.Length() > 0 )
-        return chDes[0];
-    else
-        return TChar(0);
-    }
-
-
-/**
-* Navigate off of selected text using an Up/Down/Right/Left navigation event
-*
-* The code takes account of the paragraph directionality that the passed selection is
-* found in.
-*
-* The new cursor position is resolved for ambuguity and set using SetCursorPosition and
-* so it has the same side-effects:
-*   iUncommittedText is set to the zero-width "cursor" state with the new cursor position
-*   iUncommittedText is set into the FepAwareTextEditor state
-*   iCaseManager is updated with a ENullNaviEvent
-*   the doc pos is set in TextView object if present
-*/
-TKeyResponse CAknFepManager::NavigateFromSelectionL(
-            const TCursorSelection& aSelection,
-            TWesternNaviEvent aNaviEvent,
-            TTmDocPosSpec& aPos)
-    {
-    if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut | ECcpuStateHashDown))
-        {
-        return EKeyWasNotConsumed;
-        }
-        
-    switch( aNaviEvent )
-        {
-        case EUpNaviEvent:
-        case EDownNaviEvent:
-        case ERightNaviEvent:
-        case ELeftNaviEvent:
-            // Carry on. Handle this event
-            break;
-        default: // just leave it as NULL
-            return EKeyWasNotConsumed;
-        }
-    // Find the visual end of the selection
-    TWesternNaviEvent effectiveEvent; // used to return either Right or Left event from next call:
-    GetAvkonDefinedVisualLimitsOfSelection( aSelection, aNaviEvent, aPos, &effectiveEvent );
-    AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( aPos, effectiveEvent );
-
-    // Set this as the current position
-    SetCursorPositionL( aPos );
-
-    return EKeyWasConsumed;
-    }
-
-
-void CAknFepManager::SetCursorPositionL( const TTmDocPosSpec& aNewCursorPos, TBool aDragSelectOn )
-    {
-    if ( !iInputCapabilities.FepAwareTextEditor() )
-        return;
-
-    TInt newAnchorPos = aNewCursorPos.iPos;
-
-    if ( aDragSelectOn )
-        {
-        TCursorSelection selection;
-        iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(selection);
-        if ( selection.Length() > 0 ) // there is a selection. Keep the anchor
-            newAnchorPos = selection.iAnchorPos;
-        }
-
-    iUncommittedText.SetSelection( aNewCursorPos.iPos, newAnchorPos );
-
-    iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(iUncommittedText);
-    iCaseMan->UpdateCase(ENullNaviEvent);
-
-    // This is able to set the directional attachment of the cursor in a way that the FepAwareTextEditor interface cannot
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-    	docNavi->SetDocPosL(aNewCursorPos, aDragSelectOn);
-    	}
-    else
-    	{
-        CAknEdwinFormAccessor* formAccessor = EditorState()->FormAccessor();
-        if (formAccessor)
-            {
-            CEikEdwin *edwin = static_cast<CEikEdwin *>( formAccessor->FormClientControl() );
-            if (edwin)
-                edwin->SetCursorPosL( aNewCursorPos.iPos, aDragSelectOn );
-            }
-        }
-    }
-
-
-
-TBool CAknFepManager::InFirstLineAndFormatted( const TTmDocPosSpec& aPos ) const
-    {
-    return DocPosInFirstOrLastLineAndFormatted( aPos, ETrue);
-    }
-
-TBool CAknFepManager::InLastLineAndFormatted( const TTmDocPosSpec& aPos ) const
-    {
-    return DocPosInFirstOrLastLineAndFormatted( aPos, EFalse );
-    }
-
-TBool CAknFepManager::DocPosInFirstOrLastLineAndFormatted( const TTmDocPosSpec& aPos, 
-                                                           TBool aCheckFirstLine ) const
-    {
-    TBool success(EFalse);
-    TTmLineInfo lineInfo;
-    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-    if (docNavi)
-    	{
-	    success = docNavi->DocPosToLine( aPos, lineInfo);
-    	}
-    else
-    	{
-	    CTextLayout* textLayout = TextLayout();
-	    if ( textLayout )
-	        {
-	        success = textLayout->TagmaTextLayout().DocPosToLine( aPos, lineInfo);
-	        }
-    	}
-    	
-        if ( success )
-            {
-            if ( aCheckFirstLine )
-                success = (lineInfo.iLineNumber == 0 );
-            else
-                {
-                // Current position has yielded line information.  But how to tell if it is the last line?
-                // Use the fact that the docpos of the last character will be in the last line.
-                // Also account for the fact that these APIs report a character at docLength itself, a
-                // ficticious end of paragraph character.  So use a >= docLength
-                success = (lineInfo.iEnd >= 
-                           iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep()  );
-                }
-            }
-        
-    return success;
-    }
-
-TBool CAknFepManager::AtVisualStart( const TTmDocPosSpec& aCurrentPos, 
-                                     const TTmDocPosSpec& aLimitPos ) const
-    {
-    TBool positionsAreTheSame(EFalse);
-    if ( aCurrentPos.iPos == aLimitPos.iPos && aCurrentPos.iType == aLimitPos.iType )
-        positionsAreTheSame = ETrue;
-    else if ( aCurrentPos.iPos == 0 && aCurrentPos.iType == TTmDocPosSpec::ETrailing )
-        positionsAreTheSame = ETrue;
-
-    return positionsAreTheSame;
-    }
-
-TBool CAknFepManager::AtVisualEnd( const TTmDocPosSpec& aCurrentPos, 
-                                   const TTmDocPosSpec& aLimitPos, TInt aDocLength ) const
-    {
-    TBool positionsAreTheSame(EFalse);
-    if ( aCurrentPos.iPos == aLimitPos.iPos && aCurrentPos.iType == aLimitPos.iType )
-        positionsAreTheSame = ETrue;
-    else if ( aCurrentPos.iPos == aDocLength && aCurrentPos.iType == TTmDocPosSpec::ELeading )
-        positionsAreTheSame = ETrue;
-    else if ( aCurrentPos.iPos > aDocLength )
-        positionsAreTheSame = ETrue;
-
-    return positionsAreTheSame;
-    }
-
-
-void CAknFepManager::SetCursorType(TBool aIsLeftToRight)
-    {
-    if ( !BidiCursorRequired() )
-        return;
-
-    // Optimization to prevent excessive Wserv communication:
-    if ( IsFlagSet( EFlagBidiCursorIsInitialized )
-        && COMPARE_BOOLS( !aIsLeftToRight, IsFlagSet( EFlagCursorPointsRightToLeft ) ) )
-        return;
-
-    SetFlag( EFlagBidiCursorIsInitialized );
-
-    MCoeFepAwareTextEditor* editor = iInputCapabilities.FepAwareTextEditor();
-    if (editor && editor->Extension1())
-        {
-        TCharFormat format;
-        TInt docPos = DocPos().iPos;
-        editor->GetFormatForFep(format, docPos);
-        
-        // Use Avkon routine to make all the layout decisions. It returns a TTextCursor object
-        TTextCursor newCursor;
-        AknCustomCursorSupport::GetBidiTextCursorFromFontSpec( format.iFontSpec, 
-                                                               !aIsLeftToRight, newCursor );
-        TBool setToTrue(ETrue);
-        editor->Extension1()->SetCursorType(setToTrue, newCursor);
-       
-        // Keep flag in step for optimization
-        if ( aIsLeftToRight )
-            ClearFlag( EFlagCursorPointsRightToLeft );
-        else
-            SetFlag( EFlagCursorPointsRightToLeft );
-        }
-    }
-
-TBool CAknFepManager::DeviceSupportsRTLLanguageL()
-    {
-    CArrayFixFlat<TInt>* languages = new (ELeave) CArrayFixFlat<TInt>(ELanguageArrayGranularity);
-    CleanupStack::PushL(languages);
-    iPtiEngine->GetAvailableLanguagesL(languages);
-
-    TBool bidiCursorSuppressed(EFalse);
-#if defined(__WINS__)
-    bidiCursorSuppressed = ETrue;
-    // Test (Disabled) mode (fake) UID, key and its value
-    const TInt KTestModeValue = 1; // 1 = show Bidi cursor
-
-    CRepository* repository = NULL;
-    TRAPD(ret, repository = CRepository::NewL(KCRUidAknFep));
-    if (ret == KErrNone)
-        {
-        TInt modeValue = 0;
-        if (repository->Get(KAknFepTestModeKey, modeValue) == KErrNone)
-            {
-            if (modeValue == KTestModeValue)
-                {
-                bidiCursorSuppressed = EFalse; // show bidi cursor
-                }
-            }
-        }
-    delete repository;
-#endif
-
-    TBool result = EFalse;
-    if (!bidiCursorSuppressed)
-        {
-        for (TInt jj = 0; jj < languages->Count(); jj++)
-            {
-            if (languages->At(jj) == ELangArabic ||
-                languages->At(jj) == ELangHebrew ||
-                languages->At(jj) == ELangFarsi  ||
-                languages->At(jj) == ELangUrdu )
-                // + others...
-                {
-                result = ETrue;
-                break;
-                }
-            }
-        }
-
-    CleanupStack::PopAndDestroy();  // languages
-    return result;
-    }
-
-void CAknFepManager::CalculateEditorDigitType(TDigitType& aDestination)
-    {
-    TBool ASCIIDigits = EFalse;
-    MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-
-    if ( mop )
-        {
-        CAknExtendedInputCapabilities* extendedInputCapabilities = 
-        mop->MopGetObject( extendedInputCapabilities );
-
-        if ( extendedInputCapabilities ) 
-            {
-            if ( extendedInputCapabilities->SupportsCapabilities(
-                CAknExtendedInputCapabilities::ESupportsOnlyASCIIDigits ) )
-                {
-                // If this is true, then the inputcaps wants only ascii
-                // digits -> you can, when the editor is seen as numeric,
-                // be sure that only latin indicator is then wanted.
-                ASCIIDigits = ETrue;
-                }
-            }
-        }
-
-    if (iAknEditorFlags & EAknEditorFlagLatinInputModesOnly) 
-        {
-        // use of only latin characters implies that numbers are also western
-        ASCIIDigits = ETrue;
-        }
-
-    AknTextUtils::TDigitModeQueryType editorType = AknTextUtils::EDigitModeEditorDefault;
-    TBool numberOnlyEditor = iPermittedInputModes == EAknEditorNumericInputMode;
-    if ( numberOnlyEditor )
-        {
-        editorType = AknTextUtils::EDigitModeNumberEditor;
-        if (ASCIIDigits)
-            {
-            editorType = AknTextUtils::EDigitModeLatinNumberEditor;
-            }
-        }
-        
-    if (iLanguageCapabilities.iArabicIndicDigitsAllowed &&
-        AknTextUtils::DigitModeQuery(editorType) && 
-        !ASCIIDigits)
-        {
-        aDestination = EDigitTypeArabicIndic;
-        }
-    else if (iLanguageCapabilities.iEasternArabicIndicDigitsAllowed &&
-        AknTextUtils::DigitModeQuery(editorType)&& 
-        !ASCIIDigits)
-        {
-        aDestination = EDigitTypeEasternArabicIndic;
-        }    
-    /*Hindi*/    
-    else if ( iLanguageCapabilities.iIndicDigitsAllowed &&
-                    AknTextUtils::DigitModeQuery(editorType) && 
-        !ASCIIDigits)    
-        {
-        aDestination = EDigitTypeDevanagari;    
-        }
-    else
-        {
-        aDestination = EDigitTypeWestern;
-        }
-    }
-
-
-void CAknFepManager::UpdateNumericEditorDigitType()
-    {
-    if (iLanguageCapabilities.iNumericEditorDigitType == EDigitTypeUnknown)
-        {
-        CalculateEditorDigitType(iLanguageCapabilities.iNumericEditorDigitType);
-        }
-    }
-
-void CAknFepManager::UpdateLocalDigitMode()
-    {
-    TInt oldLocalDigitType = iLanguageCapabilities.iLocalDigitType;
-    CalculateEditorDigitType(iLanguageCapabilities.iLocalDigitType);
-    
-    if (oldLocalDigitType != iLanguageCapabilities.iLocalDigitType && 
-        iCaseMan) // happens in destructor   
-        {
-        UpdateIndicators(); 
-        }
-    }
-
-/**
-* This routine should be called if the flag is set that says that the last navigation was to an
-* ambiguous point.
-* The routine checks to see if the event passed is
-* - Right or Left Arrow
-* - Would be the event to "jump" across the ambiguity. That is
-*       - if at the "left" side of a LTR | RTL point, you need a Right arrow
-*       - if at the "right" side of a LTR | RTL point, you need a Left arrow.
-*       - if at the "left" side of a RTL | LTR point, you need a Right arrow
-*       - if at the "right" side of a RTL | LTR point, you need a Left arrow.
-*
-*/
-// TKeyResponse CAknFepManager::AttemptCursorFlipAtAmbiguousPointL( const TKeyEvent& aKeyEvent, TEventCode aEventCode )
-TKeyResponse CAknFepManager::AttemptCursorFlipAtAmbiguousPointL( const TUint aCode )
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-
-    if ( IsFlagSet(EFlagAtDirectionallyAmbiguousPoint)  // only perform if already at ambi-point?
-        && !IsFlagSet(EFlagInsideInlineEditingTransaction) ) // do not flip if inside inline edit
-        {
-        if ( aCode == EKeyRightArrow || aCode == EKeyLeftArrow )
-            {
-            if ( iInputCapabilities.FepAwareTextEditor() && EditorState() 
-            && (AknFepDocumentNavigation() || TextView()) )
-                {
-                TTmDocPosSpec docPos = DocPos();
-                TTextDirectionalInfo status = LocalTextDirectionalStatus( docPos );
-
-                CTmTextLayout::TTmChunkDescription leftChunk;
-                CTmTextLayout::TTmChunkDescription rightChunk;
-                FindAdjacentChunks(docPos, leftChunk, rightChunk);
-
-                if ( status.iBlockEnvironment == 
-                     TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock
-                    && aCode == EKeyRightArrow )
-                    {
-                    response = EKeyWasConsumed;
-                    // Set cursor to new directionality ( opposite to current )
-                    SetCursorTypeForTextDirection( status.iDirectionalStatus == 
-                                                   TTextDirectionalInfo::ERightToLeft );
-                    // Must actually change the docpos!
-                    AttachToRightChunk( docPos, rightChunk );
-                    SetCursorPositionL( docPos, ETrue ); // Drag any existing selection
-                    }
-                else if (  status.iBlockEnvironment == 
-                           TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock
-                    && aCode == EKeyLeftArrow )
-                    {
-                    response = EKeyWasConsumed;
-                    // Effectively this toggles the direction of the cursor
-                    SetCursorTypeForTextDirection( status.iDirectionalStatus == 
-                                                   TTextDirectionalInfo::ERightToLeft );
-                    // Must actually change the docpos!
-                    AttachToLeftChunk( docPos, leftChunk );
-                    SetCursorPositionL( docPos, ETrue ); // Drag any existing selection
-                    }
-                }
-            }
-        }
-    return response;
-    }
-
-
-TInt CAknFepManager::PostEventCheckCallback(TAny* aObj)
-    {
-    TRAP_IGNORE(static_cast<CAknFepManager*>(aObj)->DoCursorDirectionCheckL());
-    return KErrNone;
-    }
-
-TBool CAknFepManager::BidiCursorRequired() const
-    {
-    return iDeviceSupportsRtlLanguage;
-    }
-
-void CAknFepManager::DoCursorDirectionCheckL()
-    {
-   iPostEventCheck->Cancel();
-    if(BidiCursorRequired()) 
-        {
-        AdjustCursorTypeForCurrentPosition();
-        }
-
-    if ( !BidiCursorRequired() 
-    || (TAknFepUiIndicInputManager :: IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode)) ))
-            {
-		/*Hindi*/
-    	if( ( !WesternPredictive() ) && 
-			( TAknFepUiIndicInputManager::IsIndicLangauge( 
-					TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) && 
-			( ( TAknFepUiIndicInputManager::IsCharVirama( 
-					PreviousChar( ETrue ), TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) ) 
-#ifdef RD_MARATHI
-			|| ( IsEyeLashRaPresentL() && 
-			TAknFepUiIndicInputManager::IsCharVirama(
-					PreviousToPreviousChar( ETrue ), TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) )
-#endif
-			)
-    		&& !( iInputCapabilities.SupportsSecretText() )
-    		)
-			{
-			TTmDocPosSpec pos = DocPos();
-			pos.iType = TTmDocPosSpec::ETrailing;
-		    TTmPosInfo2 info;
-			TTmLineInfo lineInfo;
-			TBool findAvailable = EFalse;
-		    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-		    if (docNavi)
-		    	{
-			    docNavi->FindDocPos(pos, info, lineInfo);
-			    findAvailable = ETrue;
-		    	}
-		    else
-		    	{
-				CTextLayout* textLayout = TextLayout();
-	    		if ( textLayout )
-	    			{
-					textLayout->TagmaTextLayout().FindDocPos(pos, info, lineInfo);	    					    
-					findAvailable = ETrue;
-	    			}
-		    	}
-		    if (findAvailable)
-		    	{
-				TCursorSelection sel(info.iDocPos.iPos  ,info.iDocPos.iPos );
-				iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);
-		    	}
-			}		
-		}	
-    }
-
-void CAknFepManager::AdjustCursorTypeForCurrentPosition()
-    {
-    if ( iInputCapabilities.FepAwareTextEditor() && EditorState() 
-    && (AknFepDocumentNavigation() || TextView()) )
-        AdjustCursorTypeForPosition( DocPos() );
-    }
-
-void CAknFepManager::SchedulePostEventCheckL( TUint aCode )
-    {
-    
-    TBool isToPostEvent   = EFalse;    
-    TBool isIndicLanguage = TAknFepUiIndicInputManager :: 
-                            IsIndicLangauge(TLanguage(iLanguageCapabilities.iInputLanguageCode));
-    
-    if ( BidiCursorRequired() )
-        {
-        switch ( aCode )
-            {
-            // Navigation cases:
-            case EKeyDownArrow:
-            case EKeyUpArrow:            
-            case EPtiKey1:
-            case EPtiKey2:
-            case EPtiKey3:
-            case EPtiKey4:
-            case EPtiKey5:
-            case EPtiKey6:
-            case EPtiKey7:
-            case EPtiKey8:
-            case EPtiKey9:
-            case EPtiKey0:
-                 {
-                    isToPostEvent = ETrue;
-                 }
-                 break;
-            case EKeyBackspace:
-            case EKeyDelete:
-                {
-                    if(!isIndicLanguage)
-                    {
-                        isToPostEvent = ETrue;
-                    }
-                }
-                break;
-            case EKeyLeftArrow:
-            case EKeyRightArrow:
-                {
-                    if(!isIndicLanguage)
-                    {
-                        isToPostEvent = ETrue;
-                    }
-                }
-                break;                
-            default:
-                break;
-            }
-
-        // If Repha has been inserted then do not post event.
-        if( isIndicLanguage )
-            {
-            if( aCode == EPtiKey1 && ( !iQwertyInputMode ) )
-                {
-                if( IsRephaPresent() 
-#ifdef RD_MARATHI
-                || IsEyeLashRaPresentL()
-#endif
-                )
-                    {
-                    isToPostEvent = EFalse;
-                    }
-                }
-            }
-        }
-              
-        if(isIndicLanguage) // iQwertyInputMode check is added so as to ensure that the event is not posted for Qwerty mode. 
-        {
-            if((aCode == EKeyBackspace || aCode == EKeyDelete) && (!iQwertyInputMode))
-            {
-                isToPostEvent = ETrue;
-            }           
-        } 
-        
-        if(isToPostEvent)
-        {
-            if ( iPostEventCheck->IsActive() )
-                iPostEventCheck->Cancel();
-            iPostEventCheck->Start( TCallBack(PostEventCheckCallback, this) );
-        }                   
-    }
-
-void CAknFepManager::AdjustCursorTypeForPosition( const TTmDocPosSpec& aDocPos )
-    {
-
-    TTextDirectionalInfo dirInfo = LocalTextDirectionalStatus( aDocPos );
-    // default clearing of this flag
-    ClearFlag( EFlagAtDirectionallyAmbiguousPoint );
-
-    switch ( dirInfo.iBlockEnvironment )
-        {
-        case TTextDirectionalInfo::EUndefined:
-            // Set according to input direction
-            SetCursorTypeForTextDirection( CurrentInputDirectionality() == 
-                                           TBidiText::ELeftToRight );
-            break; // do nothing
-
-        // All unambiguous cases
-        case TTextDirectionalInfo::EInsideBlock:
-        case TTextDirectionalInfo::EAtRightEndOfLine:
-        case TTextDirectionalInfo::EAtLeftEndOfLine:
-        case TTextDirectionalInfo::EAtRightEndOfBlockFacingSameDirectionBlock:
-        case TTextDirectionalInfo::EAtLeftEndOfBlockFacingSameDirectionBlock:
-            SetCursorTypeForTextDirection( dirInfo.iDirectionalStatus == 
-                                           TTextDirectionalInfo::ELeftToRight );
-            break;
-
-        // Ambiguous. Navigation has resulted in an ambiguous visual position. Set cursor according
-        // to current direction
-        case TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock:
-        case TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock:
-            SetCursorTypeForTextDirection( dirInfo.iDirectionalStatus == 
-                                           TTextDirectionalInfo::ELeftToRight );
-            SetFlag( EFlagAtDirectionallyAmbiguousPoint );
-            break;
-        default:
-            // Do nothing
-            break;
-        }
-    }
-
-void CAknFepManager::SetCursorTypeForTextDirection( TBool aLeftToRight )
-    {
-    SetCursorType( aLeftToRight );
-    }
-
-void CAknFepManager::SetCursorTypeForInputDirection( TBool /*aLeftToRight*/ )
-    {
-    // Do nothing
-    }
-
-CAknFepManager::TTextDirectionalInfo CAknFepManager::
-                               LocalTextDirectionalStatus( const TTmDocPosSpec& aDocPos ) const
-    {
-    TTextDirectionalInfo directionalInfo;
-
-    MCoeFepAwareTextEditor* fepAwareTextEditor = iInputCapabilities.FepAwareTextEditor();
-    if ( !fepAwareTextEditor )
-        return directionalInfo;
-
-    if ( aDocPos.iPos < 0 ) // somehow, we are before the first character
-        directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENotInDocument;
-    else if ( aDocPos.iPos > fepAwareTextEditor->DocumentLengthForFep() ) // (iPos = docLen still is within document)
-        directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENotInDocument;
-    else if ( fepAwareTextEditor->DocumentLengthForFep() == 0 ) // zero length; no document
-        directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENotInDocument;
-
-    if ( directionalInfo.iDirectionalStatus == TTextDirectionalInfo::EUnknown )
-        {
-        CTmTextLayout::TTmChunkDescription leftChunk;
-        CTmTextLayout::TTmChunkDescription rightChunk;
-        FindAdjacentChunks(aDocPos, leftChunk, rightChunk);
-
-    // Cases:
-    // position is within a chunk (chunks are continuous in logical index and same directionality.
-    //  ->Return directionality
-    // position is betweeen two chunks of opposite directionality
-    //  -> return simple ambiguity
-    // position is between two chnks of same directionality, but logical index is not contiguous
-    //  -> return complex ambiguity ; return directionality
-
-        if ( leftChunk.iStart == -1 && rightChunk.iStart == -1 ) // 2 chunks invalid; direction stays EUnkonwn
-            {
-            directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ENoDirectionalChunks;
-            }
-        else if ( leftChunk.iStart == -1 )  // no left block
-            {
-            directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EAtLeftEndOfLine;
-            directionalInfo.SetDirectionFromChunk( rightChunk );
-            }
-        else if ( rightChunk.iStart == -1 ) // no right block
-            {
-            directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EAtRightEndOfLine;
-            directionalInfo.SetDirectionFromChunk( leftChunk );
-            }
-        // Both chunks are the same direction.
-        // We are either nicely inside a block or the two blocks are at +/- 2, 4, etc levels
-        else if ( COMPARE_BOOLS( leftChunk.iRightToLeft, rightChunk.iRightToLeft ) )
-            {
-            // Can set direction from either chunk; use left one
-            directionalInfo.SetDirectionFromChunk( leftChunk );
-
-            if (leftChunk.iRightToLeft )
-                {
-                if ( leftChunk.iStart == rightChunk.iEnd ) // chunks are continguous
-                    directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EInsideBlock;
-                else // Chunks are separated by 2, 4 etc. levels
-                    directionalInfo.iBlockEnvironment = ( aDocPos.iPos == leftChunk.iStart ) ?
-                        TTextDirectionalInfo::EAtRightEndOfBlockFacingSameDirectionBlock :
-                        TTextDirectionalInfo::EAtLeftEndOfBlockFacingSameDirectionBlock;
-                }
-            else
-                {
-                if ( leftChunk.iEnd == rightChunk.iStart ) // chunks are continguous
-                    directionalInfo.iBlockEnvironment = TTextDirectionalInfo::EInsideBlock;
-                else // Chunks are separated by 2, 4 etc. levels
-                    directionalInfo.iBlockEnvironment = ( aDocPos.iPos == leftChunk.iEnd ) ?
-                        TTextDirectionalInfo::EAtRightEndOfBlockFacingSameDirectionBlock :
-                        TTextDirectionalInfo::EAtLeftEndOfBlockFacingSameDirectionBlock;
-                }
-            }
-        else // Blocks are in opposite direction. Have to deal with all the values of the iType enum
-            {
-            TInt charPos;
-            switch( aDocPos.iType )
-                {
-                case TTmDocPosSpec::ETrailing: // position follows a block End
-                    {
-                    charPos = aDocPos.iPos - 1; //  attachment is to character[iPos-1] - now find it
-                    if ( leftChunk.iStart <= charPos && charPos < leftChunk.iEnd ) // pos is in left chunk
-                        {
-                        directionalInfo.SetDirectionFromChunk( leftChunk );
-                        directionalInfo.iBlockEnvironment = 
-                            TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock;
-                        }
-                    else if( rightChunk.iStart <= charPos && charPos < rightChunk.iEnd ) // pos is in right chunk
-                        {
-                        directionalInfo.SetDirectionFromChunk( rightChunk );
-                        directionalInfo.iBlockEnvironment = 
-                            TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock;
-                        }
-                    else // Probably impossible situation.  Supply reasonable defaults rather than panicking
-                        {
-                        directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ELeftToRight;
-                        directionalInfo.iBlockEnvironment = 
-                            TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock;
-                        }
-                    break;
-                    }
-                case TTmDocPosSpec::ELeading: // position precedes a block start
-                    {
-                    charPos = aDocPos.iPos; //  attachment is to character[iPos] - now find it
-                    if ( leftChunk.iStart <= charPos && charPos < leftChunk.iEnd ) // pos is in left chunk
-                        {
-                        directionalInfo.SetDirectionFromChunk( leftChunk );
-                        directionalInfo.iBlockEnvironment = 
-                            TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock;
-                        }
-                    else if( rightChunk.iStart <= charPos && charPos < rightChunk.iEnd ) // pos is in right chunk
-                        {
-                        directionalInfo.SetDirectionFromChunk( rightChunk );
-                        directionalInfo.iBlockEnvironment = 
-                            TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock;
-                        }
-                    else // Probably impossible situation.  Supply reasonable defaults rather than panicking
-                        {
-                        directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ELeftToRight;
-                        directionalInfo.iBlockEnvironment = 
-                            TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock;
-                        }
-                    break;
-                    }
-                case TTmDocPosSpec::ELeftToRight: // Is attached to a Left to right block
-                    {
-                    directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ELeftToRight;
-                    // If left chunk is RTL, then we are NOT attached to that left block
-                    // (ie. we are at left end of the right block)
-                    directionalInfo.iBlockEnvironment = leftChunk.iRightToLeft ?
-                        TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock : // must be in right chunk then (left end of it)
-                        TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock; // else in left chunk (right end of it)
-                    break;
-                    }
-                case TTmDocPosSpec::ERightToLeft:
-                    {
-                    directionalInfo.iDirectionalStatus = TTextDirectionalInfo::ERightToLeft;
-                    // If left chunk if RTL, then we are attached to that left block (ie. at right end of it)
-                    directionalInfo.iBlockEnvironment = leftChunk.iRightToLeft ? // is it in left chunk?
-                        TTextDirectionalInfo::EAtRightEndOfBlockFacingOppositeDirectionalBlock : // right end of left chunk
-                        TTextDirectionalInfo::EAtLeftEndOfBlockFacingOppositeDirectionalBlock;
-                    break;
-                    }
-                }
-
-            }
-        }
-    return directionalInfo;
-    }
-
-
-/**
-* Redecoration is carried out if a neutral is exposed by the deletion to a directionality
-* different to that which is was already marked.
-*
-* The routine leaves iUncommittedText again set to the (possibly new) cursor position.
-*
-*/
-void CAknFepManager::RedecorateAfterDeletionL( const TDesC& aTextThatWasDeleted  )
-    {
-    if (!EditorSupportsNeutralProtection())
-        return;
-
-    if ( aTextThatWasDeleted.Length() == 0 )
-        return;
-
-    TBool protect = ETrue;
-
-    // Set up iUncommittedText with the current cursor position so that PreviousChar will work:
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-
-    TTmDocPosSpec docPos = DocPos();
-    TInt docLen = iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-
-    TInt previousPos = docPos.iPos;
-    // Trailing iType actually points to character at index iPos - 1
-    if( docPos.iType == TTmDocPosSpec::ETrailing )
-        previousPos = previousPos -= 1;
-    TInt nextPos = previousPos + 1;
-
-    // Perform no neutral protection if the beginning of the text is deleted.
-    // Note that there MAY be protection occuring if the delete is from the end so there is
-    // no corresponding test on DocLength. That is handled later where the paragraph direction
-    // is used for the "forward" directionality.
-    if ( previousPos < 0 )
-        return;
-
-    // Up to 2 protection characters, one RTL and one LTR
-    TBuf<2> textToInsert;
-
-    TBool adjacentPrecedingIsNeutral(EFalse);
-    TBool adjacentTrailingIsNeutral(EFalse);
-
-    // See if either preceding or next is neutral
-    adjacentPrecedingIsNeutral = iInlineTextDecorator->CharacterIsNeutral( CharAt(previousPos) );
-    if ( nextPos < docLen )
-        adjacentTrailingIsNeutral = iInlineTextDecorator->CharacterIsNeutral( CharAt(nextPos) );
-
-    if ( !adjacentPrecedingIsNeutral && !adjacentTrailingIsNeutral )
-        protect = EFalse;
-
-    // Inits actually correspond to LTR, but they are only used if the bools indicating
-    // strong directionality found get set
-    TBool directionPrecedingDeleteIsRTL(EFalse);
-    TBool directionTrailingDeleteIsRTL(EFalse);
-    if ( protect )
-        {
-        TBool strongPreceding = GetExposedDirectionOfText( previousPos, EFalse, 
-                                                           directionPrecedingDeleteIsRTL );
-        TBool strongTrailing = GetExposedDirectionOfText( nextPos, ETrue, 
-                                                          directionTrailingDeleteIsRTL );
-        if (!strongTrailing)
-            {
-            TBool isRTLPara = IsRightToLeftParagraph(docPos);
-            directionTrailingDeleteIsRTL = isRTLPara;
-            strongTrailing = ETrue;
-            }
-        if ( !strongPreceding || !strongTrailing) // Must have strong in both directions
-            protect = EFalse;
-        else if ( COMPARE_BOOLS( directionPrecedingDeleteIsRTL, directionTrailingDeleteIsRTL ) ) // Must differ
-            protect = EFalse;
-        }
-
-    TBool forwardProtection(EFalse);
-
-    if ( protect )
-        {
-        protect = EFalse;
-        TBool deletedWasRTL;
-
-        // Check for and do reverse protection
-        if ( adjacentPrecedingIsNeutral )
-            {
-            TBool deletedTextIsStrong = GetExposedDirectionOfTextInDescriptor( aTextThatWasDeleted, 
-                                                                               ETrue, 
-                                                                               deletedWasRTL ); // search forward into deleted stuff
-            if ( deletedTextIsStrong && (directionPrecedingDeleteIsRTL == deletedWasRTL))
-                {
-                protect = ETrue;
-                forwardProtection = EFalse;
-                if ( deletedWasRTL )
-                    textToInsert.Append( CAknFepInlineTextDecorator::ERightToLeftMark );
-                else
-                    textToInsert.Append( CAknFepInlineTextDecorator::ELeftToRightMark );
-                }
-            }
-
-        // Check for and do forward protection
-        // Note it is possible to have both forward and reverse redecoration.
-        if ( adjacentTrailingIsNeutral )
-            {
-            TBool deletedTextIsStrong = GetExposedDirectionOfTextInDescriptor( aTextThatWasDeleted, 
-                                                                               EFalse, 
-                                                                               deletedWasRTL ); // search backward in deleted stuff
-            if (deletedTextIsStrong && (directionTrailingDeleteIsRTL == deletedWasRTL) )
-                {
-                protect = ETrue;
-                forwardProtection = ETrue;
-                if ( deletedWasRTL )
-                    textToInsert.Append( CAknFepInlineTextDecorator::ERightToLeftMark );
-                else
-                    textToInsert.Append( CAknFepInlineTextDecorator::ELeftToRightMark );
-                }
-            }
-        }
-
-
-    if ( protect )
-        {
-        StartInlineEditL(textToInsert);
-        CommitInlineEditWithoutResolutionL(*(iInputCapabilities.FepAwareTextEditor()), ETrue);
-        // iUncommittedText is now set to correct value by the Commitxxxx method
-        // Document position is adjusted to as to keep the cursor stable.
-        // Make a docPos. If reverse protection, then the position should trail
-        TTmDocPosSpec docPos( iUncommittedText.LowerPos() , TTmDocPosSpec::ETrailing );
-        // But if there has been forward Protection, then we have to back up the cursor by 1
-        // and lead. (This is OK too, if there is simultaneous reversse and forward protection)
-        if ( forwardProtection )
-            {
-            docPos.iPos = Max(docPos.iPos - 1, 0 );
-            docPos.iType = TTmDocPosSpec::ELeading;
-            }
-        SetCursorPositionL( docPos );
-        }
-    }
-
-TBool CAknFepManager::EditorSupportsNeutralProtection()
-    {
-    TBool ret = ETrue;
-    if ( !IsFepAwareTextEditor() )
-        ret = EFalse;
-
-    else if (iInputCapabilities.SupportsSecretText())
-        ret = EFalse;
-
-    else if ( iAknEditorFlags & EAknEditorFlagLatinInputModesOnly )
-        ret = EFalse;
-
-    else if (iPermittedInputModes == EAknEditorNumericInputMode)
-        ret = EFalse;
-
-    else if ( !CharIsValidInEditor( CAknFepInlineTextDecorator::ERightToLeftMark ) )
-        ret = EFalse;
-
-    return ret;
-    }
-
-void CAknFepManager::CommitInlineEditWithoutResolutionL(MCoeFepAwareTextEditor& aFepAwareTextEditor, 
-                                                        TBool aCursorVisibility , TBool aClearPti )
-    {
-    aFepAwareTextEditor.SetInlineEditingCursorVisibilityL(aCursorVisibility);
-    /*
-    On any call to CommitFepInlineEditL, the mode will change
-    even when a leave event occurs.
-    */
-    ClearFlag(EFlagInsideInlineEditingTransaction | EFlagInsideMultitapInlineEditingTransaction);
-    ClearCcpuFlag(ECcpuStateNewPredictiveWord);
-    
-    if(aClearPti)
-        {
-        iPtiEngine->CommitCurrentWord();
-        }
-    CCoeEnv* coeEnv = CCoeEnv::Static();
-    aFepAwareTextEditor.CommitFepInlineEditL(*coeEnv);
-    aFepAwareTextEditor.GetCursorSelectionForFep(iUncommittedText);
-    // iMatchState=EWordMatchFirst;
-    iCaseMan->UpdateCase(ENullNaviEvent);
-    }
-
-void CAknFepManager::WordConcatenationTimerTimeoutL()
-    {
-    iConcatenationTimer->Cancel();
-
-    // add concatenated word to the UDB (a concatenated word is a compound word)
-    AddCompoundWordToUdbL();
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	MoveCursorToEndOfWordL();
-#endif
-    }
-
-
-TKeyResponse CAknFepManager::HandlePredictiveNaviEventOutsideInlineEditL(TUint aCode, 
-                                                                         TKeyPressLength aLength)
-    {
-    TKeyResponse response = EKeyWasNotConsumed;
-
-    TWesternNaviEvent naviEvent = ENullNaviEvent;
-    if (aCode == EKeyLeftArrow)
-        {
-        naviEvent = ELeftNaviEvent;
-        }
-    else if (aCode == EKeyRightArrow)
-        {
-        naviEvent = ERightNaviEvent;
-        }
-    else if (aCode == EKeyBackspace)
-        {
-        naviEvent = EBackspaceEvent;
-        }
-
-    TInt nextCharPos = 0;  // Character ordinal in logical memory (0 - n-1)
-    TBool nextPositionFound = EFalse;
-    if ( naviEvent == ERightNaviEvent )
-        {
-        nextPositionFound = GetNextVisualRightCharacter( nextCharPos );
-        }
-    else if ( naviEvent == ELeftNaviEvent )
-        {
-        nextPositionFound = GetNextVisualLeftCharacter( nextCharPos );
-        }
-    else if ( naviEvent == EBackspaceEvent )
-        {
-        if (iLanguageCapabilities.iRightToLeftLanguage)
-            {
-            TChar character = PreviousChar();
-            TChar::TBdCategory bdCategory = character.GetBdCategory();
-            // In case last character in buffer is number or Latin characters, needs to delete 
-            // character from left.
-            if (TChar::EEuropeanNumber == bdCategory || TChar::EArabicNumber == bdCategory ||
-                TChar::ELeftToRight == bdCategory )
-                {
-                nextPositionFound = GetNextVisualLeftCharacter( nextCharPos );
-                }
-            else
-                {
-                nextPositionFound = GetNextVisualRightCharacter( nextCharPos );
-                }
-            }
-        else
-            {
-            nextPositionFound = GetNextVisualLeftCharacter( nextCharPos );
-            }
-        }
-
-    if ( !nextPositionFound )
-        {
-        response = EKeyWasNotConsumed;
-        }
-    else // not looping - lets see what to do
-        {
-        TBuf<ESingleCharacter> characterBuffer;
-        iInputCapabilities.FepAwareTextEditor()->GetEditorContentForFep(characterBuffer, 
-                                                                        nextCharPos, 
-                                                                        ESingleCharacter);
-
-        if ( !IsValidInLineCharacter( STATIC_CAST(TChar, characterBuffer[0])) )
-            {
-            // if the character is a non-alpha character; let it go
-            response=EKeyWasNotConsumed;
-            if (IsFlagSet(EFlagCompoundWord))
-                {
-                if  (STATIC_CAST(TChar, characterBuffer[0]).IsSpace())
-                    // we are navigating over a space so add any current compond word to the udb
-                    AddCompoundWordToUdbL();
-                ClearFlag(EFlagCompoundWord);
-                }
-        //allow to popup editsubmenu        
-        ClearCcpuFlag(ECcpuStateIgnoreStarUp);
-            }
-        else
-            {
-            if (FepUI()->HandleKeyL(aCode, aLength))
-                {
-                response=EKeyWasConsumed;
-                }
-            }
-        }
-    return response;
-    }
-
-/**
- * Call back function:
- */
-TInt CAknFepManager::DoSimulateKey(TAny* aThisPtr)
-    {
-    CAknFepManager* myobj = static_cast<CAknFepManager*>(aThisPtr);
-    TRAPD(error, myobj->HandleOwnedSimulateKeyL());
-    return error;
-    }
-
-void CAknFepManager::HandleOwnedSimulateKeyL()
-    {
-#ifdef RD_INTELLIGENT_TEXT_INPUT         
-#ifdef __HALF_QWERTY_KEYPAD
-        if( KeyboardLayout() == EPtiKeyboardHalfQwerty )
-            {            
-            CCoeEnv::Static()->SimulateKeyEventL( iHalfQwertyLastKeyEvent, EEventKey );
-            }        
-        else
-#endif //__HALF_QWERTY_KEYPAD        
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    if (iSimulateKey > 0)
-        {
-        HandleKeyEventL(iSimulateKey, EShortKeyPress);
-        iSimulateKey = 0;
-        }
-    }
-
-/**
- * This method is that the label of CBA is updated by aTextResId.
- * @param aPosition   CBA position, either ELeftSoftkeyIndex or ERightSoftkeyIndex
- * @param aCommandId  command id for softkey
- * @param aTextResId  resource id to set string on label.
- * @return TBool The return value is ETrue in case it is necessary to update CBA.
- */
-TBool CAknFepManager::UpdateCBALabelL(TInt aPosition, TInt aCommandId, TInt aTextResId)
-    {
-    return iUiInterface->UpdateSoftkeyLabelL(aPosition, aCommandId, aTextResId);
-    }
-
-void CAknFepManager::DoLaunchSctAndPctL(TInt aResourceId, TShowSctMode aShowSctMode)
-    {
-    TBool replace = EFalse;
-    TBool disableRecentItemRow = EFalse;
-    
-    if (ExtendedInputCapabilities() & CAknExtendedInputCapabilities::EDisableSCT)
-        {
-        // The editor doesn't allow SCT.
-        return;
-        }
-    if ( EditorType() == CAknExtendedInputCapabilities::EEikSecretEditorBased )
-        {
-        
-        disableRecentItemRow = ETrue;
-        }    
-    
-    if (IsCcpuFlagSet(ECcpuStateCbaSymbol) && 
-        iMode == ELatin && WesternPredictive(ELatin) && 
-        iPtiEngine->LastEnteredKey() == EPtiKey1)
-        {
-        // User is entering special character as result of pressing key '1' and
-        // cycling through candidates until left softkey turns into "Symbol". In
-        // that case we want to replace last cahracter instead of adding new one.
-        replace = ETrue;
-        }
-    
-    //Commit characters in latin multitap as some editors may call CancelFepTransaction()
-    //which will be received before the focus change notification.
-    if (IsFeatureSupportedJapanese())
-        {
-        TryCloseUiL();
-        }
-    else
-        {
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        if(!(WesternPredictive()))
-#endif
-        CommitInlineEditL();
-        }
-
-    if (!EditorHasFreeSpace())
-        {
-        return;
-        }
-    
-    // get the SCT resource id from editor default settings
-    TInt currentEditorSCTResId = GetCurrentEditorSCTResId();
-    TInt charMap = aResourceId;
-    if ( FeatureManager::FeatureSupported(KFeatureIdChinese) )
-        {        
-        if (charMap == R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG)
-            {
-            charMap = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG_CHINESE;
-            }
-        }
-    if (!charMap)
-        {
-        // override numeric keymap if necessary. flag is for non standard charmaps
-        TInt standardNumericCharMap = EDefaultNumericCharMapResId;
-        if ((iMode == ENumber || iMode == ENativeNumber) &&
-            !(iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap) &&
-            (iCharWidth == EHalfWidthChar) &&
-            ( (iAknEditorNumericKeymap != EAknEditorAlphanumericNumberModeKeymap) ||
-              (iPermittedInputModes == EAknEditorNumericInputMode) ))
-            {
-            standardNumericCharMap = NumericModeSCTResourceId();
-            }
-        charMap = standardNumericCharMap;
-        }
-        
-    if ( charMap == ENoCharacters && !IsAbleToLaunchSCT())
-        {
-    	currentEditorSCTResId = charMap;
-        }
-
-    if (currentEditorSCTResId)
-        {
-        TBuf<32> specialChars;
-
-        TInt sctChars = EAknSCTChiChineseInputModes;
-        TInt afterSctChars = EAknSCTHalfCase;
-
-        if (iCharWidth == EFullWidthChar)
-            {
-            sctChars = EAknSCTFullCase;
-            if (iMode == ELatin)
-                {
-                afterSctChars = EAknSCTUpperCase;
-                if (iCaseMan->CurrentCase() == EAknEditorLowerCase)
-                    {
-                    afterSctChars = EAknSCTLowerCase;
-                    }
-                }
-            else if (iMode == ENumber||iMode == ENativeNumber)
-                {
-                afterSctChars = EAknSCTLowerCase;
-                }
-            }
-        else
-            {
-            if (iMode == ELatin)
-                {
-                if ( FeatureManager::FeatureSupported(KFeatureIdChinese) )
-                    {
-                    sctChars = EAknSCTChiLatinInputModes;
-                    }
-                else
-                    {
-                    if (iQwertyInputMode)
-                        {
-                        sctChars = EAknSCTQwerty;
-                        afterSctChars = EAknSCTFullCase;                        
-                        }
-                    else
-                        {                                           
-                        sctChars = EAknSCTUpperCase;
-                        afterSctChars = EAknSCTFullCase;
-                        if (iCaseMan->CurrentCase() == EAknEditorLowerCase)
-                            {
-                            sctChars = EAknSCTLowerCase;
-                            }
-                        }
-                    }
-                }
-            else if (iMode == ENumber||iMode == ENativeNumber)
-                {
-                sctChars = EAknSCTNumeric;
-                if ( ((iAknEditorFlags & EAknEditorFlagUseSCTNumericCharmap) ||
-                      (iAknEditorNumericKeymap == EAknEditorAlphanumericNumberModeKeymap)) &&
-                      !IsOnlyHalfWidthCharacterPermitted() )
-                    {
-                    sctChars = EAknSCTLowerCase;
-                    afterSctChars = EAknSCTFullCase;
-                    }
-                }
-            else if (iMode == EHiraganaKanji)
-                {
-                sctChars = EAknSCTFullCase;
-                }
-            else if(iMode == EKatakana)
-                {
-                sctChars = EAknSCTHalfCase;
-                afterSctChars = EAknSCTFullCase;
-                }
-            }
-
-        SetFlag(EFlagForegroundUIComponentVisible);
-
-        TBool showAnotherTable = EFalse;
-        if (IsFeatureSupportedJapanese())
-            {
-            if (sctChars == EAknSCTFullCase)
-                {
-                if (!IsOnlyFullWidthCharacterPermitted())
-                    {
-                    showAnotherTable = ETrue;
-                    }
-                }
-            else if (sctChars == EAknSCTHalfCase || sctChars == EAknSCTUpperCase 
-                  || sctChars == EAknSCTLowerCase)
-                {
-                if (!IsOnlyHalfWidthCharacterPermitted() 
-                 && !(iAknEditorFlags & EAknEditorFlagLatinInputModesOnly))
-                    {
-                    showAnotherTable = ETrue;
-                    }
-                }
-            }
-#ifdef RD_SCALABLE_UI_V2     
-        if( iFepFullyConstructed && !iFepPluginManager->IsGlobleNotes())
-            {
-             if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
-                 iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
-                 iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
-                {
-                 SetStopProcessFocus(ETrue, EFalse);
-                iFepPluginManager->SetMenuState();            
-                }            
-             else if (!iFepPluginManager->IsGlobleNotes())
-                {
-                iFepPluginManager->ClosePluginInputUiL( ETrue );
-                }
-            }
-#endif  
-
-        TBool lockNumericKeys = ( iPtiEngine->IsQwertyBasedMode(iPtiEngine->InputMode())) 
-        #ifdef RD_INTELLIGENT_TEXT_INPUT        
-                            || ( iPtiEngine->InputMode() == EPtiEngineHalfQwerty ) ||
-                            ( iPtiEngine->InputMode() == EPtiEngineHalfQwertyPredictive ) 
-        #endif                            
-                            ;
-        TUid fepUid = CCoeEnv::Static()->FepUid();
-
-        if(IsAbleToLaunchSmiley())
-            {
-            if(aShowSctMode == EShowSmileyFirst)
-                {
-                sctChars |= EAknCharMapEmotionFirst;
-                }
-            else
-                {
-                sctChars |= EAknCharMapEmotionUse;
-                }
-            }
-        ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-        
-		if (iUiInterface->CharMapDialogL(
-			sctChars, 
-			specialChars, 
-			charMap,
-			lockNumericKeys,
-            aShowSctMode==EShowPctFirst,
-			!IsAbleToLaunchPCT(),
-			showAnotherTable,
-			afterSctChars,
-			currentEditorSCTResId,
-			disableRecentItemRow))
-            {
-            PrepareFepAfterDialogExitL(fepUid);
-            SetCcpuFlag(ECcpuStateSupressCursorMoveToEnd);
-
-#ifdef RD_SCALABLE_UI_V2 
-            
-            if( iFepFullyConstructed && iFepPluginManager)
-                {
-                 if (iFepPluginManager->PluginInputMode() == EPluginInputModeItut ||
-                     iFepPluginManager->PluginInputMode() == EPluginInputModeFSQ ||
-                     iFepPluginManager->PluginInputMode() == EPluginInputModeFingerHwr)
-                    {
-                    SetStopProcessFocus(EFalse);
-                    }            
-                 else
-                    {
-                    HandleChangeInFocus();
-                    }
-                }
-            else
-                {
-                HandleChangeInFocus();
-                }   
-            // Set the flag, not change focus for next.
-            iDisalbleFocusChangeForSCT = ETrue;           
-#endif
-
-            //Removes auto-complition part if SCT is launched and any special character is selected 
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            if( specialChars.Length() > 0 )
-                {
-            	RemoveSuggestedAdvanceCompletionL();
-                }
-#endif // RD_INTELLIGENT_TEXT_INPUT
-            TBuf<ESingleCharacter> charAsDesc(ESingleCharacter);
-            for ( TInt ii = 0; ii < specialChars.Length(); ii++)
-                {
-                charAsDesc[0]=(TText)specialChars[ii];
-
-                if (iInputCapabilities.SupportsSecretText())
-                    {
-                    TChar ch = charAsDesc[0];
-                    if (ch == TText(0x000A) || ch == TText(CEditableText::EParagraphDelimiter))
-                        // 0x000A is ascii, EParagraphDelimiter is unicode - future
-                        // proofs against sct changing to unicode
-                        ch = EKeyEnter;
-                    if (CharIsValidInEditor(ch))
-                        {
-                        //we receive an extra key press if we simulate a key that is also a device key
-                        if (ch.IsDigit() || TUint(ch) == EStarKeyUnicodeValue 
-                         || TUint(ch) == EHashKeyUnicodeValue)
-                            SetFlag(EFlagPassNextKey);
-                        SimulateKeyEventL(ch);
-                        }
-                    }
-                else
-                    {
-                    if (charAsDesc[0] == TText(0x000A)) // 0x000A is line feed
-                        {
-                        charAsDesc[0] = CEditableText::EParagraphDelimiter;
-                        }
-                        
-                    if (CharIsValidInEditor(charAsDesc[0]))
-                        {
-                        TCursorSelection cursorSelection(0,0);
-                        if ((iAknEditorFlags & EAknEditorFlagMTAutoOverwrite) && iMode == ELatin 
-                          && !WesternPredictive())
-                            {
-                            TInt edSize = 
-                                   iInputCapabilities.FepAwareTextEditor()->DocumentLengthForFep();
-                            iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-                            if (iUncommittedText.iCursorPos < edSize 
-                             && iUncommittedText.Length() == 0)
-                                {
-                                cursorSelection = TCursorSelection(iUncommittedText.iCursorPos + 1,
-                                                                   iUncommittedText.iAnchorPos);
-                                }
-                            }
-                        if (EditorState())
-                            {
-                            if (charAsDesc[0] == CEditableText::EParagraphDelimiter)
-                                {
-                                // This is line feed character. Post it to editor and let it decide
-                                // if it is valid.
-                                 if (!(iAknEditorFlags & EAknEditorFlagFindPane) 
-                                    && specialChars.Length() == 1)
-                                    { 
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-                                    CommitInlineEditL();                                    
-#endif
-                                   
-                                    SimulateKeyEventL(EKeyEnter);   
-                                    SimulateKeyEventL(EKeyF19); // Asyncronous case update                                                                                              
-                                    }
-                                }                                                        
-                            else
-                                {                                                                                                                                   
-                                if (replace)
-                                    {
-                                    TKeyEvent delKey = {8, EStdKeyBackspace, 1, 0};        
-                                    CCoeEnv::Static()->SimulateKeyEventL(delKey, EEventKey);                                                                
-                                    }                               
-                                InsertTextFromDialogL(charAsDesc, cursorSelection);
-//There may be several char to be inserted, need disable Focus change to avoid multi-focus change.
-#ifdef RD_SCALABLE_UI_V2 
-                                iDisalbleFocusChangeForSCT = ETrue;
-#endif
-                                }
-                            // Clear dead key, vowel sequence and vietnamese tone mark states.                         
-                            iPtiEngine->HandleCommandL(EPtiCommandGetAndClearLastVietnameseChar, 
-                                                       NULL);
-                            iPtiEngine->HandleCommandL(EPtiCommandClearVowelSeq, 
-                                                       NULL);
-                            iPtiEngine->HandleCommandL(EPtiCommandGetAndClearDeadKeyRootChar, 
-                                                       NULL);                            
-                            }
-                        }
-                    }
-                }
-            }
-        else
-            {
-            iClosePeninputUi = EFalse;
-            iStopProcessFocus = EFalse;                   
-            }
-            
-        PrepareFepAfterDialogExitL(fepUid);
-        }
-    }
-
-/**
- * Queries supportting of SecretText
- *
- * @since 2.6
- * @return ETrue if SecretText was supported
- */
-TBool CAknFepManager::IsSupportsSecretText() const
-    {
-    TBool bSecret = iInputCapabilities.SupportsSecretText();
-    if( !bSecret )
-        {
-        //test java editor
-        MObjectProvider* mop = iInputCapabilities.ObjectProvider();            	
-        if ( mop )
-           {
-            CAknExtendedInputCapabilities* extendedInputCapabilities;
-            extendedInputCapabilities = mop->MopGetObject( extendedInputCapabilities );
-            if ( extendedInputCapabilities ) 
-                {
-                TUint constraints = extendedInputCapabilities->MIDPConstrainst();
-                if( constraints & 0x10000 )
-                    {
-                    bSecret = ETrue;
-                    }
-                }
-            }
-        }
-    
-    return bSecret;
-    }
-
-void CAknFepManager::SendEventsToPluginManL( TInt aEventType, TInt aEventData )
-    {
-#ifdef RD_SCALABLE_UI_V2
-    if ( iFepFullyConstructed )
-        {
-        iFepPluginManager->HandleEventsFromFepL( aEventType, aEventData );
-        }
-#endif //RD_SCALABLE_UI_V2
-    }
-    
-void CAknFepManager::UpdateCangJieState(TInt aNewMode)
-    {
-    CAknFepUIManagerChinese* fepUiMgr = STATIC_CAST(CAknFepUIManagerChinese*, 
-                                             iLangMan->GetFepUI(ECangJie, ENoneWidthChar, EFalse));
-    
-    if (aNewMode >= 0)
-        {
-        if ( fepUiMgr )
-            {
-            fepUiMgr->UpdateCangJieState();
-            }
-        
-        // Store CangJie settings into the sharedata
-        iSharedDataInterface->SetCangJieMode(aNewMode);            
-        }
-    }
-
-TInt CAknFepManager::LaunchCangJieOptionDlgL()
-    {
-    // Get the CangJie level from the GS
-    TInt currentLevel = iSharedDataInterface->CangJieMode();
-    
-    if ((currentLevel != ECangJieNormal) 
-    && (currentLevel != ECangJieEasy) 
-    && (currentLevel != ECangJieAdvanced))
-        return KErrGeneral;
-
-    // Launch the CangJie setting menu
-    CDesCArrayFlat* items = CCoeEnv::Static()->ReadDesC16ArrayResourceL(R_AVKON_CANGJIE_OPTIONS_LBX);
-    CleanupStack::PushL(items);
-
-    TUid fepUid = CCoeEnv::Static()->FepUid();   
-    ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-	TInt ret = iUiInterface->LaunchCangJieOptionDlgL(
-        R_AVKON_CANGJIE_MODE_OPTIONS_SETTING_PAGE,
-        currentLevel,
-        items
-        );
-    PrepareFepAfterDialogExitL(fepUid);
-
-    CleanupStack::PopAndDestroy(items);
-
-    return ret ? currentLevel : KErrGeneral;
-    }
-
-GLDEF_C void AknFepPanic(TAknFepPanic aPanic)
-    {
-    User::Panic(_L("AKNFEP"),aPanic);
-    }
-
-/**
- * Set Multitap timer value. 
- *
- * @since 3.0
- * @param Value of KAknFepMultiTapTimer setting
- */
-void CAknFepManager::SetMultiTapTimer(const TInt aMultiTapTimer)
-    {
-    if (iMultiTapTimer != aMultiTapTimer)
-        {
-        iMultiTapTimer = aMultiTapTimer;
-        }
-    }
-
-/**
- * Set Japanese Qwerty Flags value. 
- *
- * @since 3.0
- * @param Value of KAknFepJapaneseSpecialCharFlag setting
- */
-void CAknFepManager::SetJapaneseQwertyFlags(const TInt aJapaneseQwertyFlags)
-    {
-    if (iJapaneseQwertyFlags != aJapaneseQwertyFlags)
-        {
-        iJapaneseQwertyFlags = aJapaneseQwertyFlags;
-        }
-    }
-
-/**
- * Handle the Chr Key Monitor
- * for Japanese variant only.
- *
- * @since 3.0
- * @return KErrNone if succeed, KErrDied if failed
- */
-TInt CAknFepManager::HandleChrKeyMonitorCallback(TAny* aObj)
-    {
-    TRAPD(err, static_cast<CAknFepManager*>(aObj)->HandleChrKeyMonitorL());
-    if (err)
-        {
-        static_cast<CAknFepManager*>(aObj)->CleanUpFep();
-        return KErrDied;
-        }
-    return KErrNone;
-    }
-
-/**
- * Handle the Chr Key Monitor
- * for Japanese variant only.
- *
- * @since 3.0
- */
-void CAknFepManager::HandleChrKeyMonitorL()
-    {
-#ifdef RD_INTELLIGENT_TEXT_INPUT        
-#ifdef __HALF_QWERTY_KEYPAD        
-    if ( IsFlagSet(EFlagQwertyChrKeyDepressed) && 
-    		  IsFlagSet(EFlagNoActionDuringChrKeyPress) && 
-    		  (EPtiKeyboardHalfQwerty == KeyboardLayout() ) && 
-    		  ( iWesternPredictive || iMode == EPinyin || 
-    		     iMode == EStroke || iMode == EZhuyin ) )   
-    	{
-    	// Clear the chr key depressed flag
-    	TBool validchr = FepUI()->IsValidLongChrKeyPress();
-    	
-    	if(!validchr || !IsAbleToLaunchSCT() )
-    		{
-			  FepUI()->HandleKeyL( EStdKeyLeftFunc, EShortKeyPress );    		
-			  ClearFlag( EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-    		}
-    	else
-    		{
-    		// will launch SCT later
-    		iChrLongKeyPress = ETrue;	
-    		}	
-        
-    	}
-    	else
-#endif   
-#endif
-	 if (IsFlagSet(EFlagQwertyChrKeyDepressed) && IsFlagSet(EFlagNoActionDuringChrKeyPress)
-     && iCurrentFepUI->IsValidShiftKeyPress())
-        {
-        // Timer cancel
-        iChrKeypressMonitor->Cancel();
-        // Commit characters
-        HandleChangeInFocus();
-        // Clear flags
-        ClearFlag(EFlagQwertyChrKeyDepressed | EFlagNoActionDuringChrKeyPress);
-        // Open editting menu
-        LaunchSelectModeMenuL();
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::SetCursorSelectionL
-// Set editor cursor selection.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepManager::SetCursorSelectionL(const TCursorSelection& /*aCurSel*/, TBool /*aSyncCursor*/)
-    {
-    }
-
- TInt CAknFepManager::HandleResourceChangedCallback(TAny* aObj)
-	{
-	TRAPD(err, static_cast<CAknFepManager*>(aObj)->ResourceChangedTimeroutL());
-    if (err)
-        {
-        static_cast<CAknFepManager*>(aObj)->CleanUpFep();
-        return KErrNoMemory;
-        }
-    return KErrNone;
-	}
-
-void CAknFepManager::ResourceChangedTimeroutL()
-    {
-    if(iCurrentFepUI)
-	    {
-	    iCurrentFepUI->ResourceChanged(1);	
-	    }   
-    }
-
-
-// -----------------------------------------------------------------------------
-// pen related inplementation
-// -----------------------------------------------------------------------------
-#ifdef RD_SCALABLE_UI_V2
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::HandleLayoutChange
-// Update plugin UI case mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepManager::HandleResourceChange(TInt aType)
-    {
-    if(iCurrentFepUI)
-    	{
-        iAsyncResouceChanged.CallBack();
-    	}
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(iCandidatePopup && iPtiEngine && (aType == KEikDynamicLayoutVariantSwitch))        
-        {
-        //When there is a change of layout, the inline text position changes and hence the candidate 
-        //list position also needs to change accordingly.
-        //We need the editor to be brought back to focus, this is because we need the position of
-        //the inline text.
-        iCandidatePopup->UnFocus();
-        //Need to get the editor state back after it is brought back to focus.
-        TRAP_IGNORE( HandleChangeInFocusL()); 
-        
-        // Add candidate list control stack to get the layout change event
-        // after dialog control......
-        TRAP_IGNORE( iCandidatePopup->SetFocusAddStackReducePriorityL() );
-        
-        }
-#endif		
-    TRAP_IGNORE(SendEventsToPluginManL( EPluginResourceChanged, aType ));
-    }   
-void CAknFepManager::HandlePointerEventL(const TPointerEvent& aPointerEvent)
-    {
-    if (IsFlagSet(CAknFepManager::EFlagNoMatches))
-        {
-        ClearFlag(CAknFepManager::EFlagNoMatches); 
-        }
-   
-    if(aPointerEvent.iType == TPointerEvent::EDrag)
-    	{
-    	SetExtendedFlag(EExtendedFlagPointerEventTypeEDrag);
-    	}
-    if (aPointerEvent.iType == TPointerEvent::EButton1Up)
-        {
-    	ClearExtendedFlag(EExtendedFlagPointerEventTypeEDrag);
-
-        // Remember last up-click in case it is needed for displaying
-        // stylus ccpu-menu.
-        iClickPoint = aPointerEvent.iPosition;
-        }    
-    }
- 
-// -----------------------------------------------------------------------------
-// CAknFepManager::HandleSelModeArrowKeyEventL
-// Set text selection when tap on the arrow keys.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-TBool CAknFepManager::HandleSelModeArrowKeyEventL(const TKeyEvent& aKeyEvent, 
-                                                  TEventCode aEventCode,
-                                                  TKeyResponse& aRetCode)
-    {
-    TCursorSelection currentEditorSelection(0,0);
-	if(iInputCapabilities.FepAwareTextEditor())
-    	{
-    	iInputCapabilities.FepAwareTextEditor()->
-    		GetCursorSelectionForFep(currentEditorSelection);
-    	}    
-        
-	if(!IsMfneEditor() &&
-		(PluginInputMode() == EPluginInputModeItut ||
-		 PluginInputMode() == EPluginInputModeFSQ)  &&
-		 currentEditorSelection.Length() != 0)
-    	{
-    	
-        if ((aKeyEvent.iScanCode == EStdKeyLeftArrow) || (aKeyEvent.iScanCode == EStdKeyRightArrow)) 
-            {   
-            if (!(aKeyEvent.iModifiers & EModifierShift))
-                {
-                TKeyEvent ccpuStart = aKeyEvent;
-                ccpuStart.iModifiers |= EModifierShift;
-                ccpuStart.iModifiers |= EModifierRightShift;
-                CCoeEnv::Static()->SimulateKeyEventL(ccpuStart, aEventCode);        
-                
-                aRetCode = EKeyWasConsumed;
-                return ETrue;
-                }  
-            else
-                {
-                aRetCode = EKeyWasNotConsumed;
-                return ETrue;              
-                }               
-            }	
-    	}
-    aRetCode = EKeyWasNotConsumed;
-    return EFalse;    
-    }
-
-#else // !RD_SCALABLE_UI_V2
-// -----------------------------------------------------------------------------
-// CAknFepManager::HandleResourceChange
-// Update plugin UI case mode.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CAknFepManager::HandleResourceChange(TInt aType)
-    {
-    if (iFepFullyConstructed && Japanese() )
-        {
-        // Japaneseinput should handle the event of changing layout or screen.
-        FepUI()->ResourceChanged(aType);
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if(iCandidatePopup && iPtiEngine && (aType == KEikDynamicLayoutVariantSwitch))        
-        {
-        //When there is a change of layout, the inline text position changes and hence the candidate 
-        //list position also needs to change accordingly.
-        //We need the editor to be brought back to focus, this is because we need the position of
-        //the inline text.
-        iCandidatePopup->UnFocus();
-        //Need to get the editor state back after it is brought back to focus.
-        TRAP_IGNORE(HandleChangeInFocusL());
-        //Can not do anything if FEP is not constructed fully
-        if(iFepFullyConstructed)
-            {
-            //Now we read the position of the inline text
-            TPoint  inlineEditorTl;
-            TPoint  inlineEditorBr;
-            TInt    height;
-            TInt    ascent;
-            TInt    documentOffset = iPtiEngine->CurrentWord().Length();
-            //  Popup Position for RTL
-            if(iLanguageCapabilities.iRightToLeftLanguage)
-                documentOffset = 0;
-            //  Popup Position for RTL
-            TRAP_IGNORE( GetScreenCoordinatesL( inlineEditorTl, height, ascent, documentOffset ));
-            inlineEditorTl.iY -= height;
-            TRAP_IGNORE( GetScreenCoordinatesL( inlineEditorBr, height, ascent ));
-            
-            //Let the candidate list know about a change of resource and update the
-            //inline text rectangle.
-            //Now show the candidate list at the re-calculated position
-            iCandidatePopup->ShowAtNewPosition(TRect(inlineEditorTl,inlineEditorBr));
-            }
-        }
-#endif		
-    }
-
-#endif //RD_SCALABLE_UI_V2    
-
-TDigitType CAknFepManager::LocalDigit()
-    {
-    return iLanguageCapabilities.iLocalDigitType;
-    }
-    
-/**
-* Returns ETrue if arabic indic digit setting is on. 
-*
-* @since 3.0
-*/
-TBool CAknFepManager::ArabicIndicDigitsInUse() const
-    {
-    return (iLanguageCapabilities.iLocalDigitType == EDigitTypeArabicIndic);
-    }
-       
-TBool CAknFepManager::EasternArabicIndicDigitsInUse() const
-    {
-    return (iLanguageCapabilities.iLocalDigitType == EDigitTypeEasternArabicIndic);
-    }
-    
-/**
- *  Sets delayed commit on (predicitve word will be commited in 
- *  next call to TryCloseUiL. This is needed because of Japanese ReadingTextL).
- *
- * @since 3.1
- */
-void CAknFepManager::SetDelayedCommit()
-    {
-    iCcpuMode |= ECcpuStataCommitPredictiveWord;
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::SetDefaultNumberMode
-//
-// Set default number mode for non-latin languagues
-// 
-// Copied from CGSLangModel::SetDefaultNumberMode
-// -----------------------------------------------------------------------------
-//
-void CAknFepManager::SetDefaultNumberMode( TInt aMode, TInt aNbrModeType )
-    {
-    //As aMode comes from the UI, it can either be 0 or 1. This needs
-    //special handling for Indic mode as it has been defined as an enum
-    //constant and has a value of 2. This applies to any values defined
-    //in the enum and have a value > 1.
-    if ( aNbrModeType == ENbrModeTypeArabic ||
-         aNbrModeType == ENbrModeTypeEasternArabic )
-        {
-        iSharedDataInterface->SetDefaultNumberMode( KSettingsDefaultNumberMode, aMode );
-        }
-    else
-        {
-        iSharedDataInterface->SetDefaultNumberMode( KSettingsIndicDefaultNumberMode, aMode );
-        }
-
-    TLocale locale;
-    if ( aMode == ENbrModeLatin )
-        {
-        locale.SetDigitType( EDigitTypeWestern );
-        }
-    else
-        {
-        //if aMode != EGSNbrModeLatin, then it should be either latin or arabic. However
-        //as EGSNbrModeArabic and EGsNbrModeIndic both have a value = 1, we can't use
-        //that constant for below comparison. Hence, need to depend on the 2nd param.
-        switch ( aNbrModeType )
-            {
-            case ENbrModeTypeArabic:
-                locale.SetDigitType( EDigitTypeArabicIndic );
-                break;
-            case ENbrModeTypeIndic:
-                locale.SetDigitType( EDigitTypeDevanagari );
-                break;
-            case ENbrModeTypeEasternArabic:
-                locale.SetDigitType( EDigitTypeEasternArabicIndic );
-                break;
-            default:
-                break;
-            }
-        }
-
-    locale.Set();
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::ResolveCurrentCandidateListIndex
-//
-// Calculates correct selection index for matches popup list.
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepManager::ResolveCurrentCandidateListIndex(CDesCArrayFlat* aCandList)
-    {
-    if (iPtiEngine && aCandList)
-        {           
-        TBuf<EMaximumFepWordLength> currentCand;
-    
-        currentCand.Copy(iPtiEngine->CurrentWord());    
-        for (TInt i = 0; i < aCandList->Count(); i++)
-            {
-            if (currentCand == aCandList->MdcaPoint(i))
-                {
-                if (i == aCandList->Count() - 1)
-                    {
-                    return 0;
-                    }
-                return i + 1;
-                }
-            }
-        }
-
-    return 0;
-    }
-
-void CAknFepManager::AlignLogicalAndVisualCursorL( TTmDocPosSpec::TType aType, 
-                                                    TBool aToLeft )
-    {
-    if( !( iInputCapabilities.SupportsSecretText() ) )
-        {
-        if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && 
-            IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) )
-            {
-            CommitInlineEditL();
-            }
-
-        MCoeFepAwareTextEditor* fepAwareTextEditor = 
-            iInputCapabilities.FepAwareTextEditor();
-
-	    MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-        if( (docNavi || TextLayout()) && fepAwareTextEditor )
-            {
-            TTmDocPosSpec pos = DocPos();
-            pos.iType = aType;
-            TTmPosInfo2 info;
-            if (docNavi)
-            	{
-	            docNavi->GetNextVisualCursorPos( pos, info, aToLeft );
-            	}
-            else
-            	{
- 	            TextLayout()->TagmaTextLayout().GetNextVisualCursorPos( pos, info, aToLeft );
-            	}
-            TCursorSelection curSel( info.iDocPos.iPos, info.iDocPos.iPos );
-            fepAwareTextEditor->SetCursorSelectionForFepL( curSel );
-            }
-        }
-    }
-
-void CAknFepManager::RemoveRephaCharacterL()
-    {
-    MCoeFepAwareTextEditor* fepAwareTextEditor = 
-        iInputCapabilities.FepAwareTextEditor();
-    
-    if( fepAwareTextEditor )
-        {
-        TInt previousCharPos = 0;
-        TBool leftFlag = GetNextVisualLeftCharacter( previousCharPos );
-        
-        if( !leftFlag )
-            {
-            return;
-            }
-        
-        TCursorSelection curSel;
-        fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-            
-        TInt lowerPos = curSel.LowerPos();
-        if( lowerPos > 1 )
-            {
-            const TInt rephaLength( 2 );
-            TBuf<rephaLength> previousCharacter;
-            previousCharacter.FillZ();
-            
-            fepAwareTextEditor->
-                GetEditorContentForFep( previousCharacter, 
-                                        previousCharPos, rephaLength );
-            
-            if (rephaLength == previousCharacter.Length())
-                {
-                if( previousCharacter[0] == TAknFepUiIndicInputManager::RaCharacter( 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) &&
-                    previousCharacter[1] == TAknFepUiIndicInputManager::Virama( 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) )
-                    {
-                    curSel.iAnchorPos = previousCharPos;
-                    curSel.iCursorPos = previousCharPos + rephaLength;
-                    
-                    // Remove the repha
-                    
-                    if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && 
-                        IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) )
-                        {
-                        CommitInlineEditL();
-                        }
-                    StartInlineEditL( curSel, previousCharacter, rephaLength, ETrue );
-                    UpdateInlineEditL( KNullDesC, 0 );
-                    CommitInlineEditL();
-    
-                    // Go to the visual right position of current ligature as the 
-                    // repha has been deleted.
-                    AlignLogicalAndVisualCursorL( TTmDocPosSpec::ELeading, EFalse );
-                    }
-                }
-            }
-        }
-    }
-
-TBool CAknFepManager::IsRephaPresent()
-    {
-    TBool result = EFalse;
-    
-    MCoeFepAwareTextEditor* fepAwareTextEditor = 
-        iInputCapabilities.FepAwareTextEditor();
-
-    if( fepAwareTextEditor )
-        {
-        TCursorSelection curSel;
-        
-        fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-        
-        TInt previousCharPos = 0;
-        TBool leftFlag = GetNextVisualLeftCharacter( previousCharPos );
-        
-        if( !leftFlag )
-            {
-            return result;
-            }
-
-        TInt lowerPos = curSel.LowerPos();
-        if( lowerPos > 1 )
-            {
-            const TInt rephaLength( 2 );
-            TBuf<rephaLength> previousCharacter;
-            previousCharacter.FillZ();
-            
-            fepAwareTextEditor->
-                GetEditorContentForFep( previousCharacter, 
-                                        previousCharPos, rephaLength );
-
-            // Verify whether the length of the string is equal to the length 
-            // of repha before doing further checks.
-            if( previousCharacter.Length() == rephaLength )
-                {               
-                if( previousCharacter[0] == TAknFepUiIndicInputManager::RaCharacter( 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) &&
-                    previousCharacter[1] == TAknFepUiIndicInputManager::Virama( 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) )
-                    {
-                    result = ETrue;
-                    }
-                }
-            }
-        }
-        
-    return result;
-    }
-    
-TText CAknFepManager::PreviousToPreviousChar( TBool aContextSensitive )
-    {
-    TBuf<ESingleCharacter> prevToPrevChar( ESingleCharacter );
-    prevToPrevChar.FillZ();
-
-    if( !aContextSensitive )
-        {
-        TTmDocPosSpec pos = DocPos();
-        
-        // Pos=0 means it is before the first character and there is no previous character
-        if (pos.iPos > 0 ) 
-            {
-            if( iInputCapabilities.FepAwareTextEditor() )
-                {
-                iInputCapabilities.FepAwareTextEditor()->
-                    GetEditorContentForFep( prevToPrevChar, pos.iPos - 1, ESingleCharacter );
-                }
-            }
-        }
-    else
-        {
-        TCursorSelection curSel;
-        
-        MCoeFepAwareTextEditor* fepAwareTextEditor = 
-            iInputCapabilities.FepAwareTextEditor();
-        
-        if( fepAwareTextEditor )
-            {
-            fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-            TInt lowerpos = curSel.LowerPos();
-
-            if( lowerpos > 1 )
-                {
-                fepAwareTextEditor->
-                    GetEditorContentForFep( prevToPrevChar, lowerpos - 2, ESingleCharacter );
-                }
-            }
-        }
-    if (prevToPrevChar.Length())
-        return prevToPrevChar[0];
-    else
-        return NULL;
-    }
-
-void CAknFepManager::RemoveRakarCharacterL()
-    {
-    MCoeFepAwareTextEditor* fepAwareTextEditor = 
-        iInputCapabilities.FepAwareTextEditor();
-    
-    if( fepAwareTextEditor )
-        {
-        TCursorSelection curSel;
-            
-        fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-        
-        TInt lowerpos = curSel.LowerPos();
-
-        if( lowerpos > 1 )
-            {
-            const TInt rakarLength( 2 );
-            TBuf<rakarLength> buffer;
-            buffer.FillZ();
-
-            fepAwareTextEditor->
-                GetEditorContentForFep( buffer, lowerpos - rakarLength, rakarLength );
-            
-            if (rakarLength == buffer.Length())
-                {
-                if( buffer[0] == TAknFepUiIndicInputManager::Virama( 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) &&
-                    buffer[1] == TAknFepUiIndicInputManager::RaCharacter( 
-                        TLanguage( iLanguageCapabilities.iInputLanguageCode ) ) )
-                    {
-                    curSel.iAnchorPos = lowerpos - rakarLength;
-                    curSel.iCursorPos = lowerpos;
-                    
-                    // Remove the repha
-                    
-                    if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && 
-                        IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) )
-                        {
-                        CommitInlineEditL();
-                        }
-                    StartInlineEditL( curSel, buffer, rakarLength, ETrue );
-                    UpdateInlineEditL( KNullDesC, 0 );
-                    CommitInlineEditL();
-                    }
-                }
-            }
-        }
-    }
-
-/**
- * Returns the status of predictive input.
- *
- *  @since 3.2
- *  @return ETrue is available predictive input.
- */
-TBool CAknFepManager::IsAbleToChangePrediction() const
-    {
-    TBool ret = EFalse;
-    if (!(iAknEditorFlags & EAknEditorFlagNoT9))
-        {
-        if (iMode == EHiraganaKanji)
-            {
-            if (HasJapanesePredictionInputMode())
-                {
-                ret = ETrue;
-                }
-            }
-        else
-            {
-            ret = ETrue;
-            }
-        }
-    return ret;
-    }
-
-TLanguage CAknFepManager :: GetInputLanguageFromSharedDataInterface()
-{
-    return ((TLanguage)(iSharedDataInterface->InputTextLanguage()));
-}
-    
-    
-void CAknFepManager::DeactivatePredicitveWordAndMoveCursorL()
-    {
-    if (WesternPredictive())
-        {           
-        TWesternNaviEvent naviEvent = ERightNaviEvent;
-    
-        if (iLanguageCapabilities.iRightToLeftLanguage)
-            {
-            naviEvent = ELeftNaviEvent;     
-            }
-#ifdef RD_INTELLIGENT_TEXT_INPUT         
-		// This function is called at time of Cut/Copy command
-		// TryCloseUiL will remove the auto completion part
-		// To adjust the visual cursor position commit the text with
-		// auto completion part.  
-		if( IsAutoCompleteOn()) 
-			{
-			TInt tailLength = 0;
-			iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength );
-
-			if( tailLength > 0)
-				{
-				// Sync the key sequence and editor text.	
-				iPtiEngine->HandleCommandL( EPtiCommandLockCurrentCandidate );			
-				}
-			}
-#endif
-    
-        // Find the visual left/right end of the current word
-        TTmDocPosSpec pos;
-        GetAvkonDefinedVisualLimitsOfSelection(
-               iUncommittedText, naviEvent, pos, NULL );
-               
-        TryCloseUiL();
-    
-        // Position should be dis-ambiguated based on last navigation and direction of blocks.
-        AdjustPosSpecForAmbiguityAfterLeftOrRightNavigation( pos, naviEvent );
-
-        SetCursorPositionL( pos );
-
-        iCaseMan->UpdateCase(ENullNaviEvent);       
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::EditorCcpuStatus
-//
-// Returns the Ccpu status of given editor state as a flag combination.
-// -----------------------------------------------------------------------------
-//
-TInt CAknFepManager::EditorCcpuStatus(CAknEdwinState* aEdwinState)
-    {
-    TInt ret = 0;
-                                            
-    if (aEdwinState && aEdwinState->CcpuState())
-        {
-        if (aEdwinState->CcpuState()->CcpuCanCopy())
-            {
-            ret |=  ECcpuStatusFlagCanCopy;
-            }
-        if (aEdwinState->CcpuState()->CcpuCanCut()) 
-            {
-            ret |=  ECcpuStatusFlagCanCut;
-            }
-        if (aEdwinState->CcpuState()->CcpuCanPaste())               
-            {
-            ret |=  ECcpuStatusFlagCanPaste;                    
-            }
-        }                 
-    return ret; 
-    }
-    
-void CAknFepManager::NewLigatureL( const TDesC& aText )
-    {
-    if( !iInputCapabilities.SupportsSecretText() && 
-        ( EditorHasFreeSpace() || 
-            IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) ) )
-        {
-        if ( iFepManState == EAknFepStateInitial ) //multitapping
-            {
-            if ( !IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) )
-                {
-                ClearFlag( EFlagLineFeedCharacter );
-                StartInlineEditL( aText );
-                SetFlag( EFlagInsideMultitapInlineEditingTransaction );
-                SetFlag( EFlagInsideInlineEditingTransaction );
-                }
-            }
-        }
-    }
-
-
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::CancelCcpuMode
-//
-// Cancels the copy / cut mode initiated from editing options -submenu.
-// -----------------------------------------------------------------------------
-//
-void CAknFepManager::CancelCcpuMode()
-    {
-    iIndicator->SetCopyMode(EFalse);
-    if (IsCcpuFlagSet(ECcpuStateStartCopy | ECcpuStateCopy | ECcpuStateStartCut | ECcpuStateCut))
-        {
-        iUiInterface->DeleteSoftkeys();    
-        }
-    
-    ResetCcpuFlags();                       
-    }
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::CancelShiftKeyTimer
-//
-// Cancels shift key timer.
-// -----------------------------------------------------------------------------
-//
-void CAknFepManager::CancelShiftKeyTimer()
-    {
-    ClearFlag(EFlagShiftKeyDepressed);
-    if (iShiftKeypressMonitor)
-        {
-        iShiftKeypressMonitor->Cancel();    
-        }
-    }
-
-void CAknFepManager::RemoveTextFromEditorL( TInt aNumOfCharacters, 
-                                            TInt aPos /*= 0*/,
-                                            TBool aIsToAlignCursor /* = ETrue */)
-	{
-    if( IsFlagSet( EFlagInsideInlineEditingTransaction ) && 
-        IsFlagSet( EFlagInsideMultitapInlineEditingTransaction ) )
-        {
-        // Update the inline buffer with NULL descriptor.
-        // Inline buffer can be only at position 0, i.e. 
-        // where the cursor stands.
-        if( aNumOfCharacters == UncommittedText().Length()
-             && aPos == 0 )
-            {
-            UpdateInlineEditL( KNullDesC, 0 );
-            }
-        CommitInlineEditL();
-        }
-    else
-        {
-        MCoeFepAwareTextEditor* fepAwareTextEditor = 
-            iInputCapabilities.FepAwareTextEditor();
-
-        if( fepAwareTextEditor && aPos >= 0 )
-            {
-            // Get the previous cursor position.
-            TCursorSelection cursorSelPrevious;
-            fepAwareTextEditor->GetCursorSelectionForFep( cursorSelPrevious );
-
-            // Place the cursor at the desired position.
-            TCursorSelection sel( cursorSelPrevious.iCursorPos - aPos, 
-                            cursorSelPrevious.iCursorPos - aPos );
-        	fepAwareTextEditor->SetCursorSelectionForFepL( sel );
-
-            // Set cursor span on previous N characters
-            if ( sel.iAnchorPos >= aNumOfCharacters )
-                {
-                sel.iAnchorPos -= aNumOfCharacters;
-
-                // get text to clear
-                TBuf<EMaximumFepWordLength> bufToClear;
-                fepAwareTextEditor->GetEditorContentForFep( bufToClear, sel.iAnchorPos, 
-                                                            aNumOfCharacters );
-
-                // delete the character with an inline edit
-                StartInlineEditL( sel, bufToClear, aNumOfCharacters, EFalse );
-                UpdateInlineEditL( KNullDesC, 0 );
-                CommitInlineEditL();
-                
-                if( aIsToAlignCursor )
-                    {
-                    // Move the cursor to the original position considering the 
-                    // aNumOfCharacters
-                    cursorSelPrevious.iCursorPos -= aNumOfCharacters;
-                    cursorSelPrevious.iAnchorPos = cursorSelPrevious.iCursorPos;
-                    fepAwareTextEditor->SetCursorSelectionForFepL( cursorSelPrevious );
-                    }
-                }        
-            }        
-        }
-    }
-
-#ifdef RD_MARATHI
-
-TBool CAknFepManager::IsChandraAPresentL()
-    {
-    TBool result = EFalse;
-
-    MCoeFepAwareTextEditor* fepAwareTextEditor = 
-		iInputCapabilities.FepAwareTextEditor();
-
-	if( fepAwareTextEditor )
-		{
-		TCursorSelection curSel;
-		
-		fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-		
-		TInt lowerpos = curSel.LowerPos();
-
-        TInt chandraALength = 2;
-        TBuf<2> buf;
-	    TAknFepUiIndicInputManager::GetChandraA( buf );
-
-		if( lowerpos > ( chandraALength - 1 ) )
-			{
-			TBuf<2>previousCharacter;
-
-			fepAwareTextEditor->GetEditorContentForFep( 
-                previousCharacter, lowerpos-chandraALength, chandraALength );
-			
-			if( buf.CompareC( previousCharacter ) == 0 )
-			    {
-			    // Chandra-A found
-			    result = ETrue;
-			    }
-			}
-		}
-    return result;
-	}
-
-TBool CAknFepManager::IsEyeLashRaPresentL()
-    {
-    TBool result = EFalse;
-
-    MCoeFepAwareTextEditor* fepAwareTextEditor = 
-		iInputCapabilities.FepAwareTextEditor();
-
-	if( fepAwareTextEditor )
-		{
-		TCursorSelection curSel;
-		
-		fepAwareTextEditor->GetCursorSelectionForFep( curSel );
-		
-		TInt lowerpos = curSel.LowerPos();
-
-        
-        TBuf<3> buf;
-	    TAknFepUiIndicInputManager::GetEyeLashRa( buf, 
-	                                    (TLanguage)iLanguageCapabilities.iInputLanguageCode );
-        TInt eyeLashRaLength = buf.Length();
-
-		if( ( lowerpos - eyeLashRaLength ) >= 0 )
-			{
-			TBuf<3>previousCharacter;
-
-			fepAwareTextEditor->GetEditorContentForFep( 
-                previousCharacter, lowerpos-eyeLashRaLength, eyeLashRaLength );
-			
-			if( previousCharacter.Length() >=2 && 
-			    buf.CompareC( previousCharacter ) == 0 )
-			    {
-			    // EyeLashRa found
-			    result = ETrue;
-			    }
-			}
-		}
-    return result;
-	}
-
-#endif // RD_MARATHI
-#ifndef RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::RemoveSuggestedCompletionL()
-{	
-	if(iPtiEngine->InputMode() == EPtiEngineWordCompletion && 
-	   IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction))
-		{
-			TBuf<CAknFepManager::EMaximumFepWordLength> currentText = iPtiEngine->CurrentWord();
-			if(currentText.Length() > iPtiEngine->CurrentInputSequence().Length())
-				{
-				currentText.SetLength(iPtiEngine->CurrentInputSequence().Length());
-				iPtiEngine->SetCurrentWord(currentText);
-	    		UpdateInlineEditL(currentText,currentText.Length()); 
-   	            TransferFepStateToEditorL();
-				}
-			
-		}
-}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::ExtendedInputCapabilities
-//
-// Returns the extended input bapabilities bitvector.
-// -----------------------------------------------------------------------------
-//
-TUint CAknFepManager::ExtendedInputCapabilities() const
-    {
-    MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-
-    if ( mop && iInputCapabilities.FepAwareTextEditor() )//IsFepAwareTextEditor()
-		{
-		CAknExtendedInputCapabilities* extendedInputCapabilities = 
-		mop->MopGetObject( extendedInputCapabilities );
-
-		if ( extendedInputCapabilities ) 
-			{
-			return extendedInputCapabilities->Capabilities();
-			}
-		} 
-		
-    return 0;		          
-    }
-
-
-#ifdef RD_SCALABLE_UI_V2         
-// -----------------------------------------------------------------------------
-// CAknFepManager::LaunchStylusCcpuMenuL
-//
-// Displays stylus ccpu-menu.
-// -----------------------------------------------------------------------------
-//    
-void CAknFepManager::LaunchStylusCcpuMenuL(TPoint &aClickPoint)
-    {
-    const TInt KItemCopy  = 0x01;
-    const TInt KItemCut   = 0x02;
-    const TInt KItemPaste = 0x04;
-    
-    delete iStylusCcpuMenu;
-    iStylusCcpuMenu = NULL;    
-     
-    // It is assume that this method is called only if there is selected
-    // text in suitable editor, ie. there will be at least "copy"-item available.
-    TInt items = KItemCopy;    
-        
-    CAknEdwinState* editorState = EditorState();
-    if (editorState && editorState->CcpuState())
-        {              
-        if (editorState->CcpuState()->CcpuCanCut())
-            {
-            items |= KItemCut;
-            }
-        if (editorState->CcpuState()->CcpuCanPaste())
-            {
-            items |= KItemPaste;
-            }                    
-        }        
-    
-    if (items)
-        {
-        TBuf<CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength> itemStr;          
-        iStylusCcpuMenu = iUiInterface->NewStylusPopUpMenuL(this, aClickPoint);     
-        
-        if (items & KItemCopy)
-            {
-            StringLoader::Load(itemStr, R_AKNFEP_SOFTKEY_COPY);            
-            iStylusCcpuMenu->AddMenuItemL(itemStr.Mid(1, itemStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength), EEikCmdEditCopy);            
-            }
-        if (items & KItemCut)
-            {                    
-            itemStr.Zero();
-            StringLoader::Load(itemStr, R_AKNFEP_SOFTKEY_CUT);            
-            iStylusCcpuMenu->AddMenuItemL(itemStr.Mid(1, itemStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength), EEikCmdEditCut);
-            }
-        if (items & KItemPaste)
-            {
-            itemStr.Zero();
-            StringLoader::Load(itemStr, R_AKNFEP_STYLUS_CCPU_MENU_PASTE);               
-            iStylusCcpuMenu->AddMenuItemL(itemStr.Mid(1, itemStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength), EEikCmdEditPaste);                
-            }
-        
-        SetCcpuFlag(ECcpuStateCopy); // This forces ProcessCommandL to handle the events.
-        iStylusCcpuMenu->SetPosition(aClickPoint);    
-        iStylusCcpuMenu->ShowMenu();       
-        }
-    }
-#endif    
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
- TBool CAknFepManager::IsFnKeyMappedL(TPtiKeyboardType aKeyboardType)
-    {
-    MPtiLanguage *lang = NULL;
-    RArray < TPtiNumericKeyBinding > keybinding;
-    TBool ret = EFalse;
-    if(iPtiEngine)
-        {
-        lang = iPtiEngine->CurrentLanguage();
-        if(lang)
-        {
-        iPtiEngine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, aKeyboardType);
-        TInt numericKeysCount = keybinding.Count();
-        while ( numericKeysCount-- )
-            {
-            TPtiNumericKeyBinding numKeyBind = keybinding[numericKeysCount];
-            if ( numKeyBind.iCase == EPtiCaseFnLower || numKeyBind.iCase == EPtiCaseFnUpper)
-                {
-                ret = ETrue;
-                break;
-                    }
-                }
-            }
-        }
-    keybinding.Reset();
-    return ret;
-    }
-TBool CAknFepManager::IsFnKeyMapped()
-    {
-    return iIsFnKeyMapped;
-    }
-    
-void CAknFepManager::SetFnKeyMappingState()
-    {
-    TRAP_IGNORE(iIsFnKeyMapped = IsFnKeyMappedL());
-    }
-
-TBool CAknFepManager::KeyMapsDifferentCharacterWithFn( TPtiKey aKey ) const
-    {
-    // we are interested only about the first mapped character => buffer length 1 is adequate
-    TBuf<1> lowerMapping; 
-    TBuf<1> upperMapping;
-    TBuf<1> lowerFnMapping; 
-    TBuf<1> upperFnMapping;
-    iPtiEngine->MappingDataForKey( aKey, lowerMapping, EPtiCaseLower );
-    iPtiEngine->MappingDataForKey( aKey, upperMapping, EPtiCaseUpper );
-    iPtiEngine->MappingDataForKey( aKey, lowerFnMapping, EPtiCaseFnLower );
-    iPtiEngine->MappingDataForKey( aKey, upperFnMapping, EPtiCaseFnUpper );
-    
-    if ( lowerFnMapping.Length() )
-        {
-        if ( !lowerMapping.Length() ||              // < key maps character only with Fn
-             lowerMapping[0] != lowerFnMapping[0] ) // < Fn changes the character of the key
-            {
-            return ETrue;
-            }
-        }
-    else if ( upperFnMapping.Length() )
-        {
-        if ( !upperMapping.Length() ||              // < key maps character only with Fn
-             upperMapping[0] != upperFnMapping[0] ) // < Fn changes the character of the key
-            {
-            return ETrue;
-            }
-        }
-    
-    return EFalse; // The key doesn't have symbol behind Fn or the symbol is the same as without Fn
-    }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-MAknFepDocumentNavigation* CAknFepManager::AknFepDocumentNavigation() const
-	{
-	MAknFepDocumentNavigation* navi = NULL;
-	
-    MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-    if ( mop )
-        {
-        mop->MopGetObject( navi );
-        }
-    
-    return navi;
-	}
-
-CAknFepUIInterface* CAknFepManager::UiInterface()
-	{
-	return iUiInterface;
-	}
-
-void CAknFepManager::AlignLogicalAndVisualCursorL()
-    {
-    TBool isIndicLang = 
-        TAknFepUiIndicInputManager::
-            IsIndicLangauge( TLanguage( iLanguageCapabilities.iInputLanguageCode ) );
-
-    if( isIndicLang )
-        {
-        TTmDocPosSpec pos = DocPos();
-        pos.iType = TTmDocPosSpec::ETrailing;
-        TTmPosInfo2 info;
-        TTmLineInfo lineInfo;
-
-        TBool findAvailable = EFalse;
-
-        MAknFepDocumentNavigation* docNavi = AknFepDocumentNavigation();
-
-        if ( docNavi )
-            {
-            docNavi->FindDocPos( pos, info, lineInfo );
-            findAvailable = ETrue;
-            }
-        else
-            {
-            CTextLayout* textLayout = TextLayout();
-            if ( textLayout )
-                {
-                textLayout->TagmaTextLayout().FindDocPos( pos, info, lineInfo );	    					    
-                findAvailable = ETrue;
-                }
-            }
-
-        if ( findAvailable )
-            {
-            TCursorSelection sel( info.iDocPos.iPos, info.iDocPos.iPos );
-            iInputCapabilities.FepAwareTextEditor()->SetCursorSelectionForFepL(sel);
-            }
-        }
-    }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-TKeyResponse CAknFepManager::HandleFnKeyEventL( const TKeyEvent& aKeyEvent, TEventCode aEventCode )
-    {
-     TKeyResponse ret; 
-     
-#ifdef __HALF_QWERTY_KEYPAD  
-     if ( IsFlagSet( EFlagShiftKeyDepressed ) && 
-        ( EPtiKeyboardHalfQwerty == KeyboardLayout() )&& 
-        ( aEventCode != EEventKeyUp ) )
-         {
-         return EKeyWasNotConsumed;
-         }
-#endif
-     
-     if (!iCurrentFepUI->IsValidFnKeyPress() && EStdKeyRightFunc == aKeyEvent.iScanCode)
-     	{
-     	TBool Uiret = ETrue;
-     	if (EEventKeyDown == aEventCode )
-     		{
-      		Uiret = FepUI()->HandleKeyL(EKeyRightFunc, EShortKeyPress);     		
-     		}
-     		
-     	if (Uiret)
-     		{
-     		ret = EKeyWasConsumed;
-     		}
-        else
-        	{
-     	    ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode, 
-                                            	    iInputCapabilities ) ;     	        	
-        	}	 
-     	}
-     else
-     	{
-     	
-     	ret = iFnKeyManager->HandleFnKeyEventL( aKeyEvent, aEventCode, 
-                                            	iInputCapabilities ) ;     	
-     	}
-     if(IsHybridAplhaEditor() && !iHybridAplphaChangedToAlphanumeric)
-         {
-         if(FnKeyState() != CAknFepFnKeyManager::EFnKeyLock)
-            iHybridAplphaChangedToAlphanumeric = ETrue;
-         }
-
-     return ret;
-    }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::HasJapanesePredictionInputMode
-// Has Japanese prediction input mode in PtiEngine
-// -----------------------------------------------------------------------------
-//
-TBool CAknFepManager::HasJapanesePredictionInputMode() const
-    {
-    // Is it supported Japanese predictive input
-    TBool ret = EFalse;
-    MPtiLanguage* ptilang = iPtiEngine->GetLanguage(ELangJapanese);
-    if ( ptilang
-     &&  ( (!iQwertyInputMode && ptilang->HasInputMode(EPtiEngineHiraganaKanjiPredictive))
-         ||(iQwertyInputMode && ptilang->HasInputMode(EPtiEngineHiraganaKanjiPredictiveQwerty)) ) )
-        {
-        ret = ETrue;
-        }
-    return ret;
-    }
-#ifdef RD_HINDI_PHONETIC_INPUT
-void CAknFepManager::HandleIndicCaseL()
-	{
-		iHashKeyMan->HandleSetIndicStateL();
-	}
-#endif
-
-// -----------------------------------------------------------------------------
-// CAknFepManager::IsCursorAtEndOfWord
-// 
-// -----------------------------------------------------------------------------
-//    
-TBool CAknFepManager::IsCursorAtEndOfWord()
-    {   
-    iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(iUncommittedText);
-    TInt origPos = iUncommittedText.iCursorPos; 
-   
-    FindEndOfWord(iUncommittedText.iCursorPos);
-       
-    if (origPos != iUncommittedText.iCursorPos)
-        {
-        return EFalse;
-        }
-        
-    return ETrue;        
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-TInt CAknFepManager::GetCurrentCase()
-    {
-    TCase returnCase;
-    
-    switch( iCaseMan->CurrentCase() )
-        {
-        case EAknEditorUpperCase:
-        case EAknEditorTextCase:
-            {
-            returnCase = EUpperCase;
-            }
-            break;
-
-        case EAknEditorLowerCase:
-            {
-            returnCase = ELowerCase;
-            }
-            break;
-        
-        default:
-            returnCase = ELowerCase;
-            break;
-        }
-    return returnCase;
-    }
-// Predictive QWERTY changes (XT9) ---->
-
-void CAknFepManager::GetCandidatesL( CDesCArray& aArray, TInt& aActiveIdx )
-    {
-    iPtiEngine->GetCandidateListL(aArray);
-    iPtiEngine->HandleCommandL( EPtiCommandUserActionGetCurrentIndexOfCandidates, &aActiveIdx );
-    }  
-
-void CAknFepManager::GetUpdateCandidatePositionL(TRect& aRect)
-    {
-     if(iCandidatePopup && iFepFullyConstructed && iPtiEngine)
-        {
-        //Now we read the position of the inline text
-        TPoint  inlineEditorTl;
-        TPoint  inlineEditorBr;
-        TInt    height;
-        TInt    ascent;
-        TInt    documentOffset = iPtiEngine->CurrentWord().Length();
-        //  Popup Position for RTL
-        if(iLanguageCapabilities.iRightToLeftLanguage)
-            documentOffset = 0;
-        //  Popup Position for RTL
-        GetScreenCoordinatesL(inlineEditorTl, height, ascent, documentOffset);
-        inlineEditorTl.iY -= height;
-        GetScreenCoordinatesL(inlineEditorBr, height, ascent);
-        aRect.iTl = inlineEditorTl;
-        aRect.iBr = inlineEditorBr;
-        }
-    }
-
-TBool CAknFepManager::IsRightToLeftLanguage()
-	{
-	return iLanguageCapabilities.iRightToLeftLanguage ;
-	}
-
-/**
-* Setter for the advanced predictive typing correction.
-* @param    aLevel   The level to be set.
-*/
-void CAknFepManager::SetTypingCorrectionLevel(TInt aLevel)
-	{
-	iTypingCorrectionLevel = aLevel;
-    
-	if(iFepFullyConstructed)
-		{
-		TPtiErrorCorrectionLevel correctionLevel = (TPtiErrorCorrectionLevel)aLevel;
-		TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandSetCorrectionLevel, &correctionLevel ));	
-		}
-	}
-	
-/**
-* Resetter for the advanced predictive Number Candidate setting.
-* @param    aValue   The value to be set.
-*/
-void CAknFepManager::SetNumberCandidateState(TInt aValue)
-	{
-	if(aValue == 0)
-		iIsNumberCandidateShown = EFalse;
-	else if(aValue == 1)
-		iIsNumberCandidateShown = ETrue;
-	
-	if(iFepFullyConstructed)
-		{
-		TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandSetNumberCandidateStatus, 
-		                                        &iIsNumberCandidateShown ));
-		}
-	}
-	
-void CAknFepManager::RemoveSuggestedAdvanceCompletionL()
-    {	
-    if( IsFlagSet(CAknFepManager::EFlagInsideInlineEditingTransaction) &&
-        iPtiEngine->CurrentWord().Length() )
-        {
-        TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandUserActionShorten ));
-        TPtrC currentText = iPtiEngine->CurrentWord();
-        UpdateInlineEditL( currentText, currentText.Length() );
-        }
-    }
-/**
-* Setes the current state from GS to the local state
-*/    
-   
-void CAknFepManager::SetAutoCompletionState(TInt aValue) 
-	{
-	if(aValue == 0)
-		{
-		iIsAutoCompleteOn = EFalse;
-		}
-	else if(aValue == 1)
-		{
-		iIsAutoCompleteOn = ETrue;
-		}
-	 
-	if(iFepFullyConstructed)
-		{
-		if(iIsAutoCompleteOn)
-			{
-			TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandEnableAutoCompletion  ));
-			}
-		else
-			{
-			TInt tailLength = 0;
-			TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandGetAutoCompletionTailLength, &tailLength ));
-			if(tailLength > 0)
-				{
-				// send an update to engine to signify change in autocompletion from on to off while tail exists
-				// This will set EPtiXt9FlagAutoCompletionSetOnToOff flag as true in engine
-				TInt value = 1;
-				TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandAutoCompletionOnToOff,&value));				
-				}
-			
-			
-			TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandDisableAutoCompletion ));
-			}
-		}
-	}
-	
-/**
-* Sets the primary candidate from GS to the local state
-*/    
-   
-void CAknFepManager::SetPrimaryCandidate(TInt aValue) 
-	{
-	if(aValue == 0)
-		iPrimaryCandidate = ETrue;
-	else if(aValue == 1)
-		iPrimaryCandidate = EFalse;    
-	if(iFepFullyConstructed)
-		{
-		TRAP_IGNORE(iPtiEngine->HandleCommandL( EPtiCommandSetProactiveCorrection, 
-		                                        &iPrimaryCandidate ));
-		}
-	}
-#endif //RD_INTELLIGENT_TEXT_INPUT
-    
-CAknFepPluginManager* CAknFepManager::PluginUIManager()
-    {
-#ifdef RD_SCALABLE_UI_V2
-
-    return iFepPluginManager;
-#else
-    return NULL;        
-#endif //RD_SCALABLE_UI_V2     
-    }
-
-// add for phrase creation
-MZhuyinKeyHandler* CAknFepManager::ZhuyinKeyHandler()
-    {
-    return iZhuyinKeyHandler;
-    }
-// add for phrase creation
-CAknFepZhuyinAnalyser* CAknFepManager::ZhuyinAnalyser()
-    {
-    return iZhuyinAnalyser;
-    }
-
-#ifdef RD_SCALABLE_UI_V2
-void CAknFepManager::UpdateTouchCaseMode()
-	{
-    if (iFepFullyConstructed && 
-        iFepPluginManager 
-        // case should be updated even if current input mode is none because iPreviousCoseMode
-        // still need to be updated.
-        /*&& 
-        iFepPluginManager->PluginInputMode() != EPluginInputModeNone*/)
-    	{
-    	iFepPluginManager->UpdateCaseMode();	
-    	}
-	}
-#endif// RD_SCALABLE_UI_V2
-
-void CAknFepManager::SetStopProcessFocus(TBool aStop, TBool aClose)
-    {
-    iClosePeninputUi = aClose;
-    iStopProcessFocus = aStop;
-    if (!aStop)
-        {
-        HandleChangeInFocus();
-        }
-    }
-    
-TBool CAknFepManager::StopProcessFocus()
-    {
-    return iStopProcessFocus;    
-    }
-    
-TBool CAknFepManager::CloseUiOnFocusChange()
-    {
-    return iClosePeninputUi;    
-    }
-void CAknFepManager::HandleCopyCutStateL()    
-{
-    if (IsCcpuFlagSet(ECcpuStateCopy | ECcpuStateCut))
-                {
-                TCursorSelection selection;
-                iInputCapabilities.FepAwareTextEditor()->GetCursorSelectionForFep(selection);
-                TBool update;
-                if (selection.Length() > 0)
-                    {
-                    if (!IsCcpuFlagSet(ECcpuStateButton))
-                        {
-                        __ASSERT_DEBUG(iUiInterface->SoftkeysExist(),
-                                       AknFepPanic(EAknFepPanicNoHandleToFepAwareTextEditor));                         
-                        if (IsCcpuFlagSet(ECcpuStateCopy))                      
-                            {
-                            update = UpdateCBALabelL(ELeftSoftkeyIndex, EEikCmdEditCopy, R_AKNFEP_SOFTKEY_COPY);
-                            update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EEikCmdEditCopy, R_AVKON_SOFTKEY_SELECT_TEXT ); 
-                            }
-                        else
-                            {
-                            update = UpdateCBALabelL(ELeftSoftkeyIndex, EEikCmdEditCut, R_AKNFEP_SOFTKEY_CUT);                          
-                            update |= UpdateCBALabelL( EMiddleSoftkeyIndex, EEikCmdEditCut, R_AVKON_SOFTKEY_SELECT_TEXT ); 
-                            }
-                        if (update)
-                            {
-                            iUiInterface->DrawSoftkeysNow();
-                            }               
-                        SetCcpuFlag(ECcpuStateButton);                                      
-                        }                   
-                    }   
-                else if (IsCcpuFlagSet(ECcpuStateButton))                        
-                    {                   
-                    ClearCcpuFlag(ECcpuStateButton);
-                    update = EFalse;
-                    update = UpdateCBALabelL(ELeftSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY);
-                    update |= UpdateCBALabelL( EMiddleSoftkeyIndex, KNullCommandId, R_TEXT_SOFTKEY_EMPTY );
-                    if (update)
-                        {
-                        iUiInterface->DrawSoftkeysNow();
-                        }               
-                    }
-                }    
-}    
-#ifdef RD_SCALABLE_UI_V2
-TInt GetForegroundTaskAppWgId()
-    {
-    TApaTaskList tList(CCoeEnv::Static()->WsSession());
-    
-    TApaTask task = tList.FindByPos(0);
-    return task.WgId();
-    }
-
-void CAknFepManager::DimInputmodeTouchMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    DimEditMenuModeItems(aMenuPane);
-
-    if ( IsChineseInputLanguage() )
-        {
-        DoChineseTouchMenu(aMenuPane);
-        }
-    else if ( iLanguageCapabilities.iInputLanguageCode == ELangJapanese)
-        {
-        DoJapaneseMenu(aMenuPane);
-        }
-    else
-        {
-        DoWesternTouchMenu(aMenuPane);
-        }
-    }
-#endif
-
-void CAknFepManager::DimInputmodeMenuItems(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    DimEditMenuModeItems(aMenuPane);
-
-    if ( IsChineseInputLanguage() )
-        {
-        DoChineseMenu(aMenuPane);
-        }
-    else if ( iLanguageCapabilities.iInputLanguageCode == ELangJapanese)
-        {
-        DoJapaneseMenu(aMenuPane);
-        }
-    else
-        {
-        DoWesternMenu(aMenuPane);
-        }
-    }
-
-void CAknFepManager::HandleCopyCutEventL(TInt aCommandId)
-    {
-     if (iCcpuMode != ECcpuStateNone)
-        {                   
-        ResetCcpuFlags();                   
-        iUiInterface->DeleteSoftkeys();
-                    
-        SetCcpuFlag(ECcpuStatePosted);  
-                                         
-#ifdef RD_SCALABLE_UI_V2                    
-        if (aCommandId == EEikCmdEditCopy)
-            {                     
-            // Send copy event to AknCcpuSupport.
-            CCoeEnv::Static()->SimulateKeyEventL(KAknCcpuCopyEvent, EEventKey);
-            }
-        else
-            {
-            // Send cut event to AknCcpuSupport.
-            CCoeEnv::Static()->SimulateKeyEventL(KAknCcpuCutEvent, EEventKey);
-            }                               
-#else         
-/*As part of build warnings commenting this perticular code it might require when touch is enabled.        
-        if (aCommandId == EEikCmdEditCopy)
-            {                                          
-            // Send copy-event to editor.
-            CCoeEnv::Static()->SimulateKeyEventL(KEditorCopyEvent, EEventKey);
-            }
-        else 
-            {                       
-            // send cut-event to editor.         
-            CCoeEnv::Static()->SimulateKeyEventL(KEditorCutEvent, EEventKey);
-            } 
-			*/            
-#endif // RD_SCALABLE_UI_V2 
-
-        if (iInputCapabilities.FepAwareTextEditor())                                
-            {
-            // update indicators only if this is editable component.
-            iIndicator->SetCopyMode(EFalse);
-            UpdateIndicators();                                                           
-            }
-#ifdef  RD_SCALABLE_UI_V2       	 
-        HandleChangeInFocus();
-#endif
-        
-        }
-
-    }
-
-TInt CAknFepManager::FepShowVkbPreviewStatus()
-    {
-    return iSharedDataInterface->FepShowVkbPreviewStatus();    
-    }
-
-void CAknFepManager::InitPreviewMenuPane(CAknFepUiInterfaceMenuPane* aMenuPane)
-    {
-    if (FepShowVkbPreviewStatus() > 0)
-        {
-        aMenuPane->GetMenuPane()->SetItemButtonState(EPenInputCmdPreviewOn, 
-                                                     EEikMenuItemSymbolOn );
-        }
-    else
-        {
-        aMenuPane->GetMenuPane()->SetItemButtonState(EPenInputCmdPreviewOff, 
-                                                     EEikMenuItemSymbolOn );
-        }
-    }
-
-void CAknFepManager::SynCCPSoftKey()
-    {
-    TRAP_IGNORE(HandleCopyCutStateL());   
-    }
-
-TInt CAknFepManager::PluginInputMode() const
-{
-#ifdef RD_SCALABLE_UI_V2
-    return iFepPluginManager ? iFepPluginManager->PluginInputMode() : EPluginInputModeNone;
-#else
-    return EPluginInputModeNone;
-#endif 
-}
-
-void CAknFepManager::HandleEndKeyL()
-    {
-#ifdef RD_SCALABLE_UI_V2 
-
-    if (iFepPluginManager)
-        {
-        return;    
-        }
-
-    RWsSession &ws = CCoeEnv::Static()->WsSession();
-    //TInt wgId =ws.GetFocusWindowGroup();
-    CApaWindowGroupName* wg = CApaWindowGroupName::NewLC(ws,
-        CCoeEnv::Static()->WsSession().GetFocusWindowGroup());
-
-    TUid id = wg->AppUid();
-    CleanupStack::PopAndDestroy(wg); 
-
-    if (0x10207218 == id.iUid ||
-        0x10281EF2 == id.iUid)
-        {
-        RPeninputServer iPenInputServer;
-
-        TInt err = iPenInputServer.Connect();
-		if(err == KErrNone)
-			{
-			iPenInputServer.SetForeground(ETrue);
-			iPenInputServer.ActivateLayout( EFalse ); 
-			iPenInputServer.HandleCommand(ECmdPenInputWindowClose);
-			
-			iPenInputServer.ClearServerEvent();
-			iPenInputServer.LoseForeground();
-			iPenInputServer.Close();
-			}
-        }
-#endif //RD_SCALABLE_UI_V2         
-    }
-void CAknFepManager::NeedDisableKeySound(const TKeyEvent& aKeyEvent, TEventCode aEventCode)
-    {
-#ifdef RD_SCALABLE_UI_V2    
-    TInt keyCode = aKeyEvent.iScanCode;
-    TBool interestKey = EFalse;
-    if ( keyCode == EPtiKey0 || 
-         keyCode == EPtiKey1 ||
-         keyCode == EPtiKey2 ||
-         keyCode == EPtiKey3 ||
-         keyCode == EPtiKey4 ||
-         keyCode == EPtiKey5 ||
-         keyCode == EPtiKey6 ||
-         keyCode == EPtiKey7 ||
-         keyCode == EPtiKey8 ||
-         keyCode == EPtiKey9 ||
-         keyCode == EStdKeyDownArrow ||
-         keyCode == EStdKeyRightArrow ||
-         keyCode == EStdKeyLeftArrow ||
-         keyCode == EStdKeyUpArrow ||
-         keyCode == EStdKeyBackspace
-         )
-        {
-        interestKey = ETrue;
-        }
-    if( interestKey && iFepPluginManager && 
-        iFepPluginManager->PluginInputMode() == EPluginInputModeItut)
-        {
-        if( aEventCode == EEventKeyDown )
-            {
-            static_cast<CAknAppUi*>(CEikonEnv::Static()->EikAppUi())->
-                 DisableNextKeySound( keyCode ); 
-            }
-        else if( aEventCode == EEventKey )
-            {
-			#ifdef RD_TACTILE_FEEDBACK
-            MTouchFeedback::Instance()->
-                InstantFeedback(ETouchFeedbackSensitive);
-			#endif
-            }
-        }
-#endif     
-    }
-
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-void CAknFepManager::SetComposChrFlag( TBool aFlag )
-    {
-    iComposChrFlag = aFlag;
-    }
-TBool CAknFepManager::GetComposChrFlag( )
-    {
-    return iComposChrFlag;
-    }
-#endif
-
-// add for phrase creation User db view
-void CAknFepManager::AddUserDBDlgItemL( CAknFepUiInterfaceMenuPane* aMenuPane, TInt aIndex )
-    {
-    CAknFepUiInterfaceMenuPane::SItemData mData;
-
-    TBuf<KMaxFileName> langStr;
-    TInt Inputlangindex;
-    if (!aMenuPane->MenuItemExists(EAknCmdUserDBDlg, Inputlangindex))
-        {
-        StringLoader::Load(langStr, R_AKNFEP_OPTIONS_USER_DB_DLG);
-
-        mData.iCommandId = EAknCmdUserDBDlg;
-        mData.iCascadeId = 0;
-        mData.iFlags = 0;
-        mData.iText.Copy(langStr.Mid(1, langStr.Length() - 1).Left(CAknFepUiInterfaceMenuPane::SItemData::ENominalTextLength));
-
-        aMenuPane->InsertMenuItemL(mData, aIndex);
-        }
-    }
-// add for phrase creation
-void CAknFepManager::LaunchUserDBDlgL( )
-    {
-    TInt itemIndex = 0;
-    
-    //Change title text
-    CEikStatusPane* statusPane = CEikonEnv::Static()->AppUiFactory()->StatusPane();
-    CAknTitlePane* title = static_cast< CAknTitlePane* >(
-        statusPane->ControlL( TUid::Uid( EEikStatusPaneUidTitle) ) );
-
-    //Save the old title tet
-    HBufC* Oldtitletext = title->Text()->AllocLC();
-    //Load the new title text
-    HBufC* titletext = StringLoader::LoadLC( R_AKNFEP_USER_DB_MANAGEMENT_TITLE );
-    //Set title to the new text
-    title->SetTextL( *titletext );
-
-    CDesCArray* items = new( ELeave ) CDesCArrayFlat( KSelectItemSize );
-    CleanupStack::PushL( items );
-    CArrayFix<TInt>* selectedItems = new( ELeave ) CArrayFixFlat<TInt>( KSelectItemSize );
-    CleanupStack::PushL( selectedItems );
-    
-    CAknToolbar* toolbar = iAvkonAppUi->CurrentFixedToolbar();
-    
-    if( toolbar && toolbar->IsShown() && toolbar->CountComponentControls()>0 )
-        {
-        toolbar->SetDimmed( ETrue );
-        toolbar->DrawDeferred();
-        }
-    
-    TUid naviPaneUid;
-	naviPaneUid.iUid = EEikStatusPaneUidNavi;
-
-	CEikStatusPaneBase::TPaneCapabilities subPane =
-			statusPane->PaneCapabilities(naviPaneUid);
-	// if we can access the navigation pane
-	if (subPane.IsPresent() && subPane.IsAppOwned())
-		{
-		CAknNavigationControlContainer
-				* naviPane =
-						(CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid);
-		iTapGroup = naviPane->CreateTabGroupL();
-		iTapGroup->MakeVisible( EFalse );
-		naviPane->PushL( *iTapGroup );
-		}
-    
-    iUserdbdlg = CAknFepUserdbDlg::NewL( itemIndex,
-        selectedItems, items, R_AKNFEP_USERDB_DLG_MENUBAR, iPtiEngine, this );
-    
-    iIsUserdbdlgActive = 1;
-    
-    iUserdbdlg->RunLD();
-    
-    iIsUserdbdlgActive = 0;
-    
-	// if we can access the navigation pane
-	if (subPane.IsPresent() && subPane.IsAppOwned())
-		{
-
-		CAknNavigationControlContainer
-				* naviPane =
-						(CAknNavigationControlContainer *) statusPane->ControlL(naviPaneUid);
-		naviPane->Pop();
-		delete iTapGroup;
-		iTapGroup = NULL;
-		}
-	
-    //Set the title to old text
-    title->SetTextL( *Oldtitletext );
-    
-    if( toolbar )
-        {
-        toolbar->SetDimmed( EFalse );
-        toolbar->DrawNow();
-        }
-    
-    CleanupStack::PopAndDestroy( selectedItems );
-    CleanupStack::PopAndDestroy( items );
-    CleanupStack::PopAndDestroy( titletext );
-    CleanupStack::PopAndDestroy( Oldtitletext );
-    iUserdbdlg = NULL;
-    }
-// add for phrase creation
-TBool CAknFepManager::IsPinyinPhraseCreation() const
-    {
-    return iPinyinPhraseCreation;
-    }
-
-void CAknFepManager::PinyinPhraseCreation(  TBool aPinyinPhraseCreation )
-    {
-    if ( iPinyinPhraseCreation != aPinyinPhraseCreation )
-        {
-        iPinyinPhraseCreation = aPinyinPhraseCreation;
-        }
-    }
-// add for phrase creation
-TBool CAknFepManager::IsPhraseCreation() const
-    {
-    return iPhraseCreation;
-    }
-// add for phrase creation
-void CAknFepManager::PhraseCreation(  TBool aPhraseCreation )
-    {
-    if ( iPhraseCreation != aPhraseCreation )
-        {
-        iPhraseCreation = aPhraseCreation;
-        }
-    }
-// add for phrase creation
-TBool CAknFepManager::IsEntryPhrase() const
-    {
-    return iEntryPhrase;
-    }
-// add for phrase creation
-void CAknFepManager::EntryPhrase( TBool aEntryPhrase )
-    {
-    if ( iEntryPhrase != aEntryPhrase )
-        {
-        iEntryPhrase = aEntryPhrase;
-        }
-    }
-// add for phrase creation
-void CAknFepManager::EnableKeyStar( TBool aEnable )
-    {
-    if ( iKeyStar != aEnable )
-        {
-        iKeyStar = aEnable;
-        }
-    }
-// add for phrase creation
-TBool CAknFepManager::IsEnableKeyStar( ) const
-    {
-    return iKeyStar;
-    }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-	
-
-#ifdef __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-/**
-* @return   ETrue   If the number entry with long key press is supported on QWERTY keyboard.
-*/
-TBool CAknFepManager::LongPressNumberEntryOnQwerty() const
-    {
-    TBool value = EFalse;
-    if ( iSharedDataInterface )
-        {
-        value = iSharedDataInterface->LongPressNumberEntryOnQwerty();
-        }
-    return value;
-    }
-
-#endif // __ITI_LONGPRESS_NUM_SHIFT_COPYPASTE__
-
-
-void CAknFepManager::MultitapThroughSCTCharL(TCallBack aCallBack)
-    {
-    
-	TInt res = GetNumericSCTResID();
-    
-    if(!res)
-    	{
-    	return;
-    	}
-
-    if(!iNumericResourceTimer)
-        {        
-        iNumericResourceTimer = CChrMultiTapTimer::NewL(aCallBack);
-        }
-    
-    if(!iResourceString || iNumericResourceId !=res )
-        {
-        // either the resource string has not be created or the resource ID has changed
-        if(iResourceString)
-            {
-            delete iResourceString;
-            iResourceString = NULL;
-            }
-        iNumericResourceId = res;
-        TResourceReader reader;
-        CEikonEnv::Static()->CreateResourceReaderLC(reader,iNumericResourceId);
-        reader.ReadInt32(); // skip sct id 
-        iResourceString = reader.ReadHBufC16L();
-        CleanupStack::PopAndDestroy();
-        }
-    if(!iResourceString)
-        {
-        return;
-        }
-    if(iNumericResourceTimer->IsActive())
-        {
-        if( iChrCharIndex == iResourceString->Length() )
-            {
-            iChrCharIndex = 0;            
-            }
-    
-        iNumericResourceTimer->Cancel();
-        iNumericResourceTimer->After(KChrKeyMultitapTimeout);        
-        }
-    else
-        {
-        iChrCharIndex = 0;
-        iNumericResourceTimer->After(KChrKeyMultitapTimeout);
-        }    
-    TBuf<1> buf;
-    buf.Append((*iResourceString)[iChrCharIndex]); 
-    NewCharacterL(buf);
-    iChrCharIndex++;
-    	if (iResourceString->Length() == 1)
-		{
-		NumericResourceMultiTapTimerTimeoutL();
-		}
-
-    }
-TBool CAknFepManager::NumericResourceMultiTapTimerTimeoutL()
-    {
-    if(iNumericResourceTimer->IsActive())
-    	{
-    	iNumericResourceTimer->Cancel();
-    	if(IsFlagSet(CAknFepManager::EFlagInsideMultitapInlineEditingTransaction))
-	        {
-	        CommitInlineEditL();
-	        return ETrue;
-	        } 
-    	}       
-    return EFalse;    
-    }    
-    
-//-------------------------------------------------------------------
-
-//
-// CChrMultiTapTimer
-//
-
-// ---------------------------------------------------------------------------
-// CChrMultiTapTimer::NewL
-// 
-// ---------------------------------------------------------------------------
-// 
-CChrMultiTapTimer* CChrMultiTapTimer::NewL(TCallBack aCallback)
-    {
-    CChrMultiTapTimer* self = new(ELeave)CChrMultiTapTimer(aCallback);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop();    // self
-    return self;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CChrMultiTapTimer::CChrMultiTapTimer
-// 
-// ---------------------------------------------------------------------------
-// 
-CChrMultiTapTimer::CChrMultiTapTimer(TCallBack aCallback)
-:CTimer(EPriorityStandard), iCallback(aCallback)
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// CChrMultiTapTimer::ConstructL
-// 
-// ---------------------------------------------------------------------------
-// 
-void CChrMultiTapTimer::ConstructL()
-    {
-    CTimer::ConstructL();
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------------------------
-// CChrMultiTapTimer::After
-// 
-// ---------------------------------------------------------------------------
-// 
-void CChrMultiTapTimer::After(TTimeIntervalMicroSeconds32 aInterval)
-    {
-    if (IsActive())
-        {
-        Cancel();
-        }
-    CTimer::After(aInterval);
-    }
-
-// ---------------------------------------------------------------------------
-// CChrMultiTapTimer::RunL
-// 
-// ---------------------------------------------------------------------------
-// 
-void CChrMultiTapTimer::RunL()
-    {
-    iCallback.CallBack();
-    }
-
-TBool CAknFepManager::IsLanguageSupportPrediction()
-    {
-    TBool isLanguagugeSupportsPrediction = EFalse;
-    switch(iKeyboardType)
-        {
-        case EPtiKeyboardHalfQwerty:
-#ifdef __HALF_QWERTY_KEYPAD
-            isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternHalfQwertyPredictive); 
-#endif              
-            break;
-        case EPtiKeyboardQwerty4x12:
-        case EPtiKeyboardQwerty4x10:
-        case EPtiKeyboardQwerty3x11:
-        case EPtiKeyboardCustomQwerty:
-            isLanguagugeSupportsPrediction = (iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternQwertyPredictive);
-            break;
-        case EPtiKeyboardNone:
-        case EPtiKeyboard12Key:
-            isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive);
-            break;
-        default:
-            isLanguagugeSupportsPrediction = (!iQwertyInputMode) & (iLanguageCapabilities.iSupportsWesternPredictive);
-            break;    
-        }    
-    return isLanguagugeSupportsPrediction;
-    }
-#endif //RD_INTELLIGENT_TEXT_INPUT
-
-TBool CAknFepManager::IsAllowedKeymappingForNumberMode(TChar aChar) const
-    {
-    TBool response = EFalse;
-
-
-    switch ( iAknEditorNumericKeymap )
-        {
-        case EAknEditorStandardNumberModeKeymap:
-        case EAknEditorFixedDiallingNumberModeKeymap:
-        case EAknEditorSATNumberModeKeymap:
-        case EAknEditorSATHiddenNumberModeKeymap:
-            {
-            response = (aChar == '#');
-            }
-            break;
-        case EAknEditorCalculatorNumberModeKeymap:
-        case EAknEditorConverterNumberModeKeymap:
-            {
-            TLocale tLoc;
-            response = (aChar == tLoc.DecimalSeparator());
-            }
-            break;
-        case EAknEditorToFieldNumberModeKeymap:
-            {
-            response = (aChar == ';');
-            }
-            break;
-        case EAknEditorPlainNumberModeKeymap:
-        case EAknEditorReservedInternalUseKeymap:
-        default:
-            break;
-        }
-
-    return response;
-    }
-/**
-  * Return wether ipnut mode is change by press shift+space. 
-  * This is for half-qwerty.
-  */
-TBool CAknFepManager::IsChangeModeByShiftAndSpace()
-    {
-    return iShiftAndSpace;
-    }
-
-/**
-  * Set wether ipnut mode is change by press shift+space. 
-  * This is for half-qwerty.
-  */
-void CAknFepManager::SetChangeModeByShiftAndSpace( TBool aFlag )
-    {
-    iShiftAndSpace = aFlag;
-    }
-
-void CAknFepManager::HideExactWordPopUp()
-	{
-	iExactWordPopupContent->HidePopUp();	
-	}
-
-TBool CAknFepManager::IsExactWordPopUpShown()
-	{
-return iExactWordPopupContent->IsPopUpVisible();	
-	}
-void CAknFepManager::StopDisplayingMenuBar()
-    {
-    if (iEditMenuBar)
-        {
-        iEditMenuBar->StopDisplayingMenuBar();
-        iEditMenuBar = NULL;
-        }
-#ifdef __ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__    
-    if (iOptionsMenuBar)
-        {
-        iOptionsMenuBar->StopDisplayingMenuBar();
-        iOptionsMenuBar = NULL;
-        }
-#endif //__ITI_VIRTUAL_TOUCH_FIRST_GENERATION_SUPPORT__   
-    }
-
-void CAknFepManager::SetQwertyModeToInputcapbility()
-    {
-    if ( iSharedDataInterface->QwertyInputMode() )
-        {
-        SetExtendedInputCapabilities( ExtendedInputCapabilities() |
-            CAknExtendedInputCapabilities::EInputEditorQwertyInputActive  );
-        }
-    else
-        {
-        SetExtendedInputCapabilities( ExtendedInputCapabilities() &
-            ~CAknExtendedInputCapabilities::EInputEditorQwertyInputActive  );
-        }
-    }
-void CAknFepManager::SetExtendedInputCapabilities( TUint aCapabilities)
-    {
-    MObjectProvider* mop = iInputCapabilities.ObjectProvider();
-
-    if ( mop && iInputCapabilities.FepAwareTextEditor() )//IsFepAwareTextEditor()
-        {
-        CAknExtendedInputCapabilities* extendedInputCapabilities =
-        mop->MopGetObject( extendedInputCapabilities );
-
-        if ( extendedInputCapabilities )
-            {
-            extendedInputCapabilities->SetCapabilities( aCapabilities );
-            }
-        }
-
-    return;
-    }
-
-void CAknFepManager::PrepareFepAfterDialogExitL(TUid aFepUid)
-    {
-    // This ensures that on 3rd party fep change we do not have access to other fep variables
-    if (aFepUid != CCoeEnv::Static()->FepUid())
-        {
-		// In case the fep has changed, then leave
-        User::Leave(KErrNone);
-        }
-	// Once the editor which launches a dialog is destroyed, this flag is set
-	// In case we have any dialog launched we leave as the underneath editor is
-	// destroyed
-    if (IsExtendedFlagSet(EExtendedFlagEdwinEditorDestroyed))
-        {
-        if(!iFepAwareDialogParentEditor)
-            {
-			// For Eg: Messaging editor launches spell query which inturn launches
-			// SCT. Then don't clear the flag once we dismiss SCT because we even
-			// need to dismiss spell query dialog.
-            ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-            }       
-        User::Leave(KErrNone);
-        }
-    if(!iFepAwareDialogParentEditor)
-        {
-        ClearExtendedFlag(EExtendedFlagEdwinEditorDestroyed);
-        }    
-    }
-
-void CAknFepManager::PrepareFepForFepAwareDialogLaunch()
-    {
-    iFepAwareDialogParentEditor = EditorState();
-    SetExtendedFlag(EExtendedFlagFepAwareDialogLaunched);
-    }
-
-void CAknFepManager::PrepareFepAfterFepAwareDialogExitL(TUid aFepUid)
-    {
-    // This ensures that on 3rd party fep change we do not have access to other fep variables
-    if (aFepUid != CCoeEnv::Static()->FepUid())
-        {
-        // In case the fep has changed, then leave
-        User::Leave(KErrNone);
-        }    
-    iFepAwareDialogParentEditor = NULL;
-    ClearExtendedFlag(EExtendedFlagFepAwareDialogLaunched);
-    }
-
-void CAknFepManager::ConvertCharToKey(TChar aChar, TUint16& aKey) const
-    {
-    aKey = 0;
-	
-	if (!iPtiEngine)
-		return;
-		
-    CPtiCoreLanguage* lang = (CPtiCoreLanguage*)iPtiEngine->GetLanguage(iLanguageCapabilities.iInputLanguageCode);
-    TPtiEngineInputMode inputMode = iPtiEngine->InputMode();
-    
-    if (!lang)
-        return;
-
-    const TBool vietnamese = (iLanguageCapabilities.iInputLanguageCode == ELangVietnamese);
-
-    MPtiKeyMappings* map;
-    if (inputMode == EPtiEngineQwerty || inputMode == EPtiEngineQwertyPredictive)
-        {
-        map = lang->GetQwertyKeymappings();
-        }
-    else if( inputMode == EPtiEngineHalfQwerty || inputMode == EPtiEngineHalfQwertyPredictive )
-        {
-        map = lang->GetHalfQwertyKeymappings();
-        }
-    else    
-        {
-        map = lang->GetKeymappings();
-        }
-
-    if (!map)
-        {
-        return;
-        }   
-
-    TUint16 ch;
-    ch = (TUint16)map->KeyForCharacter(aChar); 
-    if (!ch && vietnamese)
-        {
-        // This may be Vietnamese tone mark or an accented character which isn't listed
-        // in keymappings. 
-        ch = RemapVietnameseAccentedCharacter(aChar);
-        }
-
-    aKey = ch;
-    }
-
-// ---------------------------------------------------------------------------
-// LOCAL METHODS
-// 
-// ---------------------------------------------------------------------------
-//     
-const TInt KVietKeyMarker = 0xffff;
-const TUint16 vietnameseAccents[] =
-    {
-    KVietKeyMarker, EPtiKey2, // For key 2, a-based    
-    0x00c1,	0x00c0, 0x1ea2, 0x00c3, 0x1ea0,
-    0x00e1, 0x00e0, 0x1ea3, 0x00e3, 0x1ea1,
-    0x0102, 0x1eae, 0x1eb0, 0x1eb2, 0x1eb4, 0x1eb6,
-    0x0103, 0x1eaf, 0x1eb1, 0x1eb3, 0x1eb5, 0x1eb7,
-    0x00c2, 0x1ea4, 0x1ea6, 0x1ea8, 0x1eaa, 0x1eac,
-    0x00e2, 0x1ea5, 0x1ea7, 0x1ea9, 0x1eab, 0x1ead, 
-
-    KVietKeyMarker, EPtiKey3, // For key 3, e-based    
-    0x00c9,	0x00c8, 0x1eba, 0x1ebc, 0x1eb8,
-    0x00e9, 0x00e8, 0x1ebb, 0x1ebd, 0x1eb9,
-    0x00ca, 0x1ebe, 0x1ec0, 0x1ec2, 0x1ec4, 0x1ec6,
-    0x00ea, 0x1ebf, 0x1ec1, 0x1ec3, 0x1ec5, 0x1ec7,
-
-    KVietKeyMarker, EPtiKey4, // For key 4, i-based    
-    0x00cd,	0x00cc, 0x1ec8, 0x0128, 0x1eca,
-    0x00ed, 0x00ec, 0x1ec9, 0x0129, 0x1ecb,
-    
-    KVietKeyMarker, EPtiKey6, // For key 6, o-based    
-    0x00d3,	0x00d2, 0x1ece, 0x00d5, 0x1ecc,
-    0x00f3, 0x00f2, 0x1ecf, 0x00f5, 0x1ecd,
-    0x00d4, 0x1ed0, 0x1ed2, 0x1ed4, 0x1ed6, 0x1ed8,
-    0x00f4, 0x1ed1, 0x1ed3, 0x1ed5, 0x1ed7, 0x1ed9,
-    0x01a0, 0x1eda, 0x1edc, 0x1ede, 0x1ee0, 0x1ee2,
-    0x01a1, 0x1edb, 0x1edd, 0x1edf, 0x1ee1, 0x1ee3, 
-    0
-    }; 
-
-
-// ---------------------------------------------------------------------------
-// RemapVietnameseAccentedCharacter
-// 
-// ---------------------------------------------------------------------------
-// 
-LOCAL_C TInt RemapVietnameseAccentedCharacter(TUint16 aChr)
-	{
-	// Check tone marks first.	
-	switch (aChr)
-		{
-		case 0x0301:
-		     return EPtiKey2;
-		case 0x0300:
-		     return EPtiKey3;
-		case 0x0309:
-		     return EPtiKey4;		     
-		case 0x0303:
-			 return EPtiKey5;			
-		case 0x0323:
-			 return EPtiKey6;						 
-		default:
-			break; 	
-		}	 
-	
-	TInt ret = 0;
-	
-	for (const TUint16* ptr = vietnameseAccents; *ptr != 0; ptr++)
-		{
-		if (*ptr == KVietKeyMarker)
-			{
-			ret = ptr[1];
-			ptr++;
-			}
-		else
-			{
-			if (*ptr == aChr)
-				{
-				break;
-				}
-			}			
-		}
-		
-	return ret;	 		
-	}
-
-// End of file