mobilemessaging/unieditor/model/inc/UniDrmInfo.h
branchRCL_3
changeset 27 7fdbb852d323
parent 0 72b543305e3a
--- /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