diff -r 000000000000 -r eb1f2e154e89 fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlCandidatePane.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/UiPlugins/AknFepUiInterface/AvkonImpl/inc/AknFepUIAvkonCtrlCandidatePane.h Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,502 @@ +/* +* Copyright (c) 2002-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 CAknFepUICtrlCandidatePane definition. +* +*/ + + + + + + + + + + + + +#ifndef __AKN_FEP_AVKON_CANDIDATE_PANE_H__ +#define __AKN_FEP_AVKON_CANDIDATE_PANE_H__ + +#include +#include + +#include "AknFepUICtrlCandidatePane.h" +#include "AknFepUIAvkonCtrlContainerChinese.h" + +class CAknFepUICtrlCandidateSelected; + +/** + * Pane which displays the Chinese Candidates. + */ +NONSHARABLE_CLASS(CAknFepUICtrlCandidatePane) : public CCoeControl, public MAknFepUICtrlCandidatePane + { +public: + /** + * first phase construction + */ + static CAknFepUICtrlCandidatePane* NewL(RWindow& aParent, CAknFepUiLayoutDataMgr* aLafDataMgr); + /** + * destructor + */ + ~CAknFepUICtrlCandidatePane(); +public: + /** + * Get a buffer that can be filled with candidate characters, + * which will subsequently be displayed. + * + * @output the text buffer of the Pane + */ + const TDesC& TextBuffer() const; + + /** + * Allows the client to set a descriptor pointer into an existing buffer of + * data, avoiding unnecessary copying of data. + *

Note that if the buffer contains less characters than the current + * visible count, then the remaining characters will not be displayed. + *

