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