mpengine/src/mpengine.cpp
branchGCC_SURGE
changeset 44 eff9df3d9c98
parent 42 79c49924ae23
child 43 0f32e550d9d8
child 48 af3740e3753f
--- a/mpengine/src/mpengine.cpp	Fri Jun 11 16:24:02 2010 +0100
+++ b/mpengine/src/mpengine.cpp	Thu Jul 22 16:32:33 2010 +0100
@@ -15,21 +15,20 @@
 *
 */
 
-#include <QTranslator>
-#include <QLocale>
-#include <hbmessagebox.h>
-#include <hbprogressdialog.h>
-#include <hbaction.h>
-#include <hbinstance.h>
 #include <xqsharablefile.h>
+#include <EqualizerConstants.h>
 
 #include "mpengine.h"
 #include "mpmpxharvesterframeworkwrapper.h"
 #include "mpmpxcollectionframeworkwrapper.h"
 #include "mpmpxplaybackframeworkwrapper.h"
-#include "mpsongscanner.h"
+#include "mpmpxdetailsframeworkwrapper.h"
+#include "mpaudioeffectsframeworkwrapper.h"
+#include "mpequalizerframeworkwrapper.h"
 #include "mpmediakeyhandler.h"
 #include "mptrace.h"
+#include "mpsettingsmanager.h"
+#include "mpsongscanner.h"
 
 /*!
     \class MpEngine
@@ -46,87 +45,61 @@
 */
 
 /*!
-    \fn void scanStarted()
-
-    This signal is emitted when scan operation is started.
-
- */
-
-/*!
-    \fn void scanEnded()
+    \fn void libraryAboutToUpdate()
 
-    This signal is emitted when scan operation ends.
-
- */
-
-/*!
-    \fn void scanCountChanged( int count )
-
-    This signal is emitted when scan count is updated.
+    This signal is emitted when a scan operation has been requested or
+    when MTP synchronization starts.
 
  */
 
 /*!
     \fn void libraryUpdated()
 
-    This signal is emitted when MpSongScannerHelper ends scanning,
-    or USB-MTP Synchronization finishes.
+    This signal is emitted when library has changed.
+    
+    \sa handleScanEnded()
+    \sa handleDiskEvent()
+    \sa handleUsbMtpEndEvent()
 
  */
 
 /*!
-    \fn void formatStarted()
-
-    This signal is emitted when EMcMsgFormatStart is received from MPXCollectionUtility.
-
- */
-
-/*!
-    \fn void formatEnded()
+    \fn void usbBlocked( bool blocked )
 
-    This signal is emitted when EMcMsgFormatEnd is received from MPXCollectionUtility.
-
- */
-
-/*!
-    \fn void diskRemoved()
-
-    This signal is emitted when EMcMsgDiskRemoved is received from MPXCollectionUtility.
+    This signal is emitted to update the usb blocking state
+    due a previous usb event received.
+    
+    \sa handleUsbEvent()
 
  */
 
 /*!
-    \fn void diskInserted()
-
-    This signal is emitted when EMcMsgDiskInserted is received from MPXCollectionUtility.
+    \fn void unableToCotinueDueUSB()
 
- */
-
-/*!
-    \fn void usbMassStorageStarted()
-
-    This signal is emitted when EMcMsgUSBMassStorageStart is received from MPXCollectionUtility.
+    This signal is emitted if usb blocking verification returns true.
+    
+    \sa verifyUsbBlocking()
 
  */
 
 /*!
-    \fn void usbMassStorageEnded()
+    \fn void usbSynchronizationStarted()
 
-    This signal is emitted when EMcMsgUSBMassStorageEnd is received from MPXCollectionUtility.
+    This signal is emitted when usb is connected in MassStorage mode or MTP mode and synchronizing.
 
  */
 
 /*!
-    \fn void usbMtpStarted()
+    \fn void usbSynchronizationFinished()
 
-    This signal is emitted when EMcMsgUSBMtpStart is received from MPXCollectionUtility.
+    This signal is emitted when usb in synchronizing state is disconnected.
 
  */
 
 /*!
-    \fn void usbMtpEnded()
+    \fn void libraryRefreshNeeded()
 
-    This signal is emitted when EMcMsgUSBMtpEnd is received from MPXCollectionUtility.
+    This signal is emitted when usb in MassStorage mode is disconnected.
 
  */
 
