diff -r 000000000000 -r 8c5d936e5675 profilesservices/ProfileEngine/WrapperSrc/CProEngToneHandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/profilesservices/ProfileEngine/WrapperSrc/CProEngToneHandler.h Thu Dec 17 08:52:52 2009 +0200 @@ -0,0 +1,253 @@ +/* +* Copyright (c) 2002-2006 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: A helper class for making correctness and DRM checkups to the +* tones to be used as alert tones. +* +*/ + + + +#ifndef CPROENGTONEHANDLER_H +#define CPROENGTONEHANDLER_H + +// INCLUDES +#include // CBase, RFs +#include // KMaxDataTypeLength +#include +#include "ProfileEng.hrh" // TProfileSettingId + +// FORWARD DECLARATIONS +class DRMCommon; +class CDRMHelper; +class CProEngMediaVariation; + +// CLASS DECLARATION + +/** +* A helper class for making correctness and DRM checkups to the +* tones to be used as alert tones. +* Registers DRM protected tones as automated content +* and removes old content from automated content list. +* Shows a content activation query and other DRM related +* notes if necessary. + +* +* @lib ProfileEngine.lib +* @since Series 60 3.1 +*/ +NONSHARABLE_CLASS( CProEngToneHandler ) : public CBase + { + public: // Constructors and destructor + + // Two-phased constructors. + static CProEngToneHandler* NewL(); + static CProEngToneHandler* NewLC(); + + // Destructor. + ~CProEngToneHandler(); + + public: // New functions + + /** + * Checks that the given tone file exists and that it is + * a legal file to be used as a ringing or alert tone. + * @since 3.1 + * @param aFileName Full path and filename of the file to be checked. + * @param aToneType Type of tone to check, see: ProfileEng.hrh + * @return KErrNone if the file can be used as a ringing or alert tone, + * KErrNotFound if the file cannot be found, + * KErrNotSupported if a file is of an unsupported type or + * KErrPermissionDenied if the file is not allowed + * to be used as a ringing or alert tone. + * KErrGeneral if DRM rights are insufficient. + * KErrArgument if the file is DRM protected + * audio/mp4 and those are not allowed as ringingtones. + * KErrTooBig if file size exceeded file size limit. + */ + TInt CheckToneFileL( const TDesC& aFileName, TInt aToneType ); + + /** + * Adds the file to automated content list and removes the old file + * from automated content list. + * Called by CProEngProfileImpl::CommitChangeL after the changes has + * been committed in the underlying Profiles Engine. + * @since 3.1 + * @param aSettingId setting id which identifies which tone (ringing + * tone, sms tone etc.) this automated content + * handling operation concerns. + * @param aFileName Full path and filename of the tone to be used + * as the new ringing or alert tone. + * @param aOldFileName Full path and filename of the previous tone used + * as the ringing or alert tone. + * @return KErrNone, if succesful, otherwise a system-wide error code. + */ + TInt HandleAutomatedContent( TProfileSettingId aSettingId, + const TDesC& aFileName, + const TDesC& aOldFileName); + + protected: // New functions + + /** + * Helper function for CheckToneFileL. This function does most of the + * actual checking. + * @since 3.1 + * @param aFileName Full path and filename of the file to be checked. + * @param aToneType Type of tone to check, see: ProfileEng.hrh + * @return KErrNone if the file can be used as a ringing or alert tone, + * KErrNotFound if the file cannot be found, + * KErrNotSupported if a file is of an unsupported type or + * KErrPermissionDenied if the file is not allowed + * to be used as a ringing or alert tone. + * KErrGeneral if DRM rights are insufficient. + * KErrArgument if the file is DRM protected + * audio/mp4 and those are not allowed as ringingtones. + * KErrTooBig if file size exceeded file size limit. + */ + TInt DoCheckToneFileL( const TDesC& aFileName, TInt aToneType ); + + /** + * Checks if a DRM protected file can be used as a ringing or alert tone. + * @since 3.1 + * @param aFileName Full path and filename of the file to be checked. + * @return KErrNone if the file can be used as a ringing or alert tone or + * KErrGeneral if DRM rights are insufficient. + */ + TInt CheckProtectedFileL( const TDesC& aFileName ); + + /** + * Tells whether a file can be registered as automated content or not. + * If DRM is not supported, returns always EFalse. + * @since 3.1 + * @param aFileName File to be registered as automated content. + * @return Returns ETrue if aFileName can be set as automated content. + * Returns EFalse if can't or DRM is not supported. + */ + TBool CanSetAutomated( const TDesC& aFileName ); + + /** + * Asks user if he/she wants to activate unactivated content. + * Shows a query. Does nothing if DRM is not supported. + * @since 3.1 + * @param aFileName File to be registered as automated content. + * @return Returns KErrCancel if user cancels the query. + */ + TInt AskAutomated( const TDesC& aFileName ); + + /** + * Registers a file to automated content list without any queries. + * Errors are omitted. Does nothing if DRM is not supported. + * @since 3.1 + * @param aSettingId setting id which identifies which tone (ringing + * tone, sms tone etc.) this automated content + * setting operation concerns. + * @param aFileName File to be registered as automated content. + * @return KErrNone, if succesful, otherwise a system-wide error code. + */ + TInt SetAutomated( TProfileSettingId aSettingId, + const TDesC& aFileName ); + + /** + * Removes a file from automated content list. + * Errors are omitted. Does nothing if DRM is not supported. + * @since 3.1 + * @param aFileName File to be removed from automated content list. + */ + void RemoveAutomated( const TDesC& aFileName ); + + /** + * Returns whether a file is protected content or not. + * Returns always EFalse if DRM is not supported. + * @since 3.1 + * @param aFileName The file name. + * @return Returns whether the file is protected content or not. + */ + TBool IsProtected( const TDesC& aFileName ) const; + + /** + * Returns whether a file is protected content or not. + * Returns always EFalse if DRM is not supported. + * @since 3.1 + * @param aFileName The file name. + * @return Returns whether the file is protected content or not. + */ + TBool IsProtectedL( const TDesC& aFileName ) const; + + /** + * Displays an error note. + * @since 3.1 + * @param aResourceId Resource ID to a TBUF resource. + */ + void ShowErrorNoteL( TInt aResourceId ); + + /** + * Checks if tone file's size is larger than the size limit. + * @since 3.1 + * @param aFileName The path to the file. + * @return KErrNone if the file can be used as a ringing tone. + * KErrTooBig if the file size limit is exceeded. + */ + TInt CheckFileSizeLimit( const TDesC& aFileName ) const; + /** + * Checks if tone file's size is larger than the size limit. + * @since 3.1 + * @return KErrNone if the file can be used as a ringing tone. + * KErrTooBig if the file size limit is exceeded. + */ + TInt CheckToneFileSize( const TDesC& aFile, TInt aSizeLimitKB ) const; + /** + * Reads tone file size limit from cenrep. + * @since 3.1 + * @return leaves on error + */ + void GetMaxToneFileSizeL( TInt& aMaxSizeKB ) const; + + private: + + /// Default constructor + CProEngToneHandler(); + + /// 2nd phase constructor + void ConstructL(); + + /// Constructor for the DRM objects + void DrmConstructL(); + + /// Destructor for the DRM objects + void ReleaseDrm(); + + /// Called by SetAutomated + TInt SetAutomatedL( TProfileSettingId aSettingId, + const TDesC& aFileName ); + + private: // Data + + /// Owns: DRM Helper client. + CDRMHelper* iDrmHelper; + + /// Owns: DRM Common client + DRMCommon* iDrmCommon; + + /// File Server client. + RFs iFs; + + /// Mime-type handling: + CProEngMediaVariation* iMediaVariation; + + /// voice call file size limit + TInt iToneFileSizeLimitKB; + }; + +#endif // CPROENGTONEHANDLER_H + +// End of File