diff -r 000000000000 -r 95b198f216e5 omadrm/drmhelper/drmhelperserver/inc/MDRMHelper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omadrm/drmhelper/drmhelperserver/inc/MDRMHelper.h Thu Dec 17 08:52:27 2009 +0200 @@ -0,0 +1,370 @@ +/* +* Copyright (c) 2003 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: +* +*/ + + +#ifndef __MDRMHELPER_H__ +#define __MDRMHELPER_H__ + +// INCLUDES +// CONSTANTS +// MACROS +// DATA TYPES +// FUNCTION PROTOTYPES +// FORWARD DECLARATIONS +class CDRMRightsConstraints; +class TDataType; +class CCoeEnv; + +// CLASS DECLARATION + +class MDRMHelper + { + public: + + enum TNotificationID + { + ETActivateTextId = 1, + ETCountBasedErrorTextId = 2 , + ETCountUsageReduceId = 3, + ETCountUsageReduceMediaId = 4 + }; + + enum TConsumeAction + { + EStart, + EFinish, + }; + + enum TOMALevel + { + EOMA_None, + EOMA_1_0, + EOMA_2_0 + }; + + public: // New functions + + /** + * Displays appropriate error note depending on error code. + * @param aError: error code returned by DRM engine + * @param aURI: URI of the file + * @return + * - Button code, if user selected "buy rights" or "launch rights + * manager" in query. + * - 0 if user selected "No", "Back" or "Cancel" (or whatever which + * just dismiss the query) + * - 0 if just a simple error note is displayed + */ + virtual TInt HandleErrorL( TInt aError, + const TDesC8& aURI ) = 0; + + /** + * Displays appropriate error note depending on error code. + * @param aError: error code returned by DRM engine + * @param aFileName: full path to file + * @return + * - Button code, if user selected "buy rights" or "launch rights + * manager" in query. + * - 0 if user selected "No", "Back" or "Cancel" (or whatever which + * just dismiss the query) + * - 0 if just a simple error note is displayed + */ + virtual TInt HandleErrorL( TInt aError, + const TDesC& aFileName ) = 0; + + /** + * Handle the general UI based error notes + * @param aTextId The code for DRM general notification note. + * @param aURI The DRM files URI, that caused the DRM error. + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt ShowDRMUINotificationL( TNotificationID aTextId, + const TDesC8& aURI ) = 0; + + /** + * Handle the general UI based error notes + * @param aTextId The code for DRM general notification note. + * @param aFileName The DRM file's name and path, that caused the DRM error. + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt ShowDRMUINotificationL( TNotificationID aTextId, + const TDesC& aFileName ) = 0; + + /** + * Set count limit for CheckRightsAmountL + * @param aCounts: new count limit for displaying the note. + * @return - + */ + virtual void SetCountLimitL( TUint aCounts ) = 0; + + /** + * Set time limit in days for CheckRightsAmountL + * @param aDays: new time limit for displaying the note. + * @return - + */ + virtual void SetTimeLimitL( TUint aDays ) = 0; + + /** + * Set percentage limit for CheckRightsAmountL. Applies to both counts and time. + * @param aPercentage: new limit for displaying the note. + * @return - + */ + virtual void SetPercentageLimitL( TUint aPercentage ) = 0; + + /** + * Launches DRM Rights Manager UI embedded with details view related + * to given content. + * @param aURI: URI of the file + * @return - + */ + virtual void LaunchDetailsViewEmbeddedL( + const TDesC8& aURI ) = 0; + + /** + * Launches DRM Rights Manager UI embedded with details view related + * to given file. + * @param aFileName: Full path to file + * @return - + */ + virtual void LaunchDetailsViewEmbeddedL( + const TDesC& aFileName ) = 0; + + /** + * Gets details of rights object associated of given file. + * @param aFileName: Full path to file + * @param aIntent: bitmask of DRMCommon::EPlay, DRMCommon::EDisplay, + * DRMCommon::EExecute and DRMCommon::EPrint + * @param aExpired: (out) ETrue if rights are expired + * @param aSendingAllowed: (out) ETrue if content can be sent + * @param aPlay: (out) play constraints, must be deleted by caller + * @param aDisplay: (out) display constraints, must be deleted by caller + * @param aExecute: (out) execute constraints, must be deleted by caller + * @param aPrint: (out) print constraints, must be deleted by caller + * @return - + */ + virtual void GetRightsDetailsL( const TDesC& aFileName, + TUint32 aIntent, TBool& aExpired, TBool& aSendingAllowed, + CDRMRightsConstraints*& aPlay, + CDRMRightsConstraints*& aDisplay, + CDRMRightsConstraints*& aExecute, + CDRMRightsConstraints*& aPrint ) = 0; + + /** + * Checks whether some content can be used as automated content or not. + * @param aURI: URI of the file + * @param aValue: (out) result of the query + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt CanSetAutomated( const TDesC8& aURI, TBool& aValue ) = 0; + + /** + * Checks whether some content can be used as automated content or not. + * @param aFileName: Full path to the file + * @param aValue: (out) result of the query + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt CanSetAutomated( const TDesC& aFilename, TBool& aValue ) = 0; + + /** + * Registers some content for automated usage (e.g. default ring tone). + * @param aURI: URI of the file + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt SetAutomated( const TDesC8& aURI ) = 0; + + /** + * Registers some content for automated usage (e.g. default ring tone). + * @param aFileName: Full path to the file + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt SetAutomated( const TDesC& aFilename ) = 0; + + /** + * Removes automated content. Used to indicated that the given content is + * not anymore used automaticallly by the device. + * @param aURI: URI of the file + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt RemoveAutomated( const TDesC8& aURI ) = 0; + + /** + * Removes automated content. Used to indicated that the given content is + * not anymore used automaticallly by the device. + * @param aFileName: Full path to the file + * @return KErrnone if everything went ok, else wide scale of Symbian errors + */ + virtual TInt RemoveAutomated( const TDesC& aFilename ) = 0; + + /** + * Sends an idle-signal to DRM Helper Server. This indicates + * that the device is on idle state to the DRM Helper Server. + * @return - + */ + virtual void IndicateIdle() = 0; + + /** + * GetContentURIList + * + * Returns a list of all content URIs that have rights in the rights + * database. + * + * @since 2.5 + * @param aURIList: Out parameter for the URI list. + * @return Ok if the URI list could be retreived. + */ + virtual TInt GetContentURIList( + RPointerArray*& aURIList) = 0; + + /** + * DataTypesCount + * + * Returns the number of previously registered datatypes which are + * supported by the DRM system and associated applications. + * + * @since 2.0 + * @param aCount: Out parameter for the datatype count + * @return EOk if the number of datatypes has been returned correctly + */ + virtual TInt DataTypesCount( + TInt& aCount) = 0; + + /** + * SupportedDataType + * + * Returns a specific datatype which has been registered before by giving an index + * + * @since 2.0 + * @param aIndex: Number of the datatype to return + * @param aDataType: Out parameter for the datatype + * @return EOk if the datatype was returned correctly + */ + + virtual TInt SupportedDataType( + const TInt aIndex, TDataType& aDataType) = 0; + + /** + * RegisterDataType + * + * Registers a datatype as a supported datatype. + * + * @since 2.0 + * @param aDataType: Datatype to register + * @return EOk if the datatype has been registered + */ + + virtual TInt RegisterDataType( + const TDataType& aDataType) = 0; + + /** + * UnRegisterDataType + * + * Unregisters a datatype via its index. + * + * @since 2.5 + * @param aIndex: Number of the datatype to unregister + * @return EOk if the datatype has been unregistered + */ + + virtual TInt UnRegisterDataType( + const TInt aIndex) = 0; + + /** + * SupportedDRMMethods + * + * Returns the supported DRM protection methods and the OMA compliance + * level of the DRM engine + * + * @since 2.0 + * @param aDRMMethod: Out parameter, bit mask containing any + * combination of EForwardLock, ECombinedDelivery, + * ESeparateDelivery etc. + * @param aOMALevel: OMA compliance of the DRM engine + * @return DRMCommon error code + */ + + virtual TInt SupportedDRMMethods( + TInt& aDRMMethod, TOMALevel& aOMALevel) = 0; + + /** + * Consume + * + * Overrides any rights consumption. This function must only be used by + * applications with user interaction and not by intermediate components. + * The main use cases are signalling that content is to be installed + * (including thumbnail generation), or that content is to be consumed. + * They are characterized as calls to this function with the correct + * intent (i.e. EPlay or EInstall) and the corresponding action (i.e. + * telling whether the indicated intent is started or finished). + * Calls to this function must be the result of a user interaction or + * otherwise high level event. + * + * @since 2.5 + * @param aContentURI: URI of the content which will be consumed + * @param aRightsSpec: the consumption intent (EPlay, EDisplay, EPrint, + * EExecute or EInstall) + * @param anAction: the consumption action, telling whether the + * content consumption starts or finishes. + * @return EOk if consume action was successfully signalled to the engine. + */ + virtual TInt Consume( + const TDesC8& aContentURI, + TUint32 aRightsSpec, + TConsumeAction anAction) = 0; + + /** + * ConsumeFile + * + * Overrides any rights consumption. This function must only be used by + * applications with user interaction and not by intermediate components. + * The main use cases are signalling that content is to be installed + * (including thumbnail generation), or that content is to be consumed. + * They are characterized as calls to this function with the correct + * intent (i.e. EPlay or EInstall) and the corresponding action (i.e. + * telling whether the indicated intent is started or finished). + * Calls to this function must be the result of a user interaction or + * otherwise high level event. + * + * @since 2.5 + * @param + * @param aRightsSpec: the consumption intent (EPlay, EDisplay, EPrint, + * EExecute or EInstall) + * @param anAction: the consumption action, telling whether the + * content consumption starts or finishes. + * @return EOk if consume action was successfully signalled to the engine. + */ + virtual TInt ConsumeFile( + const TDesC& aFileName, + TUint32 aRightsSpec, + TConsumeAction anAction) = 0; + + }; + +class MDRMHelperFactory + { +public: + + IMPORT_C static MDRMHelper* CreateL(CCoeEnv& aCoeEnv); + IMPORT_C static MDRMHelper* CreateLC(CCoeEnv& aCoeEnv); + + IMPORT_C static MDRMHelper* CreateL(); + IMPORT_C static MDRMHelper* CreateLC(); + + }; + +#endif // MDRMHELPER_H + +// End of File