@@ -154,6 +127,24 @@
  */
 
 /*!
+    \fn void aboutToAddSongs( int count )
+
+    Signal emitted up on a notification from MPX Collection wrapper, 
+    when play list is prepared and about to be added.
+    \a count Indicates number of songs to be added.
+
+ */
+
+/*!
+    \fn void deleteStarted(TCollectionContext context, int Count)
+
+    This signal is emitted when song delete operation has started.
+    \a context The context where delete operation is taking place.
+    \a Count Number of items to delete.
+
+ */
+
+/*!
     \fn void songsDeleted( bool success )
 
     This signal is emitted when song delete operation is completed, it 
@@ -177,19 +168,36 @@
  */
 
 /*!
+    \fn void restorePathFailed()
+
+    This signal is emitted when an the previous path cannot be restored 
+    (i.e. no music in collection).
+
+ */
+
+/*!
+    \fn void containerContentsChanged()
+
+    This signal is emitted when items are removed or inserted on the current 
+    container.
+
+ */
+
+/*!
  Constructs music player engine.
  */
 MpEngine::MpEngine()
     : mMpxHarvesterWrapper(0),
       mSongScanner(0),
       mMediaKeyHandler(0),
-      mUsbOutstandingNote(0),
       mMpxCollectionWrapper(0),
       mMpxPlaybackWrapper(0),
-      mMpTranslator(0),
+      mMpxDetailsWrapper(0),
+      mAudioEffectsWrapper(0),
+      mEqualizerWrapper(0),
+      mCurrentPresetIndex(KEqualizerPresetNone),
       mUsbBlockingState(USB_NotConnected),
-      mPreviousUsbState(USB_NotConnected),
-      mViewMode(MpCommon::DefaultView)
+      mPreviousUsbState(USB_NotConnected)
 {
     TX_LOG
 }
@@ -200,42 +208,28 @@
 MpEngine::~MpEngine()
 {
     TX_ENTRY
+    delete mMediaKeyHandler;
+    delete mMpxPlaybackWrapper;
+    delete mMpxDetailsWrapper;
+    delete mMpxHarvesterWrapper;
+    delete mMpxCollectionWrapper;
+    delete mAudioEffectsWrapper;
+    delete mEqualizerWrapper;
+    delete mSongScanner;
     TX_EXIT
 }
 
 /*!
- Returns the singleton instance of music player engine.
- */
-MpEngine * MpEngine::instance()
-{
-    static MpEngine instance;
-    return &instance;
-}
-
-/*!
  Initialize engine
  */
