mpviewplugins/mpplaybackviewplugin/src/mpequalizerwrapper_p.cpp
changeset 20 82baf59ce8dd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpviewplugins/mpplaybackviewplugin/src/mpequalizerwrapper_p.cpp	Fri Apr 16 14:56:30 2010 +0300
@@ -0,0 +1,346 @@
+/*
+* Copyright (c) 2009 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 equalizer utility - private implementation.
+*
+*/
+
+// System includes
+#include <qDebug>
+#include <QStringList>
+#include <audioequalizerutility.h>
+#include <EqualizerConstants.h>
+#include <mpxplaybackutility.h>
+
+// User includes
+#include "mpequalizerwrapper.h"
+#include "mpequalizerwrapper_p.h"
+#include "mpsettingsmanager.h"
+#include "mpcommondefs.h"
+#include "mptrace.h"
+
+// CONSTANTS
+_LIT( KMPXNullSoundPath, "\\nullsound.mp3" );
+const TInt KEqualizerID = 0x101FFC76;
+
+/*!
+    \class MpEqualizerWrapperPrivate
+    \ingroup musicplayer
+    \brief Wrapper for equalizer utility - private implementation.
+    
+    This is a private implementation of the audio eqalizer wrapper 
+    utilties interface.
+
+*/
+
+/*!
+    Constructs a new MpEqualizerWrapper with \a parent and initializes its
+    private imaplementation.
+*/
+MpEqualizerWrapperPrivate::MpEqualizerWrapperPrivate(
+    MpEqualizerWrapper *wrapper ): q_ptr( wrapper ),
+    iEqualizerUtility (NULL), iCurrentPresetIndex(KEqualizerPresetNone)
+{
+    TX_LOG
+}
+
+/*!
+    Destructs the class.    
+ */
+MpEqualizerWrapperPrivate::~MpEqualizerWrapperPrivate()
+{
+    TX_ENTRY
+
+    delete iEqualizerUtility;
+    
+    if ( iMdaPlayUtility ) 
+    {
+        iMdaPlayUtility->Close();
+    }
+    delete iMdaPlayUtility;
+
+    if ( iMpxPlaybackUtility )
+    {
+        iMpxPlaybackUtility->Close();
+    }
+
+    TX_EXIT
+}
+
+/*!
+    Calls the DoInit to initialize Symbian based components.
+    
+    \sa DoInitL()
+ */
+void MpEqualizerWrapperPrivate::init()
+{
+    TX_ENTRY
+
+    TRAPD(err, DoInitL());
+    if ( err != KErrNone )
+    {
+        TX_LOG_ARGS("MpEqualizerWrapperPrivate::init err = " << err);
+    }
+    
+    TX_EXIT
+}
+
+/*!
+    Apply the preset by giving preset index. The index is subtracted by 1 because
+    index 0 represent "Off" at UI level.
+
+ */
+void MpEqualizerWrapperPrivate::applyPreset( int preset )
+{
+    TX_ENTRY_ARGS( "preset=" << preset );
+
+    if ( iEqualizerUtility )
+    {
+        TInt presetKey(KErrNotFound);
+        TRAPD(err, presetKey = GetEngineIndexL( preset - 1 ));
+        if ( err != KErrNone )
+        {
+            TX_LOG_ARGS("GetEngineIndexL Error  = " << err);
+            return;
+        }
+        TX_LOG_ARGS( "Preset key in engine =" << presetKey );
+        HandlePresetActivation( presetKey );
+        iCurrentPresetIndex = preset;
+    } 
+    else
+    {
+        TX_LOG_ARGS( "Equalizer not ready." );
+    }
+
+    TX_EXIT
+}
+
+/*!
+    Return current preset index (UI)
+
+ */
+int MpEqualizerWrapperPrivate::activePreset()
+{
+    TX_LOG_ARGS("iCurrentPresetIndex = " << iCurrentPresetIndex );
+
+    return iCurrentPresetIndex;
+}
+
+/*!
+    Disabling equalizer by setting the preset to -1 and apply it to 
+    disable current preset.
+
+ */
+void MpEqualizerWrapperPrivate::disableEqualizer()
+{
+    TX_ENTRY
+
+    TInt nullPreset( KErrNotFound );
+    iCurrentPresetIndex = KEqualizerPresetNone;
+    HandlePresetActivation( nullPreset );
+
+    TX_EXIT
+}
+
+/*!
+    Returning the list of availale preset names.  
+
+    \sa CAudioEqualizerUtility
+ */
+QStringList MpEqualizerWrapperPrivate::presetNames()
+{
+    TX_ENTRY
+
+    QStringList presetList;
+
+    if ( iEqualizerUtility == NULL )
+    {
+        TX_LOG_ARGS( "Equalizer not ready." );
+        return presetList;
+    }
+
+    TArray<TEfAudioEqualizerUtilityPreset> presetArray = iEqualizerUtility->Presets();
+    for (TInt i=0; i<presetArray.Count(); i++)
+    {
+        TPresetName selectedItem = presetArray[i].iPresetName;
+        presetList << QString::fromUtf16( selectedItem.Ptr(), selectedItem.Length() );
+    }
+
+    TX_EXIT
+
+    return presetList;
+}
+
+/*!
+ \internal
+ */
+void MpEqualizerWrapperPrivate::DoInitL()
+{
+    TX_ENTRY
+
+    if (!iMpxPlaybackUtility)
+    {
+        iMpxPlaybackUtility = MMPXPlaybackUtility::UtilityL( TUid::Uid( MpCommon::KMusicPlayerUid ) );
+    }
+
+    if (iMdaPlayUtility)
+    {
+        iMdaPlayUtility->Close();
+        delete iMdaPlayUtility;
+        iMdaPlayUtility = NULL;
+    }
+    
+    iMdaPlayUtility = ( CMdaAudioPlayerUtility* )User::LeaveIfNull(
+        CMdaAudioPlayerUtility::NewL(
+            *this,
+            EMdaPriorityMin,
+            EMdaPriorityPreferenceNone ));
+
+    TX_LOG_ARGS("Loading null sound");
+    TFileName nullSoundPath( KMPXNullSoundPath );
+    User::LeaveIfError( MPXUser::CompleteWithDllPath( nullSoundPath ) );
+    TX_LOG_ARGS("Loading null sound done!");
+    iMdaPlayUtility->OpenFileL( nullSoundPath );
+    
+    TX_EXIT
+}
+
+
+/*!
+ \internal
+ */
+void MpEqualizerWrapperPrivate::HandlePresetActivation( TInt aActivatedPreset )
+{
+    TX_ENTRY_ARGS( "aActivatedPreset=" << aActivatedPreset );
+
+    // Store in CenRep file
+    MpSettingsManager::setPreset( aActivatedPreset );
+    
+    // Notify playback framework of the change.
+    TRAPD(error,
+    {
+        iMpxPlaybackUtility->CommandL( EPbApplyEffect, KEqualizerID );
+    });
+    
+    if (error != KErrNone)
+    {
+        TX_ENTRY_ARGS( "Equalizer error:" << error );
+    }
+    
+    TX_EXIT
+}
+
+
+/*!
+ \internal
+ */
+void MpEqualizerWrapperPrivate::GetPresetId( TInt& aPresetId )
+{
+    TX_ENTRY
+
+    // Get preset id from cenrep
+    TInt presetId( MpSettingsManager::preset() );
+
+    TBool found( EFalse );
+    if ( iEqualizerUtility && presetId != KEqualizerPresetNone )
+    {
+        TArray<TEfAudioEqualizerUtilityPreset> presetArray = iEqualizerUtility->Presets();
+        for ( TInt i = 0; i < presetArray.Count() && found == EFalse; i++ ) {
+            TX_LOG_ARGS("presetArray[" << i << "].iPresetNameKey (" 
+                << presetArray[i].iPresetNameKey << ") vs presetId (" <<presetId << ")");
+            if ( presetArray[i].iPresetNameKey == static_cast<TUint32>( presetId ) ) {
+                found = ETrue;
+                iCurrentPresetIndex = aPresetId = i + 1;
+                break;
+            }
+        }
+    }
+
+    if ( found == EFalse )
+    {
+        iCurrentPresetIndex = aPresetId = KEqualizerPresetNone;
+    }
+
+    TX_EXIT
+}
+
+
+/*!
+ \internal
+ */
+TInt MpEqualizerWrapperPrivate::GetEngineIndexL( const TInt preset ) const
+{
+    TX_ENTRY_ARGS( "preset=" << preset );
+
+    TInt engineIndex = KErrNotFound;
+
+    TPresetName presetName = iEqualizerUtility->GetPresetL( preset );
+
+    TArray<TEfAudioEqualizerUtilityPreset> presets = iEqualizerUtility->Presets();
+    for (TInt count = 0; count < presets.Count(); count++) 
+    {
+        TPresetName selectedItem = presets[count].iPresetName;
+        TX_LOG_ARGS(" Comparing..." << presets[count].iPresetNameKey );
+        if ( selectedItem == presetName ) {
+            engineIndex = presets[count].iPresetNameKey;
+            TX_LOG_ARGS(" Comparing mached engineIndex = " << engineIndex );
+            break;
+            }
+    }
+
+    TX_EXIT
+
+    return engineIndex;
+}
+
+/*!
+ \internal
+ */
+void MpEqualizerWrapperPrivate::MapcInitComplete(
+    TInt aError,
+    const TTimeIntervalMicroSeconds& /* aDuration */ )
+{
+    TX_ENTRY_ARGS( "aError=" << aError );
+
+    if ( !aError ) 
+    {
+        TRAPD(err, iEqualizerUtility = CAudioEqualizerUtility::NewL( *iMdaPlayUtility ) );
+        if ( err == KErrNone ) {
+            TInt preset(KEqualizerPresetNone);
+            GetPresetId( preset );
+            emit q_ptr->equalizerReady();
+        }
+        else
+        {
+            TX_ENTRY_ARGS( "CAudioEquqlizerUtility error=" << err );
+        }
+    }
+    else
+    {
+        TX_ENTRY_ARGS( "MapcInitComplete error=" << aError );
+    }
+
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpEqualizerWrapperPrivate::MapcPlayComplete(
+    TInt /* aError */ )
+{
+    TX_LOG
+    // Do nothing
+}
+
+//End of File