--- /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 <e32std.h>
+#include <coecntrl.h>
+
+#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.
+ * <p> Note that if the buffer contains less characters than the current
+ * visible count, then the remaining characters will not be displayed.
+ * <p> 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.
+ * <p> 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
+ * <p> 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<CEikLabel> iCandidateLabelArray;
+ RPointerArray<CEikLabel> iOrdinalLabelArray;
+ RArray<TCandidateMode> iCandidateModeArray;
+private: // the following are members
+ CAknFepUiLayoutDataMgr* iLafDataMgr;
+ TAknLayoutRect iIndiFepArrowLeft;
+ TAknLayoutRect iIndiFepArrowRight;
+ TAknLayoutRect iIndiFepArrowUp;
+ TAknLayoutRect iIndiFepArrowDown;
+ TBufC<EMaxCandidates> 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<TPage> iPages;
+ //next paging candidate index
+ TInt iUnpagedIndex;
+ TInt iCurDisplayPage;
+ CDesCArrayFlat* iCandidateArray;
+ TInt iOrdinalLableWidth;
+ };
+
+#endif //__AKN_FEP_AVKON_CANDIDATE_PANE_H__
+
+// End of file