-void MpEngine::initialize( MpCommon::MpViewMode viewMode, TUid hostUid )
+void MpEngine::initialize( TUid hostUid, EngineMode mode )
 {
     TX_ENTRY
-    mViewMode = viewMode;
     mHostUid = hostUid;
-    
-    //Load musicplayer translator
-    QString lang = QLocale::system().name();
-    QString path = QString( "z:/resource/qt/translations/" );
-    bool translatorLoaded = false;
 
-    mMpTranslator = new QTranslator( this );
-    translatorLoaded = mMpTranslator->load( path + "musicplayer_" + lang );
-    TX_LOG_ARGS( "Loading translator ok=" << translatorLoaded );
-    if ( translatorLoaded ) {
-        qApp->installTranslator( mMpTranslator );
-    }
-    
-    if( mViewMode == MpCommon::DefaultView || mViewMode == MpCommon::FetchView ){
+    if( mode == StandAlone || mode == Fetch ){
         // Harvesting Wrapper
-        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( mViewMode, mHostUid );
+        mMpxHarvesterWrapper = new MpMpxHarvesterFrameworkWrapper( mHostUid );
         connect( mMpxHarvesterWrapper, SIGNAL( scanStarted() ), 
                  this, SLOT( handleScanStarted() ), Qt::QueuedConnection );
         connect( mMpxHarvesterWrapper, SIGNAL( scanEnded(int, int) ), 
@@ -246,53 +240,65 @@
         qRegisterMetaType<MpxUsbEvents>("MpxUsbEvents");
         connect( mMpxHarvesterWrapper, SIGNAL( usbEvent(MpxUsbEvents) ), 
                  this, SLOT( handleUsbEvent(MpxUsbEvents) ), Qt::QueuedConnection );
-        mSongScanner = new MpSongScanner( mMpxHarvesterWrapper );
         mMediaKeyHandler = new MpMediaKeyHandler();
+    }
+
+    if ( mode == StandAlone || mode == Fetch || mode == MediaBrowsing) {
         
         // Collection Wrapper
-        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mViewMode, mHostUid );
+        mMpxCollectionWrapper = new MpMpxCollectionFrameworkWrapper( mHostUid );
+        
+        //disabling these since fetch mode plays only one song at a time.
+        mMpxCollectionWrapper->setRepeatFeatureEnabled( mode != Fetch );
+        mMpxCollectionWrapper->setShuffleFeatureEnabled( mode != Fetch );
+        
         connect( mMpxCollectionWrapper, SIGNAL( collectionPlaylistOpened() ),
                 this, SIGNAL( collectionPlaylistOpened() ),
                 Qt::QueuedConnection );
+        connect( mMpxCollectionWrapper, SIGNAL( aboutToAddSongs( int ) ),
+                this, SIGNAL( aboutToAddSongs( int ) ) );
         connect( mMpxCollectionWrapper, SIGNAL( playlistSaved( bool ) ),
                 this, SIGNAL( playlistSaved( bool ) ),
                 Qt::QueuedConnection );
-        connect( mMpxCollectionWrapper, SIGNAL( songsDeleted( bool ) ),
-                this, SIGNAL( songsDeleted( bool ) ),
-                Qt::QueuedConnection );
         connect( mMpxCollectionWrapper, SIGNAL( playlistsRenamed( bool ) ),
                 this, SIGNAL( playlistsRenamed( bool ) ),
                 Qt::QueuedConnection );
         connect( mMpxCollectionWrapper, SIGNAL( isolatedCollectionOpened( MpMpxCollectionData* ) ),
                 this, SIGNAL( isolatedCollectionOpened( MpMpxCollectionData* ) ),
                 Qt::QueuedConnection );
+        connect( mMpxCollectionWrapper, SIGNAL( containerContentsChanged() ),
+                this, SIGNAL( containerContentsChanged() ),
+                Qt::QueuedConnection );
+        connect( mMpxCollectionWrapper, SIGNAL( deleteStarted( TCollectionContext, int ) ),
+                this, SLOT( handleDeleteStarted( TCollectionContext, int ) ) );
+        connect( mMpxCollectionWrapper, SIGNAL( songsDeleted( bool ) ),
+                this, SLOT( handleDeleteEnded( bool ) ),
+                Qt::QueuedConnection );
+        connect( mMpxCollectionWrapper, SIGNAL( restorePathFailed() ),
+                this, SIGNAL( restorePathFailed() ),
+                Qt::QueuedConnection );
     }
 
-    // Playback Wrapper 
-    mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mViewMode, mHostUid );
-
-    TX_EXIT
-}
+    if( mode == StandAlone ){
+        // Equalizer wrapper , this needs to be created before playback wrapper.
+        mEqualizerWrapper = new MpEqualizerFrameworkWrapper();
+        connect( mEqualizerWrapper, SIGNAL( equalizerReady() ), 
+                 this, SLOT( handleEqualizerReady() ), Qt::QueuedConnection );
+    }
+    
+    if ( mode == StandAlone || mode == Fetch || mode == Embedded ) {
+        // Playback Wrapper 
+        mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid );
+        
+        // Details Wrapper
+        mMpxDetailsWrapper = new MpMpxDetailsFrameworkWrapper( mHostUid );
+    }
 
