diff -r 000000000000 -r eb1f2e154e89 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/aknfepuictrlpinyineep.h --- /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 +#include +#include +#include +#include + +#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* 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* 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 iArray; + + /** + * Only for zhuyin use + * the seed descriptor used in zhuyin input method. + * used to store zhuyin symbols every time. + */ + TBuf 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 iKeycodeArray; + + /** + * show Keystroke array. + */ + CDesCArrayFlat* iShowKeystrokeArray; + + /** + * Chinese array. + */ + CDesCArrayFlat* iPhraseArray; + + /** + * phrase Keycode arrray. + */ + RArray 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 +