fep/aknfep/src/aknfepuiinputminiqwertypinyinphrasebase.cpp
changeset 40 2cb9bae34d17
parent 31 f1bdd6b078d1
child 49 37f5d84451bd
--- a/fep/aknfep/src/aknfepuiinputminiqwertypinyinphrasebase.cpp	Tue Jul 06 14:38:41 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2684 +0,0 @@
-/*
-* Copyright (c) 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 TAknFepInputStateStrokePhraseCreationBase definition.
- *
-*/
-
-
-
-
-
-
-
-
-
-
-
-
-// System includes
-#include <e32cmn.h>
-#include <PtiEngine.h>
-#include <PtiDefs.h>
-#include <avkon.rsg>
-#include <aknfep.rsg>
-#include <PtiUserDicEntry.h>
-#include <aknnotewrappers.h> //CAknWarningNote 
-// User includes
-#include "AknFepUIManagerStateInterface.h"
-#include "AknFepUICtrlInputPane.h"
-#include "AknFepUICtrlPinyinPopup.h"        //Pinyin phrase
-#include "aknfepuictrleditpane.h"           //pinyin phrase creation
-#include "AknFepUICtrlCandidatePane.h"
-#include "AknFepManager.h"
-#include "aknfepuiinputminiqwertypinyinphrasebase.h"
-
-// Constant definition
-const TInt KMaxPhraseCount = 50;
-const TInt KMaxPhraseCreationCount = 7;
-const TInt KMaxKeystrokeCount = 31;
-const TInt KInvalidToneMark = -1;
-const TUint16 KAutoDLT = 0x002E;
-const TUint16 KManualDLT = 0x0027;
-const TUint16 KPYa = 0x0061;
-const TUint16 KPYb = 0x0062;
-const TUint16 KPYc = 0x0063;
-const TUint16 KPYd = 0x0064;
-const TUint16 KPYe = 0x0065;
-const TUint16 KPYf = 0x0066;
-const TUint16 KPYg = 0x0067;
-const TUint16 KPYh = 0x0068;
-const TUint16 KPYi = 0x0069;
-const TUint16 KPYj = 0x006A;
-const TUint16 KPYk = 0x006B;
-const TUint16 KPYl = 0x006C;
-const TUint16 KPYm = 0x006D;
-const TUint16 KPYn = 0x006E;
-const TUint16 KPYo = 0x006F;
-const TUint16 KPYp = 0x0070;
-const TUint16 KPYq = 0x0071;
-const TUint16 KPYr = 0x0072;
-const TUint16 KPYs = 0x0073;
-const TUint16 KPYt = 0x0074;
-const TUint16 KPYu = 0x0075;
-const TUint16 KPYv = 0x0076;
-const TUint16 KPYw = 0x0077;
-const TUint16 KPYx = 0x0078;
-const TUint16 KPYy = 0x0079;
-const TUint16 KPYz = 0x007A;
-
-_LIT( KMaxPhraseNote,"\x8BCD\x7EC4\x6700\x957F\x4E3A\x4E03\x5B57" );
-
-const TMiniQwertyKeyMap StrokeMap[] =
-    {
-    {KPYa, EPtiKeyQwertyA},
-    {KPYb, EPtiKeyQwertyB},
-    {KPYc, EPtiKeyQwertyC},
-    {KPYd, EPtiKeyQwertyD},
-    {KPYe, EPtiKeyQwertyE},
-    {KPYf, EPtiKeyQwertyF},
-    {KPYg, EPtiKeyQwertyG},
-    {KPYh, EPtiKeyQwertyH},
-    {KPYi, EPtiKeyQwertyI},
-    {KPYj, EPtiKeyQwertyJ},
-    {KPYk, EPtiKeyQwertyK},
-    {KPYl, EPtiKeyQwertyL},
-    {KPYm, EPtiKeyQwertyM},
-    {KPYn, EPtiKeyQwertyN},
-    {KPYo, EPtiKeyQwertyO},
-    {KPYp, EPtiKeyQwertyP},
-    {KPYq, EPtiKeyQwertyQ},
-    {KPYr, EPtiKeyQwertyR},
-    {KPYs, EPtiKeyQwertyS},
-    {KPYt, EPtiKeyQwertyT},
-    {KPYu, EPtiKeyQwertyU},
-    {KPYv, EPtiKeyQwertyV},
-    {KPYw, EPtiKeyQwertyW},
-    {KPYx, EPtiKeyQwertyX},
-    {KPYy, EPtiKeyQwertyY},
-    {KPYz, EPtiKeyQwertyZ},
-    {KManualDLT, EPtiKeyQwertySpace}
-    };
-
-const TMiniQwertyToneMap PinyinToneMap[] =
-    {
-    {0x02C9, 1},
-    {0x02CA, 2},
-    {0x02C7, 3},
-    {0x02CB, 4},
-    {0x02D9, 5}
-    };
-
-// ---------------------------------------------------------------------------
-// TAknFepInputStateStrokePhraseCreationBase::TAknFepInputStateStrokePhraseCreationBase
-// C++ default constructor
-// ---------------------------------------------------------------------------
-//
-TAknFepInputMiniQwertyPinyinPhraseBase::TAknFepInputMiniQwertyPinyinPhraseBase(
-    MAknFepUIManagerStateInterface* aOwner,
-    MAknFepUICtrlContainerChinese* aUIContainer) :
-    TAknFepInputStateCandidateQwertyBaseChinesePhrase(aOwner, aUIContainer)
-    {
-    if (iOwner->PtiEngine()->InputMode() != EPtiEnginePinyinPhraseQwerty)
-        {
-        iOwner->PtiEngine()->SetInputMode(EPtiEnginePinyinPhraseQwerty);
-        }
-    iOwner->PtiEngine()->SetCandidatePageLength(KMaxPhraseCount);
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && uiContainer->CandidatePane()->IsFirstPage());
-    uiContainer->ShowVerticalScrollArrows(multiplePages);
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL
-// Handle system key press event.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyL(TInt aKey,
-    TKeyPressLength aLength)
-    {
-    //
-    switch (aKey)
-        {
-        case EKeyLeftShift:
-        case EKeyLeftCtrl:
-        case EKeyRightCtrl:
-        case EStdKeyDevice1:// CBA2    
-            {
-            iOwner->FepMan()->TryCloseUiL();
-            break;
-            }
-        case EKeyRightFunc:
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            break;
-            }
-        case EStdKeyLeftFunc: //tone mark.
-            {
-            HandlToneMarkL();
-            break;
-            }
-        case EStdKeyBackspace:
-            {
-            if (CheckKeyNeedRepeat(aLength) )
-                {
-                HandleKeyBackspaceL(aLength);
-                }
-            else
-                {
-                iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                }
-            break;
-            }
-        case EStdKeyEnter://Enter keypress.
-            {
-            HandlEnterKeyL();
-            break;
-            }
-        case EStdKeyDevice0:// CBA1
-        case EStdKeyDevice3:// CBASelect
-            {
-            HandleCommitL();
-            break;
-            }
-        case EStdKeyUpArrow:
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            break;
-            }
-        case EStdKeyDownArrow:
-            {
-            if (EMiniQwertyEdit == iState)
-                {
-                if (CheckFirstGroupStroke() )
-                    {
-                    iOwner->ChangeState(EEntry);
-                    }
-                }
-            else
-                {
-                iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                }
-            break;
-            }
-        case EStdKeyLeftArrow:
-            {
-            if (EMiniQwertyEdit == iState)
-                {
-                UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EManualChangeState );
-                MoveCursorLeft();
-                }
-            else
-                {
-                iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                }
-            break;
-            }
-        case EStdKeyRightArrow:
-            {
-            if (EMiniQwertyEdit == iState)
-                {
-                UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag( EManualChangeState );
-                MoveCursorRight();
-                }
-            else
-                {
-                iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                }
-            break;
-            }
-        case EStdKeySpace:
-            {
-            if (EShortKeyPress == aLength)
-                {
-                HandlSpaceKeyL();
-                break;
-                }
-            break;
-            }
-        default:
-            {
-            if (CAknFepFnKeyManager::EFnKeyNext == iOwner->FepMan()->FnKeyState() || CAknFepFnKeyManager::EFnKeyLock
-                    == iOwner->FepMan()->FnKeyState()
-                    || ( CAknFepFnKeyManager::EFnKeyDown == iOwner->FepMan()->FnKeyState() && iState != ECandidate ))
-                {
-                iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                return ETrue;
-                }
-            else
-                if (iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagShiftKeyDepressed)
-                        || iOwner->FepMan()->IsFlagSet(CAknFepManager::EFlagQwertyChrKeyDepressed))
-                    {
-                    iOwner->FepMan()->TryCloseUiL();
-                    return EFalse;
-                    }
-                else
-                    if ( (EShortKeyPress == aLength )
-                            && (iOwner->IsValidChineseInputKeyQwerty(aKey) ))
-                        {
-                        if (iState == ECandidate)
-                            {
-                            HandleKeyFromCandidateL(aKey, aLength);
-                            }
-                        else
-                            {
-                            HandleDefaultKeyL(aKey);
-                            }
-                        }
-                    else
-                        {
-                        iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                        }
-            break;
-            }
-        }
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::RefreshUI
-// Update input window.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::RefreshUI(TBool aRefresh)
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    // get cursor position
-    if (aRefresh)
-        {
-        TPoint baseLine;
-        TInt height(0);
-        TInt ascent(0);
-        TRAPD(ret,iOwner->FepMan()->GetScreenCoordinatesL(baseLine,height,ascent))
-        ;
-        if (ret == KErrNone)
-            {
-            uiContainer->SetContainerPosition(baseLine, height);
-            }
-        }
-    if ( (uiContainer->EditPaneWindow()->KeystrokeArray()->Count() > 0 ) || 
-        (uiContainer->EditPaneWindow()->PhraseArray()->Count() > 0 ) )
-        {
-        ShowInfoOnEEPPane();
-        SetWarningColor();
-        ShowInfoOnCandidatePane();
-        UpdateIndicator();
-        TRAP_IGNORE( ChangeCbaL() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckFirstGroupStroke
-// check the first group stroke of keystroke.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckFirstGroupStroke()
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    TInt stringBeforeLength = 0;
-    TInt stringAfterLength = 0;
-    TInt keyCode = 0;
-    TInt toneMark = 0;
-    if ( 0 == showKeystroke->Count() )
-        {
-        return EFalse;
-        }
-
-    if (KInvalidToneMark != ToneMark(showKeystroke->MdcaPoint( 0) ) )
-        {
-        return EFalse;
-        }
-
-    ClearPtiEngineKeystroke();
-    for (TInt i = 0; i < showKeystroke->Count(); ++i)
-        {
-        if (CheckSpellingDLT(showKeystroke->MdcaPoint(i) ) )
-            {
-            if ( 0 == i)
-                {
-                return EFalse;
-                }
-            else
-                {
-                return ETrue;
-                }
-            }
-        toneMark = ToneMark(showKeystroke->MdcaPoint(i) );
-        if (KInvalidToneMark != toneMark)
-            {
-            for (TInt j = 0; j < toneMark; ++j)
-                {
-                ptiengine->IncrementToneMark(ETrue);
-                TPtrC ptr0 = getCurrentLeastDLTSpell();
-                if (ptr0.Length() > 0)
-                    {
-                    if ( 0
-                            == ptr0.Mid( ptr0.Length() - 1, 1 ).Compare(showKeystroke->MdcaPoint(i) ) )
-                        {
-                        return ETrue;
-                        }
-                    }
-                }
-            TPtrC ptr = getCurrentLeastDLTSpell();
-            if ( 0 == ptr.Mid( ptr.Length() - 1, 1 ).Compare(showKeystroke->MdcaPoint(i) ) )
-                {
-                return ETrue;
-                }
-            else
-                {
-                return EFalse;
-                }
-            }
-        GetKeystrokeCode(keyCode, showKeystroke->MdcaPoint(i) );
-        stringBeforeLength = getCurrentLeastDLTSpell().Length();
-        ptiengine->AppendKeyPress((TPtiKey)keyCode).Length();
-        stringAfterLength = getCurrentLeastDLTSpell().Length();
-        //the keystroke is invalid.
-        if (stringBeforeLength == stringAfterLength)
-            {
-            return EFalse;
-            }
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandlEnterKey
-// Handle Enter key press
-// ---------------------------------------------------------------------------
-//
-TInt TAknFepInputMiniQwertyPinyinPhraseBase::GetCursorPos()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    TInt pos = 0;
-    TInt count = 0;
-    TBuf<1> autoDLT;
-    autoDLT.Append(KAutoDLT);
-
-    if ( 0 == index)
-        {
-        pos = phraseCount;
-        }
-    else
-        if (keystroke->Count() == index)
-            {
-            pos = phraseCount + showKeystroke->Count();
-            }
-        else
-            {
-            for (TInt i = 0; i < showKeystroke->Count(); ++i)
-                {
-                if ( 0 != showKeystroke->MdcaPoint( i ).Compare(autoDLT) )
-                    {
-                    count = count + 1;
-                    }
-                if (count == index)
-                    {
-                    pos = phraseCount + i + 1;
-                    break;
-                    }
-                }
-            }
-    return pos;
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandlEnterKeyL
-// Handle Enter key press
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandlEnterKeyL()
-    {
-    TBuf<KMaxKeystrokeCount> currentText;
-    MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow();
-    CDesCArrayFlat* showkeyStoke = editpane->ShowKeystrokeArray();
-    CDesCArrayFlat* phraseArray = editpane->PhraseArray();
-    TInt phraseCount = phraseArray->Count();
-    TInt keyStrokeCount = showkeyStoke->Count();
-    TInt i = 0;
-    TBuf<1> autoDLT;
-    autoDLT.Append(KAutoDLT);
-
-    for (i = 0; i < phraseCount; i++)
-        {
-        currentText.Append(phraseArray->MdcaPoint(i) );
-        }
-    for (i = 0; i < keyStrokeCount; i++)
-        {
-        currentText.Append(showkeyStoke->MdcaPoint(i) );
-        }
-
-    while (currentText.Find(autoDLT)> 0)
-        {
-        currentText.Replace(currentText.Find(autoDLT), 1, KNullDesC);
-        }
-
-    if (currentText.Length() )
-        {
-        MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-        fepMan->NewTextL(currentText);
-        fepMan->CommitInlineEditL();
-        if (keyStrokeCount == 0 && currentText.Length() > 1)
-            {
-            AddPhraseToDB(currentText);
-            }
-
-        UIContainer()->EditPaneWindow()->ResetAllArray();
-        UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-
-        if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull))
-            {
-            fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
-            iOwner->FepMan()->TryCloseUiL();
-            }
-        else
-            {
-            iOwner->FepMan()->TryCloseUiL();
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandlToneMarkL
-// Handle tone mark key press.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandlSpaceKeyL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    TBuf<1> manualDLT;
-    TBuf<1> autoDLT;
-    manualDLT.Append( KManualDLT );
-    autoDLT.Append( KAutoDLT );
-    
-    TBool firstGroup = CheckFirstGroupStroke();
-
-    keystrokeArray->InsertL(index, manualDLT);
-    editPane->SetCursorIndexOfKeystroke(index + 1);
-    AnalyseL();
-    
-    if ( editPane->ShowKeystrokeArray()->Count() > KMaxKeystrokeCount )
-        {
-        keystrokeArray->Delete( index );
-        editPane->SetCursorIndexOfKeystroke( index );
-        iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-        AnalyseL();
-        return;
-        }
-    
-    //Auto change from EMiniQwertyEdit state to EEntry state. 
-    if (EMiniQwertyEdit == iState)
-        {
-        if ( ( !firstGroup ) && CheckFirstGroupStroke() )
-            {
-            if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() )
-                {
-                RefreshUI();
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(ECandidate);
-                }
-            else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() )
-                {
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(EEntry);
-                }
-            else
-                {
-                RefreshUI();
-                }
-            return;
-            }
-        }
-
-    //Auto change from EEntry state to EMiniQwertyEdit state.
-    if (EEntry == iState)
-        {
-        if ( !CheckFirstGroupStroke() )
-            {
-            editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput);
-            editPane->SetChangeState(ETrue);
-            iOwner->ChangeState(EMiniQwertyEdit);
-            return;
-            }
-        }
-
-    RefreshUI();
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandlToneMarkL
-// Handle tone mark key press.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandlToneMarkL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    TBool firstGroup = CheckFirstGroupStroke();
-    AddToneMarkL();
-    AnalyseL();
-    //Auto change from EMiniQwertyEdit state to EEntry state. 
-    if (EMiniQwertyEdit == iState)
-        {
-        if ( ( !firstGroup ) && CheckFirstGroupStroke() )
-            {
-            if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() )
-                {
-                RefreshUI();
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(ECandidate);
-                }
-            else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() )
-                {
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(EEntry);
-                }
-            else
-                {
-                RefreshUI();
-                }
-            return;
-            }
-        }
-
-    //Auto change from EEntry state to EMiniQwertyEdit state.
-    if (EEntry == iState)
-        {
-        if ( !CheckFirstGroupStroke() )
-            {
-            editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput);
-            editPane->SetChangeState(ETrue);
-            iOwner->ChangeState(EMiniQwertyEdit);
-            return;
-            }
-        }
-    RefreshUI();
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckManualDelimiter
-// Check the delimiter that wether is manual delimiter.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckManualDelimiter(
-    const TInt aCount, const TDesC& aKeystroke)
-    {
-    TInt keyCount = 0;
-    for (TInt i = 0; i < aKeystroke.Length(); ++i)
-        {
-        if (KManualDLT != aKeystroke[i])
-            {
-            keyCount = keyCount + 1;
-            }
-        if (aCount == keyCount)
-            {
-            break;
-            }
-        }
-
-    if (keyCount != aCount)
-        {
-        return EFalse;
-        }
-
-    if (aKeystroke.Length() == keyCount)
-        {
-        return EFalse;
-        }
-
-    if (KManualDLT != aKeystroke[keyCount])
-        {
-        return EFalse;
-        }
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingL
-// Analyse Pinyin spelling.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingL(
-    const TDesC& aKeystroke, const TDesC& aSpelling,
-    CDesCArrayFlat* aShowKeystroke)
-    {
-    TInt count = 0;
-    TBuf<1> manualDLT;
-    TBuf<1> autoDLT;
-    manualDLT.Append(KManualDLT);
-    autoDLT.Append(KAutoDLT);
-
-    if ( 0 == aSpelling.Compare(aKeystroke) )
-        {
-        for (TInt i = 0; i < aKeystroke.Length(); ++i)
-            {
-            aShowKeystroke->AppendL(aKeystroke.Mid(i, 1) );
-            }
-        return;
-        }
-
-    for (TInt i = 0; i < aSpelling.Length(); ++i)
-        {
-        if (KManualDLT == aSpelling[i])
-            {
-            //Manual delimiter
-            if (CheckManualDelimiter(count, aKeystroke) )
-                {
-                aShowKeystroke->AppendL(manualDLT);
-                }
-            else
-                {
-                aShowKeystroke->AppendL(autoDLT);
-                }
-            }
-        else
-            {
-            aShowKeystroke->AppendL(aSpelling.Mid(i, 1) );
-            count = count + 1;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddToneMarkL
-// Analyse spelling after user press tone mark.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddToneMarkL(
-                                               TInt aI,
-                                               TInt aToneMarkCount,
-                                               CDesCArrayFlat* aKeystroke,
-                                               CDesCArrayFlat* aShowKeystroke )
-    {
-    TBuf<1> atuoDLT;
-    TBuf<1> manualDLT;
-    atuoDLT.Append(KAutoDLT);
-    manualDLT.Append(KManualDLT);
-    if ( CheckSpellingDLT( aKeystroke->MdcaPoint( aI - 1 ) ) || 
-        ( KInvalidToneMark != ToneMark( aKeystroke->MdcaPoint( aI - 1 ) ) ) )
-        {
-        aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) ); 
-        }
-    else
-        {
-        if ( CheckSpellingAddToneMarkToPTIL( aToneMarkCount ) )
-            {
-            aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI - 1 ) ); 
-            aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-            }
-        else
-            {
-            if ( aShowKeystroke->Count() == 0 )
-                {
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI - 1 ) ); 
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-                }
-            else
-                {
-                if ( ( !CheckSpellingDLT(aShowKeystroke->MdcaPoint( 
-                    aShowKeystroke->Count() - 1 ) ) ) && 
-                    ( KInvalidToneMark == ToneMark( aShowKeystroke->
-                        MdcaPoint( aShowKeystroke->Count() - 1 ) ) ) )
-                    {
-                    aShowKeystroke->AppendL( atuoDLT );
-                    }
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI - 1 ) ); 
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddKeyL
-// Analyse spelling after user press key that is not tone mark.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseSpellingAddKeyL(
-                                            TInt& aI,
-                                            TInt aDelimterPos,
-                                            CDesCArrayFlat* aKeystroke,
-                                            CDesCArrayFlat* aShowKeystroke )
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    TBuf<1> atuoDLT;
-    TBuf<1> manualDLT;
-    atuoDLT.Append(KAutoDLT);
-    manualDLT.Append(KManualDLT);
-    if ( 0 == aI )
-        {
-        if ( aI + 1 < aKeystroke->Count() )
-            {
-            if ( ( KInvalidToneMark != ToneMark( aKeystroke->MdcaPoint( aI + 1 ) ) ) ||
-                ( CheckSpellingDLT( aKeystroke->MdcaPoint( aI + 1 ) ) ) )
-                {
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI + 1 ) );
-                aI = aI + 1;
-                }
-            else
-                {
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-                aShowKeystroke->AppendL( atuoDLT );
-                }
-            }
-        else
-            {
-            aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-            }
-        }
-    else if ( aI + 1 == aKeystroke->Count() )
-        {
-        if ( ( 1 == aDelimterPos ) || ( -1 == aDelimterPos ) )
-            {
-            if ( ( !CheckSpellingDLT( aShowKeystroke->
-                    MdcaPoint( aShowKeystroke->Count() - 1 ) ) &&
-                ( KInvalidToneMark == ToneMark( aShowKeystroke->
-                    MdcaPoint( aShowKeystroke->Count() - 1 ) ) ) ) )
-                {
-                aShowKeystroke->AppendL( atuoDLT );
-                }
-            aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-            }
-        else
-            {
-            for ( TInt ii = 0; ii < aDelimterPos - 1; ++ii )
-                {
-                aShowKeystroke->Delete( aShowKeystroke->Count() - 1 );
-                }
-            if ( ( !CheckSpellingDLT( aShowKeystroke->
-                    MdcaPoint( aShowKeystroke->Count() - 1 ) ) ) &&
-                ( KInvalidToneMark == ToneMark( aShowKeystroke->MdcaPoint( 
-                    aShowKeystroke->Count() - 1 ) ) ) )
-                {
-                aShowKeystroke->AppendL( atuoDLT );
-                }
-            aI = aI - aDelimterPos;
-            }
-        }
-    else
-        {
-        if ( -1 == aDelimterPos )
-            {
-            if ( ( !CheckSpellingDLT( aShowKeystroke->MdcaPoint( 
-                    aShowKeystroke->Count() - 1 ) ) ) &&
-                ( KInvalidToneMark == ToneMark( aShowKeystroke->MdcaPoint( 
-                    aShowKeystroke->Count() - 1 ) ) ) )
-                {
-                aShowKeystroke->AppendL( atuoDLT );
-                }
-            if ( 0 == getCurrentLeastDLTSpell().Length() )
-                {
-                aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI ) );
-                if ( KInvalidToneMark != ToneMark( aKeystroke->MdcaPoint( aI + 1 ) ) ) 
-                    {
-                    aShowKeystroke->AppendL( aKeystroke->MdcaPoint( aI + 1 ) );
-                    aI = aI + 1;                            
-                    }
-                }
-            else
-                {
-                aI = aI - 1;
-                }
-            }
-        else
-            {
-            for ( TInt ii = 0; ii < aDelimterPos - 1; ++ii )
-                {
-                aShowKeystroke->Delete( aShowKeystroke->Count() - 1 );
-                }
-            if ( ( !CheckSpellingDLT( aShowKeystroke->MdcaPoint( 
-                    aShowKeystroke->Count() - 1 ) ) ) &&
-                ( KInvalidToneMark == ToneMark( aShowKeystroke->MdcaPoint( 
-                    aShowKeystroke->Count() - 1 ) ) ) )
-                {
-                aShowKeystroke->AppendL( atuoDLT );
-                }
-            aI = aI - aDelimterPos;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseL
-// Analyse key storke.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::AnalyseL()
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    //user pressed keystroke sequence
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    //stroke to be shown
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    TInt start = 0;
-    TInt toneMarkCount = KInvalidToneMark;
-    TInt delimiterPosition = 0;
-    showKeystroke->Reset();
-    TBuf<1> atuoDLT;
-    TBuf<1> manualDLT;
-    atuoDLT.Append(KAutoDLT);
-    manualDLT.Append(KManualDLT);
-    TBuf<KMaxKeystrokeCount> keyTmp;
-
-    if ( keystroke->Count() == 0 )
-        {
-        return;
-        }
-
-    //if the first keystroke is delimiter or ToneMark, analyse frome the next one
-    if ( CheckSpellingDLT( keystroke->MdcaPoint( 0 ) ) || 
-        ( KInvalidToneMark != ToneMark( keystroke->MdcaPoint( 0 ) ) ) )
-        {
-        showKeystroke->AppendL(keystroke->MdcaPoint( 0 ) );
-        start = 1;
-        }
-    
-    ClearPtiEngineKeystroke();
-    
-    for ( TInt i = start; i < keystroke->Count(); ++i )
-        {
-        toneMarkCount = ToneMark( keystroke->MdcaPoint( i ) );
-        // current keystroke is delimiter
-        if ( CheckSpellingDLT( keystroke->MdcaPoint( i ) ) )
-            {
-            showKeystroke->AppendL(keystroke->MdcaPoint( i ) );
-            ClearPtiEngineKeystroke();
-            }
-        // current keystroke is tone mark
-        else if ( KInvalidToneMark != toneMarkCount )
-            {
-            AnalyseSpellingAddToneMarkL( i, toneMarkCount, keystroke, showKeystroke );
-            ClearPtiEngineKeystroke();
-            }
-        // current keystroke is A - Z
-        else
-            {
-            delimiterPosition = CheckSpellingAddKeyToPTIL( keystroke->MdcaPoint( i ) );
-            if ( 0 == delimiterPosition )
-                {
-                if ( ( 0 != i ) && 
-                    ( 1 == this->getCurrentLeastDLTSpell().Length() ) )
-                    {
-                    if ( ( !CheckSpellingDLT( showKeystroke->
-                        MdcaPoint( showKeystroke->Count() - 1 ) ) ) && 
-                        ( KInvalidToneMark == ToneMark( showKeystroke->
-                            MdcaPoint( showKeystroke->Count() - 1 ) ) ) )
-                        {
-                        showKeystroke->AppendL( atuoDLT );
-                        }
-                    }
-                if ( i + 1 < keystroke->Count() ) 
-                    {
-                    if ( KInvalidToneMark == ToneMark( keystroke->MdcaPoint( i + 1 ) ) )
-                        {
-                        showKeystroke->AppendL( keystroke->MdcaPoint( i ) );
-                        }
-                    }
-                else
-                    {
-                    showKeystroke->AppendL( keystroke->MdcaPoint( i ) );
-                    }
-                }
-            else
-                {
-                AnalyseSpellingAddKeyL( i, delimiterPosition, keystroke, showKeystroke );
-                ClearPtiEngineKeystroke();
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommitL
-// Handle CBA1 or select event.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommitL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    TInt keyCount = editPane->KeystrokeArray()->Count();
-    TInt showKeyCount = editPane->ShowKeystrokeArray()->Count();
-    CDesCArrayFlat* phrase = editPane->PhraseArray();
-    TInt cdtCount = uiContainer->CandidatePane()->CandidateArray()->Count();
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-
-    if (EMiniQwertyEdit == iState)
-        {
-        if ( ( showKeyCount > 0 ) && (cdtCount > 0 ) )
-            {
-            UIContainer()->EditPaneWindow()->SetChangeState(ETrue);
-            iOwner->ChangeState(ECandidate);
-            return;
-            }
-
-        if ( keyCount > 0 )
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            return;
-            }
-        }
-
-    if ( ( 0 == keyCount ) && (phrase->Count() <= 1 ) )
-        {
-        iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-        return;
-        }
-
-    if ( ( 0 == keyCount ) && (phrase->Count() > 1 ) )
-        {
-        TBuf<KMaxPhraseCreationCount> phraseCreated;
-        for (TInt i = 0; ( (i < phrase->Count() ) && (i
-                < KMaxPhraseCreationCount ) ); ++i )
-            {
-            phraseCreated.Append(phrase->MdcaPoint( i ) );
-            AddPhraseToDB(phraseCreated);
-            }
-        fepMan->NewTextL(phraseCreated);
-        fepMan->CommitInlineEditL();
-        if ( !UIContainer()->EditPaneWindow()->GetPhraseCreationFlag() )
-            {
-            UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-            iOwner->PtiEngine()->SetPredictiveChineseChar(phraseCreated);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-            UIContainer()->EditPaneWindow()->SetChangeState(ETrue);
-            if (EPtiKeyboardQwerty4x10 == iOwner->FepMan()->KeyboardLayout() ||
-                 EPtiKeyboardQwerty3x11 == iOwner->FepMan()->KeyboardLayout() )
-                {
-                iOwner->ChangeState(EPredictiveCandidate);
-                }
-#endif
-            }
-        else
-            {
-            UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-            iOwner->FepMan()->TryCloseUiL();
-            }
-        return;
-        }
-
-    TPtrC text = UIContainer()->CandidatePane()->CurrentPhraseCandidate();
-    if (text.Length() == 0)
-        {
-        return;
-        }
-
-    if ( !CommitInlineEEPL(text) )
-        {
-        DoActionAfterCommit();
-        }
-    else
-        {
-        if ( !CheckFirstGroupStroke() )
-            {
-            if ( iState == EEntry )
-                {
-                editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput);
-                }
-            else
-                {
-                editPane->SetAutoChangeStateFlag(EAutoChangeStateFromCandidate);
-                }
-            iOwner->ChangeState(EMiniQwertyEdit);
-            return;
-            }
-        else
-            {
-            if ( iState == EEntry )
-                {
-                UIContainer()->EditPaneWindow()->SetChangeState( ETrue );
-                iOwner->ChangeState( ECandidate );
-                }
-            }
-        AnalyseL();
-        RefreshUI();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyBackspaceL
-// Handle KeyBackspace event.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyBackspaceL(
-    TKeyPressLength aLength)
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TBool firstGroup = CheckFirstGroupStroke();
-
-    if ( ( 0 == index ) && (phraseCount != 0 ) )
-        {
-        RevertPhraseToKeystrokeL();
-        }
-    else
-        if ( ( 0 == index ) && (keystroke->Count() > 0 ) )
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            }
-        else
-            {
-            if ( !DeleteKeystrokeL() )
-                {
-                iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-                }
-            }
-
-    //if the keystroke is null and phrase is null then close input window.
-    if ( ( 0 == phraseCount ) && (keystroke->Count() == 0 ))
-        {
-        iOwner->FepMan()->TryCloseUiL(); //no more keys, close the UI.
-        if (aLength == ELongKeyPress)
-            {
-            iOwner->FepMan()->SetLongClearAfterCloseUI(ETrue);
-            }
-        return;
-        }
-
-    AnalyseL();
-    //Auto change from EMiniQwertyEdit state to EEntry state. 
-    if (EMiniQwertyEdit == iState)
-        {
-        if ( ( !firstGroup ) && CheckFirstGroupStroke() )
-            {
-            if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() )
-                {
-                RefreshUI();
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(ECandidate);
-                }
-            else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() )
-                {
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(EEntry);
-                }
-            else
-                {
-                RefreshUI();
-                }
-            return;
-            }
-        }
-
-    //Auto change from EEntry state to EMiniQwertyEdit state.
-    if (EEntry == iState)
-        {
-        if ( (firstGroup ) && ( !CheckFirstGroupStroke() ))
-            {
-            editPane->SetChangeState(EFalse);
-            editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput);
-            iOwner->ChangeState(EMiniQwertyEdit);
-            return;
-            }
-        }
-
-    RefreshUI();
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleDefaultKeyL
-// Handle default key press event.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandleDefaultKeyL(TInt aKey)
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    TBool firstGroup = CheckFirstGroupStroke();
-
-    if ( !AddKeystrokeL(aKey) )
-        {
-        iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-        return;
-        }
-
-    AnalyseL();
-
-    //Auto change from EMiniQwertyEdit state to EEntry state. 
-    if (EMiniQwertyEdit == iState)
-        {
-        if ( ( !firstGroup ) && CheckFirstGroupStroke() )
-            {
-            if ( EAutoChangeStateFromCandidate == editPane->GetAutoChangeStateFlag() )
-                {
-                RefreshUI();
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(ECandidate);
-                }
-            else if ( EAutoChangeStateFromInput == editPane->GetAutoChangeStateFlag() )
-                {
-                editPane->SetChangeState(ETrue);
-                iOwner->ChangeState(EEntry);
-                }
-            else
-                {
-                RefreshUI();
-                }
-            return;
-            }
-        }
-
-    //Auto change from EEntry state to EMiniQwertyEdit state.
-    if (EEntry == iState)
-        {
-        if ( !CheckFirstGroupStroke() )
-            {
-            editPane->SetAutoChangeStateFlag(EAutoChangeStateFromInput);
-            editPane->SetChangeState(ETrue);
-            iOwner->ChangeState(EMiniQwertyEdit);
-            return;
-            }
-        }
-
-    RefreshUI();
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnEEP
-// Show the showinfo on the EEP ctrl.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnEEPPane()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray();
-    CDesCArrayFlat* phrase = editPane->PhraseArray();
-    TBuf<KMaxKeystrokeCount> showInfo;
-    TBuf<KMaxKeystrokeCount> keyBuf;
-    for (TInt i = 0; i < phrase->Count(); ++i)
-        {
-        showInfo.Append(phrase->MdcaPoint(i) );
-        }
-
-    for (TInt ii = 0; ii < showKeystroke->Count(); ++ii)
-        {
-        showInfo.Append(showKeystroke->MdcaPoint(ii) );
-        }
-
-    for (TInt j = 0; j < keystrokeArray->Count(); ++j)
-        {
-        keyBuf.Append(keystrokeArray->MdcaPoint(j) );
-        }
-
-    editPane->SetTextForZhuyin(showInfo, GetCursorPos(), phrase->Count(),
-        keyBuf, editPane->GetCursorIndexOfKeystroke() );
-
-    if (iState == ECandidate)
-        {
-        editPane->DisableCursor();
-        }
-    else
-        if (iState == EEntry)
-            {
-            editPane->EnableCursor();
-            editPane->DeactiveCursor();
-            }
-        else
-            if (iState == EMiniQwertyEdit)
-                {
-                editPane->EnableCursor();
-                editPane->ActiveCursor();
-                }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnEEP
-// Show the showinfo on the EEP ctrl.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::ShowInfoOnCandidatePane()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    CDesCArrayFlat* phrase = uiContainer->CandidatePane()->CandidateArray();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    if (KMaxPhraseCreationCount == editPane->PhraseArray()->Count() )
-        {
-        phrase->Reset();
-        TRAP_IGNORE( phrase->AppendL( KMaxPhraseNote ) );
-        uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages();
-        uiContainer->CandidatePane()->SetCandidateBuffer();
-        uiContainer->Enable(ETrue);
-        uiContainer->ShowHorizontalScrollArrows(EFalse);
-        uiContainer->ShowVerticalScrollArrows(EFalse);
-        }
-
-    TRAP_IGNORE( GetCandidateL() );
-    if (phrase->Count() > 0)
-        {
-        // layout candidate and fill candidate buffer for first display page
-        uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages();
-        uiContainer->CandidatePane()->SetCandidateBuffer();
-        uiContainer->Enable(ETrue);
-        TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && uiContainer->CandidatePane()->IsFirstPage());
-        uiContainer->ShowVerticalScrollArrows(multiplePages);
-        if (iState == EMiniQwertyEdit)
-            {
-            UIContainer()->FocusCandidatePane(EFalse);
-            }
-        else
-            {
-            UIContainer()->FocusCandidatePane(ETrue);
-            UIContainer()->CandidatePane()->SelectFirstPhrase();
-            }
-        }
-    else
-        {
-        uiContainer->CandidatePane()->SplitPhraseCandidatesIntoPages();
-        uiContainer->CandidatePane()->SetCandidateBuffer();
-        uiContainer->Enable(ETrue);
-        uiContainer->ShowHorizontalScrollArrows(EFalse);
-        uiContainer->ShowVerticalScrollArrows(EFalse);
-        uiContainer->SetControlInVisible( EFalse );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::GetShowKeystroke
-//Handle horizontal navigation.
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::GetShowKeystroke(TInt aKey,
-    TDes& aKeystroke)
-    {
-    TInt count = sizeof(StrokeMap )/sizeof(StrokeMap[0] );
-    for (TInt i = 0; i < count; i++)
-        {
-        if (aKey == StrokeMap[i].iKeyCode)
-            {
-            aKeystroke.Append(StrokeMap[i].iValue);
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleHorizontalNavigation
-//Handle horizontal navigation.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::HandleHorizontalNavigation(
-    TInt aKey)
-    {
-    MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane();
-    TBool response = EFalse;
-
-    // Do navigation...
-    if (aKey == EStdKeyLeftArrow)
-        {
-        if (!candidatePane->SelectPrev())
-            {
-            candidatePane->SetCandidateBuffer();
-            candidatePane->SelectLastPhrase();
-            }
-        response = ETrue;
-        }
-    else
-        if (aKey == EStdKeyRightArrow)
-            {
-            if (!candidatePane->SelectNext())
-                {
-                candidatePane->SetCandidateBuffer();
-                candidatePane->SelectFirstPhrase();
-                }
-            response = ETrue;
-            }
-
-    if (response)
-        {
-        UpdateIndicator();
-        }
-
-    return response;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::UpdateIndicator
-// Update Indicator.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::UpdateIndicator()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlCandidatePane* candidatePane = uiContainer->CandidatePane();
-
-    if (candidatePane->IsFirstPage())
-        {
-        uiContainer->CandidatePane()->ShowUpScrollArrows(EFalse);
-        }
-    else
-        {
-        uiContainer->CandidatePane()->ShowUpScrollArrows(ETrue);
-        }
-
-    if (candidatePane->IsLastPage())
-        {
-        uiContainer->CandidatePane()->ShowDownScrollArrows(EFalse);
-        }
-    else
-        {
-        uiContainer->CandidatePane()->ShowDownScrollArrows(ETrue);
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    if (iOwner->FepMan()->KeyboardLayout() == EPtiKeyboardQwerty4x10)
-        {
-        if (candidatePane->VisibleCandidateCount()==1)
-            {
-            uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse);
-            uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse);
-            }
-        else
-            {
-            uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue);
-            uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue);
-            }
-        }
-    else
-        {
-#endif
-        if (candidatePane->SelectedIndex() == 0
-                && candidatePane->IsFirstPage() )
-            {
-            uiContainer->CandidatePane()->ShowLeftScrollArrows(EFalse);
-            }
-        else
-            {
-            uiContainer->CandidatePane()->ShowLeftScrollArrows(ETrue);
-            }
-
-        if (candidatePane->IsLastPage() && (candidatePane->SelectedIndex()
-                == candidatePane->VisibleCandidateCount() - 1))
-            {
-            uiContainer->CandidatePane()->ShowRightScrollArrows(EFalse);
-            }
-        else
-            {
-            uiContainer->CandidatePane()->ShowRightScrollArrows(ETrue);
-            }
-        }
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    }
-#endif    
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::DeleteMoreKeystrokeL
-// Delete more keystroke than max leng.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::DeleteMoreKeystrokeL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    TBuf<1> autoDLT;
-    autoDLT.Append( KAutoDLT );
-    AnalyseL();
-    // the count keystroke more than max length.
-    TInt count = showKeystroke->Count() - KMaxKeystrokeCount; 
-    
-    for ( TInt i = 0; i < count; ++i )
-        {
-        if ( 0 != showKeystroke->MdcaPoint( showKeystroke->Count() - 1 ).Compare( autoDLT ) )
-            {
-            showKeystroke->Delete( showKeystroke->Count() - 1 );
-            keystroke->Delete( keystroke->Count() - 1 );
-            }
-        }
-    
-    if ( index > keystroke->Count() )
-        {
-        editPane->SetCursorIndexOfKeystroke( keystroke->Count() );
-        }    
-    }
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::DeleteKeystrokeL
-// Delete current keystroke.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::DeleteKeystrokeL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    TInt showKeyCount = editPane->ShowKeystrokeArray()->Count();
-    
-    if ( ( 0 == index ) || (keystroke->Count() == 0 ))
-        {
-        return EFalse;
-        }
-    if ( 1 == index )
-        {
-        editPane->Reset();
-        }
-    if (index >= keystroke->Count() )
-        {
-        keystroke->Delete(keystroke->Count() - 1);
-        editPane->SetCursorIndexOfKeystroke(keystroke->Count() );
-        }
-    else
-        {
-        keystroke->Delete(index - 1);
-        editPane->SetCursorIndexOfKeystroke(index - 1);
-        }
-    
-    if ( showKeyCount >= KMaxKeystrokeCount - 1 )
-        {
-        DeleteMoreKeystrokeL();
-        }
-    
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AddPhraseToDB
-// Add phrase to DB.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::AddPhraseToDB(
-    const TDesC& aPhraseAdd)
-    {
-    TPtiUserDictionaryEntry addUdbEntry(aPhraseAdd);
-    //Add the phrase to the DB by PTI Engine
-    iOwner->PtiEngine()->AddUserDictionaryEntry(addUdbEntry);
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::RefreshCandidate
-// Refresh candidate
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::RefreshCandidate()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    uiContainer->CandidatePane()->SetCandidateBuffer();
-    uiContainer->Enable(ETrue);
-
-    TBool multiplePages = !(uiContainer->CandidatePane()->IsLastPage() && 
-            uiContainer->CandidatePane()->IsFirstPage());
-    uiContainer->ShowVerticalScrollArrows(multiplePages);
-
-    uiContainer->CandidatePane()->SelectFirstPhrase();
-    UpdateIndicator();
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckKeyNeedRepeat
-//  Check key whether need repeat.
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckKeyNeedRepeat(
-    TKeyPressLength aLength)
-    {
-    MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow();
-    if (editPane->IsChangeState() && aLength == ELongKeyPress)
-        {
-        return EFalse;
-        }
-    else
-        {
-        editPane->SetChangeState(EFalse);
-        }
-    return ETrue;
-    }
-
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CommitInlineEEPL
-// Commint text to EEP or editor
-// ---------------------------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CommitInlineEEPL(
-    const TDesC& aDes)
-    {
-    TInt charCount = aDes.Length();
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-    MAknFepUICtrlEditPane* editpane = UIContainer()->EditPaneWindow();
-    CDesCArrayFlat* showkeyStoke = editpane->ShowKeystrokeArray();
-    CDesCArrayFlat* keyStoke = editpane->KeystrokeArray();
-    CDesCArrayFlat* phraseArray = editpane->PhraseArray();
-    CDesCArrayFlat* phraseShowKeyStroke =
-            editpane->PhraseShowKeyStrokeArray();
-    TBuf<KMaxKeystrokeCount> buf;
-    TBuf<1> autoDLT;
-    autoDLT.Append(KAutoDLT);
-
-    if (phraseArray->Count() == 0)
-        {
-        editpane->SetPhraseCreationFlag(EFalse);
-        }
-    phraseArray->AppendL(aDes);
-
-    TInt delCount = 0;
-    for (TInt i = 0; i < showkeyStoke->Count() && charCount
-            && keyStoke->Count() != 0; i++)
-        {
-        TPtrC showptr = showkeyStoke->MdcaPoint(i);
-        TPtrC ptr = keyStoke->MdcaPoint( 0);
-        if (CheckSpellingDLT(showptr) || (KInvalidToneMark
-                != ToneMark(showptr) ))
-            {
-            charCount--;
-            }
-        if (showptr.Compare(autoDLT) != 0)
-            {
-            buf.Append(ptr);
-            keyStoke->Delete( 0);
-            }
-        delCount++;
-        }
-
-    TInt phraseCount = phraseArray->Count();
-    if (phraseCount > KMaxPhraseCreationCount)
-        {
-        phraseCount = KMaxPhraseCreationCount;
-        }
-
-    if (keyStoke->Count() == 0 || phraseCount == KMaxPhraseCreationCount)
-        {
-        TBuf<KMaxPhraseCreationCount> phraseCreated;
-        for (TInt ii = 0; ii < phraseCount; ++ii)
-            {
-            phraseCreated.Append(phraseArray->MdcaPoint(ii) );
-            }
-        fepMan->NewTextL(phraseCreated);
-        fepMan->CommitInlineEditL();
-        iOwner->PtiEngine()->SetPredictiveChineseChar(phraseCreated);
-        AddPhraseToDB(phraseCreated);
-        return EFalse;
-        }
-
-    for (TInt j = 0; j < delCount; j++)
-        {
-        showkeyStoke->Delete( 0);
-        }
-    phraseShowKeyStroke->AppendL(buf);
-
-    editpane->SetCursorIndexOfKeystroke( 0);
-    editpane->DisableCursor();
-    editpane->SetPhraseCreationFlag(ETrue);
-    return ETrue;
-    }
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::ClearPtiEngineKeystroke
-// clear the ptiengine keystroke;
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::ClearPtiEngineKeystroke()
-    {
-    iOwner->PtiEngine()->ClearCurrentWord();
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AddKeystrokeL
-// Add keystroke.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::AddKeystrokeL(TInt aKey)
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    TBuf<1> keystroke;
-    
-    if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount )
-        {
-        return EFalse;
-        }
-
-    GetShowKeystroke(aKey, keystroke);
-    if ( index >= keystrokeArray->Count() )
-        {
-        keystrokeArray->AppendL(keystroke);
-        editPane->SetCursorIndexOfKeystroke(keystrokeArray->Count() );
-        }
-    else
-        {
-        keystrokeArray->InsertL(index, keystroke);
-        editPane->SetCursorIndexOfKeystroke(index + 1);
-        }
-    
-    if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount - 1 )
-        {
-        AnalyseL();
-        if ( phraseCount + editPane->ShowKeystrokeArray()->Count() <= KMaxKeystrokeCount )
-            {
-            return ETrue;
-            }
-        else
-            {
-            keystrokeArray->Delete( index );
-            editPane->SetCursorIndexOfKeystroke( index );
-            AnalyseL();
-            return EFalse;
-            }
-        }
-        
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::AddToneMarkL
-// Add tone mark.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::AddToneMarkL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TInt showKeystrokeCount = editPane->ShowKeystrokeArray()->Count();
-    TInt index = editPane->GetCursorIndexOfKeystroke();
-    TInt i = 0;
-    const TInt MaxToneMark = 4;
-    if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount )
-        {
-        if ( 0 == index )
-            {
-            return EFalse;
-            }
-        else
-            {
-            if ( KInvalidToneMark == ToneMark( keystrokeArray->MdcaPoint( index - 1 ) ) )
-                {
-                return EFalse;
-                }
-            }
-        }
-
-    TBuf<1> toneMark;
-
-    if ( 0 == index )
-        {
-        toneMark.Append(PinyinToneMap[0].iValue);
-        keystrokeArray->InsertL( 0, toneMark);
-        editPane->SetCursorIndexOfKeystroke( 1);
-        return ETrue;
-        }
-    
-    TInt num = sizeof(PinyinToneMap )/( sizeof(PinyinToneMap[0]));
-    for ( i = 0; i < num; ++i )
-        {
-        if (PinyinToneMap[i].iValue == keystrokeArray->MdcaPoint( index - 1 )[0])
-            {
-            break;
-            }
-        }
-
-    if ( i > MaxToneMark )
-        {
-        toneMark.Append(PinyinToneMap[0].iValue);
-        keystrokeArray->InsertL(index, toneMark);
-        editPane->SetCursorIndexOfKeystroke( index + 1 );
-        }
-    else
-        {
-        if ( MaxToneMark == i )
-            {
-            toneMark.Append(PinyinToneMap[0].iValue);
-            }
-        else
-            {
-            toneMark.Append(PinyinToneMap[ i + 1 ].iValue);
-            }
-        keystrokeArray->Delete(index - 1);
-        keystrokeArray->InsertL(index - 1, toneMark);
-        }
-
-    if ( phraseCount + showKeystrokeCount >= KMaxKeystrokeCount - 1 )
-        {
-        AnalyseL();
-        if ( phraseCount + editPane->ShowKeystrokeArray()->Count() > KMaxKeystrokeCount )
-            {
-            if ( i > MaxToneMark )
-                {
-                keystrokeArray->Delete( index );
-                editPane->SetCursorIndexOfKeystroke( index );
-                }
-            else
-                {
-                toneMark.Zero();
-                toneMark.Append( PinyinToneMap[i].iValue );
-                keystrokeArray->Delete( index - 1 );
-                keystrokeArray->InsertL( index - 1, toneMark );
-                }
-            AnalyseL();
-            return EFalse;
-            }
-        }
-        
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::GetCandidateL
-// Get the candidate info.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::GetCandidateL()
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* phraseCandidates = 
-        uiContainer->CandidatePane()->CandidateArray();
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    phraseCandidates->Reset();
-    TBuf<KMaxKeystrokeCount> buf;
-    TBuf<1> delimiter;
-    delimiter.Append( KManualDLT );
-    TInt keyCode;
-    TInt count = KInvalidToneMark;
-    ClearPtiEngineKeystroke();
-    
-    if ( showKeystroke->Count() == 0 )
-        {
-        return;
-        }
-
-    if ( CheckAllGroupStroke() && ( phraseCount == 0 ) )
-        {
-        getCurrentLeastDLTSpell();
-        ptiengine->GetChinesePhraseCandidatesL( *phraseCandidates ); 
-        return;
-        }
-    
-    if ( CheckFirstGroupStroke() )
-        {
-        ClearPtiEngineKeystroke();
-        for ( TInt i = 0; i < showKeystroke->Count(); ++i )
-            {
-            count = ToneMark( keystroke->MdcaPoint( i ) );
-            if ( CheckSpellingDLT( showKeystroke->MdcaPoint( i ) ) )
-                {
-                break;
-                }
-            else if ( KInvalidToneMark != count )
-                {
-                for ( TInt j = 0; j < count; ++j )
-                    {
-                    ptiengine->IncrementToneMark( ETrue );
-                    }
-                break;
-                }
-            else
-                {
-                GetKeystrokeCode( keyCode, keystroke->MdcaPoint( i ) );
-                ptiengine->AppendKeyPress((TPtiKey)keyCode);
-                }
-            }
-        }
-    else
-        {
-        return;
-        }
-    getCurrentLeastDLTSpell();
-    ptiengine->GetChinesePhraseCandidatesL( *phraseCandidates );
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::GetKeystrokeCode
-// get Code of the key stroke. 
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::GetKeystrokeCode(TInt& aKey,
-    const TDesC& aKeystroke)
-    {
-    TInt count = sizeof(StrokeMap )/sizeof(StrokeMap[0] );
-    for (TInt i = 0; i < count; i++)
-        {
-        TBuf<1> buf;
-        buf.Append(StrokeMap[i].iValue);
-        if (0 == aKeystroke.Compare(buf))
-            {
-            aKey = StrokeMap[i].iKeyCode;
-            break;
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::RevertPhraseToKeystrokeL
-// Revert the phrase to keystroke.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::RevertPhraseToKeystrokeL()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystrokeArray = editPane->KeystrokeArray();
-    CDesCArrayFlat* shownKeystrokeArray = editPane->ShowKeystrokeArray();
-    CDesCArrayFlat* phrase = editPane->PhraseArray();
-    CDesCArrayFlat* phraseStroke = editPane->PhraseShowKeyStrokeArray();
-    TBuf<KMaxKeystrokeCount> buf;
-    if ( (phrase->Count() == 0 ) || (phraseStroke->Count() == 0 ))
-        {
-        return;
-        }
-
-    buf.Append(phraseStroke->MdcaPoint(phraseStroke->Count() - 1) );
-    for (TInt i = buf.Length() - 1; i >= 0; --i)
-        {
-        keystrokeArray->InsertL( 0, buf.Mid(i, 1) );
-        }
-    phrase->Delete(phrase->Count() - 1);
-    phraseStroke->Delete(phraseStroke->Count() - 1);
-    AnalyseL();
-    TInt showCount = editPane->ShowKeystrokeArray()->Count();
-    TInt leng = phrase->Count() + showCount;
-    TInt deleteCount = 0;
-    if (leng > KMaxKeystrokeCount)
-        {
-        for (TInt i = 0; i < leng - KMaxKeystrokeCount; ++i)
-            {
-            if (KAutoDLT != shownKeystrokeArray->MdcaPoint( shownKeystrokeArray->Count() - 1 )[0])
-                {
-                deleteCount = deleteCount + 1;
-                }
-            shownKeystrokeArray->Delete(shownKeystrokeArray->Count() - 1);
-            }
-        if (KAutoDLT == shownKeystrokeArray->MdcaPoint( shownKeystrokeArray->Count() - 1 )[0])
-            {
-            shownKeystrokeArray->Delete(shownKeystrokeArray->Count() - 1);
-            }
-        }
-    for (TInt i = 0; i < deleteCount; ++i)
-        {
-        keystrokeArray->Delete(keystrokeArray->Count() - 1);
-        }
-
-    editPane->SetCursorIndexOfKeystroke(buf.Length() );
-    keystrokeArray->Compress();
-    phrase->Compress();
-    phraseStroke->Compress();
-
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor
-// Set warning color.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor(
-                                           TInt aCount,
-                                           TInt aIndex,
-                                           TInt aI,
-                                           TInt aPhraseCount,
-                                           TInt aToneMark,
-                                           TBool aValid,
-                                           CDesCArrayFlat* aShowKeystroke
-                                           )
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow();
-    if ( ( !aValid ) || CheckSpellingDLT(aShowKeystroke->MdcaPoint(aI
-            - 1) ) || (KInvalidToneMark
-            != ToneMark( aShowKeystroke->MdcaPoint( aI - 1 ) ) ))
-        {
-        editPane->SetHighlight(aPhraseCount + aIndex, aPhraseCount
-                + aIndex + aCount - 1 );
-        }
-    else
-        {
-        TPtrC ptr1 = getCurrentLeastDLTSpell();
-        for (TInt j = 0; j < aToneMark; ++j)
-            {
-            ptiengine->IncrementToneMark(ETrue);
-            TPtrC ptr0 = getCurrentLeastDLTSpell();
-            if (ptr0.Length() > 0)
-                {
-                if ( 0 == ptr0.Mid( ptr0.Length() - 1, 1 ).
-                Compare(aShowKeystroke->MdcaPoint( aI ) ) )
-                    {
-                    break;
-                    }
-                }
-            }
-        TPtrC ptr2 = getCurrentLeastDLTSpell();
-        if ( ( ( 1 + ptr1.Length() ) != ptr2.Length() ) || ( 0
-                != ptr2.Mid( ptr2.Length() - 1, 1 ).
-                CompareC( aShowKeystroke->MdcaPoint( aI ) ) ))
-            {
-            editPane->SetHighlight( aPhraseCount + aIndex, aPhraseCount
-                    + aIndex + aCount - 1);
-            }
-        }
-    ClearPtiEngineKeystroke();
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor
-// Set warning color.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor()
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow();
-    CDesCArrayFlat* showKeystroke = editPane->ShowKeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TBool valid = ETrue;
-    TInt index = 0;
-    TInt count = 0;
-    TInt stringBeforeLength = 0;
-    TInt stringAfterLength = 0;
-    TInt start = 0;
-    TInt keyCode = 0;
-    TInt toneMark = KInvalidToneMark;
-
-    if (showKeystroke->Count() == 0)
-        {
-        return;
-        }
-
-    if (CheckAllGroupStroke() )
-        {
-        return;
-        }
-    ClearPtiEngineKeystroke();
-    if (CheckSpellingDLT(showKeystroke->MdcaPoint( 0) ) || (KInvalidToneMark
-            != ToneMark(showKeystroke->MdcaPoint( 0) ) ))
-        {
-        start = 1;
-        editPane->SetHighlight(phraseCount, phraseCount);
-        index = 1;
-        }
-
-    for ( TInt i = start; i < showKeystroke->Count(); ++i )
-        {
-        count = count + 1;
-        // tone mark
-        toneMark = ToneMark(showKeystroke->MdcaPoint(i) );
-        if ( KInvalidToneMark != toneMark )
-            {
-            SetWarningColor( count, 
-                             index, 
-                             i, 
-                             phraseCount, 
-                             toneMark, 
-                             valid, 
-                             showKeystroke );
-            index = i + 1;
-            count = 0;
-            valid = ETrue;
-            }
-        else
-            if ( CheckSpellingDLT(showKeystroke->MdcaPoint(i) ) )
-                {
-                if ( ( !valid )
-                        || CheckSpellingDLT(showKeystroke->MdcaPoint(i - 1) )
-                        || (KInvalidToneMark
-                                != ToneMark(showKeystroke->MdcaPoint(i - 1) ) ))
-                    {
-                    editPane->SetHighlight(phraseCount + index, phraseCount
-                            + index + count - 1);
-                    }
-                ClearPtiEngineKeystroke();
-                index = i + 1;
-                count = 0;
-                valid = ETrue;
-                }
-            else
-                {
-                if ( valid )
-                    {
-                    GetKeystrokeCode(keyCode, showKeystroke->MdcaPoint(i) );
-                    stringBeforeLength = getCurrentLeastDLTSpell().Length();
-                    ptiengine->AppendKeyPress((TPtiKey)keyCode).Length();
-                    stringAfterLength = getCurrentLeastDLTSpell().Length();
-                    if ( stringBeforeLength == stringAfterLength )//the keystroke is invalid
-                        {
-                        ClearPtiEngineKeystroke();
-                        valid = EFalse;
-                        }
-                    }
-                }
-
-        if ( ( showKeystroke->Count() == i + 1 ) && ( !valid ) )
-            {
-            editPane->SetHighlight(
-                                phraseCount + index, 
-                                phraseCount + index + count - 1 );
-            ClearPtiEngineKeystroke();
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::SetWarningColor
-// Set warning color.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::ChangeCbaL()
-    {
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan( );
-    MAknFepUICtrlEditPane* editPane = UIContainer()->EditPaneWindow( );
-    TInt candidateCount = UIContainer()->CandidatePane()->CandidateArray()->Count( );
-    TInt keyStrokeCount = editPane->KeystrokeArray()->Count( );
-    TInt phraseCount = editPane->PhraseArray()->Count( );
-    TInt currentCBAResId = editPane->GetCurrentCBAResID( );
-    if ( (candidateCount == 0 && keyStrokeCount != 0 ) || (phraseCount == 1
-        && keyStrokeCount == 0 ) )
-        {
-        if ( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY != currentCBAResId )
-            {
-            fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY );
-            editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_EMPTY_CANCEL_EMPTY );
-            }
-
-        }
-    else if ( keyStrokeCount == 0 )
-        {
-        if ( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE != currentCBAResId )
-            {
-            fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE );
-            editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_DONE_CANCEL_DONE );
-            }
-        }
-    else if ( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL != currentCBAResId )
-        {
-        fepMan->UpdateCbaL( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL );
-        editPane->SetCurrentCBAResID( R_AKNFEP_SOFTKEYS_OK_SELECT_CANCEL );
-        }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorLeft
-// Move the cursor to Left.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorLeft()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* showKeyStoke = editPane->ShowKeystrokeArray();
-    TInt showKeyStokeCount = editPane->ShowKeystrokeArray()->Count();
-    TInt indexOfKeystroke = editPane->GetCursorIndexOfKeystroke();
-    TInt cursorPos = editPane->GetCursor() - editPane->PhraseArray()->Count();
-
-    TBuf<1> autoDLT;
-    autoDLT.Append(KAutoDLT);
-    const TInt offset = 2;
-    if (cursorPos <= 0)
-        {
-        cursorPos = 0;
-        }
-    else
-        if (cursorPos >= showKeyStokeCount)
-            {
-            cursorPos = showKeyStokeCount;
-            }
-
-    if (cursorPos == 0)
-        {
-        editPane->SetCursorIndexOfKeystroke(editPane->KeystrokeArray()->Count() );
-        ShowInfoOnEEPPane();
-        SetWarningColor();
-        }
-    else
-        if (cursorPos == 1)
-            {
-            editPane->SetCursorIndexOfKeystroke( 0);
-            ShowInfoOnEEPPane();
-            SetWarningColor();
-            }
-        else
-            {
-            if (showKeyStoke->MdcaPoint( cursorPos - 2 ).Compare(autoDLT) == 0)
-                {
-                editPane->MoveCursorLeft(offset);
-                editPane->SetCursorIndexOfKeystroke(indexOfKeystroke - 1);
-                }
-            else
-                {
-                editPane->MoveCursorLeft();
-                editPane->SetCursorIndexOfKeystroke(indexOfKeystroke - 1);
-                }
-            }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorRight
-// Move the cursor to Right.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::MoveCursorRight()
-    {
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* showKeyStoke = editPane->ShowKeystrokeArray();
-    TInt showKeyStokeCount = editPane->ShowKeystrokeArray()->Count();
-    TInt indexOfKeystroke = editPane->GetCursorIndexOfKeystroke();
-    TInt cursorPos = editPane->GetCursor() - editPane->PhraseArray()->Count();
-    TBuf<1> autoDLT;
-    autoDLT.Append(KAutoDLT);
-    const TInt offset = 2;
-
-    if (cursorPos <= 0)
-        {
-        cursorPos = 0;
-        }
-    else
-        if (cursorPos >= showKeyStokeCount)
-            {
-            cursorPos = showKeyStokeCount;
-            }
-
-    if (cursorPos == showKeyStokeCount)
-        {
-        editPane->SetCursorIndexOfKeystroke( 0);
-        ShowInfoOnEEPPane();
-        SetWarningColor();
-        }
-    else
-        if (cursorPos == showKeyStokeCount - 1)
-            {
-            editPane->MoveCursorRight();
-            editPane->SetCursorIndexOfKeystroke(editPane->KeystrokeArray()->Count() );
-            ShowInfoOnEEPPane();
-            SetWarningColor();
-            }
-        else
-            {
-            if (showKeyStoke->MdcaPoint( cursorPos ).Compare(autoDLT) == 0)
-                {
-                editPane->MoveCursorRight(offset);
-                editPane->SetCursorIndexOfKeystroke(indexOfKeystroke + 1);
-                }
-            else
-                {
-                editPane->MoveCursorRight();
-                editPane->SetCursorIndexOfKeystroke(indexOfKeystroke + 1);
-                }
-            }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpecialKey
-// Check the special keystroke( i,u,v ).
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpecialKey(const TInt aKey)
-    {
-    if ( (aKey == EPtiKeyQwertyI ) || (aKey == EPtiKeyQwertyU ) || (aKey
-            == EPtiKeyQwertyV ))
-        {
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingDLT
-// Check the delimiter of spelling.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingDLT(
-    const TDesC& aKeystroke)
-    {
-    if ( aKeystroke.Length() == 0 )
-        {
-        return EFalse;
-        }
-    
-    if ( ( KAutoDLT == aKeystroke[0] ) || ( KManualDLT == aKeystroke[0] ) )
-        {
-        return ETrue;
-        }
-    
-    return EFalse;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::ToneMark
-// Get pinyin tone mark.
-// ---------------------------------------------------------
-//
-TInt TAknFepInputMiniQwertyPinyinPhraseBase::ToneMark(const TDesC& aKeystroke)
-    {
-    TInt numOfToneMark = sizeof (PinyinToneMap)/sizeof(PinyinToneMap[0]);
-    for (TInt i = 0; i < numOfToneMark; i++)
-        {
-        if (PinyinToneMap[i].iValue == aKeystroke[0])
-            return PinyinToneMap[i].iInputTone;
-        }
-    return KInvalidToneMark;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::ToneMark
-// Get pinyin tone mark.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingAddToneMarkToPTIL(
-                                                        const TInt aToneMark )
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    TBuf<1> toneMark;
-    TBuf<1> delimiter;
-    
-    toneMark.Append( PinyinToneMap[aToneMark - 1].iValue );
-    delimiter.Append( KManualDLT );
-    
-    for ( TInt i = 0; i < aToneMark; ++i )
-        {
-        ptiengine->IncrementToneMark(ETrue);
-        TPtrC ptr = getCurrentLeastDLTSpell();
-        if ( ( 0 == ptr.Mid( ptr.Length() - 1, 1 ).Compare( toneMark ) ) &&
-            ( KErrNotFound == ptr.Find( delimiter ) )
-            )
-            {
-            return ETrue;
-            }
-        }
-
-    
-    return EFalse;
-    }
-TPtrC TAknFepInputMiniQwertyPinyinPhraseBase::getCurrentLeastDLTSpell()
-	{
-	CPtiEngine* ptiengine = iOwner->PtiEngine();
-	CDesC16ArrayFlat* allSpell = new CDesC16ArrayFlat(1);
-	TPtrC  currentSpell;
-	TBuf<1> delimiter;
-	TBuf<KMaxKeystrokeCount> preDltPosizeArr;
-	TBuf<KMaxKeystrokeCount> curDltPosizeArr;
-	preDltPosizeArr.FillZ(KMaxKeystrokeCount);
-	preDltPosizeArr.SetLength(KMaxKeystrokeCount);
-	curDltPosizeArr.FillZ(KMaxKeystrokeCount);
-	curDltPosizeArr.SetLength(KMaxKeystrokeCount);
-	
-	TInt index = 1;
-	delimiter.Append( KManualDLT );
-	TRAP_IGNORE( ptiengine->GetPhoneticSpellingsL(*allSpell));
-	TInt allCount = ptiengine->PhoneticSpellingCount();
-	
-	
-	for( TInt i = 0; i < allCount; i++)
-		{
-		
-		currentSpell.Set(allSpell->MdcaPoint(i));
-		TInt dltIndex = 0;
-		curDltPosizeArr.FillZ(KMaxKeystrokeCount);
-		curDltPosizeArr.SetLength(KMaxKeystrokeCount);
-		TInt preIndex = 0;
-		for (TInt j = 0; j < currentSpell.Length(); j++)
-			{
-		
-			if (currentSpell.Mid(j, 1).Compare(delimiter) == 0 )
-				{	
-				curDltPosizeArr[dltIndex] = j - preIndex - 1;
-				preIndex = j;
-				dltIndex++;
-				}
-			else if ((j+1) == currentSpell.Length())
-				{
-				curDltPosizeArr[dltIndex] = j - preIndex;
-				}
-			
-			}
-		
-		for (TInt k = 0; k < KMaxKeystrokeCount; k++)
-			{
-			
-			if (preDltPosizeArr[k] < curDltPosizeArr[k] )
-				{
-				preDltPosizeArr.Copy(curDltPosizeArr);
-				index = i + 1;
-				break;
-				}
-			else if (preDltPosizeArr[k] > curDltPosizeArr[k] )
-				{
-				break;
-				}
-			}
-			
-		}
-	
-	if (allSpell)
-		{
-		delete allSpell;
-		}
-	ptiengine->SelectPhoneticSpelling( index );
-	return ptiengine->GetPhoneticSpelling(index);
-	
-	}
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingAddKeyToPTIL
-// Check the spelling after add key to the PTI.
-// ---------------------------------------------------------
-//
-TInt TAknFepInputMiniQwertyPinyinPhraseBase::CheckSpellingAddKeyToPTIL(
-                                                     const TDesC& aKeystroke )
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    
-    TBuf<1> delimiter;
-    TInt keyCode = 0;
-    TInt stringBeforeLength = 0;
-    TInt stringAfterLength = 0;
-    TInt delimiterIndex = 0;
-    delimiter.Append( KManualDLT );
-    
-    GetKeystrokeCode( keyCode, aKeystroke );
-    //get the string before append this keystroke
-    TPtrC ptr = getCurrentLeastDLTSpell();
-    stringBeforeLength = ptr.Length();
-    //get the string after append this keystroke
-    ptiengine->AppendKeyPress((TPtiKey)keyCode);
-    TPtrC ptr1 = getCurrentLeastDLTSpell();
-    stringAfterLength = ptr1.Length();
-    
-    if ( stringBeforeLength != stringAfterLength )
-        {
-        TPtrC ptr = getCurrentLeastDLTSpell();
-        if ( KErrNotFound == ptr.Find( delimiter ) )
-            {
-            return 0;
-            }
-        else
-            {
-            delimiterIndex = ptr.Length() - ptr.Find( delimiter ) - 1;
-            return delimiterIndex;
-            }
-        }
-    else
-        {
-        return -1;
-        }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyFromCandidateL
-// Handle key from candidate.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandleKeyFromCandidateL(
-    TInt aKey, TKeyPressLength /*aLength*/)
-    {
-    TInt index = 0;
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-    // it may be one of the 'valid' numbers..
-    TPtiKeyboardType keyboardtype = iOwner->FepMan()->KeyboardLayout();
-    if (EPtiKeyboardQwerty4x10 == keyboardtype || EPtiKeyboardQwerty3x11
-            == keyboardtype || EPtiKeyboardHalfQwerty == keyboardtype
-            || EPtiKeyboardCustomQwerty == keyboardtype)
-        {
-        MPtiLanguage *lang= NULL;
-        RArray <TPtiNumericKeyBinding> keybinding;
-        TBool validnumkey = EFalse;
-        CPtiEngine* ptiengine = iOwner->PtiEngine();
-        
-        if( ptiengine != NULL )
-            {
-            lang = ptiengine->CurrentLanguage();
-            }
-        if (ptiengine && lang)
-            {
-            TRAP_IGNORE(ptiengine->GetNumericModeKeysForQwertyL(lang->LanguageCode(), keybinding, keyboardtype));
-            TInt numericKeysCount = keybinding.Count();
-            while (numericKeysCount--)
-                {
-                TPtiNumericKeyBinding numKeyBind =
-                        keybinding[numericKeysCount];
-                if ( (numKeyBind.iChar >= 0x31 && numKeyBind.iChar <= 0x36)
-                        &&(aKey == numKeyBind.iKey))
-                    {
-                    index = numKeyBind.iChar - EPtiKey0 -1;
-                    validnumkey = ETrue;
-                    break;
-                    }
-                }
-            }
-        keybinding.Reset();
-        keybinding.Close();
-        if ( !validnumkey)
-            {
-            iOwner->FepMan()->PlaySound(EAvkonSIDErrorTone);
-            return;
-            }
-        }
-    else
-        {
-#endif
-        index = MapKeyToIndex(aKey);
-#ifdef RD_INTELLIGENT_TEXT_INPUT
-        }
-#endif
-    MAknFepUICtrlCandidatePane* candidatePane = UIContainer()->CandidatePane();
-
-    if (candidatePane->SelectIndex(index) || aKey == EStdKeyDevice3 || aKey
-            == EStdKeyEnter)
-        {
-        TPtrC text = candidatePane->CurrentPhraseCandidate();
-        if (text.Length() )
-            {
-            if ( !CommitInlineEEPL(text) )
-                {
-                DoActionAfterCommit();
-                }
-            else
-                {
-                if (CheckFirstGroupStroke() )
-                    {
-                    RefreshUI(EFalse);
-                    UIContainer()->CandidatePane()->SelectFirstPhrase();
-                    }
-                else
-                    {
-                    UIContainer()->EditPaneWindow()->SetAutoChangeStateFlag(EAutoChangeStateFromCandidate);
-                    iOwner->ChangeState(EMiniQwertyEdit);
-                    }
-                }
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::CheckAllGroupStroke
-// check the all group stroke of keystroke.
-// ---------------------------------------------------------
-//
-TBool TAknFepInputMiniQwertyPinyinPhraseBase::CheckAllGroupStroke()
-    {
-    CPtiEngine* ptiengine = iOwner->PtiEngine();
-    MAknFepUICtrlContainerChinese* uiContainer = UIContainer();
-    MAknFepUICtrlEditPane* editPane = uiContainer->EditPaneWindow();
-    CDesCArrayFlat* keystroke = editPane->KeystrokeArray();
-    TInt phraseCount = editPane->PhraseArray()->Count();
-    TInt keyCode = 0;
-    TInt stringBeforeLength = 0;
-    TInt stringAfterLength = 0;
-    TInt toneMarkCount = KInvalidToneMark;
-
-    ClearPtiEngineKeystroke();
-
-    //If there is phrase on the entry pane then the all keystroke is invalid.
-    if ( phraseCount > 0 )
-        {
-        return EFalse;
-        }
-
-    //If the first keystroke is delimiter or tone mark 
-    //then all keystroke is invalid.
-    if ( ( keystroke->Count() == 0 )
-            || (CheckSpellingDLT(keystroke->MdcaPoint( 0 ) ) )
-            || (KInvalidToneMark != ToneMark(keystroke->MdcaPoint( 0 ) ) ) )
-        {
-        return EFalse;
-        }
-
-    for (TInt i = 0; i < keystroke->Count(); ++i )
-        {
-        toneMarkCount = ToneMark(keystroke->MdcaPoint( i ) );
-        if ( KInvalidToneMark != toneMarkCount )
-            {
-            if ( (CheckSpellingDLT(keystroke->MdcaPoint( i - 1 ) ) )
-                    || (KInvalidToneMark != ToneMark(keystroke->MdcaPoint( i - 1 ) ) ) )
-                {
-                return EFalse;
-                }
-            for (TInt j =0; j < toneMarkCount; ++j)
-                {
-                ptiengine->IncrementToneMark(ETrue);
-                TPtrC ptr1 = getCurrentLeastDLTSpell();
-                if (ptr1.Length() > 0)
-                    {
-                    if ( 0 == ptr1.Mid( ptr1.Length() - 1 ).Compare(keystroke->MdcaPoint( i ) ) )
-                        {
-                        break;
-                        }
-                    }
-                }
-            TPtrC ptr = getCurrentLeastDLTSpell();
-            if ( 0 != ptr.Mid( ptr.Length() - 1, 1 ).Compare(keystroke->MdcaPoint( i ) ) )
-                {
-                return EFalse;
-                }
-            }
-        else
-            {
-            if ( (CheckSpellingDLT(keystroke->MdcaPoint( i ) ) )
-                    && (KInvalidToneMark != ToneMark(keystroke->MdcaPoint( i - 1 ) ) ) )
-                {
-                return EFalse;
-                }
-            GetKeystrokeCode(keyCode, keystroke->MdcaPoint(i) );
-            stringBeforeLength = getCurrentLeastDLTSpell().Length();
-            ptiengine->AppendKeyPress((TPtiKey)keyCode).Length();
-            stringAfterLength = getCurrentLeastDLTSpell().Length();
-            if ( stringBeforeLength == stringAfterLength )
-                {
-                return EFalse;
-                }
-            }
-        }
-
-    return ETrue;
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommit
-// Do action afer commit, change state to predictive or not.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommit()
-    {
-    TRAP_IGNORE( DoActionAfterCommitL() );
-    }
-
-// ---------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommitL
-// Do action afer commit, change state to predictive or not.
-// ---------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::DoActionAfterCommitL()
-    {
-    MAknFepManagerUIInterface* fepMan = iOwner->FepMan();
-    if (fepMan->IsFlagSet(CAknFepManager::EFlagEditorFull) )
-        {
-        UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-        fepMan->ClearFlag(CAknFepManager::EFlagEditorFull);
-        UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-        if (UIContainer()->EditPaneWindow()->KeystrokeArray()->Count() != 0)
-            {
-            UIContainer()->EditPaneWindow()->ResetAllArray();
-            UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-            CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
-            errnote->SetTone(CAknNoteDialog::EWarningTone);
-            errnote->ExecuteLD(KMaxPhraseNote);
-            }
-        iOwner->FepMan()->TryCloseUiL();
-        }
-    else
-        {
-        if (UIContainer()->EditPaneWindow()->KeystrokeArray()->Count() != 0)
-            {
-            UIContainer()->EditPaneWindow()->ResetAllArray();
-            UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-            CAknWarningNote* errnote = new( ELeave ) CAknWarningNote();
-            errnote->SetTone(CAknNoteDialog::EWarningTone);
-            errnote->ExecuteLD(KMaxPhraseNote);
-            }
-        else
-            {
-            UIContainer()->EditPaneWindow()->ResetAllArray();
-            if ( !UIContainer()->EditPaneWindow()->GetPhraseCreationFlag() )
-                {
-                UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-                UIContainer()->EditPaneWindow()->SetChangeState(ETrue);
-                iOwner->ChangeState(EPredictiveCandidate);
-                }
-            else
-                {
-                UIContainer()->EditPaneWindow()->SetPhraseCreationFlag(EFalse);
-                iOwner->FepMan()->TryCloseUiL();
-                }
-            }
-        }
-    }
-// ---------------------------------------------------------------------------
-// TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommandL
-// Handling Command
-// ---------------------------------------------------------------------------
-//
-void TAknFepInputMiniQwertyPinyinPhraseBase::HandleCommandL( TInt aCommandId )
-    {
-    switch ( aCommandId )
-        {
-        // Handle the event frome command.
-        case EAknSoftkeySelect:
-            //case (TUint16)EAknSoftkeySelect: //the Selected in soft CBA
-            HandleCommitL( );
-            break;
-        default:
-            TAknFepInputStateChineseBase::HandleCommandL( aCommandId );
-            break;
-        }
-    }
-// End of file