--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mobilemessaging/unieditor/model/inc/UniDrmInfo.h Wed Sep 01 12:31:54 2010 +0100
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 2006-2007 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:
+* CUniDrmInfo, Storage for single attachment in presentation.
+*
+*/
+
+
+
+
+#ifndef __UNIDRMINFO_H
+#define __UNIDRMINFO_H
+
+// INCLUDES
+
+#include <e32std.h>
+#include <cmsvattachment.h>
+
+#include <caf/caf.h>
+#include <DRMHelper.h>
+#include <DRMRights.h>
+
+#include <uniobject.h>
+
+// CONSTANTS
+
+// MACROS
+
+// FORWARD DECLARATIONS
+class CBaseMtm;
+class CMsgMediaInfo;
+class CDRMHelper;
+#ifndef DRMCOMMONIN_POISTO
+class DRMCommon;
+#endif
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// CLASS DECLARATION
+
+/**
+* CUniDrmInfo - DRM information of an attachment.
+*
+* @lib UniDataModel.lib
+* @since 3.1
+*/
+class CUniDrmInfo : public CBase
+ {
+
+ public: // New methods
+
+ /**
+ * Factory method that creates this object
+ * from an attachment.
+ *
+ * @since 3.1
+ * @return Pointer to instance in cleanup stack
+ */
+ IMPORT_C static CUniDrmInfo* NewLC(
+ RFs& aFs,
+ CBaseMtm& aMtm,
+ TMsvAttachmentId& aId,
+ CMsgMediaInfo& aMediaInfo );
+
+ /**
+ * Factory method that creates this object
+ * from an attachment.
+ *
+ * @since 3.1
+ * @return Pointer to instance
+ */
+ IMPORT_C static CUniDrmInfo* NewL(
+ RFs& aFs,
+ CBaseMtm& aMtm,
+ TMsvAttachmentId& aId,
+ CMsgMediaInfo& aMediaInfo );
+
+ /**
+ * Destructor
+ *
+ * @since 3.1
+ */
+ virtual ~CUniDrmInfo();
+
+ /**
+ * Freezes and locks the DRM rights of the object if available.
+ * -> No counts will be reduced
+ * @return Error code from CDRMHelper::Consume2(). Some controls
+ * may ignore the value but some don't
+ * @since 3.1
+ */
+ IMPORT_C TInt FreezeRights();
+
+ /**
+ * Consumes and locks the DRM rights of the object if available.
+ * -> One count will be reduced
+ * @return Error code from CDRMHelper::Consume2(). Some controls
+ * may ignore the value but some don't
+ * @since 3.1
+ */
+ IMPORT_C TInt ConsumeRights();
+
+ /**
+ * Evaluates DRM rights of the object if available.
+ * Use count is not changed.
+ * @param aConsumed
+ * return information whether DRM rights have already been consumed
+ * @since 3.1
+ */
+ IMPORT_C TInt EvaluateRights( TBool& aConsumed );
+
+ /**
+ * Releases the DRM rights of the object.
+ * @return Error code from CDRMHelper::Consume2().Some controls
+ * may ignore the value but some don't
+ * @since 3.1
+ */
+ IMPORT_C TInt ReleaseRights();
+
+ /**
+ * Convenience function to check whether DRM rights for
+ * the object are valid.
+ * @since 3.1
+ * @param aUpdate IN if ETrue, updates rights info,
+ * otherwise returns rights as they were
+ * when the object was constructed.
+ */
+ IMPORT_C TBool RightsValidL( TBool aUpdate );
+
+ /**
+ * Check whether this is combined delivery cobject with one
+ * play count left. This information is needed to show note
+ * "Message contains an object that can only be viewed once"
+ * §qtn.drm.preview.msg§
+ * @return ETrue
+ * EFalse
+ */
+ IMPORT_C TBool IsDrmWithOnePreview();
+
+ /**
+ * Handles DRM error ( taken place in an UI control).
+ */
+ IMPORT_C void HandleDrmErrorL( TInt aError );
+
+ protected:
+
+ enum TUniDRMConsumeStatus
+ {
+ EUniDRMNone,
+ EUniDRMFrozen,
+ EUniDRMConsumed
+ };
+
+ /**
+ * Constructor.
+ *
+ * @since 3.1
+ */
+ CUniDrmInfo(
+ RFs& aFs,
+ CBaseMtm& aMtm,
+ TMsvAttachmentId& aId,
+ CMsgMediaInfo& aMediaInfo );
+
+ /**
+ * 2nd phase constructor.
+ *
+ * @since 3.1
+ */
+ void ConstructL();
+
+ /**
+ * Gets rights info from a media object.
+ * @param aRightsObj optionally returns CDRMRights of the object, if
+ * Ownership is transferred to caller.
+ * @since 3.1
+ */
+ void DoGetRightsInfoL(CDRMRights** aRightsObj = NULL);
+
+ inline ContentAccess::TIntent ConsumeIntent();
+
+ /**
+ * Check whether this is combined delivery cobject with one
+ * play count left. This information is needed to show note
+ * "Message contains an object that can only be viewed once"
+ * §qtn.drm.preview.msg§. Value is saved iDrmOnePreview.
+ */
+ void SetIsDrmWithOnePreviewL();
+
+ /**
+ * Creates internal CData object. It cannot be created during construction.
+ * @return If this object is not DRM protected returns NULL.
+ */
+ CData* CreateCDataL();
+
+ protected: // data
+
+ RFs& iFs;
+ TInt iSupportedFeatures;
+
+ CBaseMtm& iMtm;
+ TMsvAttachmentId& iAttachmentId;
+ CMsgMediaInfo& iMediaInfo;
+
+#ifdef DRMCOMMONIN_POISTO
+ ContentAccess::CRightsManager* iRightsManager;
+#else
+ DRMCommon* iDRMCommon;
+#endif
+
+ CDRMHelper* iDRMHelper;
+ TUniDRMConsumeStatus iDRMConsumeStatus;
+ TInt iDRMConsumeCount;
+ TBool iDRMRightsExist;
+ CDRMRights::TExpiration iDRMExpiration;
+ CDRMRights::TRestriction iDRMRestriction;
+ TUint32 iDRMConstraintType;
+
+ // DRm2 follows:
+ TBool iOma2;
+ // Indicates preview type
+ CDRMHelper::TDRMHelperPreviewType iPreviewType;
+ // content URI (unique id) of the embedded preview content
+ TBool iHasInfoUri;
+ HBufC* iSendContentUrl;
+ TBool iCDataResolved;
+ TPtrC8 iUsedContentUri;
+ TBool iDrmOnePreview;
+ };
+
+#include <unidrminfo.inl>
+
+#endif // __UNIDRMINFO_H