services/terminalmodeservice_plat/inc/upnpremotableapp.h
branchRCL_3
changeset 9 5c72fd91570d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/services/terminalmodeservice_plat/inc/upnpremotableapp.h	Tue Aug 31 16:06:48 2010 +0300
@@ -0,0 +1,130 @@
+/**
+* Copyright (c) 2010 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: CUpnpRemotableApp class declaration
+*
+*/
+
+#ifndef __UPNPREMOTABLEAPP_H__
+#define __UPNPREMOTABLEAPP_H__
+
+#include <e32base.h>    
+#include <upnpterminalmodeicon.h>
+#include <upnptminfoelement.h>
+
+/**
+* Class represents a Remotable App or just "app" in the 
+* context of Terminal Mode Service. 
+* The Automotive Server (or equivalent) is responsible for creating an object 
+* of this class and registering it with the Terminal Mode Service. 
+* The Terminal Mode Service will maintain a list of these registered apps throughout 
+* it's lifetime. The Automotive Server can remove apps from this list by 
+* unregistering them. 
+*/
+class CUpnpRemotableApp : public CBase
+    {
+public: 
+    /**
+    * Standard Symbian Two-Phase constructor
+    * @param	aAppId			The locally unique ID of the App being registered.
+	*							The Terminal Mode Service will check for the uniqueness
+	*							of this ID when this Remotable app object is registered.
+	* @param	aAppName		The Name of the App being registered. The Terminal Mode
+	*							Service will *not* check for uniqueness. However, it's 
+	*							recommended that this is unique as well.
+	* @see	CUpnpTmServer::RegisterAppL, CUpnpTmServer::RegisterAppsL
+    */    
+    IMPORT_C static CUpnpRemotableApp* NewL( TUint aAppId ,const TDesC8& aAppName );
+	
+	~CUpnpRemotableApp();	
+    /**
+     * Method that sets the brief description about the application( remotable app )
+     * An optional element.
+     * @param aDescription Description of the Application
+     */
+    IMPORT_C void SetAppDescriptionL( const TDesC8& aDescription );
+    /**
+     * Method to set the list of allowed profile IDs associated with the remotable app.
+     * An optional element.
+     * @aProfileIdList  Reference to an array of profile IDs.
+     *                  A copy of array is maintained.
+     */
+    IMPORT_C void SetAllowedProfileIdListL( const RArray<TUint>& aProfileIdList );
+    /**
+    * Method that adds a new icon to this Remotable App.
+    * An optional element.
+    * @param	aIcon	[in] The Icon object. Must be instantiated by the caller prior to
+	*					this call. Should be non-NULL.
+	*					The ownership is transferred to the CUpnpRemotableApp object.
+	* @see	CUpnpTerminalModeIcon
+    */    
+	IMPORT_C void AddIconL( CUpnpTerminalModeIcon* aIcon );
+    /**
+    * Method that creates a new terminal mode info object and adds it to the list of
+	* terminal mode info objects supported by this app. The terminal mode info object thus 
+	* created will be internally maintained by Remotable App object.A reference of the same
+	* will be returned to the caller. 
+	* Only protocolID of the remotingInfo element is the required element as per the schema,
+	* otherwise all other info types and their elements are optional.
+    * @param aTerminalModeInfoType	Terminal Mode Info Type as an Enum value. 
+	* @see	CUpnpTerminalModeInfoElement
+    */    
+	IMPORT_C CUpnpTmInfoElement& CreateTmInfoElementL( CUpnpTmInfoElement
+	                                ::TTerminalModeInfoType aTerminalModeInfoType );
+    /**
+    * Method is used to define the current status of the resource.
+    * An optional element.
+    * @param aResourceStatus  Status of the resource. Can take one of these values;
+    *        Free, busy or NA
+    */    
+	IMPORT_C void SetResourceStatusL( const TDesC8& aResourceStatus );
+    /**
+    * "Getter" method for retrieving the list of icons associated with this
+	* Remotable app object.An optional element.
+    * @return Returns RPointerArray of icons.
+	* @see CUpnpTerminalModeIcon
+    */    
+	inline const RPointerArray<CUpnpTerminalModeIcon>& IconList()const;
+    /**
+    * "Getter" Method for retrieving the list of terminal mode info details associated with
+    * this Remotable app object.
+    * @return Returns RPointerArray of terminal mode info objects. 
+    * @see  CUpnpTerminalModeInfo
+    */    
+    inline const RPointerArray<CUpnpTmInfoElement>& TmInfoElementList()const;
+
+	// inlined "Getter" methods 
+	inline TUint AppId()const;
+	inline const TDesC8& AppName()const;
+	inline const TDesC8& AppDescription()const;
+	inline const TDesC8& ResourceStatus()const;
+	inline const RArray<TUint>& AllowedProfileIdList()const;
+	
+protected:
+	CUpnpRemotableApp( TUint aAppId );
+    void ConstructL( const TDesC8& aAppName );
+
+private:
+    TUint                                   iAppId;
+    RBuf8                                   iAppName;
+    RBuf8                                   iAppDescription;
+    RBuf8                                   iResourceStatus;
+	RPointerArray<CUpnpTerminalModeIcon>    iIconList;
+	RPointerArray<CUpnpTmInfoElement>       iTmInfoElementList;
+	RArray<TUint>                           iProfileIdList;
+    };
+
+#include <upnpremotableapp.inl>
+
+#endif //__UPNPREMOTABLEAPP_H__
+