--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/amms_qt/ammscontrol/audioeffect/src/cammsreverbcontrolgroup.cpp Tue May 11 16:07:20 2010 +0300
@@ -0,0 +1,355 @@
+/*
+* Copyright (c) 2005-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: Group for reverb controls
+*
+*/
+
+
+// INCLUDE FILES
+#include <EnvironmentalReverbUtility.h>
+#include <EnvironmentalReverbUtilityData.h>
+#include <logger.h>
+
+#include "cammsreverbcontrolgroup.h"
+#include "cammsbasereverbcontrol.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+CAMMSReverbControlGroup* CAMMSReverbControlGroup::NewLC()
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::NewLC +");
+
+ CAMMSReverbControlGroup* self = new(ELeave) CAMMSReverbControlGroup;
+
+ CleanupStack::PushL(self);
+ self->ConstructL();
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::NewLC -");
+
+ return self;
+}
+
+// Destructor
+CAMMSReverbControlGroup::~CAMMSReverbControlGroup()
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::~");
+
+ delete iEmptyEnvironmentalReverbUtility;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::ReverbLevel
+// Gets the gain level of the reverberation
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+TInt CAMMSReverbControlGroup::ReverbLevel()
+{
+ return iReverbLevel;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::ReverbTime
+// Gets the reverberation time, as set either explicitly via
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+TInt CAMMSReverbControlGroup::ReverbTime()
+{
+ return iReverbTime;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::SetReverbLevelL
+// Sets the gain level of the reverberation
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::SetReverbLevelL(TInt aLevel)
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::SetReverbLevelL");
+
+ __ASSERT_DEBUG(aLevel <= 0, User::Invariant());
+
+ // Set the level between the accepted limits [iReverbMinLevel,
+ // iReverbMaxLevel].
+ TInt reverbLevel = Min(aLevel, iReverbMaxLevel);
+ reverbLevel = Max(reverbLevel, iReverbMinLevel);
+
+ // Set reverb level to the controls.
+ TInt count = ControlCount();
+ for (TInt i = 0; i < count; i++)
+ {
+ TypeSafeControl(i)->SetReverbLevelL(reverbLevel);
+ }
+
+ // Invalidate current preset and save the new reverb level
+ iPresetIndex = -1;
+ iReverbLevel = reverbLevel;
+
+ LOG4( EJavaMMAPI, EInfo, "CAMMSReverbControlGroup::SetReverbLevelL, levels: %d, %d, %d %d",
+ aLevel, iReverbMinLevel, iReverbMaxLevel, reverbLevel);
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::SetReverbTimeL
+// Sets the reverberation time of the reverb
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::SetReverbTimeL(TInt aTime)
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::SetReverbTimeL +");
+
+ __ASSERT_DEBUG(aTime >= 0, User::Invariant());
+
+ // Set reverb time to controls.
+ TInt count = ControlCount();
+ for (TInt i = 0; i < count; i++)
+ {
+ TypeSafeControl(i)->SetReverbTimeL(aTime);
+ }
+
+ // Invalidate current preset and save new reverb time
+ iPresetIndex = -1;
+ iReverbTime = aTime;
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::SetReverbTimeL -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::TypeSafeControl
+// Gets control. Ownership is not tranferred.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+CAMMSBaseReverbControl*
+CAMMSReverbControlGroup::TypeSafeControl(TInt aIndex) const
+{
+ return static_cast<CAMMSBaseReverbControl*>(Control(aIndex));
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::ClassName
+// Returns class name that identifies this control group.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+const TDesC16& CAMMSReverbControlGroup::ClassName()
+{
+ return KAMMSReverbControlClassName;
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::NotifyPlayerAddedL
+// Called by when a new player is added
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::NotifyPlayerAddedL(
+ CMMAPlayer *aPlayer,
+ CMMAControl* aControl)
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::NotifyPlayerAddedL +");
+
+ CAMMSEffectControlGroup::NotifyPlayerAddedL(aPlayer, aControl);
+
+ CAMMSBaseReverbControl* control =
+ static_cast<CAMMSBaseReverbControl*>(aControl);
+
+ // if the preset is not valid, set reverb level and time to the added
+ // control
+ if (iPresetIndex < 0)
+ {
+ control->SetReverbLevelL(iReverbLevel);
+ control->SetReverbTimeL(iReverbTime);
+ }
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::NotifyPlayerAddedL -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::PresetChangedL
+// Called when the current preset changes
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::PresetChangedL()
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::PresetChangedL +");
+
+ TInt count = ControlCount();
+
+ LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::PresetChangedL, controls=%d",
+ count);
+
+ // Ask preset data from the first control if exists. If not, ask the
+ // data from the empty group utility.
+ if (count > 0)
+ {
+ CAMMSBaseReverbControl* control = TypeSafeControl(0);
+
+ iReverbTime = control->ReverbTime();
+ iReverbLevel = control->ReverbLevel();
+ iReverbMinLevel = control->MinReverbLevel();
+ iReverbMaxLevel = control->MaxReverbLevel();
+ }
+ else
+ {
+ LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::PresetChangedL, index=%d",
+ iPresetIndex);
+
+ __ASSERT_DEBUG(iPresetIndex >= 0, User::Invariant());
+
+ // Create empty group utilities for getting preset data.
+ PrepareEmptyGroupUtilitiesL();
+
+ // Set the preset to the empty group utility.
+ iEmptyEnvironmentalReverbUtility->GetPresetL(iPresetIndex);
+
+ CEnvironmentalReverb& audioEffect =
+ iEmptyEnvironmentalReverbUtility->EnvironmentalReverb();
+
+
+ iReverbTime = audioEffect.DecayTime();
+ iReverbLevel =
+ audioEffect.ReflectionsLevel() + audioEffect.RoomLevel();
+
+ TInt32 minLevel;
+ TInt32 maxLevel;
+ audioEffect.ReverbLevelRange(minLevel, maxLevel);
+
+ iReverbMinLevel = minLevel;
+ iReverbMaxLevel = maxLevel;
+
+ // Delete empty group utilities in order to save memory.
+ DeleteEmptyGroupUtilities();
+ }
+
+ LOG4( EJavaAMMS, EInfo, "CAMMSReverbControlGroup::PresetChangedL, values: %d, %d, %d %d",
+ iReverbTime, iReverbLevel, iReverbMinLevel, iReverbMaxLevel);
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::PresetChangedL -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::InitializeL
+// Finish initialization (after the 1st player is added)
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::InitializeL()
+{
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::PrepareEmptyGroupUtilitiesL
+// Creates utilities that can be used to obtain preset names and preset data.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::PrepareEmptyGroupUtilitiesL()
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::PrepareEmptyGroupUtilitiesL +");
+
+ if (!iEmptyEnvironmentalReverbUtility)
+ {
+ CAMMSEffectControlGroup::PrepareEmptyGroupUtilitiesL();
+
+ iEmptyEnvironmentalReverbUtility =
+ CEnvironmentalReverbUtility::NewL(*iEmptyPlayerUtility);
+ }
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::PrepareEmptyGroupUtilitiesL -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::DeleteEmptyGroupUtilities
+// Deletes utilities that are used to obtain preset names and preset data.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::DeleteEmptyGroupUtilities()
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::DeleteEmptyGroupUtilities +");
+
+ if (iEmptyPlayerUtility)
+ {
+ delete iEmptyEnvironmentalReverbUtility;
+ iEmptyEnvironmentalReverbUtility = NULL;
+
+ CAMMSEffectControlGroup::DeleteEmptyGroupUtilities();
+ }
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::DeleteEmptyGroupUtilities -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::GetPresetNamesL
+// Gets list of preset names available.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::GetPresetNamesL(
+ CDesCArray& aPresetNames)
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::GetPresetNamesL +");
+
+ // Create empty group utilities for getting preset names.
+ PrepareEmptyGroupUtilitiesL();
+
+ TArray< TEfEnvironmentalReverbUtilityPreset > presetNames =
+ iEmptyEnvironmentalReverbUtility->Presets();
+
+
+ TInt presetCount = presetNames.Count();
+
+ for (TInt i = 0; i < presetCount; i++)
+ {
+ aPresetNames.AppendL(presetNames[ i ].iPresetName);
+ }
+
+ // Delete empty group utilities in order to save memory.
+ DeleteEmptyGroupUtilities();
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::GetPresetNamesL -");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::CAMMSReverbControlGroup
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+CAMMSReverbControlGroup::CAMMSReverbControlGroup()
+ : CAMMSEffectControlGroup(KAMMSBaseReverbControl)
+{
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSReverbControlGroup::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+void CAMMSReverbControlGroup::ConstructL()
+{
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::ConstructL +");
+
+ CAMMSEffectControlGroup::BaseConstructL();
+
+ TRAPD(err, SetPresetL(KAMMSBaseDefaultReverbPreset));
+
+ // The following code prevents build warning.
+ if (err != KErrNone)
+ {
+ ELOG1( EJavaAMMS, "AMMS::CAMMSReverbControlGroup::ConstructL, err %d", err);
+ }
+
+ // Ignore the error so that using MMA and AMMS is possible.
+ // Error is visible so that "smallroom" preset is not activated.
+
+ LOG( EJavaAMMS, EInfo, "AMMS::CAMMSReverbControlGroup::ConstructL -");
+}
+
+// End of File