mmuifw_plat/mul_datamodel_api/inc/mul/imulsingleitemmodel.h
branchRCL_3
changeset 26 0e9bb658ef58
parent 0 e83bab7cf002
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmuifw_plat/mul_datamodel_api/inc/mul/imulsingleitemmodel.h	Wed Sep 01 12:23:18 2010 +0100
@@ -0,0 +1,115 @@
+/*
+* Copyright (c) 2007-2008 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:  Interface for single item model
+ *
+*/
+
+ 
+#ifndef IMULSINGLEITEMMODEL_H_
+#define IMULSINGLEITEMMODEL_H_
+
+// Includes
+#include <alf/ialfmodel.h>
+
+namespace osncore
+    {
+// Forward Declarations
+class UString;
+    }
+using namespace osncore;
+
+namespace Alf
+    {
+
+// Forward Declarations
+class MulVisualItem;
+
+namespace mulsingleitemmodel
+    {
+    static const int KLastIndex = -1;
+    static const int KNumberOfIndices = 4;  
+    
+    static const char* const KBaseElementName = "base";
+
+    static const char* const KInvalidVisualItem = "NULL Visual Item passed";
+    static const char* const KIndexOutOfBound = "Index out of bound";
+    static const char* const KLogicError = "Logic error";
+    }// namespace mulsingleitemmodel
+    
+class IMulSingleItemModel : public IAlfModel
+    {
+
+public:
+    
+    /**
+     * Adds an item into the specified container at the given index.
+     *
+     * @param aItem Item to be added. Takes ownership.
+     * @param aContainerName Name of the container.
+     * @param aIndex Index of the item in the container. By default appends item.
+     * @throw Invalid Argument, incase visual item is NULL or out of bound index.
+     */
+    virtual void AddData(MulVisualItem* aItem, const UString& aContainerName, 
+                         int aIndex = mulsingleitemmodel::KLastIndex) = 0;
+    
+    /**
+     * Update an item within the specified container at the given index.
+     *
+     * @param aItem Item to be updated. Takes ownership.
+     * @param aContainerName Name of the container.
+     * @param aIndex Index of the item in the container.
+     * @throw Invalid Argument, incase visual item is NULL, invalid container or out of bound index.
+     * 		  Logic Error, cannot add data because of invalid internal structure
+     */
+    virtual void UpdateData(MulVisualItem& aItem, const UString& aContainerName, int aIndex) = 0;
+    
+    /**
+     * Removes an item from the specified container at the given index.
+     *
+     * @param aContainerName Name of the container.
+     * @param aIndex Index of the item in the container.
+     * @throw Invalid Argument, incase of invalid container or out of bound index.
+     */
+    virtual void RemoveData(const UString& aContainer, int aIndex) = 0;
+    
+    /**
+     * Returns an item from the specified container at the given index.
+     *
+     * @param aContainerName Name of the container.
+     * @param aIndex Index of the item in the container.
+     * @return Reference to the item.
+     * @throw Invalid Argument, incase of invalid container or out of bound index.
+     */
+    virtual MulVisualItem& Data(const UString& aContainerName, int aIndex) = 0;
+    
+    /**
+     * Returns number of items in the specified container.
+     *
+     * @param aContainerName Name of the container.
+     * @return Number of items
+     * @throw Invalid Argument, incase of invalid container.
+     */
+    virtual int Count(const UString& aContainerName) = 0;
+    
+    /** 
+	 * Virtual destructor.
+	 */
+    virtual ~IMulSingleItemModel() {}
+    
+    };// class IMulSingleItemModel
+        
+    }// namespace Alf
+#endif // IMULSINGLEITEMMODEL_H_
+
+// End of file