javauis/amms_qt/mmacontrol/src.mmf/cammsaudioplayerbuilder.cpp
changeset 23 98ccebc37403
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/amms_qt/mmacontrol/src.mmf/cammsaudioplayerbuilder.cpp	Fri May 14 15:47:24 2010 +0300
@@ -0,0 +1,165 @@
+/*
+* 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:  AMMS player builder for adding AMMS audio player controls.
+*
+*/
+
+
+// INCLUDE FILES
+#include <CMMAMIDIPlayer.h>
+#include <CMMAAudioPlayer.h>
+#include <logger.h>
+
+#include "CAMMSAudioPlayerBuilder.h"
+#include "CAMMSCustomCommandUtility.h"
+
+#include "CAMMSEqualizerControl.h"
+#include "CAMMSReverbControl.h"
+#include "CAMMSReverbSourceControl.h"
+#include "CAMMSAudioVirtualizerControl.h"
+#include "CAMMSPanControl.h"
+#include "CAMMSDistanceAttenuationControl.h"
+#include "CAMMSAudioDopplerControl.h"
+#include "CAMMSSpectatorDopplerControl.h"
+#include "CAMMSAudioLocationControl.h"
+#include "CAMMSSpectatorLocationControl.h"
+#include "CAMMSSpectatorOrientationControl.h"
+#include "CAMMSVolumeControl.h"
+#include "AMMSConstants.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAMMSAudioPlayerBuilder::NewLC
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+CAMMSAudioPlayerBuilder* CAMMSAudioPlayerBuilder::NewLC()
+{
+    CAMMSAudioPlayerBuilder* self = new(ELeave) CAMMSAudioPlayerBuilder();
+
+    CleanupStack::PushL(self);
+
+    return self;
+}
+
+// Destructor
+CAMMSAudioPlayerBuilder::~CAMMSAudioPlayerBuilder()
+{
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSAudioPlayerBuilder::PreparePlayerL
+// Adds the AMMS audio controls to the player.
+// -----------------------------------------------------------------------------
+//
+void CAMMSAudioPlayerBuilder::PreparePlayerL(CMMAPlayer* aPlayer)
+{
+    const TDesC& playerType = aPlayer->Type();
+
+    LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSAudioPlayerBuilder::PreparePlayerL type %S",
+              playerType);
+
+    if ((playerType != KMMAAudioPlayer) &&
+            (playerType != KMMAMIDIPlayer))
+    {
+        LOG( EJavaAMMS, EInfo, "AMMS::CAMMSAudioPlayerBuilder::PreparePlayerL, not supported");
+        return;
+    }
+
+
+    // Default type for a Control is base Control (=not a derived Control).
+    // DopplerControl and LocationControl have different Effect API
+    // implementations and also different corresponding AMMS Controls for
+    // SoundSource3D and for Spectator, so these Control types need to be
+    // set accordingly.
+    //
+    // CMMAPlayer::AddControlL( CMMAControl* aControl ) adds a new control.
+    // Ownership of the control is transferred to CMMAPlayer.
+    //
+
+#ifndef __WINS__
+    // PanControl is not supported in WINSCW builds.
+    // This is because of limited pan support in DirectX.
+    CAMMSPanControl* panControl = CAMMSPanControl::NewLC(aPlayer);
+    aPlayer->AddControlL(panControl);
+    CleanupStack::Pop(panControl);
+#endif // __WINS__
+
+    CAMMSEqualizerControl* equalizerControl =
+        CAMMSEqualizerControl::NewLC(aPlayer);
+    aPlayer->AddControlL(equalizerControl);
+    CleanupStack::Pop(equalizerControl);
+
+    CAMMSReverbControl* reverbControl =
+        CAMMSReverbControl::NewLC(aPlayer);
+    aPlayer->AddControlL(reverbControl);
+    CleanupStack::Pop(reverbControl);
+
+    CAMMSAudioVirtualizerControl* audioVirtualizerControl =
+        CAMMSAudioVirtualizerControl::NewLC(aPlayer);
+    aPlayer->AddControlL(audioVirtualizerControl);
+    CleanupStack::Pop(audioVirtualizerControl);
+
+    CAMMSReverbSourceControl* reverbSourceControl =
+        CAMMSReverbSourceControl::NewLC(aPlayer, reverbControl);
+    aPlayer->AddControlL(reverbSourceControl);
+    CleanupStack::Pop(reverbSourceControl);
+
+    CAMMSDistanceAttenuationControl* distanceAttenuationControl =
+        CAMMSDistanceAttenuationControl::NewLC(aPlayer);
+    aPlayer->AddControlL(distanceAttenuationControl);
+    CleanupStack::Pop(distanceAttenuationControl);
+
+    CAMMSAudioDopplerControl* audioDopplerControl =
+        CAMMSAudioDopplerControl::NewLC(aPlayer);
+    audioDopplerControl->iControlType = EAMMSSoundSource3DControl;
+    aPlayer->AddControlL(audioDopplerControl);
+    CleanupStack::Pop(audioDopplerControl);
+
+    CAMMSSpectatorDopplerControl* spectatorDopplerControl =
+        CAMMSSpectatorDopplerControl::NewLC(aPlayer);
+    spectatorDopplerControl->iControlType = EAMMSSpectatorControl;
+    aPlayer->AddControlL(spectatorDopplerControl);
+    CleanupStack::Pop(spectatorDopplerControl);
+
+    CAMMSAudioLocationControl* audioLocationControl =
+        CAMMSAudioLocationControl::NewLC(aPlayer);
+    audioLocationControl->iControlType = EAMMSSoundSource3DControl;
+    aPlayer->AddControlL(audioLocationControl);
+    CleanupStack::Pop(audioLocationControl);
+
+    CAMMSSpectatorLocationControl* spectatorLocationControl =
+        CAMMSSpectatorLocationControl::NewLC(aPlayer);
+    spectatorLocationControl->iControlType = EAMMSSpectatorControl;
+    aPlayer->AddControlL(spectatorLocationControl);
+    CleanupStack::Pop(spectatorLocationControl);
+
+    CAMMSSpectatorOrientationControl* spectatorOrientationControl =
+        CAMMSSpectatorOrientationControl::NewLC(aPlayer);
+    aPlayer->AddControlL(spectatorOrientationControl);
+    CleanupStack::Pop(spectatorOrientationControl);
+
+    LOG( EJavaAMMS, EInfo, "AMMS::CAMMSAudioPlayerBuilder::PreparePlayerL add OK");
+}
+
+// -----------------------------------------------------------------------------
+// CAMMSAudioPlayerBuilder::CAMMSAudioPlayerBuilder
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+CAMMSAudioPlayerBuilder::CAMMSAudioPlayerBuilder()
+{
+}
+
+//  End of File