--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textinput/peninputcommonctrls/inc/peninputdropdownlist/peninputdropdownlist.h Tue Feb 02 01:02:04 2010 +0200
@@ -0,0 +1,1418 @@
+/*
+* Copyright (c) 2002-2005 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: drop-down list control
+*
+*/
+
+
+#ifndef C_CFEPCTRLDROPDOWNLIST_H
+#define C_CFEPCTRLDROPDOWNLIST_H
+
+// INCLUDES
+#include <e32std.h>
+#include <w32std.h>
+#include <barsread.h>
+#include <peninputdropdownlistcontext.h>
+#include <peninputlayoutbasecontrol.h>
+#include <AknsUtils.h>
+
+
+/** class forward decalaration */
+class CCandidate;
+class CPages;
+class CBitmapDb;
+class CListManager;
+class MEventObserver;
+class CBubbleCtrl;
+class TAknTextLineLayout;
+
+/** The max length for fixed text */
+const TInt KMaxFixedTextNumber = 32;
+const TInt KDropDownListCtrlType = EUserCtrlBase | ECtrlBaseCtrl;
+
+/**
+ * The interface dealing with outer event from any control except the list
+ *
+ * The interface dealing with outer event from any control except the list
+ *
+ * @lib FepCtrlDropdownList.lib
+ * @since S60 v3.2
+ */
+class MListEventHandler
+ {
+
+public:
+
+ /**
+ * The method will be called when there is event from any control except from the list
+ *
+ * @since S60 v3.2
+ * @param aEventType The event type
+ * @param aCtrl The control who sends out the event
+ * @param aEventData The data relative with the event
+ */
+ virtual void HandleListOuterEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData);
+
+ };
+
+/**
+ * The drop-down list control
+ *
+ * The drop-down list control
+ *
+ * @lib FepCtrlDropdownList.lib
+ * @since S60 v3.2
+ */
+class CFepCtrlDropdownList : public CFepUiBaseCtrl,
+ public MFepCtrlDropdownListContext,
+ public MEventObserver
+ {
+
+public: // internal type definition
+ /**
+ * The type of list, expandable or no-expandable
+ *
+ * The type of list, expandable or no-expandable
+ *
+ * @lib FepCtrlDropdownList.lib
+ * @since S60 v3.2
+ */
+ enum TListType
+ {
+ EListExpandable,
+ EListExpandableWithBubble,
+ EListNoExpandable,
+ EListNoExpandableWithBubble,
+ EListExpandableWithoutIcon,
+ EListExpandableRollWithIcon,
+ EListExpandableRollWithIconWithBubble,
+ EListExpandableMultiRowWithoutIcon
+ };
+
+ enum TCandTruncateType
+ {
+ // beginning part of candidate are hide
+ ECandTruncateFromBeginning,
+ // end part of candidate are shown as ellipsis
+ ECandTruncateAsEllipsis,
+ // end part of candidate are hide
+ ECandTruncateFromEnd
+ };
+
+ enum TExpandType
+ {
+ ECandExpandUpward,
+ ECandExpandDownward
+ };
+
+ // horizontal direction of candidate list: shrink and expanded
+ enum THDirection
+ {
+ ECandFromLToR,
+ ECandFromRToL
+ };
+
+public: //Method
+
+ /**
+ * Destructor
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ IMPORT_C virtual ~CFepCtrlDropdownList();
+
+ /**
+ * Create one CFepCtrlDropdownList object
+ *
+ * @since S60 v3.2
+ * @param aTopLeftPoint The top left point of the drop down list
+ * @param aUiLayout The layout plugin
+ * @param aControlId This control ID
+ * @param aReader The reader from which the bitmaps ID can be read
+ * @param aCellWidth The width of one basic cell
+ * @param aCellHeight The height of one basic cell
+ * @param aNaviWidth The width of navidation
+ * @param aColNum The number of columns in one row
+ * @param aRowNum The number of rows
+ * @param aFont The font used to draw the text
+ * @param aHandler The handle which will deal with outer event to this control
+ * @param aAlignment The alighment used to draw text
+ * @param aTextMargin if alignment is not ECenter, the margin is used
+ * @param aBorderColor The color of border
+ * @param aBgColor The color of background
+ * @param aNavigationBgColor The background color of navigation area
+ * @param aTextColor The color of text
+ * @param aSpecialTextColor The color of special text
+ * @param aHighLightTextColor The color of highlight text
+ * @param aHighLightBgColor The background color of high light
+ * @param aButtonDownBgColor The background color when button pressing
+ * @return The CFepCtrlDropdownList object.
+ */
+ IMPORT_C static CFepCtrlDropdownList* NewL(const TPoint& aTopLeftPoint,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TResourceReader& aReader,
+ const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TInt aColNum,
+ const TInt aRowNum,
+ const CFont* aFont = NULL,
+ MListEventHandler* aHandler = NULL,
+ const CGraphicsContext::TTextAlign aAlignment = CGraphicsContext::ECenter,
+ const TInt aTextMargin = 3,
+ const TRgb aBorderColor = KRgbBlack,
+ const TRgb aBgColor = TRgb(0xeeeeee),
+ const TRgb aNavigationBgColor = TRgb(0xeeeeee),
+ const TRgb aTextColor = KRgbBlack,
+ const TRgb aSpecialTextColor = KRgbBlack,
+ const TRgb aHighLightTextColor = KRgbBlack,
+ const TRgb aHighLightBgColor = TRgb(0xcccccc),
+ const TRgb aButtonDownBgColor = KRgbGray);
+ IMPORT_C static CFepCtrlDropdownList* NewL(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aResId,
+ TPoint aTopLeftPoint,
+ TSize aCellSize,
+ TInt aColNum,
+ TInt aRowNum);
+
+ IMPORT_C static CFepCtrlDropdownList* NewL(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aResId,
+ TPoint aTopLeftPoint,
+ const CFont* aFont,
+ TSize aCellSize,
+ TInt aNaviWidth,
+ TInt aColNum,
+ TInt aRowNum,
+ TInt aSpinBtnHeight,
+ TInt aHorizontalCellMargin = 0,
+ TInt aVerticalCellMargin = 0,
+ THDirection aDirection = ECandFromLToR,
+ TBool aPageShown = ETrue);
+
+ /**
+ * Create one CFepCtrlDropdownList object, need to pop up yourself
+ *
+ * @since S60 v3.2
+ * @param aTopLeftPoint The top left point of the drop down list
+ * @param aUiLayout The layout plugin
+ * @param aControlId This control ID
+ * @param aReader The reader from which the bitmaps ID can be read
+ * @param aCellWidth The width of one basic cell
+ * @param aCellHeight The height of one basic cell
+ * @param aNaviWidth The width of navidation
+ * @param aColNum The number of columns in one row
+ * @param aRowNum The number of rows
+ * @param aFont The font used to draw the text
+ * @param aHandler The handle which will deal with outer event to this control
+ * @param aAlignment The alighment used to draw text
+ * @param aTextMargin if alignment is not ECenter, the margin is used
+ * @param aBorderColor The color of border
+ * @param aBgColor The color of background
+ * @param aNavigationBgColor The background color of navigation area
+ * @param aTextColor The color of text
+ * @param aSpecialTextColor The color of special text
+ * @param aHighLightTextColor The color of highlight text
+ * @param aHighLightBgColor The background color of high light
+ * @param aButtonDownBgColor The background color when button pressing
+ * @return The CFepCtrlDropdownList object.
+ */
+ IMPORT_C static CFepCtrlDropdownList* NewLC(const TPoint& aTopLeftPoint,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TResourceReader& aReader,
+ const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TInt aColNum,
+ const TInt aRowNum,
+ const CFont* aFont = NULL,
+ MListEventHandler* aHandler = NULL,
+ const CGraphicsContext::TTextAlign aAlignment = CGraphicsContext::ECenter,
+ const TInt aTextMargin = 3,
+ const TRgb aBorderColor = KRgbBlack,
+ const TRgb aBgColor = TRgb(0xeeeeee),
+ const TRgb aNavigationBgColor = TRgb(0xeeeeee),
+ const TRgb aTextColor = KRgbBlack,
+ const TRgb aSpecialTextColor = KRgbBlack,
+ const TRgb aHighLightTextColor = KRgbBlack,
+ const TRgb aHighLightBgColor = TRgb(0xcccccc),
+ const TRgb aButtonDownBgColor = KRgbGray);
+
+ /**
+ * Size change function
+ *
+ * @since S60 v3.2
+ * @param aCellWidth The width of one basic cell
+ * @param aCellHeight The height of one basic cell
+ * @param aNaviWidth The width of navidation
+ * @param aTopLeftPoint The top left point of the drop down list
+ * @param aColNum The number of columns in one row
+ * @param aRowNum The number of rows
+ * @return None.
+ */
+ IMPORT_C void SizeChanged(const TInt aCellWidth, const TInt aCellHeight,
+ const TInt aNaviWidth, const TPoint aTopLeftPoint = TPoint(0,0),
+ const TInt aColNum = 0, const TInt aRowNum = 0);
+
+ /**
+ * Set top left point of the list
+ *
+ * @since S60 v3.2
+ * @param aTopLeftPoint The top left point of the drop down list
+ * @return None.
+ */
+ IMPORT_C void SetTopLeftPoint(const TPoint aTopLeftPoint);
+
+ /**
+ * Set the width of one basic cell
+ *
+ * @since S60 v3.2
+ * @param aCellWidth The width of one basic cell
+ * @return None.
+ */
+ IMPORT_C void SetCellWidth(const TInt aCellWidth);
+
+ /**
+ * Set the height of one basic cell
+ *
+ * @since S60 v3.2
+ * @param aCellHeight The height of one basic cell
+ * @return None.
+ */
+ IMPORT_C void SetCellHeight(const TInt aCellHeight);
+
+ /**
+ * Set width of navigation
+ *
+ * @since S60 v3.2
+ * @param aNaviWidth The width of navidation
+ * @return None.
+ */
+ IMPORT_C void SetNaviWidth(const TInt aNaviWidth);
+ IMPORT_C void SetSpinBtnHeight(const TInt aHeight);
+ IMPORT_C void SetCellMargin(const TInt aHorizontalMargin, const TInt aVerticalMargin);
+
+ /**
+ * Set column numbers
+ *
+ * @since S60 v3.2
+ * @param aColNum The number of columns in one row
+ * @return None.
+ */
+ IMPORT_C void SetColNum(const TInt aColNum);
+
+ /**
+ * Set or unset highlight for cells.
+ *
+ * @since S60 v3.2
+ * @param aCellIndex Which cell would be set
+ * @param aHighlight The flag of highlight, set highlight if ETrue, otherwise cancel highlight
+ * @return None.
+ */
+ IMPORT_C void SetHighlightCell(const TInt aCellIndex, TBool aHighlight = ETrue,
+ const TBool aIsDraw = ETrue );
+
+
+ /**
+ * Set row numbers
+ *
+ * @since S60 v3.2
+ * @param aRowNum The number of rows
+ * @return None.
+ */
+ IMPORT_C void SetRowNum(const TInt aRowNum);
+
+ /**
+ * Set border color
+ *
+ * @since S60 v3.2
+ * @param aBorderColor The border color
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetBorderColor(TRgb aBorderColor, TBool aReDraw = EFalse);
+
+ /**
+ * Set background color for the whole area
+ *
+ * @since S60 v3.2
+ * @param aBgColor The background color
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetBgColor(TRgb aBgColor, TBool aReDraw = EFalse);
+
+ /**
+ * Set background for navigation area
+ *
+ * @since S60 v3.2
+ * @param aNavigationBgColor The background color of navigation area
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetNavigationBgColor(TRgb aNavigationBgColor, TBool aReDraw = EFalse);
+
+ /**
+ * Set text color
+ *
+ * @since S60 v3.2
+ * @param aTextColor The color used to draw text
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetTextColor(TRgb aTextColor, TBool aReDraw = EFalse);
+
+ /**
+ * Set color for special text
+ *
+ * @since S60 v3.2
+ * @param aSpecialTextColor The color used to draw special text
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetSpecialTextColor(TRgb aSpecialTextColor, TBool aReDraw = EFalse);
+
+ /**
+ * Set color for high light text
+ *
+ * @since S60 v3.2
+ * @param aHighLightTextColor The color used to draw high light text
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetHighLightTextColor(TRgb aHighLightTextColor, TBool aReDraw = EFalse);
+
+ /**
+ * Set background color for highlight
+ *
+ * @since S60 v3.2
+ * @param aHighLightBgColor The background color of high light area
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetHighLightBgColor(TRgb aHighLightBgColor, TBool aReDraw = EFalse);
+
+ /**
+ * The method will be called when there is event from any control except from the list
+ *
+ * @since S60 v3.2
+ * @param aFont The font used to draw text
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetFont(const CFont* aFont, TBool aReDraw = EFalse);
+
+ /**
+ * Set text alignment
+ *
+ * @since S60 v3.2
+ * @param aAlignment The alignment used to draw text
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetTextAlighment(const CGraphicsContext::TTextAlign aAlignment,
+ TBool aReDraw = EFalse);
+
+ /**
+ * Set text margin if alignment is not ECenter
+ *
+ * @since S60 v3.2
+ * @param aTextMargin the margin used to draw text
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetTextMargin(const TInt aTextMargin, TBool aReDraw = EFalse);
+
+ /**
+ * set secondary list
+ *
+ * @since S60 v3.2
+ * @param aIndex the cell index need to set new color
+ * @param aBgColor The background color
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void SetSecondaryList(RArray<TInt>& aIndexList, TBool aReDraw = EFalse);
+
+ /**
+ * Set event handler when there is out event coming
+ *
+ * @since S60 v3.2
+ * @param aHandler The event handler, which has implemented the interface of MListEventHandler
+ * @return None.
+ */
+ IMPORT_C void SetListEventHandler(MListEventHandler* aHandler);
+
+ /**
+ * Set event id when candidate is selected
+ *
+ * @since S60 v3.2
+ * @param aEventId The event id when candidate is selected
+ * @return The CListMultiRowWithIcon pointer.
+ */
+ IMPORT_C void SetEventIdForCandidateSelected(TInt aEventId);
+
+ /**
+ * Set event id when need to get next page candidate
+ *
+ * @since S60 v3.2
+ * @param aEventId The event id need next page candidate
+ * @return None
+ */
+ IMPORT_C void SetEventIdForNextPageCandidate(TInt aEventId);
+
+ /**
+ * Set event id when need to get previous page candidate
+ *
+ * @since S60 v3.2
+ * @param aEventId The event id need previous page candidate
+ * @return None
+ */
+ IMPORT_C void SetEventIdForPreviousPageCandidate(TInt aEventId);
+
+ /**
+ * Set event id when need to judge if candidate exist
+ *
+ * @since S60 v3.2
+ * @param aEventId The event id judge if candidate exist
+ * @return None
+ */
+ IMPORT_C void SetEventIdForCandidateExisted(TInt aEventId);
+
+ /**
+ * Set candidates for the list
+ *
+ * @since S60 v3.2
+ * @param aCandidates the candidates array
+ * @param aListType The list type used when redraw
+ * @param aFixedText The fixed text(only used in English)
+ * @return None.
+ */
+ IMPORT_C void SetCandidatesL(const RPointerArray<HBufC>& aCandidates,
+ const TListType aListType = EListExpandable,
+ const TDesC& aFixedText = KNullDesC16);
+
+ IMPORT_C void SetCandTruncateType(
+ const TCandTruncateType aTruncateType = ECandTruncateFromEnd);
+
+ /**
+ * Add candidates for the list
+ *
+ * @since S60 v3.2
+ * @param aCandidates the candidates array
+ * @param aListType The list type used when redraw
+ * @return None.
+ */
+ IMPORT_C void AddCandidatesL(const RPointerArray<HBufC>& aCandidates,
+ const TListType aListType = EListExpandable);
+
+ /**
+ * Reset and clear all candidates in the list and redraw the list
+ *
+ * @since S60 v3.2
+ * @param aListType The list type used when redraw
+ * @return None.
+ */
+ IMPORT_C void ResetAndClear(const TListType aListType = EListNoExpandable);
+
+
+ /**
+ * Fold the expanding list
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ IMPORT_C void FoldList();
+
+// from base class CFepUiBaseCtrl
+
+ /**
+ * Draw the list
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ IMPORT_C void Draw();
+
+ /**
+ * Active the control
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ IMPORT_C void SetActive(TBool aActiveFlag);
+
+ /**
+ * Get rect of the drop down list
+ *
+ * @since S60 v3.2
+ * @return The rect of the drop down list
+ */
+ IMPORT_C const TRect& Rect();
+
+ /**
+ * Handle pointer down event
+ *
+ * @since S60 v3.2
+ * @param aPoint The point position relative the layout
+ */
+ IMPORT_C CFepUiBaseCtrl* HandlePointerDownEventL(const TPoint& aPoint);
+
+ /**
+ * Handle pointer move event
+ *
+ * @since S60 v3.2
+ * @param aPoint The point position relative the layout
+ */
+ IMPORT_C CFepUiBaseCtrl* HandlePointerMoveEventL(const TPoint& aPoint);
+
+ /**
+ * Handle pointer up event
+ *
+ * @since S60 v3.2
+ * @param aPoint The point position relative the layout
+ */
+ IMPORT_C CFepUiBaseCtrl* HandlePointerUpEventL(const TPoint& aPoint);
+
+ /**
+ * Handle pointer leave event
+ *
+ * @since S60 v3.2
+ * @param aPoint The point position relative the layout
+ */
+ IMPORT_C void HandlePointerLeave(const TPoint& aPoint);
+
+// from interface MEventObserver
+
+ /**
+ * Handle event
+ * @since Series 60 3.1
+ * @param aEventType The event type
+ * @param aCtrl The control who sends the event
+ * @param aEventData The event data
+ * @return None
+ */
+ IMPORT_C void HandleControlEvent(TInt aEventType, CFepUiBaseCtrl* aCtrl,
+ const TDesC& aEventData);
+
+// from base class CFepUiBaseCtrl
+
+ /**
+ * Move the drop down list
+ * @since Series 60 3.1
+ * @param aOffset The offset point
+ * @return None
+ */
+ IMPORT_C void Move(const TPoint& aOffset);
+
+ /**
+ * Hide the control
+ * @since Series 60 3.1
+ * @return None
+ */
+ IMPORT_C void OnDeActivate();
+
+ /**
+ * Hide or show dropdown list.
+ *
+ * @param aFlag ETrue if want to hide the control.
+ */
+ IMPORT_C void Hide( TBool aFlag );
+
+// from interface MContext
+
+ /**
+ * Get the candidate count
+ *
+ * @since S60 v3.2
+ * @return the candidate count.
+ */
+ IMPORT_C TInt CandidateCount() const;
+
+ /**
+ * Enable multi color or not
+ *
+ * @since S60 v3.2
+ * @param aEnable Enable mutil color if ETrue, otherwise disable
+ * @param aReDraw Redraw if ETrue, otherwise not redraw
+ * @return None.
+ */
+ IMPORT_C void EnableSecondary(TBool aEnable, TBool aReDraw = EFalse);
+
+ /**
+ * Get the flag of enable or disable multi color
+ *
+ * @since S60 v3.2
+ * @return ETrue if enable, or EFalse.
+ */
+ IMPORT_C TBool IsEnableSecondary() const;
+
+ /**
+ * This function creates drop down list from resource, before calling
+ * this function, caller should set resource id of drop down list first
+ *
+ * @since S60 v3.2
+ * @return None
+ */
+ IMPORT_C void ConstructFromResourceL();
+
+ /**
+ * Get secondary list
+ *
+ * @since S60 v3.2
+ * @return color array.
+ */
+ const RArray<TInt>& GetSecondaryList() const;
+
+ /**
+ * Draw mask for the appointed rect
+ * @since Series 60 3.1
+ * @param aRect The rect which will be redrawn
+ * @return None
+ */
+ void DrawMask(TRect aRect);
+
+ /**
+ * Active bitmap context
+ * @since Series 60 3.1
+ * @return None
+ */
+ void ActivateBitmapContext();
+
+ /**
+ * Get the graphics context
+ * @since Series 60 3.1
+ * @return The graphics context
+ */
+ CFbsBitGc* Gc();
+
+ /**
+ * Get the first candidate visible
+ *
+ * @since S60 v3.2
+ * @return The first candidate index.
+ */
+ TInt GetFirstCandidateIndex();
+
+ /**
+ * Get the first candidate visible
+ *
+ * @since S60 v3.2
+ * @return The last candidate index.
+ */
+ TInt GetLastCandidateIndex();
+
+ /**
+ * Set the first candidate visible
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void SetFirstCandidateIndex(TInt aFirstIndex);
+
+ /**
+ * Set the first candidate visible
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void SetLastCandidateIndex(TInt aLastIndex);
+
+ /**
+ * Get the appointed candidate
+ * @since Series 60 3.1
+ * @param aIndex The index which will be check out
+ * @return The appointed candidate
+ */
+ CCandidate* GetCandidate(TInt aIndex);
+
+ /**
+ * Get top left point
+ * @since Series 60 3.1
+ * @return The top left point
+ */
+ TPoint GetTopLeftPoint();
+
+ /**
+ * Get cell width
+ * @since Series 60 3.1
+ * @return The cell width
+ */
+ TInt GetCellWidth();
+
+ /**
+ * Get cell height
+ * @since Series 60 3.1
+ * @return The cell height
+ */
+ TInt GetCellHeight();
+
+ /**
+ * Get navigation width
+ * @since Series 60 3.1
+ * @return The navigation width
+ */
+ TInt GetNaviWidth();
+
+ TInt GetSpinBtnHeight();
+ TInt GetCellHorizontalMargin();
+ TInt GetCellVerticalMargin();
+ TInt ListType();
+ TInt OneRowStartCandIdx();
+ void SetOneRowStartCandIdx(TInt aOriginalCandIdx);
+ TInt GetOriginalFirstCandIdx();
+ void SetOriginalFirstCandIdx(TInt aOriginalFirstCandIdx);
+ TInt CandTruncateType();
+ CList* ActiveList();
+ void SetUpdateListReDrawFlag(TBool aReDraw);
+ TBool GetUpdateListRedrawFlag();
+ IMPORT_C void SetFuzzyBoundry(TInt aFuzzyBoundry);
+ TInt FuzzyBoundry();
+ TInt CandExpandType();
+ IMPORT_C void SetCandExpandType(const TExpandType aType = ECandExpandDownward);
+ TInt CandHDirection();
+ inline void SetHDirection(const THDirection aDirection = ECandFromLToR);
+
+ // when drop down list is expandable, decide pageup/pagedown shown or not
+ TBool PageCtrlShown();
+ inline void SetPageCtrlShown(TBool aShown = ETrue);
+
+ /**
+ * Get columns number
+ * @since Series 60 3.1
+ * @return The top left point
+ */
+ TInt GetColNum();
+
+ /**
+ * Get rows number
+ * @since Series 60 3.1
+ * @return The top left point
+ */
+ TInt GetRowNum();
+
+ /**
+ * Get the font used to draw text
+ * @since Series 60 3.1
+ * @return The font used to draw text
+ */
+ const CFont* GetFont();
+
+ /**
+ * Get alignment used to draw the text
+ * @since Series 60 3.1
+ * @return The alignment used to draw the text
+ */
+ CGraphicsContext::TTextAlign GetAlignment();
+
+ /**
+ * Get text margin used to draw the text
+ * @since S60 v3.2
+ * @return The margin used to draw the text
+ */
+ TInt GetTextMargin();
+
+ /**
+ * Get background color
+ * @since Series 60 3.1
+ * @return The background color
+ */
+ TRgb GetBgColor();
+
+ /**
+ * Get button down color
+ * @since Series 60 3.1
+ * @return The background color
+ */
+ TRgb GetButtonDownBgColor();
+
+ /**
+ * Get border color
+ * @since Series 60 3.1
+ * @return The border color
+ */
+ TRgb GetBorderColor();
+
+ /**
+ * Get text color
+ * @since Series 60 3.1
+ * @return The text color
+ */
+ TRgb GetTextColor();
+
+ /**
+ * Get background color for highlight area
+ * @since Series 60 3.1
+ * @return The background color for highlight area
+ */
+ TRgb GetHighLightBgColor();
+
+ /**
+ * Get high light text color
+ * @since Series 60 3.1
+ * @return The high light text color
+ */
+ TRgb GetHighLightTextColor();
+
+ /**
+ * Get special text color
+ * @since Series 60 3.1
+ * @return The special text color
+ */
+ TRgb GetSpecialTextColor();
+
+ /**
+ * Get fixed text
+ * @since Series 60 3.1
+ * @return The fixed text
+ */
+ TDesC GetFixedText();
+
+ /**
+ * Get highlight cell list
+ * @since Series 60 3.1
+ * @return The highlight cell list
+ */
+ const RArray<TInt>& GetHighlightList() const;
+
+ /**
+ * Get page manager
+ * @since Series 60 3.1
+ * @return The page manager
+ */
+ CPages* GetPages();
+
+ /**
+ * Get bitmap manager
+ * @since Series 60 3.1
+ * @return The bitmap manager
+ */
+ CBitmapDb* GetBitmapDb();
+
+ /**
+ * Report event when candidate is selected
+ * @since Series 60 3.1
+ * @param aCandidate The candidate string
+ * @param aSelectedIndex The index of the selected candidate
+ * @return None
+ */
+ void ReportCandidateSelectEventL(const TDesC& aCandidate, const TInt aSelectedIndex);
+
+ /**
+ * Invalidate some rect and redraw it
+ * @since Series 60 3.1
+ * @param aRect The rect which will be redrawn
+ * @param aUpdateAll Update all or not
+ * @return None
+ */
+ void Invalidate(const TRect& aRect,TBool aUpdateAll = EFalse);
+
+ /**
+ * Change active list
+ *
+ * @since S60 v3.2
+ * @param aList The new active list
+ * @param aLastIndex The last visible candidate index
+ * @return None.
+ */
+ void ChangeActiveList(CList* aList, TInt aLastIndex = 0);
+
+ /**
+ * Get pen size
+ *
+ * @since S60 v3.2
+ * @return The pen size.
+ */
+ const TSize GetPenSize();
+
+ /**
+ * Set pointer capture
+ *
+ * @since S60 v3.2
+ * @param aFlag ETrue to capture pointer, otherwise EFalse
+ * @return None.
+ */
+ void SetCapture(TBool aFlag);
+
+ /**
+ * Notify get next candidate page
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void NotifyGetNextPage();
+
+ /**
+ * Notify get previous candidate page
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void NotifyGetPreviousPage();
+
+ /**
+ * Notify close candidate page
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void NotifyClosePage();
+
+ /**
+ * Set flag of if next candidate after last page eixsted
+ *
+ * @since S60 v3.2
+ * @param aFlag ETrue if candidate exist, otherwise EFalse
+ * @return None
+ */
+ IMPORT_C void SetFlagCandidateExist(TBool aFlag);
+
+ /**
+ * Judge if next candidate existed
+ *
+ * @since S60 v3.2
+ * @return ETrue if candidate exist, otherwise EFalse
+ */
+ TBool NextCandidateExist();
+
+ /**
+ * Auto change active list
+ *
+ * @since S60 v3.2
+ * @param aLastIndex The last visible candidate index
+ * @return None.
+ */
+ void AutoChangeActiveList( TInt aLastIndex = 0 );
+
+ /**
+ * Set dropdown list image ID
+ *
+ * @since S60 v3.2
+ * @param TDropdownListDrawInfo image information
+ * @return None.
+ */
+ IMPORT_C void SetDropdownListImgID(TDropdownListDrawInfo aDropdownListDrawInfo);
+
+ /**
+ * Show preview bubble
+ *
+ * @since S60 v3.2
+ * @param aFlag Show/Hide flag
+ * @return None.
+ */
+ IMPORT_C void ShowBubble(TBool aFlag);
+
+ /**
+ * Set bubble bitmap param
+ *
+ * @since S60 v3.2
+ * @param aBmpId
+ * @param aMaskBmpId
+ * @param aBgSkinId
+ * @return None.
+ */
+ IMPORT_C void SetBubbleBitmapParam(CFbsBitmap* aBmpId,
+ CFbsBitmap* aMaskBmpId ,
+ TAknsItemID aBgSkinId );
+
+ /**
+ * Set bubble text font
+ *
+ * @since S60 v3.2
+ * @param aFont Text font
+ * @return None.
+ */
+ IMPORT_C void SetBubbleTextFont(const CFont* aFont);
+
+ /**
+ * Set bubble text format
+ *
+ * @since S60 v3.2
+ * @param aTextFormat Text format
+ * @return None.
+ */
+ IMPORT_C void SetTextFormat(TAknTextLineLayout aTextFormat);
+
+ /**
+ * Set bubble text format
+ *
+ * @since S60 v3.2
+ * @param aLeftDiff
+ * @param aTopDiff
+ * @param aRightDiff
+ * @param aBottomDiff
+ * @return None.
+ */
+ IMPORT_C void SetFrameDiff(TInt aLeftDiff, TInt aTopDiff,
+ TInt aRightDiff,TInt aBottomDiff);
+
+ /**
+ * Set bubble size
+ *
+ * @since S60 v3.2
+ * @param aSize
+ * @return None.
+ */
+ IMPORT_C void SetBubbleSize(const TSize& aSize);
+
+ /**
+ * show preview bubble
+ *
+ * @since S60 v3.2
+ * @param aRect
+ * @param aText
+ * @return None.
+ */
+ void DrawBubble(const TRect aRect, const TDesC& aText);
+
+ /**
+ * Hide preview bubble
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void ClearBubble();
+
+ /**
+ * ReDraw preview bubble
+ *
+ * @since S60 v3.2
+ * @return None.
+ */
+ void ReDrawBubble();
+
+ CFepUiLayout* UiLayout();
+
+ /**
+ * Redraw dropdown list
+ *
+ * @since S60 v3.2
+ * @param aRect Redraw rect.
+ * @return None.
+ */
+ IMPORT_C void ReDrawRect(const TRect& aRect);
+protected:
+
+ /**
+ * Constructor
+ *
+ * @since S60 v3.2
+ * @param aTopLeftPoint The top left point of the drop down list
+ * @param aUiLayout The layout plugin
+ * @param aControlId This control ID
+ * @param aReader The reader from which the bitmaps ID can be read
+ * @param aCellWidth The width of one basic cell
+ * @param aCellHeight The height of one basic cell
+ * @param aNaviWidth The width of navidation
+ * @param aColNum The number of columns in one row
+ * @param aRowNum The number of rows
+ * @param aFont The font used to draw the text
+ * @param aHandler The handle which will deal with outer event to this control
+ * @param aAlignment The alignment used to draw text
+ * @param aTextMargin if alignment is not ECenter, the margin is used
+ * @param aBorderColor The color of border
+ * @param aBgColor The color of background
+ * @param aNavigationBgColor The background color of navigation area
+ * @param aTextColor The color of text
+ * @param aSpecialTextColor The color of special text
+ * @param aHighLightTextColor The color of highlight text
+ * @param aHighLightBgColor The background color of high light
+ * @param aButtonDownBgColor The background color when button pressing
+ */
+ CFepCtrlDropdownList(const TPoint& aTopLeftPoint,
+ CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ const TInt aCellWidth,
+ const TInt aCellHeight,
+ const TInt aNaviWidth,
+ const TInt aColNum,
+ const TInt aRowNum,
+ const CFont* aFont,
+ MListEventHandler* aHandler,
+ const CGraphicsContext::TTextAlign aAlignment,
+ const TInt aTextMargin,
+ const TRgb aBorderColor,
+ const TRgb aBgColor,
+ const TRgb aNavigationBgColor,
+ const TRgb aTextColor,
+ const TRgb aSpecialTextColor,
+ const TRgb aHighLightTextColor,
+ const TRgb aHighLighttBgColor,
+ const TRgb aButtonDownBgColor);
+
+ CFepCtrlDropdownList(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TPoint aTopLeftPoint,
+ TSize aCellSize,
+ TInt aColNum,
+ TInt aRowNum);
+
+ CFepCtrlDropdownList(CFepUiLayout* aUiLayout,
+ TInt aControlId,
+ TInt aResId,
+ TPoint aTopLeftPoint,
+ const CFont* aFont,
+ TSize aCellSize,
+ TInt aNaviWidth,
+ TInt aColNum,
+ TInt aRowNum,
+ TInt aSpinBtnHeight,
+ TInt aHorizontalCellMargin,
+ TInt aVerticalCellMargin,
+ THDirection aDirection,
+ TBool aPageShown);
+
+
+
+ /**
+ * 2nd construct function
+ * @since Series 60 3.1
+ * @param aTopLeftPoint The top left point
+ * @param aReader The reader from which the bitmaps ID can be read
+ * @return None
+ */
+ void ConstructL(const TPoint& aTopLeftPoint, TResourceReader& aReader);
+
+ void ConstructL(TPoint aTopLeftPoint, TInt aResId);
+
+private:
+
+ /**
+ * The list manager
+ * Not own
+ */
+ CListManager* iListManager;
+
+ /**
+ * The bitmap database
+ * Own
+ */
+ CBitmapDb* iBitmapDb;
+
+ /**
+ * The pages manager
+ * Own
+ */
+ CPages* iPages;
+
+ /**
+ * The candidate list
+ * Own
+ */
+ RPointerArray<CCandidate> iCandidatelist;
+
+ /**
+ * The candidate color list
+ * Own
+ */
+ RArray<TInt> iSecondaryList;
+
+ /**
+ * The high light list
+ * Own
+ */
+ RArray<TInt> iHighlightList;
+
+ /**
+ * The flag of multi color enable or disable
+ */
+ TBool iEnableSecondary;
+
+ /**
+ * The first candidate index in the list
+ */
+ TInt iFirstCandidateIndex;
+
+ /**
+ * The last candidate index in the list
+ */
+ TInt iLastCandidateIndex;
+
+ /**
+ * The font used to draw the text
+ * Own
+ */
+ const CFont* iFont;
+
+ const CFont* iBubbleFont;
+
+ /**
+ * Cell width
+ */
+ TInt iCellWidth;
+
+ /**
+ * Cell height
+ */
+ TInt iCellHeight;
+
+ /**
+ * navigation width
+ */
+ TInt iNaviWidth;
+
+ TInt iSpinBtnHeight;
+ TInt iCellHorizontalMargin;
+ TInt iCellVerticalMargin;
+ TInt iOriginalCandIdx;
+ TInt iOriginalFirstCandIdx;
+ TBool iUpdateListReDraw;
+
+ /**
+ * alignment used to draw the text
+ */
+ CGraphicsContext::TTextAlign iAlignment;
+
+ /**
+ * the margin used to draw the text if alignment is not ECenter
+ */
+ TInt iTextMargin;
+
+ /**
+ * The columns number
+ */
+ TInt iColNum;
+
+ /**
+ * The rows number
+ */
+ TInt iRowNum;
+
+ /**
+ * The border color
+ */
+ TRgb iBorderColor;
+
+ /**
+ * The background color of the whole list
+ */
+ TRgb iBgColor;
+
+ /**
+ * The navigation background color
+ */
+ TRgb iNavigationBgColor;
+
+ /**
+ * The text color
+ */
+ TRgb iTextColor;
+
+ /**
+ * The special text color
+ */
+ TRgb iSpecialTextColor;
+
+ /**
+ * The highlight text color
+ */
+ TRgb iHighLightTextColor;
+
+ /**
+ * The background color of highlight area
+ */
+ TRgb iHighLightBgColor;
+
+ /**
+ * The background color when button down
+ */
+ TRgb iButtonDownBgColor;
+
+ /**
+ * The top left point the list
+ */
+ TPoint iTopLeftPoint;
+
+ /**
+ * The fixed text
+ */
+ TBuf<KMaxFixedTextNumber> iFixedText;
+
+ /**
+ * The event ID for candidate selected
+ */
+ TInt iEventIdForCandidateSelected;
+
+ /**
+ * The event ID for next page candidate
+ */
+ TInt iEventIdForNextPageCandidate;
+
+ /**
+ * The event ID for previous page candidate
+ */
+ TInt iEventIdForPreviousPageCandidate;
+
+ /**
+ * The event ID for judge if candidate existed
+ */
+ TInt iEventIdForCandidateExisted;
+
+ /**
+ * The event handler when out event coming
+ * Not own
+ */
+ MListEventHandler* iListEventHandler;
+
+ /**
+ * The first time construct flag of drop down list
+ */
+ TBool iFirstTimeConstruct;
+
+ /**
+ * The flag to indicate that candidate existed or not at given position
+ */
+ TBool iCandidateExisted;
+
+ /**
+ * The type of drop down list.
+ */
+ TListType iListType;
+
+ TCandTruncateType iCandTruncateType;
+
+ TInt iFuzzyBoundry;
+
+ TExpandType iCandExpandType;
+
+ THDirection iCandHDirection;
+
+ TBool iPageCtrlShown;
+
+ CBubbleCtrl* iBubbleCtrl;
+
+ TBool iIsShowBubble;
+
+ TSize iBubbleSize;
+
+ TInt iBubbleVerticalMargin;
+ };
+
+#endif // C_CFEPCTRLDROPDOWNLIST_H
+
+inline void CFepCtrlDropdownList::SetHDirection(const THDirection aDirection)
+ {
+ iCandHDirection = aDirection;
+ }
+
+inline void CFepCtrlDropdownList::SetPageCtrlShown(TBool aShown)
+ {
+ iPageCtrlShown = aShown;
+ }
+// End Of File