-/*!
-  Deinitialize wrappers
- */
-void MpEngine::close( )
-{
-    delete mMpTranslator;
-    mMpTranslator = 0;
-    delete mSongScanner;
-    mSongScanner = 0;
-    delete mMediaKeyHandler;
-    mMediaKeyHandler = 0;   
-    delete mUsbOutstandingNote;
-    mUsbOutstandingNote = 0;
-    delete mMpxPlaybackWrapper;
-    mMpxPlaybackWrapper = 0;
-    delete mMpxHarvesterWrapper;
-    mMpxHarvesterWrapper = 0;
-    delete mMpxCollectionWrapper;
-    mMpxCollectionWrapper = 0;
+    if( mode == StandAlone ){
+        // AudioEffects wrapper
+        mAudioEffectsWrapper = new MpAudioEffectsFrameworkWrapper();
+    }
+    TX_EXIT
 }
 
 /*!
@@ -306,18 +312,14 @@
  Used to verify if an action can be executed depending on USB blocking state.
  If not, a notification note might be displayed.
  */
-bool MpEngine::verifyUsbBlocking( bool showMessage )
+bool MpEngine::verifyUsbBlocking( bool notify )
 {
     TX_ENTRY
     bool result( false );
     if ( mUsbBlockingState == USB_Connected ) {
         result = true;
-        if ( showMessage ) {
-            HbMessageBox *dialog = new HbMessageBox( HbMessageBox::MessageTypeInformation );
-            dialog->setText( hbTrId( "txt_mus_info_usb_conn_in_progress" ) );
-            dialog->setModal( true );
-            setOutstandingPopup( dialog );
-            mUsbOutstandingNote->show();;
+        if ( notify ) {
+            emit unableToCotinueDueUSB();
         }
     }
     TX_EXIT
@@ -336,15 +338,26 @@
 }
 
 /*!
+ \
+ Returs the current songScanner instance
+ */
+MpSongScanner *MpEngine::songScanner()
+{
+    return mSongScanner;
+}
+/*!
  Slot to be called to start Refresh library process.
  If scanning is already ongoing, this request is ignored.
  */
-void MpEngine::refreshLibrary()
+void MpEngine::refreshLibrary( bool automaticRequest )
 {
     TX_ENTRY
     if ( !verifyUsbBlocking( true ) ) {
+        if ( !mSongScanner ) {
+            mSongScanner = new MpSongScanner( mMpxHarvesterWrapper );
+        }
         emit libraryAboutToUpdate();
-        mSongScanner->scan();
+        mSongScanner->scan( automaticRequest );
     }
     TX_EXIT
 }
@@ -390,7 +403,7 @@
             break;
         case DiskInserted:
             if ( mUsbBlockingState == USB_NotConnected ) {
-                refreshLibrary();
+                refreshLibrary( true );
             }
             else if ( mUsbBlockingState == USB_Connected ) {
                 emit libraryUpdated();
@@ -430,16 +443,6 @@
 }
 
 /*!
- Slot to be called when mUsbOutstandingNote is about to close.
- */
-void MpEngine::handleOutstandingNoteClosing()
-{
-    TX_ENTRY
-    mUsbOutstandingNote = 0;
-    TX_EXIT
-}
-
-/*!
  To be called when EMcMsgUSBMassStorageStart event is received.
  */
 void MpEngine::handleUsbMassStorageStartEvent()
@@ -449,9 +452,8 @@
 
     changeUsbBlockingState( USB_Synchronizing );
     emit usbBlocked(true);
-    
-    launchBlockingNote();
-    
+    emit usbSynchronizationStarted();
+
     TX_EXIT
 }
 