Note also that if the current selection falls outside the range + * of the size of the new buffer, it will be made not visible. + * However, the current highlighted state remains, so if the selection + * is set once more to a valid entry (or if the buffer is set to a length that + * includes the currently selected position), and the highlight is still enabled, + * the highlight will reappear. + * + * @param aBufferPtr descriptor that contains the candidates for display, + * could be a pointer into a subset of a larger descriptor + * that contains all the candidates. Note that only the + * first EMaxCandidates of aBuffer will be used. + * Length must be > 0. + */ + void SetCandidateBuffer(const TDesC& aBuffer); + + /** + * This function sets the highlighted status of the pane for rendering purposes. + * If the Pane is highlighted it displays the current selected Candidate, + * plus numbers with each of the other Candidates. + * + * @param aHighlighted ETrue if the highlight is to be set + * EFalse if the highlight is to be removed + */ + void SetHighlighted(TBool aHighlighted); + + /** + * This function returns the highlighted status of the Pane. + * + * @return ETrue if highlight was set + * EFalse if highlight was not set + * + */ + TBool Highlighted() const; + + /** + * Set the candidate mode for the specified candidate. This is used for + * setting the colour of the font for components in stroke mode + * + * @param aMode the new mode + */ + void SetCandidateMode(TInt aIndex, TCandidateMode aMode); + + /** + * Get the candidate mode for the specified candidate. + * + * @return aMode the new mode + */ + TCandidateMode CandidateMode(TInt aIndex); + + /** + * are the Horizontal Scroll Arrows enabled? + * + * @return if arrows not enabled, returns EFalse + */ + TBool IsShowHorizontalScrollArrows() const; + + /** + * enable/disable the rendering of the Horizontal Scroll Arrows. + * + * @param aValue if ETrue, enable the arrows + * if EFalse, disable the arrrows + */ + void ShowHorizontalScrollArrows(TBool aValue); + + + /** + * enable/disable the rendering of the up Scroll Arrows. + * + * @param aValue if ETrue, enable the arrows + * if EFalse, disable the arrrows + */ + void ShowUpScrollArrows(TBool aValue); + + /** + * enable/disable the rendering of the down Scroll Arrows. + * + * @param aValue if ETrue, enable the arrows + * if EFalse, disable the arrrows + */ + void ShowDownScrollArrows(TBool aValue); + + /** + * enable/disable the rendering of the left Scroll Arrows. + * + * @param aValue if ETrue, enable the arrows + * if EFalse, disable the arrrows + */ + void ShowLeftScrollArrows(TBool aValue); + + /** + * enable/disable the rendering of the right Scroll Arrows. + * + * @param aValue if ETrue, enable the arrows + * if EFalse, disable the arrrows + */ + void ShowRightScrollArrows(TBool aValue); + + /** + * are the Vertical Scroll Arrows enabled? + * + * @return if arrows not enabled, returns EFalse + */ + TBool IsShowVerticalScrollArrows() const; + + /** + * enable/disable the rendering of the Vertical Scroll Arrows. + * + * @param aValue if ETrue, enable the arrows + * if EFalse, disable the arrrows + */ + void ShowVerticalScrollArrows(TBool aValue); + + /** + * enable/disable the rendering of the candidate ordinal numbers + * + * @param aValue if ETrue, enable the ordinals + * if EFalse, disable the ordinals + * + */ + void ShowCandidateOrdinals(TBool aValue); + + /** + * enable/disable the rendering of the candidate ordinal numbers + * + * @return if not shown, return EFalse + */ + TBool IsShowCandidateOrdinals() const; + + /** + * This function returns the number of Candidates that are visible in the pane + * in its current configuration. + * + * @return number of candidates that are currently visible + */ + TInt VisibleCandidateCount() const; + + /** + * This function sets the number of candidates that are visible. + * This will affect the size of the control as determined by the layout. + * + * @param aCount the new visible count, + * must be 1 <= aCount <= EMaxCandidates + */ + void SetVisibleCandidateCount(TInt aCount); + + /** + * Select the first visible item in the candidate buffer + * + * @return ETrue if success, EFalse if no items visible + * + */ + TBool SelectFirst(); + + /** + * Select the first visible phrase item in the candidate buffer + * + * @return ETrue if success, EFalse if no items visible + * + */ + TBool SelectFirstPhrase(); + + /** + * Select the last visible item in the candidate buffer + * + * @return ETrue if success, EFalse if no items visible + * + */ + TBool SelectLast(); + + /** + * Select the last visible phrase item in the candidate buffer + * + * @return ETrue if success, EFalse if no items visible + * + */ + TBool SelectLastPhrase(); + + /** + * Select the next visible item + * + * @return ETrue if success, + * EFalse if no items visible, or if already on last visible item + */ + TBool SelectNext(); + /** + * Select the previous visible item + * + * @return ETrue if success, + * EFalse if no items visible, or if already on first visible item + */ + TBool SelectPrev(); + + /** + * This function selects the given index. + *

Note that if the new selected index is within the visible count, + * but falls on a candidate that is not valid (i.e. if it falls outside the + * length of the candidate buffer) then nothing happens and EFalse is returned + * + * @param aIndex If aIndex falls outside length of candidate buffer, + * then return EFalse to indicate failure. + * @return ETrue if index was valid, EFalse if index not valid + */ + TBool SelectIndex(TInt aIndex, TBool selected = ETrue); + + /** + * This function returns the selected index of the Candidate Pane. + * + * @return the index of the selected item. If the Pane is not highlighted it returns 0. + * + */ + TInt SelectedIndex() const; + + /** + * This function returns the character at index of the current selection + * + * @return a descrptor containing the character that is currently selected. + * If the currect selection falls outside the length of the current buffer, + * then return a null descriptor + * + */ + TPtrC CurrentCandidate() const; + /** + * This function returns the phrase at index of the current selection + * + * @return a descrptor containing the character that is currently selected. + * If the currect selection falls outside the length of the current buffer, + * then return a null descriptor + * + */ + TPtrC CurrentPhraseCandidate() const; + /** + * This function calculate the input pane's size for phrase input layout + * @return input pane's size + * + */ + TInt LabelTextWidthInPixels(TInt aIndex); + /** + * Set layout + * @param aPaneLayout the new panelayout + * + */ + void SetPaneLayout(CAknFepUICtrlContainerChinese::TPaneLayout aPaneLayout); + /** + * Split phrase candidates into pages + */ + void SplitPhraseCandidatesIntoPages(); + + /** + * Navigate to next page + */ + void NextCandidatePage(void); + + /** + * Navigate to previous page + */ + void PreviousCandidatePage(void); + + /** + * Return candidate array + */ + CDesCArrayFlat* CandidateArray(void); + + /** + * Set phrase candidate buffer + */ + void SetCandidateBuffer(void); + + /** + * Reset candidate pane state and variables + */ + void ResetCandidateState(); + + /** + * To test whether current page is the first page + */ + TBool IsFirstPage(); + + /** + * To test whether current page is the last page + */ + TBool IsLastPage(); + + /** + * To set all the cnadidate label invisible(phrase creation) + */ + void SetInVisiable(); + /** + * To test whether need to get new candidate page + */ + TBool NeedGetNewCandidatePage(); + +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; + + + //Bug Fixing for ESSG-7P5CSZ + void Enable(TBool aEnable); + +protected: + /** + * second phase construction + */ + void ConstructL(RWindow& aParent); + + /** + * Construct all the bitmap classes + */ + void ConstructBitmapsL(); + + /** + * constructor + */ + CAknFepUICtrlCandidatePane( CAknFepUiLayoutDataMgr* aLafDataMgr ); + + /** + * layout the rectangles + */ + void LayoutRects(); + + /** + * layout contained controls + */ + void LayoutContainedControls(); + + /** + * layout the labels for a single candidate + */ + void LayoutLabel(TInt aIndex); + + /** + * layout the labels for all the candidates (even those that are not currently visible) + */ + void LayoutLabels(); + + /** + * layout selected candidate + *

