epoc32/include/mw/aknlists.h
branchSymbian2
changeset 2 2fe1408b6811
parent 1 666f914201fb
child 4 837f303aceeb
--- a/epoc32/include/mw/aknlists.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mw/aknlists.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,1918 @@
-aknlists.h
+/*
+* Copyright (c) 2002 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: 
+*
+*/
+
+#ifndef __AKNLISTS_H__
+#define __AKNLISTS_H__
+
+#include <eikclb.h>
+#include <eikfrlb.h>
+#include <eikslb.h>
+#include <AknGrid.h>
+#include <aknutils.h>
+
+#include <aknpanic.h>
+
+
+class TAknTextLineLayout;
+class MAknsSkinInstance;
+class MAknsControlContext;
+
+/** THIS FILE INCLUDES:
+ *  1) All listbox layouts specified in Avkon LAF specification
+ *      a) General list pane descendants
+ *      b) Pop up window list pane descendants
+ *      c) Grid panes
+ *  2) Utilities that help building listbox layouts based on LAF specification
+ *  3) Other helper classes that handle listbox behavior
+ */
+
+
+//
+//
+// Helper template definitions.
+// (these are before concrete listbox classes because they're needed for inheritance)
+//
+
+
+/**
+ * This adds correct horizontal and vertival lines to the listbox and handles empty listbox!
+ *
+ * This class is only useful if you're writing your own list layout. 
+ * Please use the predefined layouts instead, for example CAknSingleStyleListBox.
+ */
+template<class T>
+class AknListBoxLinesTemplate : public T
+    {
+public:
+    /** AknListBoxLinesTemplate
+     *
+     * Read AVKON_LISTBOX_LINES resources. 
+     *
+     * The following predefined lines are available:
+     * R_LIST_PANE_LINES_A_COLUMN
+     * R_LIST_PANE_LINES_AB_COLUMN
+     * R_LIST_PANE_LINES_AB_COLUMN_X
+     * R_LIST_PANE_LINES_AB_COLUMN_XX
+     * R_LIST_PANE_LINES_BC_COLUMN
+     * R_LIST_PANE_LINES_BC_COLUMN_X
+     * R_LIST_PANE_LINES_BC_COLUMN_XX
+     * 
+     */
+    IMPORT_C AknListBoxLinesTemplate(TInt aResourceId);
+    /** SizeChanged()
+     * 
+     * Determines position of the lines
+     */
+    IMPORT_C void SizeChanged();
+    /** Draw()
+     * 
+     * Draws the lines
+     */
+    IMPORT_C void Draw(const TRect& aRect) const;
+    /** CountComponentControls()
+     * 
+     * Choose controls to use as child controls
+     */
+    IMPORT_C TInt CountComponentControls() const;
+    /** CountComponentControls()
+     * 
+     * Choose controls to use as child controls
+     */
+    IMPORT_C CCoeControl* ComponentControl(TInt aIndex) const;
+
+private:
+    TInt iSpare0;                           // was iResourceId;
+    TAknLayoutRect iVertLine1, iVertLine2;  // not used
+    TAknLayoutRect iHoriLine;               // not used
+    TBool iResized;
+    TInt iSpare[2];
+    };
+
+/**
+ * Empty layout for popup lists
+ */
+
+template<class T>
+class AknPopupListEmpty : public T
+    {
+   /**
+    * Draws empty list when needed. See AknDraw::DrawEmptyList().
+    */
+    IMPORT_C virtual void Draw(const TRect &aRect) const;
+    };
+
+
+	/** 
+	* Avkon version of eikon's column listbox.
+	* Content for list items are tab-separated strings.
+	*
+	* See methods 
+	*   CEikListBox::ConstructFromResourceL()
+	*   CEikListBox::ConstructL()
+	*   CEikTextListBox::SetItemArray()
+	*   CEikColumnListBoxData::SetIconArray()
+	* 
+	* Related flags for ConstructL() (avkon.hrh)
+	*   EAknListBoxSelectionList
+	*   EAknListBoxMenuList
+	*   EAknListBoxMarkableList
+	*   EAknListBoxMultiselectionList
+	*   EAknListBoxViewerFlags
+	*
+	* Related flags for dialogs (avkon.hrh)
+	*   EAknDialogSelectionList
+	*   EAknDialogMenuList
+	*   EAknDialogMultiselectionList
+	*
+	* @since Series 60 0.9
+	*
+	*/
+class CAknColumnListBox : public CEikColumnListBox
+    {
+public:
+    /** 
+	* Creates new @c CAknColumnListBoxView object and returns pointer to it.
+	* @return Pointer to the list box view which displays the list items which
+	* are currently visible in a list box.
+    */
+    IMPORT_C virtual CListBoxView* MakeViewClassInstanceL();
+    
+    /** 
+    * Creates @c CAknFilteredTextListBoxModel object.
+    */
+    IMPORT_C virtual void CreateModelL();
+
+    /** 
+    * Listbox rectangle calculation. Rounds down the height of the rectangle
+    * (if necessary) so that only a whole number of items can be displayed
+    * inside the list box.
+    * @param aRect The size of the listbox.
+    * @return The number of pixels reduced.
+    */
+    IMPORT_C virtual TInt AdjustRectHeightToWholeNumberOfItems(TRect& aRect) const;
+    
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+private:
+    /**
+    * From CAknControl
+    */
+    IMPORT_C void* ExtensionInterface( TUid aInterface );
+private: // listbox use only
+	IMPORT_C virtual void CEikListBox_Reserved(); 
+    };
+
+
+//
+// These define what features are needed --> you can remove shortcuts from ALL lists by changing these..
+// Templates available: AknListBoxLinesTemplate<> AknListBoxShortCutTemplate<>
+typedef AknListBoxLinesTemplate<CAknColumnListBox > CEikColumnListBoxTypedef;
+typedef AknListBoxLinesTemplate<CEikFormattedCellListBox > CEikFormattedCellListBoxTypedef;
+typedef AknListBoxLinesTemplate<CEikSettingsListBox > CEikSettingsListBoxTypedef;
+typedef CAknGrid CAknSelectionGridTypedef;
+
+// Templates available: AknListBoxShortCutTemplate<> AknListBoxLinesTemplate<>
+#define AKNCOLUMNLISTBOXNAME(x) AknListBoxLinesTemplate<CAknColumnListBox >(x)
+#define AKNDOUBLELISTBOXNAME(x) AknListBoxLinesTemplate<CEikFormattedCellListBox >(x)
+#define AKNSETTINGLISTBOXNAME(x) AknListBoxLinesTemplate<CEikSettingsListBox >(x)
+
+// Templates available: AknListBoxLinesTemplate<>, AknListBoxShortCutTemplate<>
+#define AKNCOLUMNLISTBOX AknListBoxLinesTemplate<CAknColumnListBox >
+#define AKNFORMATTEDLISTBOX AknListBoxLinesTemplate<CEikFormattedCellListBox >
+#define AKNSETTINGSLISTBOX AknListBoxLinesTemplate<CEikSettingsListBox >
+#define AKNGRID CAknGrid
+
+
+
+
+
+
+
+//
+//
+// Derived listboxes (Use these in applications!)
+// These are only for full screen lists -- the Rect() of the list must be ClientRect()
+//
+//
+
+
+/**
+ * list_single_pane
+ *
+ * list item string format: "\tTextLabel\t0\t1"
+ * where 0 and 1 are indexes to icon array
+ */
+
+class CAknSingleStyleListBox : public CEikColumnListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSingleStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);  
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_number_pane
+ *
+ * list item string format: "2\tTextLabel\t0\t1"
+ * where 0 and 1 are indexes to icon array
+ */
+
+class CAknSingleNumberStyleListBox : public CEikColumnListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSingleNumberStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);   
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_heading_pane
+ *
+ * list item string format: "Heading\tTextLabel\t0\t1"
+ * where 0 and 1 are indexes to icon array
+ *
+ */
+
+class CAknSingleHeadingStyleListBox : public CEikColumnListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSingleHeadingStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    
+   /** MakeViewClassInstanceL()
+    *
+    * Chooses which listbox view class to use
+    */
+    IMPORT_C virtual CListBoxView* MakeViewClassInstanceL();
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_single_graphic_pane
+ *
+ * list item string format: "0\tTextLabel\t1\t2"
+ * where 0,1,2 are index to the icon array 
+ */
+
+class CAknSingleGraphicStyleListBox : public CEikColumnListBoxTypedef
+    {
+public: 
+    IMPORT_C CAknSingleGraphicStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_Graphic_heading_pane
+ *
+ * list item string format: "0\tHeading\tTextLabel\t1\t2"
+ * where 0,1,2 are index to the icon array 
+ */
+
+class CAknSingleGraphicHeadingStyleListBox : public CEikColumnListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSingleGraphicHeadingStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);    
+protected:
+    IMPORT_C virtual void CreateItemDrawerL();
+   /** MakeViewClassInstanceL()
+    *
+    * Chooses which listbox view class to use
+    */
+    IMPORT_C virtual CListBoxView* MakeViewClassInstanceL();
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_number_heading_pane
+ *
+ * list item string format: "1\tHeading\tTextLabel\t2\t3"
+ * where 2 and 3 are indexes to icon array
+ */
+
+class CAknSingleNumberHeadingStyleListBox : public CEikColumnListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSingleNumberHeadingStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+protected:
+    IMPORT_C virtual void CreateItemDrawerL();
+   /** MakeViewClassInstanceL()
+    *
+    * Chooses which listbox view class to use
+    */
+    IMPORT_C virtual CListBoxView* MakeViewClassInstanceL();
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_large_pane
+ *
+ * list item string format: "1\tTextLabel\t0\t0"
+ * where 0 is an index to icon array
+ */
+
+class CAknSingleLargeStyleListBox : public CEikColumnListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSingleLargeStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);   
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_double_pane and list_big_single_pane
+ *
+ * list item string format: " \tFirstLabel\tSecondLabel\t0\t0"
+ * where 0 is an index to icon array
+ */
+
+class CAknDoubleStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDoubleStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_twoline_pane
+ *
+ * list item string format: " \tFirstLongLabel\t\t0"
+ * where 0 is an index to icon array
+ */
+
+class CAknDoubleStyle2ListBox : public CAknDoubleStyleListBox
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+private:
+    void SizeChangedL();
+    };
+
+ /**
+ * list_double_number_pane and list_big_single_number_pane
+ *
+ * list item string format: "1\tFirstLabel\t\t0\t0"
+ * list item string format: "1\tFirstLabel\tSecondLabel\t0\t0"
+ * where 0 is an index to icon array
+ *
+ */
+
+class CAknDoubleNumberStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDoubleNumberStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_double_time_pane
+ */
+
+class CAknDoubleTimeStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDoubleTimeStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_double_large_pane
+ *
+ * list item string format: "1\tFirstLabel\tSecondLabel\t0\t0"
+ *
+ * where 0 is an index of small (13x13) icon in icon array
+ *   and 1 is an index of a thumbnail image
+ *
+ * Good thumbnail image sizes for this list are:
+ *   30x40, 36x44, 40x30, 40x48, 44x36.
+ */
+
+class CAknDoubleLargeStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDoubleLargeStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_double_graphic_pane
+ *
+ * list item string format: "0\tFirstLabel\tSecondLabel\t0"
+ * where 0 is index to icon array
+ *
+ */
+
+class CAknDoubleGraphicStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDoubleGraphicStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+
+/** 
+ * list_double2_graphic_pane
+ *
+ * list item string format: "0\tFirstLabel\tSecondLabel\t0"
+ * where 0 is index to icon array
+ *
+ */
+
+class CAknDouble2GraphicStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDouble2GraphicStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+
+	/** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_double2_large_graphic_pane
+ *
+ * list item string format: "1\tFirstLabel\tSecondLabel\t0"
+ *
+ * where 0 is an index of small (13x13) icon in icon array
+ *   and 1 is an index of a thumbnail image
+ *
+ */
+
+class CAknDouble2LargeStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDouble2LargeStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+*  list_double2_graphic_large_graphic_pane
+*
+*  This is similar but not identical to
+*  java list CAknDouble2GraphicLargeStyleListBox
+*
+*  list item string format: "0\t1\tFirstLabel\tSecondLabel\t2\t3"
+*
+*  where 0 (mandatory), 2 and 3 (optional) are an index of small icon
+*  in icon array and 1 (mandatory) is an index of a thumbnail image
+*
+*  @lib avkon
+*  @since Series 60 2.8
+*/
+
+class CAknDouble2GraphicLargeGraphicStyleListBox : public CEikFormattedCellListBoxTypedef
+    {
+public:
+    IMPORT_C CAknDouble2GraphicLargeGraphicStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);   
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_double2_graphic_pane
+ *
+ * list item string format: "1\tFirstLabel\tSecondLabel\t0"
+ * where 0 is an index to icon array
+ *
+ */
+
+class CAknFormDoubleGraphicStyleListBox : public CAknDoubleGraphicStyleListBox
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+typedef CAknFormDoubleGraphicStyleListBox CAknSingleBigHeadingGraphicListBox;
+
+/**
+ * list_double2_pane
+ *
+ * list item string format: " \tFirstLabel\tSecondLabel\t0"
+ * where 0 is an index to icon array
+ */
+
+class CAknFormDoubleStyleListBox : public CAknDoubleStyleListBox
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+typedef CAknFormDoubleStyleListBox CAknSingleBigHeadingListBox;
+
+
+/**
+ * list_setting_pane and list_big_single_setting_pane
+ *
+ * list item string format: "\tFirstLabel\t\tValueText"
+ * list item string format: "\tFirstLabel\t0\t"
+ * list item string format: "\tFirstLabel\t\tValueText\t*"
+ * list item string format: "\tFirstLabel\t\t\t\tSecondLabel"
+ * where 0 is an index to icon array
+ */
+
+class CAknSettingStyleListBox : public CEikSettingsListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSettingStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_setting_number_pane and list_big_single_setting_number_pane
+ *
+ * list item string format: "1\tFirstLabel\t\tValueText"
+ * list item string format: "2\tFirstLabel\t0\t"
+ * list item string format: "3\tFirstLabel\t\tValueText\t*"
+ * list item string format: "4\tFirstLabel\t\t\t\tSecondLabel"
+ * where 0 is an index to icon array
+ * and 1..4 is list item number shown on screen
+ */
+class CAknSettingNumberStyleListBox : public CEikSettingsListBoxTypedef
+    {
+public:
+    IMPORT_C CAknSettingNumberStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+
+//
+// Use the popup styles with CAknPopupList and CAknListQueryDialog
+//
+
+/**
+ * list_single_popup_menu_pane
+ *
+ * list item string format: "FirstLabel\t0"
+ *
+ * where 0 is an index to icon array
+ */
+
+class CAknSinglePopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_graphic_popup_menu_pane
+ *
+ * list item string format: "0\tLabel"
+ *
+ * where 0 is an index to icon array
+ */
+
+class CAknSingleGraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);  
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_graphic_bt_popup_menu_pane
+ *
+ * list item string format: "0\tLabel"
+ *
+ * where 0 is an index to icon array
+ *
+ */
+
+class CAknSingleGraphicBtPopupMenuStyleListBox : public CAknSingleGraphicPopupMenuStyleListBox
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C virtual void SizeChanged();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);    
+    };
+
+/**
+ * list_single_heading_popup_menu_pane
+ *
+ * list item string format: "Heading\tLabel"
+ *
+ */
+
+class CAknSingleHeadingPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    IMPORT_C CAknSingleHeadingPopupMenuStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);    
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_single_graphic_heading_popup_menu_pane
+ *
+ * list item string format: "0\tHeading\tLabel"
+ *
+ * where 0 is an index to icon array
+ *
+ */
+
+class CAknSingleGraphicHeadingPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+
+    {
+public:
+    IMPORT_C CAknSingleGraphicHeadingPopupMenuStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_double_popup_menu_pane
+ *
+ * list item string format: "FirstLabel\tSecondLabel"
+ *
+ */
+
+class CAknDoublePopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * list_single_popup_submenu_pane
+ *
+ * DO NOT USE
+ *
+ */
+
+class CAknSinglePopupSubmenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_double_large_graphic_popup_menu_pane
+ *
+ * list item string format: "0\tFirstLabel\tSecondLabel"
+ *
+ * where 0 is an index to icon array
+ *
+ */
+
+class CAknDoubleLargeGraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+private:
+    void SizeChangedL();
+    };
+
+
+/**
+ * list_double2_popup_menu_pane
+ *
+ * list item string format: "FirstLabel\tSecondLabel"
+ *
+ */
+
+class CAknDouble2PopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);  
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+private:
+    void SizeChangedL();
+    };
+    
+    
+/**
+ * list_single_2graphic_pane_cp2
+ *
+ * list item string format: "0\t1\tTextLabel\t2\t3"
+ *
+ * where 0,1,2,3 are index to the icon array 
+ */
+
+class CAknSingle2GraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    IMPORT_C CAknSingle2GraphicPopupMenuStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+private:
+    void SizeChangedL();
+    };
+
+
+
+/**
+ * list_double_graphic_pane
+ *
+ * list item string format: "0\tFirstLabel\tSecondLabel\t1\t2"
+ * where 0 is index to icon array
+ *
+ */
+class CAknDoubleGraphicPopupMenuStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    IMPORT_C CAknDoubleGraphicPopupMenuStyleListBox();
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);
+private:
+    void SizeChangedL();
+    };
+    
+// --- end of popup styles
+
+
+
+/** list_set_pane
+ * Setting Page component uses this
+ *
+ * list item string format: "1\tShortLabel"
+ * list item string format: "\t\tLongLabel"
+ *
+ */
+class CAknSetStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    IMPORT_C void ConstructWithWindowL(const CCoeControl *aParent, TInt aFlags);
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the listbox for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    IMPORT_C void Draw(const TRect& aRect) const;
+    IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
+
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+
+protected:
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+   /** MakeViewClassInstanceL()
+    *
+    * Chooses which listbox view class to use
+    */
+    IMPORT_C CListBoxView *MakeViewClassInstanceL();
+private:
+    void SizeChangedL();
+    };
+
+/** list_form_graphic_pane
+ * Form popup field should use this
+ *
+ * list item string format: "1\tShortLabel"
+ * list item string format: "\t\tLongLabel"
+ *
+ */
+class CAknFormGraphicStyleListBox : public AknPopupListEmpty<CEikFormattedCellListBox>
+    {
+public:
+    IMPORT_C void ConstructWithWindowL(const CCoeControl *aParent, TInt aFlags);
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the grid for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /** CreateItemDrawerL()
+     *
+     * Chooses which itemdrawer to use.
+     */
+    IMPORT_C virtual void CreateItemDrawerL();
+    /** Listbox rectangle calculation.
+     */
+    IMPORT_C virtual TInt AdjustRectHeightToWholeNumberOfItems(TRect &aRect) const;
+     /**
+     * From CCoeControl
+     * Handles pointerevents of popupfield's list
+     * @param aPointerEvent pointerevent to be handled
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+private:
+    void SizeChangedL();
+	};
+
+class CAknFormGraphicWideStyleListBox : public CAknFormGraphicStyleListBox
+    {
+public:
+    IMPORT_C void SizeChanged();
+    IMPORT_C TSize MinimumSize();
+    // From CCoeControl
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);  
+private:
+    void SizeChangedL();
+    };
+
+
+/** grid_app_pane
+ * Application Shell uses this (note that part of layout needs to be done
+ * inside application -- the listbox will not be in correct position on the
+ * screen by just using this -- see listapp)
+ *
+ * list item string format: "1\tLabel"
+ * list item string format: "1\tLabel\t1"
+ */
+
+/**
+ * grid_pinb_pane
+ *
+ * list item string format: "1"
+ * list item string format: "1\t1"
+ * list item string format: "1\t1\t1"
+ * list item string format: "1\t\t1"
+ */
+
+class CAknPinbStyleGrid : public CAknSelectionGridTypedef
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the grid
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the grid for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+
+private:    
+    void SizeChangedL();
+    };
+
+
+/**
+ * grid_qdial_pane
+ */
+
+class CAknQdialStyleGrid : public CAknSelectionGridTypedef
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the grid
+     */
+    IMPORT_C virtual void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the grid for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); 
+
+private:
+    void SizeChangedL();
+    };
+
+/**
+ * grid_cale_month_pane
+ */
+
+class CAknCaleMonthStyleGrid : public CAknSelectionGridTypedef
+    {
+public:
+    /** SizeChanged()
+     * 
+     * Determines layout of the listbox
+     */
+    IMPORT_C void SizeChanged();
+    /** MinimumSize()
+     * 
+     * Determines size of the grid for use in dialogs.
+     */
+    IMPORT_C TSize MinimumSize();
+    /**
+     * From CCoeControl.     
+     * Handles pointer events
+     */
+    IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent);  
+
+private:
+    void SizeChangedL();
+    };
+
+
+
+//
+//
+// Here we have itemdrawer/view modifications needed by the lists
+//
+//
+
+// This class is to keep drawing routines that depend on avkon and which we cannot place to
+// eikstd or uikon because of that.
+
+	/**
+ 	* A view that provides empty lists for use with find pane
+ 	* @since Series 60 0.9
+ 	*/
+class CAknColumnListBoxView : public CColumnListBoxView
+    {
+public:
+
+	/**
+	* Enables find in empty list. Basically same as @c SetFindEmptyListState()
+	* when it is set @c ETrue.
+	*/
+    IMPORT_C void EnableFindEmptyList();
+    
+    /**
+    * Sets find in empty list visible or hides it.
+    * @param aUsedWithFind Setter to set find visible or to hide it.
+    */
+    IMPORT_C void SetFindEmptyListState(TBool aUsedWithFind);
+    
+    /**
+    * Draws empty list with or without find depending if it has been enabled.
+    * @param aClientRect The client rectangle.
+    */
+    IMPORT_C void DrawEmptyList(const TRect &aClientRect) const;
+    
+    /**
+    * Calls @c CColumnListBoxView::CalcBottomItemIndex() and removes filtering
+    * from find box if new list items are added. Called by listbox control when
+    * either the size of the listbox or the number of items in its model has
+    * changed.
+    */
+    IMPORT_C virtual void CalcBottomItemIndex();
+    TBool GetFindEmptyListState();    
+private: // overridden from CListBoxView
+	IMPORT_C virtual TAny* Reserved_1();
+private:
+    TBool iEmptyListWithFind;
+    };
+
+/**
+ * empty list for settings item editing
+ */
+
+class CAknSetStyleListBoxView : public CFormattedCellListBoxView
+    {
+public:
+    IMPORT_C void DrawEmptyList(const TRect &aClientRect) const ;
+private: // overridden from CListBoxView
+	IMPORT_C virtual TAny* Reserved_1();
+    };
+
+
+/**
+ * Horizontal lines and empty list support for views
+ */
+
+class CSingleHeadingStyleView : public CAknColumnListBoxView
+    {
+public:
+    IMPORT_C void Draw(const TRect* ) const;
+    IMPORT_C void DrawEmptyList(const TRect& aClientRect) const;
+private: // overridden from CListBoxView
+	IMPORT_C virtual TAny* Reserved_1();
+    };
+
+/**
+ * Horizontal lines support for item drawer.
+ */
+class CSingleHeadingStyleItemDrawer : public CColumnListBoxItemDrawer 
+    {
+public:
+    IMPORT_C CSingleHeadingStyleItemDrawer(MTextListBoxModel* aTextListBoxModel, const CFont* aFont, CColumnListBoxData* aColumnData);
+    IMPORT_C ~CSingleHeadingStyleItemDrawer();
+
+    IMPORT_C virtual void DrawItem(TInt aItemIndex, TPoint aItemRectPos, TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed) const;
+
+public:
+    IMPORT_C void SetTopItemIndex(TInt aTop);
+
+private:
+    TInt iTopItemIndex;
+	CCoeEnv* iCoeEnv;
+    };
+
+/**
+ * Thumbnail image positioning for double large styles.
+ */
+class CDoubleLargeStyleItemDrawer : public CFormattedCellListBoxItemDrawer
+    {
+public:
+    IMPORT_C CDoubleLargeStyleItemDrawer(MTextListBoxModel* aTextListBoxModel, const CFont* aFont, CFormattedCellListBoxData* aFormattedCellData, CEikListBox *aListBox);
+    IMPORT_C void DrawItem(TInt aItemIndex, TPoint aItemRectPos, TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed) const;
+private:
+	IMPORT_C void CFormattedCellListBoxItemDrawer_Reserved();
+private:
+    CEikListBox *iListBox_tmp;
+    };
+
+
+/**
+ * Word wrapping for double2 styles
+ */
+class CWordWrappedFormattedCellItemDrawer : public CFormattedCellListBoxItemDrawer
+    {
+public:
+    IMPORT_C CWordWrappedFormattedCellItemDrawer(MTextListBoxModel* aTextListBoxModel, const CFont* aFont, CFormattedCellListBoxData* aFormattedCellData, CEikListBox *aListBox, TInt aSubCell, TInt aSubCell2);
+    IMPORT_C void DrawItem(TInt aItemIndex, TPoint aItemRectPos, TBool aItemIsSelected, TBool aItemIsCurrent, TBool aViewIsEmphasized, TBool aViewIsDimmed) const;
+    IMPORT_C void DrawItemText(TInt aItemIndex,
+			       const TRect &aItemTextRect,
+			       TBool aItemIsCurrent,
+			       TBool,
+			       TBool aItemIsSelected) const;
+private:
+	IMPORT_C void CFormattedCellListBoxItemDrawer_Reserved();
+private:
+    TInt iSubCell, iSubCell2;
+    };
+
+//
+//
+//  here starts section for building new listboxes.
+//
+
+//
+// This is helper class that makes the conversion between European LAF and
+// different listbox itemdrawer implementations.
+//
+// Notice, this CEikListBox is a good friend with this class.
+//
+// 
+
+/** AknListBoxLayouts
+ * Building listbox layouts from European Avkon LAF.
+ *
+ * The LAF specification has 3 kinds of tables:
+ *   Graphics tables
+ *   Text tables
+ *   Pane coordinates
+ * The graphics tables map to SetupColumnGfxCell() and SetupFormGfxCell()
+ * The text tables map to SetupColumnTextCell() and SetupFormGfxCell()
+ * The pane coordinates map to SetupListboxPos().
+ *
+ * This class is mostly useless if you don't have LAF specification available!
+ *
+ * You probably want to use predefined layouts; See CAknSingleStyleListBox.
+ *
+ * NOTE: This class is old design. You should consider looking at aknutils.h: AknLayoutUtils
+ *       whenever you want to build things from the LAF specification. 
+ */
+
+class AknListBoxLayouts
+    {
+public:
+    /**
+     * Setup borders etc.
+     */
+    IMPORT_C static void SetupStandardListBox(CEikListBox& aListBox);
+     /**
+     * Setup grid position
+     * since 2.0
+     */
+    static void SetupGridPos(CAknGrid& aGrid,
+                     const TAknWindowLineLayout &aLayout);
+   /**
+     * Setup grid position
+     */
+    IMPORT_C static void SetupGridPos(CAknGrid& aGrid,
+    			     TInt l, 
+    			     TInt t, 
+    			     TInt /*r*/, 
+    			     TInt /*b*/, 
+    			     TInt W, 
+    			     TInt H);
+    /**
+     * Setup list position
+     */
+    IMPORT_C static void SetupListboxPos(CEikListBox& aListBox,
+				TInt startx, 
+    				TInt starty, 
+    				TInt,
+    				TInt, 
+    				TInt /*width*/, 
+    				TInt height);
+
+    /*
+    * non-exported new internal version
+    */
+    static void SetupListboxPosL( CEikListBox& aListBox,
+                                  const TAknWindowLineLayout& aLayout ); // layout of first item
+        
+    /**
+     * Setup text foreground and background colors to default
+     */
+    IMPORT_C static void SetupStandardColumnListbox(CColumnListBoxItemDrawer* aItemDrawer);	
+    /**
+     * Setup text foreground and background colors to default
+     */
+    IMPORT_C static void SetupStandardFormListbox(CFormattedCellListBoxItemDrawer* aItemDrawer);
+    /**
+     * Setup text foreground and background colors to default
+     */
+    IMPORT_C static void SetupStandardGrid(CAknGrid& aGrid);
+    
+    /**
+     * Setup a single graphics cell of list item
+     */
+    IMPORT_C static void SetupColumnGfxCell(CEikListBox& aListBox, 
+				   CColumnListBoxItemDrawer* aItemDrawer, 
+				   TInt index,
+				   TInt l, 
+				   TInt t, 
+				   TInt r, 
+				   TInt b, 
+				   TInt W, 
+				   TInt H, 
+				   TInt startx, 
+				   TInt endx);
+    
+    /**
+     * Setup a single text cell of list item
+     */
+    IMPORT_C static void SetupColumnTextCell(CEikListBox& aListBox, 
+				    CColumnListBoxItemDrawer* aItemDrawer, 
+				    TInt index,
+				    const CFont *font, 
+				    TInt /*C*/, 
+				    TInt lm, 
+				    TInt rm, 
+				    TInt B, 
+				    TInt /*W*/, 
+				    CGraphicsContext::TTextAlign aAlign, 
+				    TInt startx, 
+				    TInt endx);
+    /**
+     * Setup a single text cell of list item
+     */
+    IMPORT_C static void SetupColumnTextCell(CEikListBox& aListBox, 
+				    CColumnListBoxItemDrawer* aItemDrawer, 
+				    TInt index,
+				    const TAknTextLineLayout &aLayout,
+				    TInt startx, 
+				    TInt endx); // use with aknlayoutcompiler
+
+    /**
+     * Setup a single graphics cell of list item
+     */
+    IMPORT_C static void SetupFormGfxCell(CEikListBox& aListBox, 
+				 CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				 TInt index,
+				 TInt l, 
+				 TInt t, 
+				 TInt /*r*/, 
+				 TInt /*b*/, 
+				 TInt W, 
+				 TInt H, 
+				 TPoint p1, 
+				 TPoint p2);
+
+
+    /**
+     * Setup a single graphics cell of list item
+     *
+     * This version is needed for grid cells. (the FormGfxCell works in
+     * most cases, but this is needed if you want exact positioning of
+     * the erased area..)
+     */
+    IMPORT_C static void SetupGridFormGfxCell(CAknGrid& aListBox, 
+				 CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				 TInt index,
+				 TInt l, 
+				 TInt t, 
+				 TInt /*r*/, 
+				 TInt /*b*/, 
+				 TInt W, 
+				 TInt H, 
+				 TPoint aP1, 
+				 TPoint aP2);
+    /**
+     * Setup a single graphics cell of list item
+     *
+     * This version is needed for grid cells. (the FormGfxCell works in
+     * most cases, but this is needed if you want exact positioning of
+     * the erased area..)
+     * since 2.6
+     */
+
+    IMPORT_C static void SetupGridFormGfxCell(CAknGrid& aGrid,
+                 CFormattedCellListBoxItemDrawer* aItemDrawer, 
+                 TInt aIndex,
+                 const TAknWindowLineLayout& aLine,
+                 TPoint& aP1, 
+                 TPoint& aP2);         
+
+    /**
+     * Setup a single text cell of list item
+     */    
+    IMPORT_C static void SetupFormTextCell(CEikListBox& aListBox, 
+				  CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				  TInt index,
+				  const CFont *font, 
+				  TInt /*C*/, 
+				  TInt lm,
+				  TInt /*rm*/, 
+				  TInt B, 
+				  TInt W, 
+				  CGraphicsContext::TTextAlign aAlign, 
+				  TPoint p1, 
+				  TPoint p2);
+    /**
+     * Setup a single text cell of list item
+     *
+     * This is for removing flicker for settings
+     *
+     */
+    IMPORT_C static void SetupFormAntiFlickerTextCell(CEikListBox& aListBox, 
+				  CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				  TInt index,
+				  const CFont *font, 
+				  TInt /*C*/, 
+				  TInt lm,
+				  TInt /*rm*/, 
+				  TInt B, 
+				  TInt W, 
+				  CGraphicsContext::TTextAlign aAlign, 
+				  TPoint p1, 
+				  TPoint p2);
+
+    /**
+     * Setup a single text cell of list item
+     */
+    IMPORT_C static void SetupFormTextCell(CEikListBox& aListBox, 
+				  CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				  TInt index,
+				  const TAknTextLineLayout &aLayout,
+				  const TPoint &p1, 
+				  const TPoint &p2); // use with layout compiler
+    /**
+     * Setup a single text cell of list item
+     *
+     * This is for removing flicker for settings
+     */
+    IMPORT_C static void SetupFormAntiFlickerTextCell(CEikListBox& aListBox, 
+				  CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				  TInt index,
+				  const TAknTextLineLayout &aLayout,
+				  const TPoint &p1, 
+				  const TPoint &p2); // use with layout compiler
+
+    /**
+     * Setup a graphic element for a column listbox using aknlayout.dll
+     */
+    IMPORT_C static void SetupColumnGfxCell(CEikListBox& aListBox, 
+				   CColumnListBoxItemDrawer* aItemDrawer, 
+				   TInt aIndex,
+				   const TAknWindowLineLayout &aLayout,
+				   TInt startx, 
+				   TInt endx);
+
+    /**
+     * Setup a single graphics cell of list item using aknlayout.dll
+     */
+    IMPORT_C static void SetupFormGfxCell(CEikListBox& aListBox, 
+				 CFormattedCellListBoxItemDrawer* aItemDrawer, 
+				 TInt index,
+				 const TAknWindowLineLayout &aLayout,
+				 const TPoint &p1, 
+				 const TPoint &p2);
+
+
+    /**
+     * Setup a graphic element for a column listbox using aknlayout.dll
+     */
+    IMPORT_C static void SetupListboxPos(CEikListBox& aListBox, 
+				   const TAknWindowLineLayout &aLayout);
+				   
+    /**
+     * This function returns a correct offset to revise layout data.
+     *
+     * Attention: The function is only effective for QHD lanscape model. 
+     * It always return 0 in QVGA, QVGA2, VGA and VAG3. 
+     * A panic will take place if it is used in other models.
+     *
+     * @since S60 5.0
+     *
+     * @param aScreenRect Size of Screen.
+     * @return Offset of listscroll_menu_pane's layout 
+     */
+    static TInt AdjustPopupLayoutData( const TRect& aScreenRect );				   
+    };
+
+/**
+* General utilities relating to listboxes
+*
+* @since Series 60 0.9
+*/
+class AknListBoxUtils
+    {
+public:
+    /**
+    * This function is similar to @c HandleItemRemovalL(). This function has
+    * to call when the items should be removed. If a leave occurs the framework
+    * generates a Symbian Leave code.
+    * @param aListBox A pointer to @c CEikListBox object.
+    * @param aValueOfCurrentItemIndexBeforeRemoval A current item index value 
+    * before removal.
+    * @param aCurrentItemWasRemoved @c ETrue if removed @c EFalse if not.
+    */
+    IMPORT_C static void HandleItemRemovalAndPositionHighlightL(CEikListBox *aListBox, TInt aValueOfCurrentItemIndexBeforeRemoval, TBool aCurrentItemWasRemoved);
+    
+    /**
+    * This function should be called after one or more items have been removed.
+    * If a leave occurs the framework generates a Symbian Leave code. 
+    * @param aListBox A pointer to @c CEikListBox object.
+    * @param aValueOfCurrentItemIndexBeforeRemoval A current item index value 
+    * before removal.
+    * @param aIndexesToRemovedItems A thin templated base class for arrays of
+    * fixed length objects.
+    */
+    IMPORT_C static void HandleItemRemovalAndPositionHighlightL(CEikListBox *aListBox, TInt aValueOfCurrentItemIndexBeforeRemoval, CArrayFix<TInt> &aIndexesToRemovedItems);
+
+    /** 
+    * @deprecated
+    */
+    IMPORT_C static TBool ListBoxLinesShown(MAknsSkinInstance *aInstance, MAknsControlContext *aCc);
+    };
+
+#endif
+
+
+
+
+
+