@@ -461,24 +463,13 @@
 void MpEngine::handleUsbMassStorageEndEvent()
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(true);    
+    mMediaKeyHandler->setEnabled(true);
 
     changeUsbBlockingState( USB_NotConnected );
     emit usbBlocked(false);
+    emit usbSynchronizationFinished();
+    emit libraryRefreshNeeded();
 
-    HbAction *action;
-    HbMessageBox *promptRefresh = new HbMessageBox( HbMessageBox::MessageTypeQuestion );
-    promptRefresh->setText( hbTrId( "txt_mus_info_music_may_need_to_be_refreshed" ) );
-    promptRefresh->setTimeout( HbPopup::NoTimeout );
-    promptRefresh->setModal( true );
-    promptRefresh->clearActions();
-    action = new HbAction( hbTrId( "txt_common_button_yes" ) );
-    connect( action, SIGNAL( triggered() ), this, SLOT( refreshLibrary() ) );
-    promptRefresh->addAction( action );
-    action = new HbAction( hbTrId( "txt_common_button_no" ) );
-    promptRefresh->addAction( action );
-    setOutstandingPopup( promptRefresh );
-    mUsbOutstandingNote->show();
     TX_EXIT
 }
 
@@ -496,7 +487,7 @@
     //Cancel any ongoing operation.
     emit libraryAboutToUpdate();
     
-    launchBlockingNote();
+    emit usbSynchronizationStarted();
     
     TX_EXIT
 }
@@ -507,15 +498,13 @@
 void MpEngine::handleUsbMtpEndEvent()
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(true);    
+    mMediaKeyHandler->setEnabled(true);
 
     changeUsbBlockingState( USB_NotConnected );
     emit usbBlocked(false);
-    
-    if ( mUsbOutstandingNote ) {
-        mUsbOutstandingNote->close();
-    }
+
     if ( mPreviousUsbState == USB_Synchronizing ) {
+        emit usbSynchronizationFinished();
         emit libraryUpdated();
     }
     TX_EXIT
@@ -545,48 +534,6 @@
 }
 
 /*!
- Internal
- Used to launch the usb blocking note
- */
-void MpEngine::launchBlockingNote()
-{
-    TX_ENTRY
-
-    HbProgressDialog *usbBlockingNote = new HbProgressDialog( HbProgressDialog::WaitDialog );
-    usbBlockingNote->setModal( true );
-    if ( usbBlockingNote->actions().count() ) {
-        //Hide cancel action.
-        usbBlockingNote->actions().at( 0 )->setVisible( false );
-    }
-    usbBlockingNote->setDismissPolicy( HbPopup::NoDismiss );
-    usbBlockingNote->setText( hbTrId( "txt_mus_info_usb_conn_in_progress" ) );
-    setOutstandingPopup( usbBlockingNote );
-    mUsbOutstandingNote->show();
-
-    TX_EXIT
-}
-
-/*!
- \internal
- sets \a popup as the current outstanding popup and cancels any other active popup.
- */
-void MpEngine::setOutstandingPopup( HbPopup *popup )
-{
-    TX_ENTRY
-    //Close previous popup (Normally blocking usb note)
-    if ( mUsbOutstandingNote ) {
-        disconnect( mUsbOutstandingNote, SIGNAL( aboutToClose() ), this, SLOT( handleOutstandingNoteClosing() ) );
-        mUsbOutstandingNote->close();
-    }
-
-    //Set new outstanding popup
-    popup->setAttribute( Qt::WA_DeleteOnClose );
-    connect( popup, SIGNAL( aboutToClose() ), this, SLOT( handleOutstandingNoteClosing() ) );
-    mUsbOutstandingNote = popup;
-    TX_EXIT
-}
-
-/*!
 -------------------------------------------------------------------------------
     Collection related
 -------------------------------------------------------------------------------
@@ -722,6 +669,22 @@
 }
 
 /*!
+ Finds all songs beloging to the album specified by the \a index.
+ */
+void MpEngine::findAlbumSongs( int index )
+{
+    mMpxCollectionWrapper->findAlbumSongs(index);
+}
+
+/*!
+ Plays album with \a albumIndex starting with the songs with \a songIndex.
+ */
+void MpEngine::playAlbumSongs( int albumIndex, int songIndex, MpMpxCollectionData* collectionData  )
+{
+    mMpxCollectionWrapper->playAlbumSongs(albumIndex, songIndex, collectionData);
+}
+
+/*!
  Returns pointer to MpMpxCollectionData, which is the collection data.
  */
 MpMpxCollectionData *MpEngine::collectionData()