Note that there is only one instance, as there can + * only be one selected candidate at a time. Therefore, the control + * is placed in the position that is correct based on the current selection + * + * @param aIndex the index of the new position of the selected candidate + * + */ + void LayoutCandidateSelected(); + + /** + * set label vilisibilty, according to the current pane layout + */ + void UpdateLabelVisibility(); + + /** + * draw background color + * + * @param aRect rect in which to draw + */ + void DrawBackground(const TRect& aRect) const; + + /** + * Internal candidate paging function, + * Only paging once per call. + * + */ + void InternalSpilitPhraseCandidate(); + +private: // the following are owned + CAknFepUICtrlCandidateSelected* iCandidateSelected; + CFbsBitmap* iNaviArrowBitmapLeft; + CFbsBitmap* iNaviArrowBitmapLeftMask; + CFbsBitmap* iNaviArrowBitmapRight; + CFbsBitmap* iNaviArrowBitmapRightMask; + CFbsBitmap* iNaviArrowBitmapUp; + CFbsBitmap* iNaviArrowBitmapUpMask; + CFbsBitmap* iNaviArrowBitmapDown; + CFbsBitmap* iNaviArrowBitmapDownMask; +private: // the following need resetting + RPointerArray iCandidateLabelArray; + RPointerArray iOrdinalLabelArray; + RArray iCandidateModeArray; +private: // the following are members + CAknFepUiLayoutDataMgr* iLafDataMgr; + TAknLayoutRect iIndiFepArrowLeft; + TAknLayoutRect iIndiFepArrowRight; + TAknLayoutRect iIndiFepArrowUp; + TAknLayoutRect iIndiFepArrowDown; + TBufC iBuffer; + CAknFepUICtrlContainerChinese::TPaneLayout iPaneLayout; + TInt iVisibleCount; + TInt iSelected; + TBool iHighlighted; + TBool iShowHorizontalScrollArrows; + TBool iShowVerticalScrollArrows; + TBool iShowUpScrollArrows; + TBool iShowDownScrollArrows; + TBool iShowLeftScrollArrows; + TBool iShowRightScrollArrows; + TBool iShowCandidateOrdinals; + RArray iPages; + //next paging candidate index + TInt iUnpagedIndex; + TInt iCurDisplayPage; + CDesCArrayFlat* iCandidateArray; + TInt iOrdinalLableWidth; + }; + +#endif //__AKN_FEP_AVKON_CANDIDATE_PANE_H__ + +// End of file