diff -r 000000000000 -r eb1f2e154e89 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlPinyinPopup.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlPinyinPopup.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,698 @@ +/* +* Copyright (c) 2004 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 CAknFepUICtrlPinyinPopup class definitions. +* +*/ + + + + + + + + + + + +#ifndef __AKN_FEP_UI_AVKON_PINYIN_POPUP_H +#define __AKN_FEP_UI_AVKON_PINYIN_POPUP_H + +#include +#include +#include +#include +#include "AknFepUIAvkonCtrlInputPane.h" +#include "AknFepUIAvkonCtrlCandidatePane.h" + +class MAknFepUICtrlPinyinPopupSizeChangedObserver; + +NONSHARABLE_CLASS(CAknFepUICtrlPinyinPopup):public CCoeControl, public MAknFepUICtrlPinyinPopup +{ +public: + /** + * First phase construction + */ + static CAknFepUICtrlPinyinPopup* NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr); + /** + * destructor + */ + ~CAknFepUICtrlPinyinPopup(); + /** + * This function returns the index of the selected phrase item . + * + * @return aIndex index of entry in window, zero based + */ + TInt CurrentSelection() const; + /** + * This function returns the visible index of the selected item. + * + * @return aIndex index of entry in window, zero based + */ + TInt CurrentVisibleSelection() const; + /** + * set the observer + *

