diff -r 000000000000 -r 40261b775718 devsoundextensions/effectspresets/AudioEqualizerUtility/src/AudioEqualizerutility.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devsoundextensions/effectspresets/AudioEqualizerUtility/src/AudioEqualizerutility.cpp Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,1064 @@ +/* +* Copyright (c) 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: Utility to Access the Equalizer Effect +* +*/ + + + +// INCLUDE FILES +#include +#include +#include +#include "TempAudioEqualizer.h" +#include "AudioEqUtilityInternalCRKeys.h" +#include + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::CAudioEqualizerUtility +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CAudioEqualizerUtility::CAudioEqualizerUtility() + : iAudioEqualizer(NULL), + iBassBoost(NULL), + iPresetRepository(NULL) + { + } + + +// Destructor +CAudioEqualizerUtility::~CAudioEqualizerUtility() + { + iPresetArray.Close(); + iFullPresetArray.Close(); + delete iPresetRepository; + delete iTransAudioEqualizer; + delete iAudioEqualizer; + //delete iBassBoost; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMMFDevSound& aDevSound) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aDevSound); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aDevSound,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMdaAudioConvertUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMdaAudioInputStream& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMdaAudioOutputStream& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMdaAudioPlayerUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMdaAudioRecorderUtility& aUtility ) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility,ETrue); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMdaAudioToneUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CCustomCommandUtility* aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(MCustomInterface& aCustomInterface) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aCustomInterface); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aCustomInterface,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CMidiClientUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CDrmPlayerUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::ConstructL(CVideoPlayerUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ConstructL")); +#endif + iAudioEqualizer = CAudioEqualizer::NewL(aUtility); + TInt numberBands = iAudioEqualizer->NumberOfBands(); + + iTransAudioEqualizer = CTempAudioEqualizer::NewL(numberBands,iAudioEqualizer); + + //iBassBoost = CBassBoost::NewL(aUtility,EFalse); + iPresetRepository = CRepository::NewL(KCRUidAudioEqUtilityPresets); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + + iTransAudioEqualizer->SetBandDataL(2,iAudioEqualizer->DoBandDataL(1,ETrue)); + iTransAudioEqualizer->SetEffectData(iAudioEqualizer->DoEffectData()); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMMFDevSound& aDevSound) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aDevSound); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMdaAudioConvertUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMdaAudioInputStream& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMdaAudioOutputStream& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMdaAudioPlayerUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMdaAudioRecorderUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMdaAudioToneUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CCustomCommandUtility* aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(MCustomInterface& aCustomInterface) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aCustomInterface); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CMidiClientUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CDrmPlayerUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizerUtility* CAudioEqualizerUtility::NewL(CVideoPlayerUtility& aUtility) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NewL")); +#endif + CAudioEqualizerUtility* self = new( ELeave ) CAudioEqualizerUtility; + CleanupStack::PushL( self ); + self->ConstructL(aUtility); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ApplyPresetL() +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAudioEqualizerUtility::ApplyPresetL( + TInt aPresetIndex) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ApplyPresetL")); +#endif + // Get the Preset from the Central Repository + // and Apply it to the Equalizer Object + // using SetBandData method. After that Just Enable() the Effect + + TBuf8<256> aDescription; + TBufC8<256> aDes; + TBool presetFound = EFalse; + + if(aPresetIndex > (iPresetArray.Count() - 1)) + User::Leave(KErrArgument); + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + + // Write the Equalizer Data in the first available NULL Space + for( TInt j = 0; j < iFullPresetArray.Count();j++) + { + if( (iFullPresetArray[j].iPresetNameKey == iPresetArray[aPresetIndex].iPresetNameKey) && + (iFullPresetArray[j].iPresetName.Length())) + { + iPresetRepository->Get(iFullPresetArray[j].iPresetDescriptionKey,aDescription); + aDes = aDescription; + iAudioEqualizer->SetBandDataL(2,aDes); + + // Applying the Settings to the Audio Equalizer + iAudioEqualizer->EnableL(); + // iAudioEqualizer->ApplyL(); + presetFound = ETrue; + break; + } + } + + if(!presetFound) + User::Leave(KErrNotFound); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::CreatePresetL(TDesC& aName,CAudioEqualizer& aAudioEqualizer) +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +EXPORT_C void CAudioEqualizerUtility:: CreatePresetL( + TDesC& aName, + CAudioEqualizer& /*aAudioEqualizerUI*/) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::CreatePresetL")); +#endif + // Get the Preset from the UI and create a DesC using + // DoBandData() method and then store it to the + // Central Repository + + __ASSERT_ALWAYS(aName.Length() > 0,User::Leave(KErrArgument)); + + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + + // iTransAudioEqualizer = &aAudioEqualizerUI; + + //Create New Keys at the End of the Repository + TInt currentNumber = 0; + // Get the number of User Defined Presets in the Repository + iPresetRepository->Get(KAudioEqUtilityNumberOfUserDefinedPresets,currentNumber); + + HBufC8* presetHeap = HBufC8::NewL(iAudioEqualizer->NumberOfBands() * sizeof(TEfAudioEqualizerBand)); + TPtr8 des = presetHeap->Des(); + des.SetLength(presetHeap->Size()); + des.Append(iTransAudioEqualizer->DoBandDataL(2,ETrue)); + + // Calculate and Create the Equalizer Data for the New Preset + iPresetRepository->Create(currentNumber*2+KAudioEqUtilityUserDefinedPresetStart,des); + // Calculate and create the New Preset Name in the End + iPresetRepository->Create(currentNumber*2+KAudioEqUtilityUserDefinedPresetStartName,aName); + // Update the Number of UserDefined Presets in the End + // Since we created new Keys for the Name and the Descriptor + currentNumber += 1; + iPresetRepository->Set(KAudioEqUtilityNumberOfUserDefinedPresets,currentNumber); + iPresetRepository->Get(KAudioEqUtilityPresetsCounter,currentNumber); + iPresetRepository->Set(KAudioEqUtilityPresetsCounter,currentNumber + 1); + + // Refresh the iFullPresetArray + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + delete presetHeap; + presetHeap = NULL; + + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::GetPresetL() +// Gets the Preset from the Central Repository +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C const TDesC& CAudioEqualizerUtility::GetPresetL( + TInt aPresetIndex) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::GetPresetL")); +#endif + // Get the Preset from the Central Repository + // and Apply it to the Equalizer Object + // using SetBandData method. After that Just Enable() the Effect + + + if(aPresetIndex > (iPresetArray.Count() - 1)) + User::Leave(KErrArgument); + + TBuf8<256> aDescription; + TBufC8<256> aDes; + TBool presetFound = EFalse; + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + + // Write the Equalizer Data in the first available NULL Space + for(TInt j = 0; j < iFullPresetArray.Count();j++) + { + if( (iFullPresetArray[j].iPresetNameKey == iPresetArray[aPresetIndex].iPresetNameKey) && + (iFullPresetArray[j].iPresetName.Length())) + { + iPresetRepository->Get(iFullPresetArray[j].iPresetDescriptionKey,aDescription); + aDes = aDescription; + + iTransAudioEqualizer->SetBandDataL(2,aDes); // The First Argument should be > 1 for getting all bands + presetFound = ETrue; + return iFullPresetArray[j].iPresetName; + } + } + + if(!presetFound) + User::Leave(KErrNotFound); + + return KNullDesC; + + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::DeletePresetL() +// Deletes the Preset from the Central Repository +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAudioEqualizerUtility::DeletePresetL( + TInt aPresetIndex) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::DeletePresetL")); +#endif + // Get the Name from the PresetIndex + // This Preset Index is from the Array returned to the UI + + TInt err(KErrNone); + TBool presetFound = EFalse; + + + // Leave if it deletes a predefined preset + TInt currentNumberOfPredefinedPresets = 0; + + // Get the number of User Defined Presets in the Repository + iPresetRepository->Get(KAudioEqUtilityNumberOfPreDefinedPresets,currentNumberOfPredefinedPresets); + + if (aPresetIndex < currentNumberOfPredefinedPresets) //it is a predefined preset, + { + User::Leave(KErrArgument); + } + + if(aPresetIndex > (iPresetArray.Count() - 1)) + User::Leave(KErrArgument); + + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + +#ifdef _DEBUG + RDebug::RawPrint(iPresetArray[aPresetIndex].iPresetName); +#endif + + // Deletes the Preset from the iFullPresetArray and then + // rewrite it to the Central Repository + for(TInt j = 0; j < iFullPresetArray.Count();j++) + { + + if( (iFullPresetArray[j].iPresetNameKey == iPresetArray[aPresetIndex].iPresetNameKey) && + (iFullPresetArray[j].iPresetName.Length())) + { + presetFound = ETrue; + TRAP(err,iPresetRepository->Set(iFullPresetArray[j].iPresetNameKey,KNullDesC)); + TRAP(err,iPresetRepository->Set(iFullPresetArray[j].iPresetDescriptionKey,KNullDesC)); + if(err != KErrNone) + { + break; + } + else + { + iFullPresetArray[j].iPresetName.FillZ(0); + iFullPresetArray[j].iPresetNameKey = 0; + iFullPresetArray[j].iPresetDescriptionKey = 0; + break; + + } + + } +#ifdef _DEBUG + RDebug::RawPrint(iFullPresetArray[j].iPresetName); +#endif + } + + // update the KAudioEqUtilityNumberOfUserDefinedPresets in CR + if(!presetFound) + User::Leave(KErrNotFound); + + // After This Update the iPresetArray for the UI + UpdatePresetArray(iPresetArray,iFullPresetArray); + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::DisablePresetL() +// Disable the Preset +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +EXPORT_C void CAudioEqualizerUtility::DisableEqualizerL() +{ +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::DisableEqualizerL")); +#endif + + if(iAudioEqualizer) + { + iAudioEqualizer->DisableL(); + } +} + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::Equalizer() +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C CAudioEqualizer& CAudioEqualizerUtility::Equalizer() + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::Equalizer()")); +#endif + + return *iTransAudioEqualizer; + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::BassBoost() +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C CBassBoost& CAudioEqualizerUtility::BassBoost() + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::BassBoost()")); +#endif + return *iBassBoost; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ModifyPresetL() +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAudioEqualizerUtility::ModifyPresetL( + TInt aPresetIndex, + TDesC& aName, + CAudioEqualizer& aAudioEqualizerUI) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ModifyPresetL")); +#endif + + __ASSERT_ALWAYS(aName.Length() > 0,User::Leave(KErrArgument)); + + // Modifies the Preset Data in the Central Repository + // with the updated Name and Equalizer Settings for the + // given PresetIndex + + if(aPresetIndex > (iPresetArray.Count() - 1)) + User::Leave(KErrArgument); + + iTransAudioEqualizer = &aAudioEqualizerUI; + + // Write the Equalizer Data in the first available NULL Space + for( TInt j = 0; j < iFullPresetArray.Count();j++) + { + if( iFullPresetArray[j].iPresetNameKey == iPresetArray[aPresetIndex].iPresetNameKey) + { + iPresetRepository->Set(iFullPresetArray[j].iPresetNameKey,aName); + + HBufC8* presetHeap = HBufC8::NewL(iAudioEqualizer->NumberOfBands() * sizeof(TEfAudioEqualizerBand)); + TPtr8 des = presetHeap->Des(); + des.SetLength(presetHeap->Size()); + des.Append(iTransAudioEqualizer->DoBandDataL(2,ETrue)); + + iPresetRepository->Set(iFullPresetArray[j].iPresetDescriptionKey,des); + delete presetHeap; + presetHeap = NULL; + break; + } + } + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::NumberOfPreDefinedPresets() +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + + +EXPORT_C TUint32 CAudioEqualizerUtility::NumberOfPreDefinedPresets() const + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::NumberOfPreDefinedPresets")); +#endif + + TInt numberOfPresets; + iPresetRepository->Get(KAudioEqUtilityNumberOfPreDefinedPresets,numberOfPresets); + return numberOfPresets; + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::Presets() +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C TArray CAudioEqualizerUtility::Presets() + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::Presets")); +#endif + + // returns all the Presets from the System Defined and + // User Defined Preset Array in the Central Repository + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + return iPresetArray.Array(); + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::ResetPresetL(TInt aPresetIndex) +// Applies the Preset to the Equalizer Object +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAudioEqualizerUtility::ResetPresetL(TInt aPresetIndex) + { +#ifdef _DEBUG + RDebug::Print(_L("CAudioEqualizerUtility::ResetPresetL")); +#endif + + if(aPresetIndex > (iPresetArray.Count() - 1)) + User::Leave(KErrArgument); + + TInt currentNumber = 0; + // Get the number of System Defined Presets in the Repository + iPresetRepository->Get(KAudioEqUtilityNumberOfPreDefinedPresets,currentNumber); + + if(aPresetIndex >= currentNumber) + User::Leave(KErrNotSupported); + + + for( TInt j = 0; j < currentNumber;j++) + { + if( iFullPresetArray[j].iPresetNameKey == iPresetArray[aPresetIndex].iPresetNameKey) + { + iPresetRepository->Reset(iFullPresetArray[j].iPresetDescriptionKey); + iPresetRepository->Reset(iFullPresetArray[j].iPresetNameKey); + } + } + UpdateFullPresetArrayFromCenRep(iFullPresetArray); + UpdatePresetArray(iPresetArray,iFullPresetArray); + } + + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::UpdatePresetArrayFromCenRep(RArray &aFullPresetArray) +// Updates the Array with the Values in Central Repository +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// + +void CAudioEqualizerUtility::UpdateFullPresetArrayFromCenRep(RArray& aFullPresetArray) + { + + aFullPresetArray.Reset(); + TEfAudioEqualizerUtilityPreset tempPreset; + + + TInt numberOfUserDefinedPresets = 0; + TInt numberOfPreDefinedPresets = 0; + + iPresetRepository->Get(KAudioEqUtilityNumberOfUserDefinedPresets,numberOfUserDefinedPresets); + iPresetRepository->Get(KAudioEqUtilityNumberOfPreDefinedPresets,numberOfPreDefinedPresets); + + for( TInt j = 0; j < (numberOfPreDefinedPresets); j++) + { + tempPreset.iPresetDescriptionKey = KAudioEqUtilityPreDefinedPresetStart + (2 * j); + tempPreset.iPresetNameKey = KAudioEqUtilityPreDefinedPresetStartName + (2 * j); + iPresetRepository->Get((KAudioEqUtilityPreDefinedPresetStartName + (2 * j)) ,tempPreset.iPresetName); +#ifdef _DEBUG + RDebug::RawPrint(tempPreset.iPresetName); +#endif + aFullPresetArray.Append(tempPreset); + + } + + for( TInt j = 0; j < (numberOfUserDefinedPresets); j++) + { + tempPreset.iPresetDescriptionKey = KAudioEqUtilityUserDefinedPresetStart + (2 * j); + tempPreset.iPresetNameKey = KAudioEqUtilityUserDefinedPresetStartName + (2 * j); + iPresetRepository->Get((KAudioEqUtilityUserDefinedPresetStartName + (2 * j)) ,tempPreset.iPresetName); +#ifdef _DEBUG + RDebug::RawPrint(tempPreset.iPresetName); +#endif + aFullPresetArray.Append(tempPreset); + + } + + } + +// ----------------------------------------------------------------------------- +// CAudioEqualizerUtility::UpdatePresetArray(RArray& aPresetArray,const RArray &aFullPresetArray) +// Creates the Descriptor Array of Names of the Presets Stored in Central Repository +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CAudioEqualizerUtility::UpdatePresetArray(RArray& aPresetArray,const RArray& aFullPresetArray) + { + + aPresetArray.Reset(); + TEfAudioEqualizerUtilityPreset tempClientArray; + + // Write the Equalizer Data in the first available NULL Space + for( TInt j = 0; j < aFullPresetArray.Count();j++) + { + if( aFullPresetArray[j].iPresetName.Length() != 0) + { + + tempClientArray.iPresetName = aFullPresetArray[j].iPresetName; + tempClientArray.iPresetNameKey = aFullPresetArray[j].iPresetNameKey; + + aPresetArray.Append(tempClientArray); + } +#ifdef _DEBUG + RDebug::Print(_L("Name Length %d "),aFullPresetArray[j].iPresetName.Length()); + RDebug::RawPrint(aFullPresetArray[j].iPresetName); +#endif + } + + } + + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + + + +// End of File