diff -r 6b5204869ed5 -r 89c890c70182 psln/PslnLibraryLoaders/src/pslnprofilesettingsloader.cpp --- a/psln/PslnLibraryLoaders/src/pslnprofilesettingsloader.cpp Fri Jun 25 18:53:58 2010 +0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,292 +0,0 @@ -/* -* 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: Wrapper for media gallery and profiles libraries. -* -*/ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#ifdef RD_CONTENTNOTIFICATION -#include -#include -#include -#endif //RD_CONTENTNOTIFICATION -#include - -#include "pslnprofilesettingsloader.h" -#include "PslnConst.h" - -#ifdef RD_CONTENTNOTIFICATION -const TInt KPslnEventArraySize = 2; -#endif // RD_CONTENTNOTIFICATION - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// C++ default constructor can NOT contain any code, that might leave. -// --------------------------------------------------------------------------- -// -CPslnProfileSettingsLoader::CPslnProfileSettingsLoader() - { - } - -// --------------------------------------------------------------------------- -// Two-phased constructor. -// --------------------------------------------------------------------------- -// -CPslnProfileSettingsLoader* CPslnProfileSettingsLoader::NewL() - { - CPslnProfileSettingsLoader* self = - new( ELeave ) CPslnProfileSettingsLoader(); - - return self; - } - -// --------------------------------------------------------------------------- -// Destructor -// --------------------------------------------------------------------------- -// -CPslnProfileSettingsLoader::~CPslnProfileSettingsLoader() - { -#ifdef RD_CONTENTNOTIFICATION - if ( iEventArray ) - { - iEventArray->Delete( 0 ); - iEventArray->Reset(); - } - delete iEventArray; -#endif // RD_CONTENTNOTIFICATION - } - -// --------------------------------------------------------------------------- -// Sets tone for all profiles. -// --------------------------------------------------------------------------- -// -void CPslnProfileSettingsLoader::SetToneForProfilesL( - TInt aType, TDes& aFullName ) - { - MProfileEngineExtended* profileEngine = CreateProfileEngineExtendedL(); - CleanupReleasePushL( *profileEngine ); - MProfilesNamesArray* profileArray = profileEngine->ProfilesNamesArrayLC(); - - TInt arrayCount( profileArray->MdcaCount() ); - TInt arrayIndex( 0 ); - TInt profileId( 0 ); - TInt activeId( profileEngine->ActiveProfileId() ); - - while( arrayIndex < arrayCount ) - { - profileId = profileArray->ProfileName( arrayIndex )->Id(); - // Updating of the active profile will be done last to make sure that - // UI gets the new value of the ringing tone if settings view is active - // and it is containing settings of another than active profile - if( profileId != activeId ) - { - TRAPD(r, DoSetProfileToneL( profileEngine, profileId, aType, aFullName )); - // Filter situation when profile is not allowed to be changed - // e.g. Drive-profile - if( ( r != KErrNone ) && ( r != KErrAccessDenied ) ) - { - User::Leave( r ); - } - } - arrayIndex ++; - } - - // Update the active profile: - TRAPD(r, DoSetProfileToneL( profileEngine, activeId, aType, aFullName )); - if( ( r != KErrNone ) && ( r != KErrAccessDenied ) ) - { - User::Leave( r ); - } - CleanupStack::PopAndDestroy( 2 ); //profileEngine,profileArray - } - -// --------------------------------------------------------------------------- -// Do Sets tone for all profiles. -// --------------------------------------------------------------------------- -// -void CPslnProfileSettingsLoader::DoSetProfileToneL( MProfileEngineExtended* aProfileEngine, - TInt aProfileId, TInt aType,const TDesC& aFileName ) - { - MProfileExtended* profile = aProfileEngine->ProfileLC( aProfileId ); - CDRMHelper* drmHelper = CDRMHelper::NewLC(); - - // Get the old tone in order to remove it from the automated content list - TFileName oldTone( ToneL( *profile, aType ) ); - - // Replace the old tone with the new tone - SetToneL( *profile, aType, aFileName ); - - // Commit changes. Write the new settings to the Profiles Engine - aProfileEngine->CommitChangeL( *profile ); - - // Register file as automated content - TInt err( SetAutomated( drmHelper, aType, aFileName ) ); - if( err == KErrNone ) - { - // Remove old tone from the automated content list - RemoveAutomated( drmHelper,oldTone ); - } - else - { - // Put the old tone back into Profiles: - TRAP_IGNORE( - SetToneL( *profile, aType, oldTone ); - aProfileEngine->CommitChangeL( *profile ); - ); - } - - CleanupStack::PopAndDestroy( 2 ); // profile,drmHelper - } - -// --------------------------------------------------------------------------- -// SetTones. -// --------------------------------------------------------------------------- -// -void CPslnProfileSettingsLoader::SetToneL( MProfileExtended& aProfile, - TInt aType, const TDesC& aFileName ) - { - MProfileSetTones& setTones = aProfile.ProfileSetTones(); - switch ( aType ) - { - case EAknsMinorSoundRingingTone: - setTones.SetRingingTone1L( aFileName ); - break; - case EAknsMinorSoundMessageAlert: - setTones.SetMessageAlertToneL( aFileName ); - break; - default: - User::Leave( KErrArgument ); - break; - } - } - -// --------------------------------------------------------------------------- -// Read Tones. -// --------------------------------------------------------------------------- -// -const TDesC& CPslnProfileSettingsLoader::ToneL( MProfileExtended& aProfile, - TInt aType ) - { - const MProfileTones& tones = aProfile.ProfileTones(); - switch ( aType ) - { - case EAknsMinorSoundRingingTone: - { - return tones.RingingTone1(); - } - case EAknsMinorSoundMessageAlert: - { - return tones.MessageAlertTone(); - } - default: - User::Leave( KErrArgument ); - break; - } - return KNullDesC; - } - -// ----------------------------------------------------------------------------- -// SetAutomated -// ----------------------------------------------------------------------------- -// -TInt CPslnProfileSettingsLoader::SetAutomated( CDRMHelper* aDrmHelper,TInt aType, - const TDesC& aFileName ) - { - switch ( aType ) - { - case EAknsMinorSoundRingingTone: - aDrmHelper->SetAutomatedType( CDRMHelper::EAutomatedTypeRingingTone ); - break; - case EAknsMinorSoundMessageAlert: - aDrmHelper->SetAutomatedType( CDRMHelper::EAutomatedTypeMessageAlert ); - break; - default: - aDrmHelper->SetAutomatedType( CDRMHelper::EAutomatedTypeOther ); - } - return aDrmHelper->SetAutomatedSilent( aFileName, EFalse ); - } - -// ----------------------------------------------------------------------------- -// RemoveAutomated -// ----------------------------------------------------------------------------- -// -void CPslnProfileSettingsLoader::RemoveAutomated( CDRMHelper* aDrmHelper,const TDesC& aFileName ) - { - aDrmHelper->RemoveAutomatedPassive( aFileName ); // ignore return value - } - -// --------------------------------------------------------------------------- -// Indicates to the Media Gallery that new file has been copied. -// --------------------------------------------------------------------------- -// -void CPslnProfileSettingsLoader::IndicateFileUpdationL( const TDesC& aFullPath ) - { - // Notice: this code is used to avoid the building warning! - aFullPath.Length(); -#ifdef RD_CONTENTNOTIFICATION - CContentNotification* notifier = CContentNotification::NewL(); - CleanupStack::PushL( notifier ); - - if ( iEventArray ) - { - iEventArray->Delete( 0 ); - iEventArray->Reset(); - delete iEventArray; - iEventArray = NULL; - } - - iEventArray = - new CArrayFixFlat(KPslnEventArraySize); - - // Nofication about new content - CContentNotificationEvent* event = - CContentCreatedEvent::NewL( aFullPath ); - CleanupStack::PushL( event ); - iEventArray->AppendL( event ); - CleanupStack::Pop( event ); // array owns the event - - // Send all notification event with one call - User::LeaveIfError( notifier->SendNotification( iEventArray->Array() ) ); - delete event; - event = NULL; - CleanupStack::PopAndDestroy( notifier ); -#endif //RD_CONTENTNOTIFICATION - } - -//---------------------------------------------------------------------------- -// Launcher gate function -//---------------------------------------------------------------------------- -EXPORT_C TAny* GateFunction() - { - CPslnProfileSettingsLoader* launcher = NULL; - TRAPD( err, launcher = CPslnProfileSettingsLoader::NewL() ); - if( err != KErrNone ) - { - return NULL; - } - return launcher; - } - -// End of File