Note that only one observer is supported! + * + * @param aObserver pointer to the observer + */ + void SetSizeChangedObserver(MAknFepUICtrlPinyinPopupSizeChangedObserver* aObserver); + + /** + * Enables the display of the control. Sets the control's + * window postion and visibility, but only if the value has + * changed (so it's ok to call it excessively). + * + * @param aEnable if ETrue, makes visible + * if EFalse, makes non-visible + * + */ + void Enable(TBool aEnable); + /** + * set the number of selections that are visible + * + * @param aCount the number of visible selections, must be + * 0 < aCount <= KMaxNumberOfSelections + */ + void SetVisibleSelectionCount(TInt aCount); + /** + * set the number of selections that are visible + * + * @param aCount the number of visible selections, must be + * 0 < aCount <= KMaxNumberOfSelections + */ + void SetVisibleCount(TInt aCount); + + /** + * get the current visible selection count + * + * @return visible selection count + */ + TInt VisibleSelectionCount() const; + + + /** + * This sets the string of the internal buffer for the item index aIndex to aText, + * even if the index falls outside the current visible candidates. + * + * @param aText new contents of text item + * @return ETrue if successful + * EFalse if index outside visible candidates (but value is still set) + * + */ + TBool SetItemText(TInt aIndex, const TDesC& aText); + + /** + * Sets the string of the internal buffer for visible item + */ + TBool SetPhraseItemTexts(); + + /** + * This function gets the text at the index aIndex. + * + * @param aIndex index of entry in window, zero based + * @output aText contains contents of text item + * @return ETrue always + * + */ + TBool GetItemText(TInt aIndex, TDes& aText) const; + + /** + * This function sets the Tone Mark for all entries + * + * @param aToneMark the tone mark + * + */ + void SetToneMark(const TDesC& aToneMark); + + /** + * This function sets the Tone Mark for a specific entry + * + * @param aIndex index of entry + * @param aToneMark the tone mark + * + */ + void SetToneMark(TInt aIndex, const TDesC& aToneMark); + + /** + * This function gets the Tone Mark for a specific entry + * + * @param aIndex index of entry + * @output aToneMark the tone mark + * + */ + void GetToneMark(TInt aIndex, TDes& aToneMark) const; + + /** + * This function sets the validity of the tonemark + * + * @param aIndex index of the entry to be affected + * @param aValid if ETrue, tonemark will be displayed as valid + * if EFalse, tonemark will be displayed as not valid + */ + void SetItemToneMarkValidity(TInt aIndex, TBool aValid); + /** + * Is the control enabled for display? + * + * @return if not enabled, return EFalse + */ + TBool IsEnabled() const; + + /** + * Select the next visible item. If already on the last one, loop to the + * first one. + * + * @return ETrue if success, + * EFalse if no items visible, or if selection is outside visible items + */ + TBool SelectNextPhrase(); + + /** + * Select the previous visible item. If already on the first one, loop to the + * last one. + * + * @return ETrue if success, + * EFalse if no items visible, or if selection is outside visible items + */ + TBool SelectPrevPhrase(); + + /** + * This function selects the item at index aIndex. + * + * @param aIndex index of entry in window, zero based + * @return ETrue if success, EFalse if failure. + */ + TBool SelectIndex(TInt aIndex); + + /** + * Return Pinyin spelling candidate array + */ + CDesCArrayFlat* PhoneticSpellingArray(void); + + /** + * Return Pinyin spelling candidate array + */ + CDesCArrayFlat* PhoneticSpellingIndexArray(); + /** + * Split phrase pinyin spelling candidates into pages + */ + void SplitPhraseSpellingIntoPages(void); + + /** + * Split pinyin spelling candidates into pages + */ + void SplitSpellingIntoPages(TInt aCount); + + /** + * Set display page for deliberate selection + */ + void SetDisplayPage(TInt aSelection); + /** + * Return current page start spelling index + */ + TInt CurrentPageStartIndex(void); + + /** + * Return kestroke array + */ + CDesCArrayFlat* KeystrokeArray(void); + + /** + * Return in effect kestroke array + */ + CDesCArrayFlat* InEffectKeystrokeArray(); + + /** + * Return show kestroke array + */ + CDesCArrayFlat* ShowKeystrokeArray(); + + /** + * Return Optimize Spelling array + */ + CDesCArrayFlat* OptimizeSpelling(); + + /** + * Return temp Spelling array + */ + CDesCArrayFlat* TempSpelling(); + + /** + * Return choose chinese charater array + */ + CDesCArrayFlat* ChooseChineseCharacterArray(); + + /** + * Return choose chiese charater keystroke array + */ + CDesCArrayFlat* ChooseChineseCharacterArrayKeystroke(); + + /** + * Return the tone mark state + */ + TBool GetTonemarkState(); + + /** + * set the tone mark state + */ + void SetTonemarkState( TBool aState ); + + /** + * Set, clear and check flags status + */ + inline void SetFlag(TInt aFlag); + inline void ClearFlag(TInt aFlag); + inline TBool IsFlagSet(TInt aFlag) const; + void PopupSizeChanged(); + + /** + * Set all the input pane not highlight + */ + void SetNoneHighlighted(); + + /** + * Return kestroke array + */ + CDesCArrayFlat* KeystrokeArrayForStroke(); + + /** + * Return in effect kestroke array + */ + CDesCArrayFlat* InEffectKeystrokeArrayForStroke(); + + /** + * Return show kestroke array + */ + CDesCArrayFlat* ShowKeystrokeArrayForStroke(); + + /** + * Return choose chinese charater array + */ + CDesCArrayFlat* ChooseChineseCharacterArrayForStroke(); + + /** + * Return choose chiese charater keystroke array + */ + CDesCArrayFlat* ChooseChineseCharacterArrayKeystrokeForStroke(); + + CDesCArrayFlat* ZhuyinSymbols(); + + CDesCArrayFlat* ZhuyinShowSymbols(); + + CDesCArrayFlat* FirstValidZhuyinGrp() ; + + CDesCArrayFlat* ChineseCharsDisped() ; + + CDesCArrayFlat* ZhuyinSymbolsForChineseCharsDisped() ; + + void SetEEPContent ( const TDes& aDes ); + TDes& GetEEPContent ( ); + + void SetEEPContentValid ( TBool aValid ); + TBool GetEEPContentValid ( ); + + /** + * Reset all array + */ + void ResetStrokeArray(); + + /** + * Set the state is changed + */ + void SetChangeState( TBool aChangeState ); + + /** + * Return if has changed state or not + */ + TBool IsChangeStatet() const; + + /** + * Set whether state change from entry to spelling editing is automatical. + * + * @param aState.1 for automatical, 0 for manual. + * @return None. + */ + void SetState( TInt aState ); + + /** + * Get state change status. + */ + TInt GetState(); + + /** + * Set whether state change from pinyin input state to pinyin phrase creation. + * + * @param aState. ETrue for state change from pinyin input to phrase creation, + * EFalse is not. + * @return None. + */ + void SetPhraseCreationState( TBool aState ); + + /** + * Set whether state change from pinyin input state to pinyin phrase creation. + * + * @return ETrue for state change from pinyin input to phrase creation, + * EFalse is not. + */ + TBool GetPhraseCreationState(); + + /** + * Set whether at the editing state happen editing for pinyin phrase creation. + * + * @param aState. ETrue happen editing,EFalse others. + * @return None. + */ + void SetPhraseCreationEditingState( TBool aState ); + + /** + * Get whether at the editing state happen editing for pinyin phrase creation. + * + * @param aState. ETrue happen editing,EFalse others. + * @return None. + */ + TBool GetPhraseCreationEditingState(); + + /** + * Set flag whether from candidate state change state. + * + * @param aFlag ETrue from the candidate state change state, other EFalse. + * @since S60 V5.0 + * @return none. + */ + void SetFromCandidateChangeStateFlag( TBool aFlag ); + + /** + * Get flag whether from candidate state change state. + * + * @since S60 V5.0 + * @return ETrue from the candidate state change state, other EFalse. + */ + TBool GetFromCandidateChangeStateFlag(); + + /** + * Set count of valid keystroke. + * + * @since S60 V5.0 + * @return none + */ + void SetValidKeystrokeCount( TInt aCount ); + + /** + * get count of valid keystroke. + * + * @since S60 V5.0 + * @return count of valid keystroke. + */ + TInt GetValidKeystrokeCount(); + + /** + * Set last cba resouce id. + * + * @since S60 V5.0 + * @return None + */ + void SetLastResouce( TInt aResouceId ); + + /** + * Get last cba resouce id. + * + * @since S60 V5.0 + * @return last resouce id + */ + TInt GetLastResouce(); + + + /** + * Set change state from Edit to Spelling flag. + * + * @param aFlag,If ETrue Change from Edit state to spelling state,EFalse others. + * @since S60 V5.0 + * @return none. + */ + void SetFromEditToSpellingFlag( TBool aFlag = EFalse ); + + /** + * Get change state from Edit to Spelling flag. + * + * @param none. + * @since S60 V5.0 + * @return ETrue Change from Edit state to spelling state,EFalse others.. + */ + TInt GetFromEditToSpellingFlag(); + + + /** + * Set valid keystroke change flag. + * + * @param aFlag, ETrue valid keystroke changed,EFalse others. + * @since S60 V5.0 + * @return none + */ + void SetValidKeystrokeChange( TBool aFlag ); + + /** + * Get valid keystroke change flag. + * + * @since S60 V5.0 + * @return ETrue,if vallid keystroke changed, others EFalse. + */ + TBool GetValidKeystrokeChange(); + + /** + * Set PreStateIsPredict flag. + * + * @param aFlag, ETrue PreStateIsPredict,EFalse others. + * @since S60 V5.0 + * @return none + */ + void SetPreStateIsPredictive( TBool aFlag ); + + /** + * Get PreStateIsPredict flag. + * + * @since S60 V5.0 + * @return ETrue,if PreStateIsPredict, others EFalse. + */ + TBool GetPreStateIsPredictive(); + + void SetInputLayoutMiniQwertyZhuyin(); + + void ResetInputLayoutMiniQwertyZhuyin(); + +protected: // From CCoeControl + TTypeUid::Ptr MopSupplyObject(TTypeUid aId); + +protected: + /** + * constructor + */ + CAknFepUICtrlPinyinPopup(CAknFepUiLayoutDataMgr* aLafDataMgr); + /** + * second phase construction + */ + void ConstructL(RWindow& aParent); + /** + * Construct arrow bitmap class + */ + void ConstructBitmapsL(); + /** + * layout the rectangles + */ + void LayoutRects(); + + /** + * layout contained controls + */ + void LayoutContainedControls(); + + /** + * Layout the input panes + */ + void LayoutInputPanes(); + + /** + * set the visibility of the input panes, according to the current layout + */ + void SetInputPaneVisibility(); + + /** + * layout the background frames + */ + void LayoutFrames(); + + /** + * just layout one of the input panes + * + * @param aIndex index of input pane to lay out + * + */ + void LayoutInputPane(TInt aIndex); + + /** + * update input panes' visibility + */ + void UpdateInputPaneVisibility(void); + + +public: //from CcoeControl + /** + * size changed + */ + virtual void SizeChanged(); + + /** + * count component controls + * + * @return number of contained controls + */ + TInt CountComponentControls() const; + + /** + * Component control + * + * @param aIndex the control to return, must be between 0 and the number of controls + * @return pointer to contained control, ownership is not passed + * + */ + CCoeControl* ComponentControl(TInt aIndex) const; + /** + * draw + * + * @param aRect rectangle + * + */ + virtual void Draw(const TRect& aRect) const; + /** + * layout the background frames + * + * @param aOuterRect filled with outer rect coords + * @param aInnerRect filled with inner rect coords + * + */ + void CalculateFrameRects(TRect& aOuterRect, TRect& aInnerRect) const; + +private: // the following need resetting + RPointerArray iInputPaneArray; +private: // the following are not owned + CAknFepUiLayoutDataMgr* iLafDataMgr; + MAknFepUICtrlPinyinPopupSizeChangedObserver* iSizeChangedObserver; +private: // the following are owned + CAknsFrameBackgroundControlContext* iBgContext; + CFbsBitmap* iNaviArrowBitmapLeft; + CFbsBitmap* iNaviArrowBitmapLeftMask; + CFbsBitmap* iNaviArrowBitmapRight; + CFbsBitmap* iNaviArrowBitmapRightMask; + +private: + TAknLayoutRect iIndiFepArrowLeft; + TAknLayoutRect iIndiFepArrowRight; + TInt iSelected; + TInt iEnabled; + TToneMark iToneMark; + TAknLayoutRect iRectCoverMainPaneInput; + TAknLayoutRect iRectFirstShadowInput; + TAknLayoutRect iRectOutlineFrameInput; + TAknLayoutRect iRectInsideAreaInput; + TInt iVisibleCount; + RArray iPages; + TInt iCurDisplayPage; + CDesCArrayFlat* iSpellingArray; + //Spelling index array + CDesCArrayFlat* iSpellingIndexArray; + //keystroke arrray + CDesCArrayFlat* iKeystrokeArray; + //in effect keystroke array + CDesCArrayFlat* iInEffectKeystrokeArray; + //show Keystroke array + CDesCArrayFlat* iShowKeystrokeArray; + //Optimize Keystroke array + CDesCArrayFlat* iOptimizeSpelling; + //temp Keystroke array + CDesCArrayFlat* iTempSpelling; + //Chinese array + CDesCArrayFlat* iChooseChineseCharacterArray; + //Chinese Keystroke array + CDesCArrayFlat* iChooseChineseCharacterArrayKeystroke; + + CDesCArrayFlat* iKeystrokeArrayForStroke; + CDesCArrayFlat* iInEffectKeystrokeArrayForStroke; + CDesCArrayFlat* iShowKeystrokeArrayForStroke; + CDesCArrayFlat* iChooseChineseCharacterArrayForStroke; + CDesCArrayFlat* iChooseChineseCharacterArrayKeystrokeForStroke; + + CDesCArrayFlat* iZhuyinSymbols; + CDesCArrayFlat* iZhuyinShowSymbols; + CDesCArrayFlat* iFirstValidZhuyinGrp; + CDesCArrayFlat* iChineseCharsDisped; + CDesCArrayFlat* iZhuyinSymbolsForChineseCharsDisped; + TBuf<100> iEEPContent; + TBool iEEPContentValid; + + //the tone mark state + TInt iTonemarkState; + + //the stroke state + TInt iStrokeState; + + // The highlight goes back to wrong position when transfer from pinyin + // spelling pane to pinyin candidate pane more than one time. + TInt iHighLightFlag; + + TInt iFlags; + + TInt iValidKeystrokeCount; + TInt iPhraseCreation; + TInt iPhraseCreationEditingState; + TInt iChangeState; + /** + * whether the state change from entry to spelling editing is automatical. + */ + TInt iState; + + TInt iLastResouce; + + /** + * whether the state change from Edit to spelling. + */ + TInt iChangeStateFromEditToSpelling; + + /** + * whether the valid keystroke changed. + */ + TInt iValidKeystrokeChanged; + + /** + * whether the previous state is predictive display. + */ + TBool iPreStateIsPredictive; +}; + +inline void CAknFepUICtrlPinyinPopup::SetFlag(TInt aFlag) + { + iFlags |= aFlag; + } + +inline void CAknFepUICtrlPinyinPopup::ClearFlag(TInt aFlag) + { + iFlags &= ~aFlag; + } + +inline TBool CAknFepUICtrlPinyinPopup::IsFlagSet(TInt aFlag) const + { + return iFlags & aFlag; + } + +#endif // __AKN_FEP_UI_AVKON_PINYIN_POPUP_H + +// End of file