@@ -750,12 +713,53 @@
 }
 
 /*!
+ Slot to be called when song deleting starts.
+ */
+void MpEngine::handleDeleteStarted( TCollectionContext context, int count )
+{
+    TX_ENTRY
+    mMediaKeyHandler->setEnabled( false );
+    emit deleteStarted( context, count );
+    TX_EXIT
+}
+
+/*!
+ Slot to be called when song deleting ends.
+ */
+void MpEngine::handleDeleteEnded( bool success )
+{
+    TX_ENTRY
+    mMediaKeyHandler->setEnabled(true);
+    emit songsDeleted( success );
+    TX_EXIT
+}
+
+/*!
+ Slot to be called when song deleting ends.
+ */
+void MpEngine::cancelCollectionRequest()
+{
+    TX_ENTRY
+    mMpxCollectionWrapper->cancelRequest();
+    TX_EXIT
+}
+
+/*!
  Returns pointer to MpPlaybackData, which is the playback data.
  */
 MpPlaybackData *MpEngine::playbackData()
 {
     return mMpxPlaybackWrapper->playbackData();
 }
+
+/*!
+ Requests playback of all songs with shuffle enabled
+ */
+void MpEngine::shuffleAll()
+{
+    mMpxCollectionWrapper->openShuffleAllSongsPath();
+}
+
 /*!
  Slot to be called to request embedded playback of item with Uri aFilename
  */
@@ -790,7 +794,7 @@
 }
 
 /*!
- Slot to handle a skeep forward.
+ Slot to handle a skip forward.
  */
 void MpEngine::skipForward()
 {
@@ -798,7 +802,23 @@
 }
 
 /*!
- Slot to handle a skeep backwards.
+ Slot to handle  seek forward.
+ */
+void MpEngine::startSeekForward()
+{
+    mMpxPlaybackWrapper->startSeekForward();
+}
+
+/*!
+ Slot to handle stop seeking.
+ */
+void MpEngine::stopSeeking()
+{
+    mMpxPlaybackWrapper->stopSeeking();
+}
+
+/*!
+ Slot to handle a skip backwards.
  */
 void MpEngine::skipBackward()
 {
@@ -806,6 +826,13 @@
 }
 
 /*!
+ Slot to handle seek backwards.
+ */
+void MpEngine::startSeekBackward()
+{
+    mMpxPlaybackWrapper->startSeekBackward();
+}
+/*!
  Slot to handle a request to change \a position.
  */
 void MpEngine::setPosition( int position )
@@ -829,3 +856,161 @@
     mMpxPlaybackWrapper->setRepeat( mode );
 }
 
