fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrlpinyineep.h
changeset 0 eb1f2e154e89
child 3 f5a1e66df979
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrlpinyineep.h	Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,960 @@
+/*
+* 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 CAknFepUICtrlPinyinEEP definition 
+ *
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+#ifndef C_AKNFEPUICTRLPINYINEEP_H
+#define C_AKNFEPUICTRLPINYINEEP_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <coecntrl.h>
+#include <AknUtils.h>
+#include <AknsFrameBackgroundControlContext.h> 
+
+#include "aknfepuictrleditpane.h"
+#include "aknfepuictrleepcontrol.h"
+
+/**
+ * The parent control of CAknFepUICtrlEEPControl.
+ * 
+ * @lib aknfepuiavkonplugin.dll
+ * @since S60 v5.0
+ */
+const TInt KMaxBufLen = 100;
+class CAknFepUICtrlPinyinEEP : public CCoeControl, public MAknFepUICtrlEditPane
+    {
+public:
+    enum
+        {
+        EEditableEntryPane
+        };
+    enum
+        {
+        EZhuyinNULL,
+        EZhuyinInsert,
+        EZhuyinDelete,
+        EZhuyinReplace,
+        EZhuyinMoveCursor
+        };
+    /**
+     * NewL function.
+     * 
+     * @since S60 v5.0
+     * @param aParent. the RWindow object.
+     * @return self object.
+     */
+    static CAknFepUICtrlPinyinEEP* NewL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr );
+
+    /**
+     * NewLC function.
+     * 
+     * @since S60 v5.0
+     * @param aParent. the RWindow object.
+     * @return self object.
+     */
+    static CAknFepUICtrlPinyinEEP* NewLC( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr );
+
+    /**
+     * Destructor.
+     * 
+     * @return none.
+     */
+    virtual ~CAknFepUICtrlPinyinEEP();
+
+    /**
+     * From CCoeControl.
+     * 
+     * @return. count of controls.
+     */
+    virtual TInt CountComponentControls() const;
+
+    /**
+     * From CCoeControl.
+     * 
+     * @param aIndex.
+     * @return. the pointer of sub-control
+     */
+    virtual CCoeControl* ComponentControl( TInt aIndex ) const;
+
+    /**
+     * From CCoeControl.
+     * 
+     * @param aRect.
+     * @return None.
+     */
+    virtual void Draw( const TRect& aRect ) const;
+
+    /**
+     * From CCoeControl.
+     * 
+     * @param None.
+     * @return None.
+     */
+    virtual void SizeChanged();
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Set the text buffer and maintain the current cursor position.
+     * 
+     * @since S60 v5.0
+     * @param aDes. the content you set.
+     * @return None.
+     */
+    void SetText( const TDesC& aDes );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Set the text buffer and posit the cursor index.
+     * 
+     * @since S60 v5.0
+     * @param aDes. the content you set.
+     * @param aCursorPos. the position of cursor.
+     * @param aMiniQwertyZhuyin 
+     * @return None.
+     */
+    void SetText( const TDesC& aDes, TInt aCursorIndex, TBool aMiniQwertyZhuyin = EFalse );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Set the text buffer and posit the cursor index for zhuyin.
+     * 
+     * @since S60 v5.0
+     * @param aDes. the content you set.
+     * @param aCursorPos. the position for cursor.
+     * @param aChineseCount. the count for chinese characters.
+     * @param aJudgeSeed. current zhuyin symbols' descriptor.
+     * @param aKeystroke. current key stroke position.
+     * @param aInvalid. whether aDes is invalid. ETrue for invalid, EFalse for valid.
+     * @return None.
+     */
+    void SetTextForZhuyin( const TDesC& aDes, TInt aCursorIndex, TInt aChineseCount,
+        const TDesC& aJudgeSeed, TInt aKeystroke, TBool aInvalid = EFalse, TBool aMiniQwertyZhuyin = EFalse );
+
+    /**
+     * From MAknFepUICtrlEditPane
+     * Set the cursor position.
+     * 
+     * @since S60 v5.0
+     * @param aIndex. the cursor position you set.
+     * @return None.
+     */
+    void SetCursor( const TInt aIndex );
+
+    /**
+     * From MAknFepUICtrlEditPane
+     * get the position index of cursor.The max cursor index must be larger
+     * than the length of text buffer by 1.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return. the position index.
+     */
+    TInt GetCursor();
+
+    /**
+     * From MAknFepUICtrlEditPane
+     * move cursor to the left by a 1 stride.
+     * 
+     * @since S60 v5.0
+     * @param aStride. the stride for motion
+     * @return. succeed or not.
+     */
+    TBool MoveCursorLeft( TInt aStride = 1 );
+
+    /**
+     * From MAknFepUICtrlEditPane
+     * move cursor to the right by a 1 stride.
+     * 
+     * @since S60 v5.0
+     * @param aStride. the stride for motion
+     * @return. succeed or not.
+     */
+    TBool MoveCursorRight( TInt aStride = 1);
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * active the cursor,the cursor will be black and with a wink.this cursor
+     * state represent this control is focused.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void ActiveCursor();
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * deactive the cursor, the cursor will be gray and no wink this cursor
+     * state represent this control with no focus.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void DeactiveCursor();
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * enable the cursor,the cursor will be drawn.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void EnableCursor();
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * deactive the cursor, the cursor will not be drawn.
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void DisableCursor();
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * set the beginning and ending index for the underline text.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. the beginning index for underlined text.
+     * @param aEnd. the ending index for underlined text.
+     * @return None.
+     */
+    void SetUnderline( TInt aBeg, TInt aEnd );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * get the indexes for text with underline.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. a output param for receiving beginning index for underlined text.
+     * @param aEnd. a output param for receiving ending index for underlined text.
+     * @return None.
+     */
+    void GetUnderlineIndex( TInt& aBeg, TInt& aEnd );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * set the indexes for the text with highlight
+     * 
+     * @since S60 v5.0
+     * @Param aBeg. the beginning index for highlighted text.
+     * @param aEnd. the ending index for highlighted text.
+     * @return None.
+     */
+    void SetHighlight( TInt aBeg, TInt aEnd );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * get the indexes for the text with highlight
+     * 
+     * @since S60 v5.0
+     * @param aBeg. a output parameter which will receive the beginning index.
+     * @param aEnd. a output parameter which will receive the ending index.
+     * @return None.
+     */
+    void GetHighlightIndex( TInt& aBeg, TInt& aEnd );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * set keystroke index. 
+     * 
+     * @since S60 v5.0
+     * @param aStartIndex. the keystroke index.
+     * @return None.
+     */
+    void SetCursorIndexOfKeystroke( const TInt aStartIndex );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * get the keystroke index
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return. the keystroke index.
+     */
+    TInt GetCursorIndexOfKeystroke();
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * whether this control will be actived.ETrue represent enable otherwise
+     * disable.
+     * 
+     * @since S60 v5.0
+     * @param aEnable.ETrue represent enable this control,otherwise disable.
+     * @return None.
+     */
+    void Enable( TBool aEnable );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * return whether this control is enabled.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return.ETrue represent this control is enabled, otherwise disabled.
+     */
+    TBool IsEnabled() const;
+
+    /**
+     * Get the info before cursor.
+     * 
+     * @since S60 v5.0
+     * @param aText the show info.
+     * @return none.
+     */
+    void GetText( TDes& aText );
+
+    /**
+     * Get the info before cursor.
+     * 
+     * @since S60 v5.0
+     * @param aOut the info before cursor.
+     * @return ETrue if can get the info.
+     */
+    TBool GetDesBeforeCursor( TDes& aOut );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Not used.
+     */
+    void SetToneMark( const TDesC& aToneMark );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Not used.
+     */
+    void SetToneMarkValidity( TBool aValid );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Not used.
+     */
+    void SetOverrideFontId( TInt aFontId );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Not used.
+     */
+    void SetFlag( TInt aFlag );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Not used.
+     */
+    void ClearFlag( TInt aFlag );
+
+    /**
+     * From MAknFepUICtrlEditPane.
+     * Not used.
+     */
+    TBool IsFlagSet( TInt aFlag ) const;
+
+    /**
+     * Set the cursor index for moving to the left.
+     * 
+     * @since S60 v5.0
+     * @param aIndex. the cursor index for moving left.
+     * @return None.
+     */
+    void SetCursorForMoveLeft( const TInt aIndex );
+
+    /**
+     * Set the cursor index for moving to the right.
+     * 
+     * @since S60 v5.0
+     * @param aIndex. the cursor index for moving right.
+     * @return None.
+     */
+    void SetCursorForMoveRight( const TInt aIndex );
+    /**
+     * Add some text at the end of buffer.
+     * 
+     * @since S60 v5.0
+     * @param aDes. the content you want to append.
+     * @return. ETrue represent success, otherwise failure.
+     */
+    TBool Append( const TDesC& aDes );
+
+    /**
+     * delete the content begin with aBeg index, and with an aLen length.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. the beginning index for delete.
+     * @param aLen. the length you delete.
+     * @return ETrue for success, and EFalse for failure.
+     */
+    TBool Delete( TInt aBeg, TInt aLen = 1 );
+
+    /**
+     * Insert some text after aIndex character.
+     * 
+     * @since S60 v5.0
+     * @param aIndex. the index for insert.
+     * @param aDes. the content you insert.
+     * @return ETrue for success, and EFalse for failure.
+     */
+    TBool Insert( TInt aIndex, const TDesC& aDes );
+
+    /**
+     * Replace text from aBeg index to aBeg + aLen with aDes.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. the beginning index for replace.
+     * @param aLen. the length for replace.
+     * @param aDes. the new content after replacing.
+     * @return ETrue for success, and EFalse for failure.
+     */
+    TBool Replace( TInt aBeg, TInt aLen, const TDesC& aDes );
+
+    /**
+     * Reset private member viariable.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+	void Reset();
+
+	/**
+     * Return kestroke array.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    CDesCArrayFlat* KeystrokeArray();
+    
+	/**
+     * Return keycode array.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    RArray<TInt>* KeycodeArray();
+
+    /**
+     * Return show kestroke array. 
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    CDesCArrayFlat* ShowKeystrokeArray();
+
+    /**
+     * Return choose chinese charater array. 
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    CDesCArrayFlat* PhraseArray();
+
+    /**
+     * Return choose chinese charater show keystroke array. 
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    CDesCArrayFlat* PhraseShowKeyStrokeArray();
+    
+	/**
+     * Return phrase keycode array.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    RArray<TInt>* PhraseKeycodeArray();
+    
+    /**
+     * Return temp array. 
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return pointer of array.
+     */
+    CDesCArrayFlat* TempArray();    
+    
+    /**
+     * Reset private member viariable array.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return None.
+     */
+    void ResetAllArray();
+    
+    /**
+     * change state flag.
+     * 
+     * @since S60 v3.2.3
+     * @param aState, ETrue change state.
+     * @return None.
+     */
+    void SetChangeState( TBool aState = ETrue );
+    
+    /**
+     * check change state flag.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return ETrue if change state, EFalse others.
+     */
+    TBool IsChangeState();
+
+    /**
+     * Set auto change state flag.
+     * 
+     * @since S60 v3.2.3
+     * @param aState, ETrue auto change state, EFalse manual change state.
+     * @return None.
+     */
+    void SetAutoChangeStateFlag( TBool aState = ETrue );
+    
+    /**
+     * Get the auto change state flag.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return ETrue atuo change state, EFalse others.
+     */
+    TBool GetAutoChangeStateFlag();
+    
+    /**
+     * Set all the keystroke valid flag.
+     * 
+     * @since S60 v3.2.3
+     * @param aState, ETrue all the keystroke is valid, EFalse others.
+     * @return None.
+     */
+    void SetAllValidFlag( TBool aState = ETrue );
+    
+    /**
+     * Get all the keystroke valid flag.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return ETrue all the keystroke is valid, EFalse others.
+     */
+    TBool GetAllValidFlag();
+    
+    /**
+     * Set Phrase Creation flag.
+     * 
+     * @since S60 v3.2.3
+     * @param aState, ETrue is phrase creation, EFalse others.
+     * @return None.
+     */
+    void SetPhraseCreationFlag( TBool aState );
+    
+    /**
+     * Get Phrase Creation flag.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return ETrue is phrase creation, EFalse others.
+     */
+    TBool GetPhraseCreationFlag();
+    
+    /**
+     * Set the keystroke invalid index.
+     * 
+     * @since S60 v3.2.3
+     * @param aIndex, the keystroke invalid index.
+     * @return None.
+     */
+    void SetInvalidIndex( TInt aIndex = 0 );
+    
+    /**
+     * Get all the invalid keystroke index.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return invalid keystroke index.
+     */
+    TInt GetInvalidIndex();
+    
+    /**
+     * Set Phrase Candidate state need refresh UI flag.
+     * 
+     * @since S60 v3.2.3
+     * @param aState, ETrue is that Candidate state need refresh UI,other don't need.
+     * @return None.
+     */
+    void SetCandidateRefreshFlag( TBool aState );
+    
+    /**
+     * Get Phrase Candidate state need refresh UI flag.
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return ETrue is that Candidate state need refresh UI,EFalse don't need.
+     */
+    TBool GetCandidateRefreshFlag();
+    
+    /**
+     * Set the delimiter count of keystroke.
+     * 
+     * @since S60 v3.2.3
+     * @param aCount, the delimiter count of keystroke.
+     * @return None.
+     */
+    void SetDelimiterCount( TInt aCount );
+    
+    /**
+     * Get the delimiter count of keystroke. 
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return aCount, the delimiter count of keystroke.
+     */
+    TInt GetDelimiterCount();
+    
+    /**
+     * Get current cba resource id. 
+     * 
+     * @since S60 v3.2.3
+     * @param None.
+     * @return current cba resource id.
+     */
+    TInt GetCurrentCBAResID();
+    
+    /**
+     * Set current cba resource id. 
+     * 
+     * @since S60 v3.2.3
+     * @param aResourceId, current cba resource id.
+     * @return None.
+     */
+    void SetCurrentCBAResID( TInt aResourceId );
+    
+    void SetEffictiveLength( TInt aLength );
+    
+    TInt GetEffictiveLength();
+    
+    void DecEffictiveLength();
+    
+    void AddEffictiveLength();
+    
+    void SetNeedClearDeliberateSelection( TBool aNeedClearDeliberateSelection );
+    
+    TBool NeedClearDeliberateSelection();
+    
+protected:
+
+    /**
+     * Layout contained controls.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void LayoutContainedControls();
+
+    /**
+     * layout the background frames.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void LayoutFrames();
+
+    /**
+     * layout its rectangles
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void LayoutRects();
+
+private:
+    /**
+     * C++ constructor.
+     */
+    CAknFepUICtrlPinyinEEP( CAknFepUiLayoutDataMgr* aLafDataMgr );
+
+    /**
+     * Two-phrase constructor.
+     */
+    void ConstructL( RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr );
+
+    /**
+     * Calculate visual text for appending.
+     * 
+     * @since S60 v5.0
+     * @param aDes.the content you want to append.
+     * @return None.
+     */
+    void CalculateVisualTextForAppend( const TDesC& aDes );
+
+    /**
+     * Calculate visual text for deleting.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. the beginning index you want to delete.
+     * @param aLen. the length you want to delete, 1 by default.
+     * @return None.
+     */
+    void CalculateVisualTextForDelete( TInt aBeg, TInt aLen = 1 );
+
+    /**
+     * Calculate visual text for inserting.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. the beginning index for your insert.
+     * @param aDes. the content you want to insert.
+     * @return None.
+     */
+    void CalculateVisualTextForInsert( TInt aBeg, const TDesC& aDes );
+
+    /**
+     * Calculate visual text for replacing.
+     * 
+     * @since S60 v5.0
+     * @param aBeg. the beginning index for you replace.
+     * @param aLen. the length for your replace.
+     * @param aDes. the new content after your replace.
+     * @return None.
+     */
+    void CalculateVisualTextForReplace( TInt aBeg, TInt aLen,
+        const TDesC& aDes );
+
+    /**
+     * Calculate visual text for moving to left.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void CalculateVisualTextForMoveLeft();
+
+    /**
+     * Calculate visual text for moving to the right.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void CalculateVisualTextForMoveRight();
+
+    /**
+     * Calculate the underline indexes and highlight indexes according to the
+     * absolute value.
+     * 
+     * @since S60 v5.0
+     * @param None.
+     * @return None.
+     */
+    void CalculateVisualIndex();
+
+    /**
+     * layout the background frames.
+     *
+     * @since S60 v5.0
+     * @param aOuterRect filled with outer rect coords
+     * @param aInnerRect filled with inner rect coords
+     * @return None.
+     */
+    void CalculateFrameRects( TRect& aOuterRect, TRect& aInnerRect ) const;
+
+private:
+    // Data.
+	CAknFepUiLayoutDataMgr* iLafDataMgr;
+    /**
+     * the position of keystroke.
+     */
+    TInt iIndex;
+    /**
+     * Whether EEP control is enabled ( visible ) .
+     */
+    TBool iEnabled;
+    /**
+     * The background context for this control.
+     */
+    CAknsFrameBackgroundControlContext* iBgContext;
+
+    TAknLayoutRect iRectCoverMainPaneInput;
+    TAknLayoutRect iRectFirstShadowInput;
+    TAknLayoutRect iRectOutlineFrameInput;
+    TAknLayoutRect iRectInsideAreaInput;
+    /**
+     * Its contained control only for display.
+     * own
+     */
+    CAknFepUICtrlEEPControl* iEditableEntryPane;
+    /**
+     * All the text its caller set.
+     * own
+     */
+    HBufC* iAbsoluteBuffer;
+    /**
+     * The text displayed on the contained control.
+     * own
+     */
+    HBufC* iVisualBuffer;
+    /**
+     * The cursor position relative to iAbsoluteBuffer which is set by its
+     * caller.
+     */
+    TInt iAbsoluteCursorPos;
+    /**
+     * The offset between the beginning position of iVisualBuffer and
+     * iAbsoluteBuffer.
+     */
+    TInt iOffset;
+    /**
+     * The beginning position of underlined text.
+     */
+    TInt iAbsoluteUnderlineBeg;
+    /**
+     * The end position of underlined text.
+     */
+    TInt iAbsoluteUnderlineEnd;
+    /**
+     * The beginning position of highlighted text.
+     */
+    TInt iAbsoluteHighlightBeg;
+    /**
+     * The end position of highlighted text.
+     */
+    TInt iAbsoluteHighlightEnd;
+    /**
+     * Store the highlight-setting&underline-setting sequence
+     */
+    RPointerArray<CAknFepUICtrlEEPControl::TSegment> iArray;
+
+    /**
+     * Only for zhuyin use
+     * the seed descriptor used in zhuyin input method. 
+     * used to store zhuyin symbols every time.
+     */
+    TBuf<KMaxBufLen> iJudgeSeed;
+    /**
+     * used to store count for chinese character.
+     */
+    TInt iChineseCount;
+    
+    /**
+     * whether the last displayed text is valid.
+     */
+    TBool iLastValid;
+    
+    /**
+     * keystroke arrray.
+     */
+    CDesCArrayFlat* iKeystrokeArray;
+    
+    /**
+     * Keycode arrray.
+     */
+    RArray<TInt> iKeycodeArray;
+
+    /**
+     * show Keystroke array.
+     */
+    CDesCArrayFlat* iShowKeystrokeArray;
+    
+    /**
+     * Chinese array.
+     */
+    CDesCArrayFlat* iPhraseArray;
+    
+    /**
+     * phrase Keycode arrray.
+     */
+    RArray<TInt> iPhraseKeycodeArray;
+    
+    /**
+     * KeyStroke array for the Chinese which have been selected.
+     */
+    CDesCArrayFlat* iPhraseShowKeyStrokeArray;
+    
+    /**
+     * The temp array.
+     */
+    CDesCArrayFlat* iTempArray;
+    
+    /**
+     * the change state flag.
+     */
+    TInt iChangeFlag;
+    
+    /**
+     * the auto change state flag.
+     */
+    TInt iAutoChangeFlag;
+    
+    /**
+     * The all kyestroke is valid.
+     */
+    TInt iAllValidFlag;
+    
+    /**
+     * The invalid keystroke index.
+     */
+    TInt iInvalidKeystrokeIndex;
+    
+    /**
+     * Is phrase creation.
+     */
+    TInt iPhraseCreation;
+    
+    /**
+     * The candidate refresh flag.
+     */
+    TInt iCandidateRefreshFlag;
+    
+    /**
+     * The delimiter count of keystroke.
+     */
+    TInt iDelimiterCount;
+    
+    /**
+     * Current CBA resource id.
+     */
+    TInt iCurrentCBAResId;
+    
+    TInt iEffictiveLength;
+    
+    TBool iMiniQwertyZhuyin;
+    
+    TBool iNeedClearDeliberateSelection;
+    
+    };
+
+#endif /* C_AKNFEPUICTRLPINYINEEP_H */
+
+// End of File
+