menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h
changeset 0 f72a12da539e
child 4 4d54b72983ae
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/menufw/menufwui/mmwidgets/inc/mmlistboxmodel.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,166 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  CMmListBoxItemModel
+*  Version     : %version: MM_18.1.3 % << Don't touch! Updated by Synergy at check-out.
+*
+*/
+
+
+#ifndef C_MMLISTBOXMODEL_H
+#define C_MMLISTBOXMODEL_H
+
+#include <e32std.h>
+#include <e32base.h>
+#include <gulicon.h>
+#include <AknUtils.h>
+#include "hnsuiteobserver.h"
+
+class CHnSuiteModel;
+class CHnAttributeBase;
+class CHnAttributeImage;
+class CHnIconHolder;
+
+/**
+ *  Multimedia Menu listbox model
+ *
+ *  @code
+ *  @endcode
+ *  @lib mmwidgets
+ *  @since S60 v3.0
+ *  @ingroup group_mmwidgets
+ */
+NONSHARABLE_CLASS( CMmListBoxModel ):
+    public CAknFilteredTextListBoxModel,
+    public MHnSuiteObserver
+	{
+public:
+	// Constructors and destructor
+
+	/**
+	 * Destructor.
+	 */
+	~CMmListBoxModel();
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMmListBoxModel* NewL( );
+
+	/**
+	 * Two-phased constructor.
+	 */
+	static CMmListBoxModel* NewLC( );
+	
+	/**
+	 * Gets the text attribute for a specific item by the name of the attribute.
+	 * 
+	 * @since S60 v3.0
+	 * @param aIndex The index of the item for which the text is requested.
+	 * @param aAttributeName The name of the text attribute to be returned.
+	 * @return Size of item.
+	 */
+	const TDesC8& GetAttributeAsText( TInt aIndex, const TDesC8 & aAttributeName );
+    
+    /**
+     * Gets the graphical attribute for a specific item by the name of the attribute.
+     * The attribute is returned as an icon holder. Please see @c CHnIconHolder for
+     * infomation on what icon holder is and what
+     * it is useful for.
+     * 
+     * @param aIndex The index of the item for which the graphic is requested.
+     * @param aAttributeName The name of the graphical attribute to be returned.
+     * @param aDesiredIconSize The desired icon size. 
+     * @return An icon holder object.
+     */
+    CHnIconHolder* GetAttributeAsRefCountedGraphics( TInt aIndex,
+            const TDesC8& aAttributeName, TSize* aDesiredIconSize = NULL );
+	
+	/**
+	 * Sets the suite model. This method is used by matrix menu application when suite is loaded.
+	 * 
+	 * @since S60 v3.0
+	 * @param aSuiteModel The suite model to be set.
+	 */ 
+	void SetSuiteModelL( CHnSuiteModel * aSuiteModel );	
+	
+	/**
+	 * Gets the suite model of the currently visible suite.
+	 * 
+	 * @since S60 v3.0
+	 * @return The current suite model.
+	 */
+	CHnSuiteModel* GetSuiteModel(); 
+	
+	/**
+	 * Reorders the model when item positions are edited in edit mode.
+	 * 
+	 * @since S60 v3.0
+	 * @param aFromIndex The starting index of items to be shifted.
+	 * @param aToIndex The end index of items to be shifted.
+	 */
+	void ReorderModelL(TInt aFromIndex, TInt aToIndex);
+	
+	/**
+	 * Handle event triggered by suite.
+	 * 
+	 * @since S60 v3.0
+	 * @param aCustomSuiteEvent Type of suite event.
+	 * @param aModel The suite model that the event concerns.
+	 */
+    void HandleSuiteEventL( THnCustomSuiteEvent aCustomSuiteEvent, 
+            CHnSuiteModel* aModel );
+    
+private:
+
+	/**
+	 * Gets the attribute by name.
+	 * 
+	 * @since S60 v3.0
+	 * @param aIndex The index of the item for which the attribute is requested.
+	 * @param aAttributeName The name of the requested attribute.
+	 * @return Size of item.
+	 */
+    CHnAttributeBase* GetAttribute( TInt aIndex, const TDesC8 & aAttributeName );
+	
+	/**
+	 * Updates the item text array when model is reordered or new model is loaded.
+	 * It is important that the number of elements in the array is the same
+	 * as number of items in the suite.
+	 * 
+	 * @since S60 v3.0
+	 */
+    void UpdateDummyArrayDataL();  
+
+	
+    /**
+	 * Constructor for performing 1st stage construction
+	 */
+	CMmListBoxModel( );
+
+	/**
+	 * Default symbian 2nd stage constructor.
+	 */
+	void ConstructL();
+
+
+private:
+    
+    /**
+     * Not own. Suite model being the container for the data.
+     */
+    CHnSuiteModel* iSuiteModel;
+    
+	};
+
+#endif // CMMLISTBOXMODEL_H