+/*!
+ Returns pointer to MpSongData, which is the song data for detail's view.
+ */
+MpSongData *MpEngine::songData()
+{
+    return mMpxDetailsWrapper->songData();
+}
+
+/*!
+ Retrieve song informatioin
+ */
+void MpEngine::retrieveSong()
+{
+    TX_ENTRY
+    mMpxDetailsWrapper->retrieveSong();
+    TX_EXIT
+}
+
+/*!
+ Retrieve balance informatioin from audio effects
+ */
+int MpEngine::balance()
+{
+    return mAudioEffectsWrapper->balance();
+}
+
+/*!
+ Retrieve loudness informatioin from audio effects
+ */
+bool MpEngine::loudness()
+{
+    return mAudioEffectsWrapper->loudness();
+}
+
+/*!
+ Slot to handle a request to change \a balance in audio effects.
+ */
+void MpEngine::setBalance( int balance )
+{
+    TX_ENTRY
+    
+    if ( mAudioEffectsWrapper->balance() != balance ) {
+        mAudioEffectsWrapper->setBalance( balance );
+        mMpxPlaybackWrapper->setBalance( balance );
+    }
+    
+    TX_EXIT
+}
+
+/*!
+ Slot to handle a request to change loudness \a mode in audio effects.
+ */
+void MpEngine::setLoudness( bool mode )
+{
+    TX_ENTRY
+    
+    if( mAudioEffectsWrapper->loudness() != mode ) { //do not set same value twice
+        mAudioEffectsWrapper->setLoudness( mode );
+        mMpxPlaybackWrapper->applyAudioEffects();
+    }
+    
+    TX_EXIT
+}
+
+/*!
+ Apply the preset by giving \a presetIndex. The index is subtracted by 1 because
+ index 0 represent "Off" at UI level.
+ */
+void MpEngine::applyPreset( int presetIndex )
+{
+    TX_ENTRY_ARGS( "presetIndex=" << presetIndex );
+    
+    TInt presetKey = mEqualizerWrapper->getPresetNameKey( presetIndex - 1 );
+    
+    if ( presetKey != KEqualizerPresetNone ) {
+        TX_LOG_ARGS( "Preset key in engine =" << presetKey );
+        // Store in CenRep file
+        MpSettingsManager::setPreset( presetKey );
+        // Notify playback framework of the change.
+        mMpxPlaybackWrapper->applyEqualizer();
+        mCurrentPresetIndex = presetIndex;
+    }
+    else {
+        TX_LOG_ARGS("getPresetNameKey Error  = " << KEqualizerPresetNone);
+    }
+    
+    TX_EXIT
+}
+
+/*!
+ Disabling equalizer by setting the preset to -1 and apply it to 
+ disable current preset.
+ */
+void MpEngine::disableEqualizer()
+{
+    TX_ENTRY
+
+    mCurrentPresetIndex = KEqualizerPresetNone;
+    // Store in CenRep file
+    MpSettingsManager::setPreset( mCurrentPresetIndex );
+    // Notify playback framework of the change.
+    mMpxPlaybackWrapper->applyEqualizer();
+
+    TX_EXIT
+}
+
+/*!
+ Return current preset index (UI)
+ */
+int MpEngine::activePreset()
+{
+    TX_LOG_ARGS("mCurrentPresetIndex = " << mCurrentPresetIndex );
+
+    return mCurrentPresetIndex;
+}
+
+/*!
+ Retrieve list of preset names from equalizer wrapper
+ */
+QStringList MpEngine::presetNames()
+{
+    return mEqualizerWrapper->presetNames(); 
+}
+
+/*!
+ Save data needed to later restore state (activity)
+ */
+void MpEngine::saveActivityData( QByteArray &data )
+{
+    mMpxCollectionWrapper->savePath( data );
+}
+
+/*!
+ Restore state from activity data 
+ */
+void MpEngine::loadActivityData( const QByteArray &data ) 
+{
+    mMpxCollectionWrapper->restorePath( data );
+}
+
+/*!
+ Slot to handle equalizer ready signal from equalizer wrapper.
+ */
+void MpEngine::handleEqualizerReady()
+{
+    TX_ENTRY
+    
+    // Get preset id from cenrep
+    TInt presetKey( MpSettingsManager::preset() );
+    
+    //Set the current preset index. 1 is added to index because index 0 represent "Off" at UI level.
+    mCurrentPresetIndex = mEqualizerWrapper->getPresetIndex( presetKey );
+    mCurrentPresetIndex++;
+    emit equalizerReady();
+    
+    TX_EXIT
+}
+