williamr@2: /* williamr@2: * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@2: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef __RIGHTSINFO_H__ williamr@2: #define __RIGHTSINFO_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@2: class RWriteStream; williamr@2: class RReadStream; williamr@2: williamr@2: namespace ContentAccess williamr@2: { williamr@2: williamr@2: /** Rights class to store a summary description of the rights and a unique williamr@2: reference to the rights object within an Agent williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class CRightsInfo : public CBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** Construct a new CRightsInfo williamr@2: williamr@2: @param aDescription A generic text description of the rights supplied by the agent "Content XYZ Expiry date mm/dd/yy" etc williamr@2: @param aUniqueId A uniqueId used to refer to this particular rights object within the agent it came from williamr@2: @param aRightsTypeMask A bitmask of TRightsType entries applicable to this rights object williamr@2: @param aRightsStatus The current status of this rights object williamr@2: @return A CRightsInfo object williamr@2: */ williamr@2: IMPORT_C static CRightsInfo* NewL(const TDesC& aDescription, const TDesC& aUniqueId, TInt aRightsTypeMask, TRightsStatus aRightsStatus); williamr@2: williamr@2: /** Construct a new CRightsInfo from a stream */ williamr@2: IMPORT_C static CRightsInfo* NewL(RReadStream& aStream); williamr@2: williamr@2: virtual ~CRightsInfo(); williamr@2: williamr@2: /** returns a string describing the rights object williamr@2: @capability DRM Access to DRM rights is not permitted for processes without DRM capability. williamr@2: */ williamr@2: IMPORT_C const TDesC& Description() const; williamr@2: williamr@2: /** returns a string with a unique Id used to identify a particular rights object williamr@2: @capability DRM Access to DRM rights is not permitted for processes without DRM capability. williamr@2: */ williamr@2: IMPORT_C const TDesC& UniqueId() const; williamr@2: williamr@2: /** Returns a bit mask of TRightsTypeMask flags. A rights object can be stateless and/or consumable williamr@2: williamr@2: @see ContentAccess::TRightsTypeMask williamr@2: williamr@2: @capability DRM Access to DRM rights is not permitted for processes without DRM capability. williamr@2: */ williamr@2: IMPORT_C TInt RightsType() const; williamr@2: williamr@2: /** The state of the rights williamr@2: williamr@2: @see ContentAccess::TRightsStatus williamr@2: williamr@2: @capability DRM Access to DRM rights is not permitted for processes without DRM capability. williamr@2: */ williamr@2: IMPORT_C TRightsStatus RightsStatus() const; williamr@2: williamr@2: /** Write this CRightsInfo object to a stream williamr@2: williamr@2: @param aStream The stream williamr@2: */ williamr@2: IMPORT_C void ExternalizeL(RWriteStream &aStream) const; williamr@2: williamr@2: private: williamr@2: CRightsInfo(); williamr@2: williamr@2: CRightsInfo(TInt aRightsType, TRightsStatus aRightsStatus); williamr@2: void ConstructL(const TDesC& aDescription, const TDesC& aUniqueId); williamr@2: williamr@2: void InternalizeL(RReadStream& aStream); williamr@2: williamr@2: private: williamr@2: williamr@2: HBufC* iDescription; williamr@2: HBufC* iUniqueId; williamr@2: williamr@2: TInt iRightsType; williamr@2: TRightsStatus iRightsStatus; williamr@2: }; williamr@2: williamr@2: /** Interface used by agents as a base class for their own rights objects williamr@2: williamr@2: Agent derived classes will contain a complete object capable of describing williamr@2: rights for content managed by that agent. williamr@2: williamr@2: All derived classes must implement the serialization functions InternalizeL() williamr@2: and ExternalizeL() williamr@2: williamr@2: @publishedPartner williamr@2: @released williamr@2: */ williamr@2: class MAgentRightsBase williamr@2: { williamr@2: public: williamr@2: virtual void ExternalizeL(RWriteStream& aStream) const = 0; williamr@2: virtual void InternalizeL(RReadStream& aStream) = 0; williamr@2: }; williamr@2: } williamr@2: williamr@2: #endif