mulwidgets/muldatamodel/inc/mulactionitem.h
changeset 0 e83bab7cf002
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mulwidgets/muldatamodel/inc/mulactionitem.h	Thu Dec 17 08:56:02 2009 +0200
@@ -0,0 +1,178 @@
+/*
+* 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:  Action Data class
+ *
+*/
+
+
+#ifndef MULACTIONITEM_H
+#define MULACTIONITEM_H
+
+#include <mul/imulvarianttype.h>
+#include <alf/alfvarianttype.h>
+#include <memory>
+
+#include <osn/osndefines.h>
+#include <osn/ustring.h>
+
+namespace osncore
+    {
+    class UString;
+    }
+using namespace osncore;
+    
+
+namespace Alf
+    {
+    
+    namespace mulactionitem
+        {
+        static const char* const KActionString = "actionItem";   
+        }
+    /*! @struct MulActionData
+	 *  @brief Class holds the Action Data. Data varies on the basis of the type of 
+	 *  the action. Individual data items are public and can be accessed 
+	 *  once ref is obtained to the MulActionData structure. 
+	 */  
+	struct MulActionData
+		{		
+		/*! @var Contains command id in case of simple command. */
+		int mCmdId;
+		};
+		
+	/*! @struct MulActionData
+	 *  @brief Client need to use this class to add action item to data model.
+	 *  Action can be of type simple command or a service api. 
+	 *  More data about the action is also encapsulated within the same class
+	 *  Action item will represent one attribute within the visual item.
+	 * 
+	 */  
+	class MulActionItem : public IMulVariantType//public IAlfModelBase
+		{
+		public:
+
+			/*! @enum TMulActionType
+			 * Action Type Definition.
+			 */
+			enum TMulActionType
+				{
+				EActionSimple	/*!< Type specifies that the action is a simple command. */
+				};
+			
+		public:	//Constructor and Destructor
+			
+			/**
+			 * C++ constructor
+			 *
+			 * @param aType Action type. Possible options are defined by TMulActionType.
+     		 * @param aData Action data based on type of the action. Ownership gets transfered.
+     		 * @throw Invalid_argument, In case aData is NULL.
+			 */
+			OSN_IMPORT MulActionItem(TMulActionType aType, MulActionData* aData);
+			
+			/**
+			 * Copy constructor.
+			 */
+			 OSN_IMPORT MulActionItem( const MulActionItem& aActionItem );
+			
+			 /**
+		 	 * Destructor.
+		 	 */
+			OSN_IMPORT ~MulActionItem();
+	   
+		public: // New methods
+            
+            /**
+			 * Set/Change the action type of an action item.
+			 * Default type of the action item is EActionSimple.
+			 *
+			 * @param aType Action type. Possible options are defined by TMulActionType.
+			 */
+			OSN_IMPORT void SetActionType( TMulActionType aType = EActionSimple );
+			
+			/**
+			 * Returns the action type of the action item.
+			 *
+			 * @return Action type. Possible options are defined by TMulActionType.
+			 */
+			OSN_IMPORT MulActionItem::TMulActionType ActionType() const;
+			
+		    /**
+			 * Set/Change the action data of an action item.
+			 * Ownership gets transfered.
+			 *
+			 * @param aData Action data based on type of the action. Ownership gets transfered.
+			 * @throw Invalid_argument, In case aData is NULL.
+			 */
+			OSN_IMPORT void SetActionData( MulActionData* aData );
+			
+			/**
+			 * Returns the action data of the action item.
+			 *
+			 * @return Action data of the action item. A const reference is returned.
+			 */
+			OSN_IMPORT const MulActionData& ActionData() const;
+
+		public: // from IAlfModelBase
+		
+		    //virtual const UString& Type();	
+		    
+		public: // from IMulVariantType
+		
+			OSN_IMPORT std::auto_ptr< IMulVariantType > Clone();
+			
+		private: // form IAlfVAriantType
+			
+			void set(IAlfVariantType& aValue) ;
+
+			Type type() const ;
+
+			bool boolean() const ;
+
+			int integer() const ;
+
+			uint uinteger() const ;
+		 
+			double real() const ;
+
+			const UString& string() const ;
+
+			IAlfContainer* container() ;
+
+			IAlfMap* map() ;
+		    
+			IAlfBranch* branch() ;
+
+			IAlfModelBase* customData() ;
+			
+		private: // form IAlfVariantType
+	
+		private:	// Class data
+
+			/*! @var Type of the action data the class instance holds. */
+			TMulActionType mType;		
+			
+			/*! @var Pointer to the action data. Data varies on the basis of the action type
+			 *  Class owns the action data. */
+			auto_ptr<MulActionData> mData; 
+			
+			/*! @var Pointer to the ActionString data. */
+			auto_ptr<UString> mActionString; 
+		};
+	
+    } // namespace Alf	
+
+#endif //MULACTIONITEM_H
+
+//End of file