williamr@2: /* williamr@2: * Copyright (c) 2002-2006 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: implementation of setting list box williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: // EIKSLB.H williamr@2: // williamr@2: // Copyright (c) 1997-2001 Symbian Ltd. All rights reserved. williamr@2: // williamr@2: #if !defined(__EIKSLB_H__) williamr@2: #define __EIKSLB_H__ williamr@2: williamr@2: #include williamr@2: williamr@2: class MTextListBoxModel; williamr@2: class CFont; williamr@2: class CSettingsListBoxData; williamr@2: class CSettingsListBoxView; williamr@2: williamr@2: /** williamr@2: * Item drawer class for CEikSettingsListBox. This class is not intended for user derivation. williamr@2: * @since S60 1.0 williamr@2: * @lib Avkon.lib williamr@2: */ williamr@2: williamr@2: class CSettingsListBoxItemDrawer : public CFormattedCellListBoxItemDrawer williamr@2: { williamr@2: public: williamr@2: /** williamr@2: * Default constructor. williamr@2: * @param aTextListBoxModel The model whose items will be drawn. williamr@2: * @param aFont The font in which the items will be drawn. Usually overriden by layouts. williamr@2: * @param aSettingsData The listbox data class to be used. williamr@2: */ williamr@2: IMPORT_C CSettingsListBoxItemDrawer( MTextListBoxModel* aTextListBoxModel, williamr@2: const CFont* aFont, williamr@2: CSettingsListBoxData* aSettingsData ); williamr@2: williamr@2: /** williamr@2: * destructor williamr@2: */ williamr@2: IMPORT_C ~CSettingsListBoxItemDrawer(); williamr@2: williamr@2: /** williamr@2: * @return pointer to listbox data class williamr@2: */ williamr@2: IMPORT_C CSettingsListBoxData* SettingsData() const; williamr@2: public: williamr@2: /** williamr@2: * from CTextListItemDrawer williamr@2: * @param aItemIndex Index of the item to draw. williamr@2: * @param aItemTextRect Area to draw into. williamr@2: * @param aItemIsCurrent ETrue if the item is current. williamr@2: * @param aViewIsEmphasized ETrue if the view is emphasized. williamr@2: * @param aItemIsSelected ETrue if the item is selected. williamr@2: */ williamr@2: IMPORT_C void DrawItemText( TInt aItemIndex, williamr@2: const TRect& aItemTextRect, williamr@2: TBool aItemIsCurrent, williamr@2: TBool aViewIsEmphasized, williamr@2: TBool aItemIsSelected ) const; williamr@2: private: williamr@2: IMPORT_C void CFormattedCellListBoxItemDrawer_Reserved(); williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: * List box base class. Creates listbox view and item drawer classes. This class williamr@2: * is used throughout @c AknListBoxLinesTemplate< T > class. williamr@2: * The @c CEikSettingsListBox uses @c CSettingsListBoxView as a list box view williamr@2: * class and a @c CSettingsListBoxItemDrawer as an item drawer. williamr@2: * @since S60 1.0 williamr@2: * @lib Avkon.lib williamr@2: */ williamr@2: class CEikSettingsListBox : public CEikFormattedCellListBox williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: * C++ default constructor. williamr@2: */ williamr@2: IMPORT_C CEikSettingsListBox(); williamr@2: williamr@2: public: williamr@2: williamr@2: /** williamr@2: * Gets an item drawer of @c CEikSettingListBox which handles drawing of williamr@2: * single list box items and manages their properties. williamr@2: * williamr@2: * @return Pointer to the item drawer instance. williamr@2: */ williamr@2: IMPORT_C CSettingsListBoxItemDrawer* ItemDrawer() const; williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Creates an item drawer for @c CEikSettingsListBox. williamr@2: */ williamr@2: IMPORT_C void CreateItemDrawerL(); williamr@2: williamr@2: public: // from CEikListBox williamr@2: williamr@2: /** williamr@2: * From @c CEikListBox. williamr@2: * williamr@2: * Creates the list box view. The function is called williamr@2: * by @c ConstructL() to create an instance of the appropriate list box williamr@2: * view class for this list box. The returned instance is owned by this williamr@2: * object, and does not have to have its second-phase constructor run. williamr@2: * This function is called by @c CreateViewL(). williamr@2: * williamr@2: * @return Pointer to a newly constructed list box view for this object. williamr@2: */ williamr@2: IMPORT_C CListBoxView* MakeViewClassInstanceL(); williamr@2: williamr@2: public: // from CCoeControl williamr@2: williamr@2: /** williamr@2: * From @c CCoeControl. williamr@2: * williamr@2: * Handles pointer events. williamr@2: * williamr@2: * @param aPointerEvent The pointer event. williamr@2: */ williamr@2: IMPORT_C void HandlePointerEventL(const TPointerEvent& aPointerEvent); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Gets a list box view class as @c CSettingsListBoxView. williamr@2: * williamr@2: * @return Pointer to the list box view class object. williamr@2: */ williamr@2: CSettingsListBoxView* View() { return (CSettingsListBoxView*)iView; } williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * From CAknControl williamr@2: */ williamr@2: IMPORT_C void* ExtensionInterface( TUid aInterface ); williamr@2: williamr@2: private: // listbox use only williamr@2: IMPORT_C virtual void CEikListBox_Reserved(); williamr@2: williamr@2: }; williamr@2: williamr@2: /** williamr@2: * View class for CEikSettingsListBox williamr@2: * williamr@2: * This class is not intended for user derivation. williamr@2: */ williamr@2: williamr@2: class CSettingsListBoxView : public CFormattedCellListBoxView williamr@2: { williamr@2: public: // from CListBoxView williamr@2: /** williamr@2: * Empty default constructor. williamr@2: */ williamr@2: CSettingsListBoxView() {} williamr@2: williamr@2: /** williamr@2: * Draws all items. williamr@2: * @param aClipRect Area to draw. williamr@2: */ williamr@2: IMPORT_C void Draw(const TRect* aClipRect = NULL) const; williamr@2: williamr@2: /** williamr@2: * Draws specified item. williamr@2: * @param aItemIndex Item index to draw. williamr@2: */ williamr@2: IMPORT_C void DrawItem(TInt aItemIndex) const; williamr@2: williamr@2: /** williamr@2: * @return pointer to item drawer class. williamr@2: */ williamr@2: inline CSettingsListBoxItemDrawer *ItemDrawer() const; williamr@2: private: // overridden from CListBoxView williamr@2: IMPORT_C virtual TAny* Reserved_1(); williamr@2: }; williamr@2: williamr@2: williamr@2: inline CSettingsListBoxItemDrawer* CSettingsListBoxView::ItemDrawer() const williamr@2: { return (CSettingsListBoxItemDrawer*)iItemDrawer; } williamr@2: williamr@2: williamr@2: #endif // __EIKSLB_H__ williamr@2: williamr@2: williamr@2: