--- a/profile_plat/profiles_settings_view_api/inc/CProfileToneHandler.h Thu Aug 19 09:55:16 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,413 +0,0 @@
-/*
-* 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 interface to be used by S60 applications for
-* setting ringing and alert tones for different profiles.
-* Registers DRM protected tones as automated content
-* and removes old content from automated content list.
-* Shows a content activation query if necessary.
-*
-*/
-
-
-
-#ifndef CPROFILETONEHANDLER_H
-#define CPROFILETONEHANDLER_H
-
-// INCLUDES
-#include <f32file.h> // CBase, RFs
-#include <MSSSettingsObserver.h> // MSSSettingsObserver, RSSSettings
-#include <apmstd.h> // KMaxDataTypeLength
-#include <data_caging_path_literals.hrh>
-
-// DATA TYPES
-
-/**
-* Enumerations for different tone settings in Profiles.
-* Should there become a need e.g. for separately place line 1 and line 2
-* ringing tones, we just add them to these enumerations.
-*/
-enum TProfileTones
- {
- EProfileRingingToneSetting = 1,
- EProfileVideoCallToneSetting = 2,
- EProfileMessageAlertToneSetting = 3,
- EProfileInstantMessageAlertToneSetting = 4,
- EProfileEmailAlertToneSetting = 5
- };
-
-// FORWARD DECLARATIONS
-class DRMCommon;
-class CDRMHelper;
-class MProfileExtended;
-class MProfileEngineExtended;
-class MProfilesLocalFeatures;
-
-// CLASS DECLARATION
-
-/**
-* A helper interface to be used by S60 applications for
-* setting ringing and alert tones for different profiles.
-* 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 ProfileSettingsView.lib
-* @since Series 60 2.6
-*/
-class CProfileToneHandler : public CBase, public MSSSettingsObserver
- {
- public: // Constructors and destructor
-
- // Two-phased constructors.
- IMPORT_C static CProfileToneHandler* NewL();
- IMPORT_C static CProfileToneHandler* NewLC();
-
- // Destructor.
- ~CProfileToneHandler();
-
- public: // New functions
-
- /**
- * Sets the ringing tone of the current active profile.
- * If the file does not exist, leaves with KErrNotFound.
- * If the file is of an unsupported type, leaves with KErrNotSupported.
- * If the file is an unprotected MP3/AAC in user data area
- * and if those are not allowed as ringing or alert tones,
- * leaves with KErrPermissionDenied.
- * If the file is a WMA file in user data area and those are not
- * allowed, leaves with KErrArgument.
- * If the active profile is not allowed to be changed
- * (e.g. Drive-profile) leaves with KErrAccessDenied.
- * If Alternate Line Service is enabled, finds out the line in use
- * and sets the ringing tone for that line respectively.
- * @since 2.6
- * @param aFileName Full path and filename of the tone to be used
- * as the new ringing tone. An empty descriptor
- * will be replaced with "No_Sound.wav".
- * @return KErrNone if successful,
- * KErrCancel if user answers No to a DRM activation query.
- * (See DRMHelper::SetAutomatedPassive)
- * KErrGeneral if DRM rights are insufficient.
- * KErrArgument if the file is DRM protected
- * audio/mp4 and those are not allowed as ringingtones.
- */
- IMPORT_C TInt SetActiveProfileRingingToneL( const TDesC& aFileName );
-
- /**
- * Sets a ringing or alert tone for a profile.
- * If the file does not exist, leaves with KErrNotFound.
- * If the file is of an unsupported type, leaves with KErrNotSupported.
- * If the file is an unprotected MP3/AAC in user data area
- * and if those are not allowed as ringing or alert tones,
- * leaves with KErrPermissionDenied.
- * If the file is a WMA file in user data area and those are not
- * allowed, leaves with KErrArgument.
- * If the file is not allowed to be changed
- * leaves with KErrAccessDenied.
- * If the selected profile is not allowed to be changed
- * (e.g. Drive-profile) leaves with KErrAccessDenied.
- * In case of a ringing tone, if Alternate Line Service is enabled,
- * finds out the line in use and sets the ringing tone for that
- * line respectively.
- * @since 2.6
- * @param aProfileId The ID of the profile (NOT an index).
- * @param aToneSetting Identifies the tone which is updated.
- * @param aFileName Full path and filename of the tone to be used
- * as the new ringing or alert tone. An empty descriptor
- * will be replaced with "No_Sound.wav".
- * @return Returns KErrNone if successful,
- * KErrCancel if user answers No to a DRM activation query.
- * (See DRMHelper::SetAutomatedPassive)
- * KErrGeneral if DRM rights are insufficient.
- * KErrArgument if the file is DRM protected
- * audio/mp4 and those are not allowed as ringingtones.
- */
- IMPORT_C TInt SetProfileToneL( TInt aProfileId,
- TProfileTones aToneSetting, const TDesC& aFileName );
-
- /**
- * Sets a ringing or alert tone for a profile and not check the file.
- * This function only can be used when user set a ringing or alert tone
- * for some profiles and avoid to repeat check the file.
- * Notice: the SetProfileToneL should be executed before this function, because
- * SetProfileToneL will check the file.
- * leaves with KErrPermissionDenied.
- * If the file is a WMA file in user data area and those are not
- * allowed, leaves with KErrArgument.
- * If the file is not allowed to be changed
- * leaves with KErrAccessDenied.
- * If the selected profile is not allowed to be changed
- * (e.g. Drive-profile) leaves with KErrAccessDenied.
- * In case of a ringing tone, if Alternate Line Service is enabled,
- * finds out the line in use and sets the ringing tone for that
- * line respectively.
- * @param aProfileId The ID of the profile (NOT an index).
- * @param aToneSetting Identifies the tone which is updated.
- * @param aFileName Full path and filename of the tone to be used
- * as the new ringing or alert tone. An empty descriptor
- * will be replaced with "No_Sound.wav".
- * @return Returns KErrNone this function didn't check the file, so return KErrNone.
- */
- IMPORT_C TInt SetProfileToneNotCheckL( TInt aProfileId,
- TProfileTones aToneSetting, const TDesC& aFileName );
-
- /**
- * Sets a ringing or alert tone for all profiles.
- * If the file does not exist, leaves with KErrNotFound.
- * If the file is of an unsupported type, leaves with KErrNotSupported.
- * If the file is an unprotected MP3/AAC in user data area
- * and if those are not allowed as ringing or alert tones,
- * leaves with KErrPermissionDenied.
- * If the file is a WMA file in user data area and those are not
- * allowed, leaves with KErrArgument.
- * If the file is not allowed to be changed
- * (e.g. Drive-profile) method ignores profile changes
- * and selects next profile.
- * In case of a ringing tone, if Alternate Line Service is enabled,
- * finds out the line in use and sets the ringing tone for that
- * line respectively.
- * Does not affect on user created profiles except if the active profile
- * is user created of which the ringing or alert tone is also changed.
- * @since 2.6
- * @param aToneSetting Identifies the tone which is updated.
- * @param aFileName Full path and filename of the tone to be used
- * as the new ringing or alert tone. An empty descriptor
- * will be replaced with "No_Sound.wav".
- * @return Returns KErrNone if successful,
- * KErrCancel if user answers No to a DRM activation query.
- * (See DRMHelper::SetAutomatedPassive)
- * KErrGeneral if DRM rights are insufficient.
- * KErrArgument if the file is DRM protected
- * audio/mp4 and those are not allowed as ringingtones.
- */
- IMPORT_C TInt SetToneForAllProfilesL( TProfileTones aToneSetting,
- const TDesC& aFileName );
-
- public: // From base classes
-
- /**
- * From MSSSettings
- */
- void PhoneSettingChanged( TSSSettingsSetting aSetting, TInt aNewValue );
-
- protected: // New functions
-
- /**
- * Stores the settings to Profiles Engine and adds the file to automated
- * content list and removes the old file from automated content list.
- * Do not call until the file is checked using CheckFileL.
- * @param aProfileId The ID of the profile (NOT an index).
- * @param aToneSetting Identifies the tone which is updated.
- * @param aFileName Full path and filename of the tone to be used
- * as the new ringing or alert tone.
- */
- void DoSetProfileToneL( TInt aProfileId,
- TProfileTones aToneSetting, const TDesC& aFileName );
-
- /**
- * Sets the tone to an MProfileExtended instance.
- * @param aProfile The MProfileExtended instance.
- * @param aToneSetting Identifies the tone which is updated.
- * @param aFileName The tone file name.
- */
- void SetToneL( MProfileExtended& aProfile,
- TProfileTones aToneSetting, const TDesC& aFileName );
-
- /**
- * Reads a tone setting from an MProfileExtended instance.
- * @param aProfile The MProfileExtended instance.
- * @param aToneSetting Identifies the tone which is read.
- * @return Returns the tone file name.
- */
- const TDesC& ReadToneL( const MProfileExtended& aProfile,
- TProfileTones aToneSetting ) const;
-
- /**
- * Checks that the given tone file exists and that it is
- * a legal file to be used as a ringing or alert tone.
- * @since 2.6
- * @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,
- * 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.
- */
- TInt CheckFileL( const TDesC& aFileName );
-
- /**
- * Checks if a DRM protected file can be used as a ringing or alert tone.
- * @since 2.6
- * @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.
- * @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.
- * @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.
- * @param aToneSetting The type of tone (e.g. ringing tone, SMS tone) to
- * be registered as automated content.
- * @param aFileName File to be registered as automated content.
- * @return KErrNone or a system-wide error code.
- */
- TInt SetAutomated( TProfileTones aToneSetting, const TDesC& aFileName );
-
- /**
- * Removes a file from automated content list.
- * Errors are omitted. Does nothing if DRM is not supported.
- * @param aFileName File to be removed from automated content list.
- */
- void RemoveAutomated( const TDesC& aFileName );
-
- /**
- * Returns data type of a file.
- * @param aFileName Full path and filename.
- * @return Returns the data type of the file.
- */
- TBuf<KMaxDataTypeLength> DataTypeL( const TDesC& aFileName ) const;
-
- /**
- * Returns whether a file is protected content or not.
- * Returns always EFalse if DRM is not supported.
- * @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.
- * @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.
- * @param aResourceId Resource ID to a TBUF resource.
- */
- void ShowErrorNoteL( TInt aResourceId ) const;
-
- /**
- * Returns info whether given filetype is allowed as ringingtone
- * @param aDataType Tone MIME type
- * @return ETrue if tone is allowed to be selected
- */
- TBool AllowSelect( const TDesC& aDataType ) const;
-
- /**
- * Checks the result of CheckFileL() and leaves if needed. Also checks
- * if the file is protected and can be set as automated content.
- * @param aResult result of the CheckFileL() call made before this.
- * @param aFileName the name of the file to be checked for protection
- * and if it is settable as automated content.
- * @return KErrNone, if ok, otherwise a system-wide error code.
- */
- TInt CheckResultAndProtectionL( TInt aResult,
- const TDesC& aFileName );
- /**
- * Checks ringing tone file size.
- * @param aFile file to check.
- * @param aSizeLimitKB maximum allowed file size in KB.
- * @return KErrNone, if ok.
- * KErrTooBig, if configurable file size limit exceeded.
- */
- TInt CheckToneFileSizeL( const TDesC& aFile, TInt aSizeLimitKB );
-
- /**
- * Reads maximimum ringing tone file size in KB from cenrep.
- */
- void GetMaxToneFileSizeL();
-
- /**
- * Displays error note about exceeded tone file size.
- * @param aSizeLimitKB file size limit.
- */
- void ShowSizeErrorNoteL( TInt aSizeLimitKB );
-
- private:
-
- /// Default constructor
- CProfileToneHandler();
-
- /// 2nd phase constructor
- void ConstructL();
-
- /// Constructor for the DRM objects
- void DrmConstructL();
-
- /// Destructor for the DRM objects
- void ReleaseDrm();
-
- /// Functions related to WMDRM protection check
- TBool IsFileWMDRMProtectedL( const TDesC& aFileName );
-
- /// Called by SetAutomated
- TInt SetAutomatedL( TProfileTones aToneSetting, const TDesC& aFileName );
-
- private: // Data
-
- /// Owns: DRM Helper client.
- CDRMHelper* iDrmHelper;
-
- /// Owns: DRM Common client
- DRMCommon* iDrmCommon;
-
- /// Owns: Profile Engine Extended interface.
- MProfileEngineExtended* iProfileEngine;
-
- /// Owns: Profiles local features.
- MProfilesLocalFeatures* iProfilesFeatures;
-
- /// Supplementary services client for reading Alternate Line Service.
- RSSSettings iSSSettings;
-
- /// File Server client.
- RFs iFs;
-
- /// Alternate Line Setting value.
- TInt iAlternateLineSetting;
-
- /// Maximum allowed tone file size in kilo bytes.
- TInt iMaxSizeKB;
-
- };
-
-#endif // CPROFILETONEHANDLER_H
-
-// End of File