williamr@2: /* williamr@2: * Copyright (c) 1997-1999 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: #if !defined(__EIKLBI_H__) williamr@2: #define __EIKLBI_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: class CWindowGc; williamr@2: class CListBoxData; williamr@2: class TListItemProperties; williamr@2: class TListFontBoundValues; williamr@2: class MAknsControlContext; williamr@2: williamr@2: williamr@2: /** williamr@2: * The @c CListItemDrawer class is the base class for the list box item drawers williamr@2: * which handle drawing of the contents of list box items. williamr@2: * The items may optionally be markable. williamr@2: * williamr@2: * @since Symbian 5.0 williamr@2: */ williamr@2: class CListItemDrawer : public CBase williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C ~CListItemDrawer(); williamr@2: williamr@2: /** williamr@2: * Draws the entire item. williamr@2: * williamr@2: * This function is called by the list box view. As implemented williamr@2: * in @c CListItemDrawer, this function draws the item text using williamr@2: * @c DrawActualItem(), and an item mark using @c DrawItemMark(). williamr@2: * williamr@2: * @param aItemIndex Index of the item to draw. williamr@2: * @param aItemRectPos Position of the rectangle to draw. williamr@2: * @param aItemIsSelected Whether the item is selected. williamr@2: * @param aItemIsCurrent Whether the item is current. williamr@2: * @param aViewIsEmphasized Whether the list box view has the emphasised williamr@2: * flag set (see @c CListBoxView::SetEmphasized()). williamr@2: * @param aViewIsDimmed Whether the list box view has its dimmed flag set williamr@2: * (see @c CListBoxView::SetDimmed()). williamr@2: */ williamr@2: IMPORT_C virtual void DrawItem(TInt aItemIndex, williamr@2: TPoint aItemRectPos, williamr@2: TBool aItemIsSelected, williamr@2: TBool aItemIsCurrent, williamr@2: TBool aViewIsEmphasized, williamr@2: TBool aViewIsDimmed) const; williamr@2: williamr@2: /** williamr@2: * Clears the specified rectangle of this object's graphics context. williamr@2: * williamr@2: * @param aRect Rectangle to clear. williamr@2: */ williamr@2: IMPORT_C virtual void ClearRect(const TRect& aRect) const; williamr@2: williamr@2: /** williamr@2: * Gets the width of the specified item. williamr@2: * williamr@2: * @param aItemIndex The index of the item whose width is to be returned. williamr@2: * @return The width of the item. This is 0 in @c CListItemDrawer williamr@2: */ williamr@2: IMPORT_C virtual TInt ItemWidthInPixels(TInt aItemIndex) const; williamr@2: williamr@2: /** williamr@2: * Gets the minimum cell size. williamr@2: * williamr@2: * @return The minimum size for a cell. This is @c TSize(0, 0) williamr@2: * in @c CListItemDrawer. williamr@2: */ williamr@2: IMPORT_C virtual TSize MinimumCellSize() const; williamr@2: williamr@2: /** williamr@2: * Sets the graphics context which this object uses for drawing. williamr@2: * williamr@2: * @param aGc Pointer to the context to use. williamr@2: */ williamr@2: IMPORT_C virtual void SetGc(CWindowGc* aGc); williamr@2: williamr@2: /** williamr@2: * Gets graphics context which is used for drawing. williamr@2: * williamr@2: * @return Pointer to the graphics context used for drawing. williamr@2: */ williamr@2: IMPORT_C CWindowGc* Gc() const; williamr@2: williamr@2: /** williamr@2: * Sets the width of the column containing the mark. williamr@2: * williamr@2: * @param aWidthInPixels New width for the mark column. williamr@2: */ williamr@2: IMPORT_C virtual void SetMarkColumnWidth(TInt aWidthInPixels); williamr@2: williamr@2: /** williamr@2: * Sets the width of the gap between the column containing the lists item williamr@2: * marks and the text column. williamr@2: * williamr@2: * @param aGapInPixels New gap size. williamr@2: */ williamr@2: IMPORT_C virtual void SetMarkGutter(TInt aGapInPixels); williamr@2: williamr@2: /** williamr@2: * Gets mark column width. williamr@2: * williamr@2: * @return Mark column width. williamr@2: */ williamr@2: IMPORT_C TInt MarkColumn() const; williamr@2: williamr@2: /** williamr@2: * Gets the width of the gap between the column containig the lists item williamr@2: * marks and the text column. williamr@2: * williamr@2: * @return Size of the inter-column gutter. williamr@2: */ williamr@2: IMPORT_C TInt MarkGutter() const; williamr@2: williamr@2: /** williamr@2: * Sets the item cell size. williamr@2: * The cell size is the on-screen size of the entire item, including williamr@2: * its text and its item mark. williamr@2: * williamr@2: * @param aSizeInPixels New size for the item cell. williamr@2: */ williamr@2: IMPORT_C virtual void SetItemCellSize(const TSize& aSizeInPixels); williamr@2: williamr@2: /** williamr@2: * Gets current item cell size. williamr@2: * williamr@2: * @since Symbian 3.0 williamr@2: * @return Item cell size williamr@2: */ williamr@2: IMPORT_C TSize ItemCellSize() const; williamr@2: williamr@2: /** williamr@2: * Sets the viewing rectangle for this item drawer. williamr@2: * This value is not used by the @c CListItemViewer, but may be used by its williamr@2: * derived classes. williamr@2: * williamr@2: * @param aRect New value for @c iViewRect. williamr@2: */ williamr@2: IMPORT_C virtual void SetViewRect(const TRect& aRect); williamr@2: williamr@2: /** williamr@2: * Sets whether item tick marks are drawn. williamr@2: * williamr@2: * If the draw mark flag iDrawMark is set, @c DrawItem() leaves space for williamr@2: * the marks column to the left of the text column, and @c DrawItemMark() williamr@2: * draws the item marks. williamr@2: * williamr@2: * @param aDrawMark New value for iDrawMark. williamr@2: */ williamr@2: IMPORT_C void SetDrawMark(TBool aDrawMark); williamr@2: williamr@2: /** williamr@2: * Gets a rectangle describing where the matcher cursor should be drawn. williamr@2: * The default behavious is to return uninitialised @c TRect. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aMatchableText The text of the currently matched string. williamr@2: * @param aCharPos The position in the string of the character just matched williamr@2: * in the current incremental match. williamr@2: * @param aItemCellYPos Y position of the item cell. williamr@2: * @param aCurrentItemIndex Item index for the current item. williamr@2: * @return Where the cursor should be drawn. williamr@2: */ williamr@2: IMPORT_C virtual TRect MatcherCursorRect(const TDesC& aMatchableText, williamr@2: TInt aCharPos, williamr@2: TInt aItemCellYPos, williamr@2: TInt aCurrentItemIndex ) const; williamr@2: williamr@2: /** williamr@2: * Gets the ascent of the matcher cursor. williamr@2: * williamr@2: * This is obtained for the item at index @c aCurrentItemIndex. williamr@2: * The function returns 0 by default. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aCurrentItemIndex Item index of the target item. williamr@2: * @return The height of the matcher cursor. williamr@2: */ williamr@2: IMPORT_C virtual TInt MatcherCursorAscent( TInt aCurrentItemIndex ) const; williamr@2: williamr@2: /** williamr@2: * Not Used in S60. williamr@2: */ williamr@2: IMPORT_C virtual void DrawItemMark(TBool aItemIsSelected, williamr@2: TBool aViewIsDimmed, williamr@2: const TPoint& aMarkPos) const; williamr@2: williamr@2: /** williamr@2: * Sets symbol font for the item drawer. williamr@2: * The symbol font is used to draw the standard tick item marks. williamr@2: * williamr@2: * @param aFont The font to be used. williamr@2: */ williamr@2: IMPORT_C void SetSymbolFont(const CFont* aFont); williamr@2: williamr@2: /** williamr@2: * Sets the vertical gap between items in the list. williamr@2: * williamr@2: * @param aGapInPixels New value for the vertical gap between items williamr@2: * in pixels. williamr@2: */ williamr@2: IMPORT_C void SetVerticalInterItemGap(TInt aGapInPixels); williamr@2: williamr@2: /** williamr@2: * Sets the font storage data for the item drawer and transfer ownership williamr@2: * of that data. williamr@2: * williamr@2: * @param aData Font storage data . williamr@2: */ williamr@2: IMPORT_C void SetData(CListBoxData* aData); williamr@2: williamr@2: /** williamr@2: * Gets the font for the specified item. williamr@2: * williamr@2: * The function returns @c NULL if no font storage data has been set. williamr@2: * williamr@2: * @param aItemIndex The index of the item for which the font is returned. williamr@2: * @return The item's font. williamr@2: */ williamr@2: IMPORT_C CFont* Font(TInt aItemIndex) const; williamr@2: williamr@2: /** williamr@2: * Gets the colour and style properties of the specified item. williamr@2: * williamr@2: * @param aItemIndex The index of the item for which properties williamr@2: * are obtained (Not Used). williamr@2: * @return The item's properties. williamr@2: */ williamr@2: IMPORT_C virtual TListItemProperties Properties(TInt aItemIndex) const; williamr@2: williamr@2: /** williamr@2: * Draws the frame. williamr@2: * williamr@2: * Uses the colours set with the fonts and colour functions described above. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aGc The graphics context used to draw the frame. williamr@2: * @param aRect The frame's rectangle. williamr@2: * @param aFlags The item drawer flags. williamr@2: */ williamr@2: IMPORT_C void DrawFrame(CWindowGc& aGc, williamr@2: const TRect& aRect, williamr@2: TInt aFlags) const; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Provides list box attributes for handling multiple selections. These williamr@2: * flags can be set using the @c CListItemDrawer::SetFlags function. williamr@2: */ williamr@2: enum TFlags williamr@2: { williamr@2: /** williamr@2: * If set, specifies the inclusion of a gap into which a tick mark can williamr@2: * be drawn if the item is selected. This is used in the following williamr@2: * @c CListItemDrawer class functions: williamr@2: * @c DrawItem(), williamr@2: * @c DrawItemMark(), williamr@2: * @c SetDrawMark() williamr@2: */ williamr@2: EDrawMarkSelection = 0x0001, williamr@2: williamr@2: /** williamr@2: * If set, draws a highlight over a selected list item. This is used williamr@2: * in the @c CTextListItemDrawer::DoDrawItemText() function. williamr@2: */ williamr@2: EPaintedSelection = 0x0002, williamr@2: williamr@2: /** This flag is not supported. */ williamr@2: EDrawOnlyActiveSelection = 0x0004, williamr@2: williamr@2: /** If set highlight is disabled. */ williamr@2: EDisableHighlight = 0x0008, williamr@2: williamr@2: /** This flag indicates @c CListboxData to draw pressed down state williamr@2: * rather than normal highlight on item. Make sure checking this williamr@2: * flag in subclass's Draw method, if using a custom @c CListboxData williamr@2: * inheriting from @c CColumnListBoxData or @c CFormattedCellListBoxData. williamr@2: */ williamr@2: EPressedDownState = 0x0010, williamr@2: williamr@2: /** This flag indicates the marquee is disabled. If it is set, @c CColumnListBoxData williamr@2: * or @c CFormattedCellListBoxData would disable maquee temporarily for williamr@2: * performance reason. williamr@2: */ williamr@4: EDisableMarquee = 0x0020, williamr@4: williamr@4: /** williamr@4: * This flag indicates that highlight is disabled in list because of williamr@4: * single click style. williamr@4: */ williamr@4: ESingleClickDisabledHighlight = 0x0040, williamr@4: williamr@4: /** williamr@4: * This flag indicates that single click mode is enabled. williamr@4: */ williamr@4: ESingleClickEnabled = 0x0080 williamr@2: }; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Provides attributes for list items williamr@2: */ williamr@2: enum TListItemAttribute williamr@2: williamr@2: { williamr@2: /** Highlight for current text. */ williamr@2: ECurrent = 0x0001, // may be drawn with a frame williamr@2: williamr@2: /** williamr@2: * Highlight for text when the listbox view is emphasized. williamr@2: * williamr@2: * This is used in the following @c CListBoxView class functions: williamr@2: * @c DrawItem(), @c DrawMatcherCursor(), @c SetEmphasized(). williamr@2: */ williamr@2: EEmphasized = 0x0002, // special highlight (not selected) williamr@2: williamr@2: /** williamr@2: * Highlight for text that is selected. This is used in the following williamr@2: * functions: @c CColumnListBoxItemDrawer::DrawItemText(), williamr@2: * @c CHierarchicalListItemDrawer::DrawActualItem(), williamr@2: * @c CDirContentsListItemDrawer::DrawActualItem(). williamr@2: */ williamr@2: ESelected = 0x0004, // usually different than emphasized williamr@2: williamr@2: /** williamr@2: * Sum of all the above attributes. williamr@2: * This last attribute is used to control that one can use only williamr@2: * valid attributes above. So do not use it at all. williamr@2: */ williamr@2: EMask = 0x0007 // sum of all others attributes williamr@2: williamr@2: }; williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Sets the colour used to draw non-highlighted text. williamr@2: * williamr@2: * @param aColor The text colour. williamr@2: */ williamr@2: inline void SetTextColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Sets the colour used to draw the background for non-highlighted items. williamr@2: * williamr@2: * @param aColor The background colour. williamr@2: */ williamr@2: inline void SetBackColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Sets the colour used to draw highlighted text. williamr@2: * williamr@2: * @param aColor The highlighted text colour. williamr@2: */ williamr@2: inline void SetHighlightedTextColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Sets the colour used to draw the background for highlighted items. williamr@2: * williamr@2: * @param aColor The highlighted background colour. williamr@2: */ williamr@2: inline void SetHighlightedBackColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Sets the colour used to draw dimmed text. williamr@2: * williamr@2: * @param aColor The dimmed text colour. williamr@2: */ williamr@2: inline void SetDimmedTextColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Sets the colour used to draw the background for dimmed items. williamr@2: * williamr@2: * @param aColor The background colour for dimmed items. williamr@2: */ williamr@2: inline void SetDimmedBackColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw non-highlighted text. williamr@2: * williamr@2: * @return The text colour. williamr@2: */ williamr@2: inline TRgb TextColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw the background for non-highlighted items. williamr@2: * williamr@2: * @return Background colour. williamr@2: */ williamr@2: inline TRgb BackColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw highlighted text. williamr@2: * williamr@2: * @return The highlighted text colour. williamr@2: */ williamr@2: inline TRgb HighlightedTextColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw the background for highlighted items. williamr@2: * williamr@2: * @return The highlighted background colour. williamr@2: */ williamr@2: inline TRgb HighlightedBackColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw dimmed text. williamr@2: * williamr@2: * @return The dimmed text colour. williamr@2: */ williamr@2: inline TRgb DimmedTextColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw the background for dimmed items. williamr@2: * williamr@2: * @return The background colour for dimmed items. williamr@2: */ williamr@2: inline TRgb DimmedBackColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the item drawer flags. williamr@2: * williamr@2: * @return The item drawer flags. williamr@2: */ williamr@2: inline TInt Flags() const; williamr@2: williamr@2: /** williamr@2: * Sets the item drawer flags. williamr@2: * williamr@2: * @param aFlags The new item drawer flags. williamr@2: */ williamr@2: IMPORT_C void SetFlags(TInt aFlags); williamr@2: williamr@2: /** williamr@2: * Sets the item drawer flags. williamr@2: * williamr@2: * @param aFlags The new item drawer flags. williamr@2: */ williamr@2: IMPORT_C void ClearFlags(TInt aFlags); williamr@2: williamr@2: /** williamr@2: * Access to skin contexts. williamr@2: * williamr@2: * @since S60 2.0 williamr@2: * @return Pointer to skin background control context. williamr@2: */ williamr@2: IMPORT_C MAknsControlContext *SkinBackgroundControlContext() const; williamr@2: /** williamr@2: * Ability to enable skins in listboxes. williamr@2: * williamr@2: * @since S60 2.0 williamr@2: * @param aEnabled parameter for enabling/disabling skin. williamr@2: * @c ETrue enables skin, williamr@2: * @c EFalse disables skin williamr@2: */ williamr@2: IMPORT_C void SetSkinEnabledL(TBool aEnabled); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C CListItemDrawer(); williamr@2: williamr@2: /** williamr@2: * Draws item text. williamr@2: * williamr@2: * This function is called by @c CListItemDrawer::DrawItem() with williamr@2: * appropriate arguments. Its purpose is to draw the actual item williamr@2: * - everything other than the item mark - into the graphics context. williamr@2: * williamr@2: * @param aItemIndex Which item to draw. williamr@2: * @param aActualItemRect Where the item should be drawn. williamr@2: * @param aItemIsCurrent Whether the item is current. williamr@2: * @param aViewIsEmphasized Whether the list box view is emphasised. williamr@2: * @param aViewIsDimmed Whether the list box view is dimmed. williamr@2: * @param aItemIsSelected Whether the list box item is selected. williamr@2: */ williamr@2: virtual void DrawActualItem(TInt aItemIndex, williamr@2: const TRect& aActualItemRect, williamr@2: TBool aItemIsCurrent, williamr@2: TBool aViewIsEmphasized, williamr@2: TBool aViewIsDimmed, williamr@2: TBool aItemIsSelected) const = 0; williamr@2: williamr@2: /** williamr@2: * Resets the pen style, brush style, brush colour etc. to suitable williamr@2: * starting values for this class. williamr@2: * williamr@2: * This function is called after every drawing operation. williamr@2: */ williamr@2: IMPORT_C virtual void ResetGc() const; williamr@2: williamr@2: /** williamr@2: * Gets the colour used to draw tick marks. williamr@2: * williamr@2: * A tick mark usually indicates that an item is selected. williamr@2: * williamr@2: * @return The tick mark colour. williamr@2: */ williamr@2: inline TRgb MarkColor() const; williamr@2: williamr@2: /** williamr@2: * Gets the vertical gap between items in pixels. williamr@2: * williamr@2: * @return The vertical gap between items in pixels. williamr@2: */ williamr@2: IMPORT_C TInt VerticalInterItemGap() const; williamr@2: williamr@2: /** williamr@2: * Sets up the graphics context for the specified item. williamr@2: * williamr@2: * @param aItemIndex The item for which the graphics context williamr@2: * will be set up. williamr@2: */ williamr@2: IMPORT_C void SetupGc(TInt aItemIndex) const; williamr@2: williamr@2: private: williamr@2: williamr@2: IMPORT_C virtual TAny* Reserved_1(); williamr@2: williamr@2: inline TInt& VerticalInterItemGap(); williamr@2: williamr@2: inline const CFont* SymbolFont() const; williamr@2: williamr@2: inline const CFont*& SymbolFont(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** Item's cell size. */ williamr@2: TSize iItemCellSize; williamr@2: williamr@2: /** Mark gutter. */ williamr@2: TInt iMarkGutter; williamr@2: williamr@2: /** Mark column width. */ williamr@2: TInt iMarkColumnWidth; williamr@2: williamr@2: /** View area. */ williamr@2: TRect iViewRect; williamr@2: williamr@2: /** Draw mark. */ williamr@2: TBool iDrawMark; williamr@2: williamr@2: /** Graphics context controller. */ williamr@2: CWindowGc* iGc; williamr@2: williamr@2: /** Color of text. */ williamr@2: TRgb iTextColor; williamr@2: williamr@2: /** Background color. */ williamr@2: TRgb iBackColor; williamr@2: williamr@2: /** Color of highlighted text. */ williamr@2: TRgb iHighlightedTextColor; williamr@2: williamr@2: /** Highlighted background color. */ williamr@2: TRgb iHighlightedBackColor; williamr@2: williamr@2: /** Color of dimmed text. */ williamr@2: TRgb iDimmedTextColor; williamr@2: williamr@2: /** Color of dimmed background. */ williamr@2: TRgb iDimmedBackColor; williamr@2: williamr@2: /** Mark color. */ williamr@2: TRgb iMarkColor; williamr@2: williamr@2: /** Data model. */ williamr@2: CListBoxData* iData; williamr@2: williamr@2: private: williamr@2: williamr@2: const CFont* iSymbolFont; williamr@2: williamr@2: TInt iVerticalInterItemGap; williamr@2: williamr@2: TInt iSpare; williamr@2: williamr@2: TUint iFlags; williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: class MTextListBoxModel; williamr@2: williamr@2: williamr@2: /** williamr@2: * Item drawer which can handle text. williamr@2: * williamr@2: * Used by @c CListBoxView to draw individual list box items williamr@2: * for a @c CEikTextListBox williamr@2: */ williamr@2: class CTextListItemDrawer : public CListItemDrawer williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C CTextListItemDrawer(); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C ~CTextListItemDrawer(); williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: * williamr@2: * Constructs a new text item drawer which draws the data of the specified williamr@2: * model using the supplied font. williamr@2: * williamr@2: * @param aTextListBoxModel The model whose items will be drawn. williamr@2: * @param aFont The font in which the items will be drawn. williamr@2: */ williamr@2: IMPORT_C CTextListItemDrawer(MTextListBoxModel* aTextListBoxModel, williamr@2: const CFont* aFont); williamr@2: williamr@2: /** williamr@2: * Handles 2nd phase construction. williamr@2: * williamr@2: * @param aFont The font in which the list box items will be drawn. williamr@2: */ williamr@2: IMPORT_C void ConstructL(const CFont* aFont); williamr@2: williamr@2: /** williamr@2: * Draws the actual item contents for the specified item in the specified williamr@2: * rectangle. williamr@2: * williamr@2: * @param aItemIndex Index of the item to draw. williamr@2: * @param aActualItemRect Area to draw into. williamr@2: * @param aItemIsCurrent @c ETrue if the item is current. williamr@2: * @param aViewIsEmphasized @c ETrue if the view is emphasised. williamr@2: * @param aViewIsDimmed Ignored williamr@2: * @param aItemIsSelected @c ETrue if the item is selected. williamr@2: */ williamr@2: IMPORT_C virtual void DrawActualItem(TInt aItemIndex, williamr@2: const TRect& aActualItemRect, williamr@2: TBool aItemIsCurrent, williamr@2: TBool aViewIsEmphasized, williamr@2: TBool aViewIsDimmed, williamr@2: TBool aItemIsSelected) const; williamr@2: williamr@2: /** williamr@2: * Gets the width in pixels of the specified item. williamr@2: * williamr@2: * @param aItemIndex The index of the item for which the width is obtained. williamr@2: * @return The specified item’s width in pixels. williamr@2: */ williamr@2: IMPORT_C virtual TInt ItemWidthInPixels(TInt aItemIndex) const; williamr@2: williamr@2: /** williamr@2: * Gets the minimum size of a cell based on the font and the number of williamr@2: * characters in the cell. williamr@2: * williamr@2: * @return The minimum size for a cell, in pixels. williamr@2: */ williamr@2: IMPORT_C virtual TSize MinimumCellSize() const; williamr@2: williamr@2: /** williamr@2: * Sets the graphics context. williamr@2: * williamr@2: * @param aGc The graphics context to use. williamr@2: */ williamr@2: IMPORT_C virtual void SetGc(CWindowGc* aGc); williamr@2: williamr@2: /** williamr@2: * Sets the number of characters in a cell. williamr@2: * This value affects only @c MinimumCellSize(). williamr@2: * williamr@2: * @param aNumOfCharsToDisplayInCell Number of characters to williamr@2: * display in a cell. williamr@2: */ williamr@2: IMPORT_C void SetCellWidthInChars(TInt aNumOfCharsToDisplayInCell); williamr@2: williamr@2: /** williamr@2: * Gets the position and size of the matcher cursor. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aMatchableText String currently being matched. Not Used. williamr@2: * @param aCharPos Position within the string. Not Used. williamr@2: * @param aItemCellYPos Y position of the item cell in pixels. Not Used. williamr@2: * @param aCurrentItemIndex Item index for the current item. Not Used. williamr@2: * @return The rectangle covered by the matcher cursor, in pixels. williamr@2: */ williamr@2: IMPORT_C virtual TRect MatcherCursorRect(const TDesC& aMatchableText, williamr@2: TInt aCharPos, williamr@2: TInt aItemCellYPos, williamr@2: TInt aCurrentItemIndex ) const; williamr@2: williamr@2: /** williamr@2: * No Implementation. williamr@2: * williamr@2: * Derived classes that deal with text and want to support incremental williamr@2: * matching in listboxes need to redefine this function. williamr@2: * Should be used to get the ascent of the matcher cursor in pixels. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aCurrentItemIndex Index of the current item. Not Used. williamr@2: * @return Always returns 0; williamr@2: */ williamr@2: IMPORT_C virtual TInt MatcherCursorAscent( TInt aCurrentItemIndex ) const; williamr@2: williamr@2: /** williamr@2: * Sets the font. williamr@2: * williamr@2: * @param aFont The new font. williamr@2: */ williamr@2: IMPORT_C void SetFont(const CFont* aFont); williamr@2: williamr@2: /** williamr@2: * Sets the search string. williamr@2: * williamr@2: * @param aSearchString The new search string. williamr@2: */ williamr@2: IMPORT_C void SetSearchStringL(const TDesC* aSearchString); williamr@2: williamr@2: /** williamr@2: * Gets font for the specified item. williamr@2: * williamr@2: * @param aIndex The index of the target item. williamr@2: * @return Specified item's font. williamr@2: */ williamr@2: IMPORT_C const CFont* Font(TInt aIndex) const; williamr@2: williamr@2: // SAPLAF new methods. williamr@2: williamr@2: williamr@2: /** williamr@2: * Sets item mark position. williamr@2: * williamr@2: * @param aPos The new position. williamr@2: */ williamr@2: inline void SetItemMarkPosition(TInt aPos); williamr@2: williamr@2: /** williamr@2: * Gets item mark position. williamr@2: * williamr@2: * @return Position of the Item mark. williamr@2: */ williamr@2: inline TInt ItemMarkPosition() const; williamr@2: williamr@2: /** williamr@2: * Sets the item mark replacement. williamr@2: * williamr@2: * @param aReplacement The new replacement descriptor. williamr@2: */ williamr@2: inline void SetItemMarkReplacement(const TDesC &aReplacement); williamr@2: williamr@2: /** williamr@2: * Gets item mark replacement. williamr@2: * williamr@2: * @return Pointer to the replacement string. williamr@2: */ williamr@2: inline TPtrC ItemMarkReplacement() const; williamr@2: williamr@2: /** williamr@2: * Sets item mark reverse to be active or not. williamr@2: * williamr@2: * @param aReverse The new setting. williamr@2: * @c ETrue if item is marked reversed. williamr@2: */ williamr@2: inline void SetItemMarkReverse(TBool aReverse); williamr@2: williamr@2: /** williamr@2: * Check if the item has been marked reversed is active. williamr@2: * williamr@2: * @return Indicates if active or not. williamr@2: * @c ETrue if active williamr@2: */ williamr@2: inline TBool ItemMarkReverse() const; williamr@2: williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Draws text. williamr@2: * williamr@2: * This function is invoked by @c DrawItemText() to draw a string into a williamr@2: * rectangular area of @c iGc. williamr@2: * williamr@2: * @param aDes The string to draw. williamr@2: * @param aItemTextRect Area to draw into. williamr@2: * @param aItemIsCurrent @c ETrue if the item is current. williamr@2: * @param aViewIsEmphasized @c ETrue if the view is emphasised. williamr@2: * @param aItemIsSelected @c ETrue if the item is selected. williamr@2: * @param aItemIndex The item’s index. williamr@2: */ williamr@2: IMPORT_C virtual void DoDrawItemText(const TDesC& aDes, williamr@2: const TRect& aItemTextRect, williamr@2: TBool aItemIsCurrent, williamr@2: TBool aViewIsEmphasized, williamr@2: TBool aItemIsSelected, williamr@2: TInt aItemIndex) const; williamr@2: williamr@2: /** williamr@2: * Draw item text. williamr@2: * williamr@2: * This function is invoked by @c DrawActualItem() to draw the item text. williamr@2: * williamr@2: * @param aItemIndex Index of the item to draw. williamr@2: * @param aItemTextRect Area to draw into. williamr@2: * @param aItemIsCurrent @c ETrue if the item is current. williamr@2: * @param aViewIsEmphasized @c ETrue if the view is emphasised. williamr@2: * @param aItemIsSelected @c ETrue if the item is selected. williamr@2: */ williamr@2: IMPORT_C virtual void DrawItemText(TInt aItemIndex, williamr@2: const TRect& aItemTextRect, williamr@2: TBool aItemIsCurrent, williamr@2: TBool aViewIsEmphasized, williamr@2: TBool aItemIsSelected) const; williamr@2: williamr@2: /** williamr@2: * Resets the graphics context. williamr@2: * This function invokes @c CListItemDrawer::ResetGc() and resets the pen williamr@2: * colour to @c iTextColor. williamr@2: */ williamr@2: IMPORT_C virtual void ResetGc() const; williamr@2: williamr@2: private: williamr@2: williamr@2: IMPORT_C virtual TAny* Reserved_1(); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** List box model for the drawer. */ williamr@2: MTextListBoxModel* iModel; williamr@2: williamr@2: /** Font used by the drawer. */ williamr@2: const CFont* iFont; williamr@2: williamr@2: private: williamr@2: williamr@2: TInt iNumOfCharsInCell; williamr@2: williamr@2: // AVKON LAF williamr@2: williamr@2: TInt iItemMarkPos; williamr@2: williamr@2: TPtrC iItemMarkReplacement; williamr@2: williamr@2: TBool iItemMarkReverse; williamr@2: williamr@2: // AVKON LAF ENDS williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: * The @c TListItemProperties class packages together the color and williamr@2: * style properties which can be applied when drawing the contents williamr@2: * of list box items. williamr@2: * williamr@2: * @since Symbian ER5U williamr@2: */ williamr@2: williamr@2: class TListItemProperties williamr@2: williamr@2: { williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C TListItemProperties(); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Sets whether the list item is drawn bold or not bold. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aBold @c ETrue to draw the list item bold. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline void SetBold(TBool aBold); williamr@2: williamr@2: /** williamr@2: * Tests whether the list item is drawn bold. williamr@2: * williamr@2: * @deprecated williamr@2: * @return @c ETrue if the list item is drawn bold. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline TBool IsBold() const; williamr@2: williamr@2: /** williamr@2: * Sets whether or not the list item is drawn in italics. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aItalics @c ETrue to draw the list item in italics. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline void SetItalics(TBool aItalics); williamr@2: williamr@2: /** williamr@2: * Tests whether the list item is italicised. williamr@2: * williamr@2: * @deprecated williamr@2: * @return @c ETrue if the list item is drawn in italics. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline TBool IsItalics() const; williamr@2: williamr@2: /** williamr@2: * Sets whether or not the list item is drawn with an underline. williamr@2: * williamr@2: * @param aUnderlined @c ETrue to draw the list item with an underline. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline void SetUnderlined(TBool aUnderlined); williamr@2: williamr@2: /** williamr@2: * Test whether the list item is drawn with an underline. williamr@2: * williamr@2: * @return @c ETrue if the list item is drawn with an underline. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline TBool IsUnderlined() const; williamr@2: williamr@2: /** williamr@2: * Sets list item dim state. williamr@2: * williamr@2: * An item is usually drawn dimmed to indicate that it cannot accept williamr@2: * user input. williamr@2: * williamr@2: * @param aDimmed @c ETrue to draw the list item dimmed. @c EFalse otherwise. williamr@2: */ williamr@2: inline void SetDimmed(TBool aDimmed); williamr@2: williamr@2: /** williamr@2: * Tests list item dim state. williamr@2: * williamr@2: * An item is usually drawn dimmed to indicate that it cannot accept williamr@2: * user input. williamr@2: * williamr@2: * @return @c ETrue if the list item is dimmed. williamr@2: * @c EFalse otherwise. williamr@2: */ williamr@2: inline TBool IsDimmed() const; williamr@2: williamr@2: /** williamr@2: * Sets the list item’s colour. williamr@2: * williamr@2: * @param aColor The list item’s colour. williamr@2: */ williamr@2: inline void SetColor(TRgb aColor); williamr@2: williamr@2: /** williamr@2: * Gets the list item’s colour. williamr@2: * williamr@2: * @return The list item’s colour. williamr@2: */ williamr@2: inline TRgb Color() const; williamr@2: williamr@2: /** williamr@2: * Activate/deactivate separator after item. williamr@2: * williamr@2: * @deprecated williamr@2: * @param aSeparator Active/deactive selector. williamr@2: * @c ETrue = Active. williamr@2: * @c EFalse = Deactivated. williamr@2: */ williamr@2: inline void SetSeparatorAfter(TBool aSeparator); williamr@2: williamr@2: /** williamr@2: * Check if separator after item is active. williamr@2: * williamr@2: * @deprecated williamr@2: * @return @c ETrue if Active. williamr@2: * @c EFalse if Deactivated. williamr@2: */ williamr@2: inline TBool IsSeparatorAfter() const; williamr@2: williamr@2: /** williamr@2: * Select to hide the item . williamr@2: * williamr@2: * @param aHidden Defines whether the item is hidden. williamr@2: * @c ETrue = Hidden williamr@2: */ williamr@2: inline void SetHiddenSelection(TBool aHidden); williamr@2: williamr@2: /** williamr@2: * Check if the item is hidden. williamr@2: * williamr@2: * @return @c ETrue if item is hidden. williamr@2: */ williamr@2: inline TBool IsSelectionHidden() const; williamr@2: williamr@2: private: williamr@2: williamr@2: TUint iFlags; williamr@2: williamr@2: TRgb iColor; williamr@2: williamr@2: private: williamr@2: williamr@2: enum williamr@2: williamr@2: { williamr@2: williamr@2: ELbxItemBold = 0x0001, williamr@2: williamr@2: ELbxItemItalics = 0x0002, williamr@2: williamr@2: ELbxItemUnderlined = 0x0004, williamr@2: williamr@2: ELbxItemDimmed = 0x0008, williamr@2: williamr@2: ELbxItemSeparatorAfter = 0x0010, williamr@2: williamr@2: ELbxItemSelectionHidden = 0x0020 williamr@2: williamr@2: }; williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: // williamr@2: williamr@2: // Inlines williamr@2: williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: inline void CListItemDrawer::SetTextColor(TRgb aColor) williamr@2: williamr@2: {iTextColor=aColor;} williamr@2: williamr@2: inline void CListItemDrawer::SetBackColor(TRgb aColor) williamr@2: williamr@2: {iBackColor=aColor;} williamr@2: williamr@2: inline void CListItemDrawer::SetHighlightedTextColor(TRgb aColor) williamr@2: williamr@2: {iHighlightedTextColor=aColor;} williamr@2: williamr@2: inline void CListItemDrawer::SetHighlightedBackColor(TRgb aColor) williamr@2: williamr@2: {iHighlightedBackColor=aColor;} williamr@2: williamr@2: inline void CListItemDrawer::SetDimmedTextColor(TRgb aColor) williamr@2: williamr@2: {iDimmedTextColor=aColor;} williamr@2: williamr@2: inline void CListItemDrawer::SetDimmedBackColor(TRgb aColor) williamr@2: williamr@2: {iDimmedBackColor=aColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::TextColor() const williamr@2: williamr@2: {return iTextColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::BackColor() const williamr@2: williamr@2: {return iBackColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::HighlightedTextColor() const williamr@2: williamr@2: {return iHighlightedTextColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::HighlightedBackColor() const williamr@2: williamr@2: {return iHighlightedBackColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::DimmedTextColor() const williamr@2: williamr@2: {return iDimmedTextColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::DimmedBackColor() const williamr@2: williamr@2: {return iDimmedBackColor;} williamr@2: williamr@2: inline TRgb CListItemDrawer::MarkColor() const williamr@2: williamr@2: {return iMarkColor;} williamr@2: williamr@2: inline TInt CListItemDrawer::Flags() const williamr@2: williamr@2: {return iFlags;} williamr@2: williamr@2: williamr@2: williamr@2: inline TBool TListItemProperties::IsItalics() const williamr@2: williamr@2: {return iFlags&ELbxItemItalics;} williamr@2: williamr@2: inline TBool TListItemProperties::IsBold() const williamr@2: williamr@2: {return iFlags&ELbxItemBold;} williamr@2: williamr@2: inline TBool TListItemProperties::IsUnderlined() const williamr@2: williamr@2: {return iFlags&ELbxItemUnderlined;} williamr@2: williamr@2: inline TBool TListItemProperties::IsDimmed() const williamr@2: williamr@2: {return iFlags&ELbxItemDimmed;} williamr@2: williamr@2: inline TBool TListItemProperties::IsSeparatorAfter() const williamr@2: williamr@2: {return iFlags&ELbxItemSeparatorAfter;} williamr@2: williamr@2: inline TBool TListItemProperties::IsSelectionHidden() const williamr@2: williamr@2: {return iFlags&ELbxItemSelectionHidden;} williamr@2: williamr@2: williamr@2: williamr@2: inline void TListItemProperties::SetColor(TRgb aColor) williamr@2: williamr@2: {iColor=aColor;} williamr@2: williamr@2: inline TRgb TListItemProperties::Color() const williamr@2: williamr@2: {return iColor;} williamr@2: williamr@2: inline void TListItemProperties::SetBold(TBool aBold) williamr@2: williamr@2: { williamr@2: williamr@2: if (aBold) williamr@2: williamr@2: iFlags|=ELbxItemBold; williamr@2: williamr@2: else williamr@2: williamr@2: iFlags&=(~ELbxItemBold); williamr@2: williamr@2: } williamr@2: williamr@2: inline void TListItemProperties::SetItalics(TBool aItalics) williamr@2: williamr@2: { williamr@2: williamr@2: if (aItalics) williamr@2: williamr@2: iFlags|=ELbxItemItalics; williamr@2: williamr@2: else williamr@2: williamr@2: iFlags&=(~ELbxItemItalics); williamr@2: williamr@2: } williamr@2: williamr@2: inline void TListItemProperties::SetUnderlined(TBool aUnderlined) williamr@2: williamr@2: { williamr@2: williamr@2: if (aUnderlined) williamr@2: williamr@2: iFlags|=ELbxItemUnderlined; williamr@2: williamr@2: else williamr@2: williamr@2: iFlags&=(~ELbxItemUnderlined); williamr@2: williamr@2: } williamr@2: williamr@2: inline void TListItemProperties::SetDimmed(TBool aDimmed) williamr@2: williamr@2: { williamr@2: williamr@2: if (aDimmed) williamr@2: williamr@2: iFlags|=ELbxItemDimmed; williamr@2: williamr@2: else williamr@2: williamr@2: iFlags&=(~ELbxItemDimmed); williamr@2: williamr@2: } williamr@2: williamr@2: williamr@2: williamr@2: inline void TListItemProperties::SetSeparatorAfter(TBool aSeparator) williamr@2: williamr@2: { williamr@2: williamr@2: if (aSeparator) williamr@2: williamr@2: iFlags|=ELbxItemSeparatorAfter; williamr@2: williamr@2: else williamr@2: williamr@2: iFlags&=(~ELbxItemSeparatorAfter); williamr@2: williamr@2: } williamr@2: williamr@2: williamr@2: inline void TListItemProperties::SetHiddenSelection(TBool aBlocked) williamr@2: williamr@2: { williamr@2: williamr@2: if (aBlocked) williamr@2: williamr@2: iFlags|=ELbxItemSelectionHidden; williamr@2: williamr@2: else williamr@2: williamr@2: iFlags&=(~ELbxItemSelectionHidden); williamr@2: williamr@2: } williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: // AVKON LAF williamr@2: williamr@2: inline void CTextListItemDrawer::SetItemMarkPosition(TInt aPos) { iItemMarkPos = aPos; } williamr@2: williamr@2: inline TInt CTextListItemDrawer::ItemMarkPosition() const { return iItemMarkPos; } williamr@2: williamr@2: inline void CTextListItemDrawer::SetItemMarkReplacement(const TDesC & aReplacement) { iItemMarkReplacement.Set(aReplacement); } williamr@2: williamr@2: inline TPtrC CTextListItemDrawer::ItemMarkReplacement() const { return iItemMarkReplacement; } williamr@2: williamr@2: inline void CTextListItemDrawer::SetItemMarkReverse(TBool aReverse) { iItemMarkReverse = aReverse; } williamr@2: inline TBool CTextListItemDrawer::ItemMarkReverse() const { return iItemMarkReverse; } williamr@2: williamr@2: // END OF AVKON LAF williamr@2: williamr@2: williamr@2: williamr@2: #endif // __EIKLBI_H__ williamr@2: williamr@2: // End of File