contentmgmt/contentaccessfwfordrm/inc/rightsinfo.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/inc/rightsinfo.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+*
+*/
+
+
+
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+
+#ifndef __RIGHTSINFO_H__
+#define __RIGHTSINFO_H__
+
+#include <e32base.h>
+#include <caf/caftypes.h>
+
+class RWriteStream;
+class RReadStream;
+
+namespace ContentAccess
+{
+
+	/** Rights class to store a summary description of the rights and a unique 
+	reference to the rights object within an Agent
+
+	@publishedPartner
+    @released
+	*/
+	class CRightsInfo : public CBase
+		{
+	public:
+
+		/** Construct a new CRightsInfo
+		
+		@param aDescription A generic text description of the rights supplied by the agent "Content XYZ Expiry date mm/dd/yy" etc
+		@param aUniqueId A uniqueId used to refer to this particular rights object within the agent it came from
+		@param aRightsTypeMask A bitmask of TRightsType entries applicable to this rights object
+		@param aRightsStatus The current status of this rights object
+		@return A CRightsInfo object
+		*/
+		IMPORT_C static CRightsInfo* NewL(const TDesC& aDescription, const TDesC& aUniqueId, TInt aRightsTypeMask, TRightsStatus aRightsStatus);
+		
+		/** Construct a new CRightsInfo from a stream */
+		IMPORT_C static CRightsInfo* NewL(RReadStream& aStream);
+
+		virtual ~CRightsInfo();
+
+		/** returns a string describing the rights object
+		@capability DRM Access to DRM rights is not permitted for processes without DRM capability. 
+		*/
+		IMPORT_C const TDesC& Description() const;
+
+		/** returns a string with a unique Id used to identify a particular rights object
+		@capability DRM Access to DRM rights is not permitted for processes without DRM capability. 
+		*/
+		IMPORT_C const TDesC& UniqueId() const;
+
+		/** Returns a bit mask of TRightsTypeMask flags. A rights object can be stateless and/or consumable
+		
+		@see ContentAccess::TRightsTypeMask
+
+		@capability DRM Access to DRM rights is not permitted for processes without DRM capability. 		
+		*/
+		IMPORT_C TInt RightsType() const;
+
+		/** The state of the rights
+
+		@see ContentAccess::TRightsStatus
+
+		@capability DRM Access to DRM rights is not permitted for processes without DRM capability. 		
+		*/
+		IMPORT_C TRightsStatus RightsStatus() const;
+
+		/** Write this CRightsInfo object to a stream
+
+		@param aStream The stream
+		*/
+		IMPORT_C void ExternalizeL(RWriteStream &aStream) const;
+
+	private:
+		CRightsInfo();
+		
+		CRightsInfo(TInt aRightsType, TRightsStatus aRightsStatus);
+		void ConstructL(const TDesC& aDescription, const TDesC& aUniqueId);
+		
+		void InternalizeL(RReadStream& aStream);
+		
+	private:
+		
+		HBufC* iDescription;
+		HBufC* iUniqueId;
+
+		TInt iRightsType;
+		TRightsStatus iRightsStatus;
+		};
+
+	/** Interface used by agents as a base class for their own rights objects
+
+	Agent derived classes will contain a complete object capable of describing
+	rights for content managed by that agent.
+
+	All derived classes must implement the serialization functions InternalizeL() 
+	and ExternalizeL()
+
+	@publishedPartner
+	@released
+	*/
+	class MAgentRightsBase 
+		{
+	public:
+		virtual void ExternalizeL(RWriteStream& aStream) const = 0;
+		virtual void InternalizeL(RReadStream& aStream) = 0;
+		};	
+	}
+
+#endif