mpengine/src/mpengine.cpp
changeset 47 4cc1412daed0
parent 45 612c4815aebe
child 51 560ce2306a17
--- a/mpengine/src/mpengine.cpp	Fri Jul 23 17:31:12 2010 -0500
+++ b/mpengine/src/mpengine.cpp	Fri Aug 06 16:51:36 2010 -0500
@@ -24,7 +24,6 @@
 #include "mpmpxplaybackframeworkwrapper.h"
 #include "mpaudioeffectsframeworkwrapper.h"
 #include "mpequalizerframeworkwrapper.h"
-#include "mpmediakeyhandler.h"
 #include "mptrace.h"
 #include "mpsettingsmanager.h"
 #include "mpsongscanner.h"
@@ -177,12 +176,25 @@
  */
 
 /*!
+-------------------------------------------------------------------------------
+    Playback related signals
+-------------------------------------------------------------------------------
+*/
+
+/*!
+    \fn void volumePropertyChanged( MpCommon::MpVolumeProperty, int value );
+
+    This signal is emitted when framework receives a volume related property notification,
+    such as EPbPropertyVolume, EPbPropertyMaxVolume, EPbPropertyMute.
+ */
+
+
+/*!
  Constructs music player engine.
  */
 MpEngine::MpEngine()
     : mMpxHarvesterWrapper(0),
       mSongScanner(0),
-      mMediaKeyHandler(0),
       mMpxCollectionWrapper(0),
       mMpxPlaybackWrapper(0),
       mAudioEffectsWrapper(0),
@@ -190,7 +202,8 @@
       mCurrentPresetIndex(KEqualizerPresetNone),
       mSongData(0),
       mUsbBlockingState(USB_NotConnected),
-      mPreviousUsbState(USB_NotConnected)
+      mPreviousUsbState(USB_NotConnected),
+      mHandleMediaCommands(true)
 {
     TX_LOG
 }
@@ -201,7 +214,6 @@
 MpEngine::~MpEngine()
 {
     TX_ENTRY
-    delete mMediaKeyHandler;
     delete mMpxPlaybackWrapper;
     delete mMpxHarvesterWrapper;
     delete mMpxCollectionWrapper;
@@ -219,7 +231,6 @@
 {
     TX_ENTRY_ARGS("hostUid=" << hostUid.iUid << ", mode=" << mode);
     mHostUid = hostUid;
-    mMediaKeyHandler = new MpMediaKeyHandler();
 
     if ( StandAlone == mode ) {
         mSongData = new MpSongData();
@@ -276,8 +287,10 @@
 
         // Playback Wrapper
         mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, mSongData );
-        connect( this, SIGNAL( libraryAboutToUpdate() ),
+        connect( this, SIGNAL( libraryUpdated() ),
                  mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) );
+        connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
+                 this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
 
         // AudioEffects wrapper
         mAudioEffectsWrapper = new MpAudioEffectsFrameworkWrapper();
@@ -311,8 +324,11 @@
 
         // Playback Wrapper
         mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, 0 );
-        connect( this, SIGNAL( libraryAboutToUpdate() ),
+        connect( this, SIGNAL( libraryUpdated() ),
                  mMpxPlaybackWrapper, SLOT( closeCurrentPlayback() ) );
+        connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
+                 this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
+
     }
     else if ( MediaBrowsing == mode ) {
         // Collection Wrapper
@@ -328,6 +344,9 @@
         mSongData = new MpSongData();
         // Playback Wrapper
         mMpxPlaybackWrapper = new MpMpxPlaybackFrameworkWrapper( mHostUid, mSongData );
+        connect( mMpxPlaybackWrapper, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ),
+                 this, SIGNAL( volumePropertyChanged( MpCommon::MpVolumeProperty, int ) ) );
+
     }
     TX_EXIT
 }
@@ -398,7 +417,7 @@
  */
 void MpEngine::handleScanStarted() {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(false);
+    mHandleMediaCommands = false;
     TX_EXIT
 }
 
@@ -409,7 +428,7 @@
     TX_ENTRY
     Q_UNUSED( count );
     Q_UNUSED( error );
-    mMediaKeyHandler->setEnabled(true);
+    mHandleMediaCommands = true;
     emit libraryUpdated();
     TX_EXIT
 }
@@ -422,10 +441,10 @@
     TX_ENTRY_ARGS("event=" << event);
     switch ( event ) {
         case DiskFormatStarted:
-            mMediaKeyHandler->setEnabled(false);
+            mHandleMediaCommands = false;
             break;
         case DiskFormatEnded:
-            mMediaKeyHandler->setEnabled(true);
+            mHandleMediaCommands = true;
             break;
         case DiskRemoved:
             if ( mUsbBlockingState != USB_Synchronizing ) {
@@ -479,7 +498,7 @@
 void MpEngine::handleUsbMassStorageStartEvent()
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(false);
+    mHandleMediaCommands = false;
 
     changeUsbBlockingState( USB_Synchronizing );
     emit usbBlocked(true);
@@ -494,7 +513,7 @@
 void MpEngine::handleUsbMassStorageEndEvent()
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(true);
+    mHandleMediaCommands = true;
 
     changeUsbBlockingState( USB_NotConnected );
     emit usbBlocked(false);
@@ -510,7 +529,7 @@
 void MpEngine::handleUsbMtpStartEvent()
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(false);
+    mHandleMediaCommands = false;
     
     changeUsbBlockingState( USB_Synchronizing );
     emit usbBlocked(true);
@@ -529,7 +548,7 @@
 void MpEngine::handleUsbMtpEndEvent()
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(true);
+    mHandleMediaCommands = true;
 
     changeUsbBlockingState( USB_NotConnected );
     emit usbBlocked(false);
@@ -749,7 +768,7 @@
 void MpEngine::handleDeleteStarted( TCollectionContext context, int count )
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled( false );
+    mHandleMediaCommands = false;
     emit deleteStarted( context, count );
     TX_EXIT
 }
@@ -760,7 +779,7 @@
 void MpEngine::handleDeleteEnded( bool success )
 {
     TX_ENTRY
-    mMediaKeyHandler->setEnabled(true);
+    mHandleMediaCommands = true;
     emit songsDeleted( success );
     TX_EXIT
 }
@@ -808,12 +827,36 @@
 {
     mMpxPlaybackWrapper->play( file );
 }
+
+/*!
+ Slot to handle a play command
+ */
+
+void MpEngine::play()
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->play();
+    }
+}
+
+/*!
+ Slot to handle a pause command.
+ */
+void MpEngine::pause()
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->pause();
+    }
+}
+
 /*!
  Slot to handle a play pause.
  */
 void MpEngine::playPause()
 {
-    mMpxPlaybackWrapper->playPause();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->playPause();
+    }
 }
 
 /*!
@@ -821,7 +864,9 @@
  */
 void MpEngine::stop()
 {
-    mMpxPlaybackWrapper->stop();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->stop();
+    }
 }
 
 /*!
@@ -829,7 +874,9 @@
  */
 void MpEngine::skipForward()
 {
-    mMpxPlaybackWrapper->skipForward();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->skipForward();
+    }
 }
 
 /*!
@@ -837,7 +884,9 @@
  */
 void MpEngine::startSeekForward()
 {
-    mMpxPlaybackWrapper->startSeekForward();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->startSeekForward();
+    }
 }
 
 /*!
@@ -845,7 +894,9 @@
  */
 void MpEngine::stopSeeking()
 {
-    mMpxPlaybackWrapper->stopSeeking();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->stopSeeking();
+    }
 }
 
 /*!
@@ -853,7 +904,9 @@
  */
 void MpEngine::skipBackward()
 {
-    mMpxPlaybackWrapper->skipBackward();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->skipBackward();
+    }
 }
 
 /*!
@@ -861,7 +914,9 @@
  */
 void MpEngine::startSeekBackward()
 {
-    mMpxPlaybackWrapper->startSeekBackward();
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->startSeekBackward();
+    }
 }
 /*!
  Slot to handle a request to change \a position.
@@ -888,6 +943,83 @@
 }
 
 /*!
+ Slot to handle a request to get the volume level Max.
+ Response will be asynchronously sent through volumePropertyChanged() signal.
+ */
+void MpEngine::getMaxVolume( )
+{
+    mMpxPlaybackWrapper->getMaxVolume();
+}
+
+/*!
+ Slot to handle a request to get the current volume level.
+ Response will be asynchronously sent through volumePropertyChanged() signal.
+ */
+void MpEngine::getVolume( )
+{
+    mMpxPlaybackWrapper->getVolume();
+}
+
+/*!
+ Slot to handle a request to increase volume.
+ */
+void MpEngine::increaseVolume()
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->increaseVolume();
+    }
+}
+
+/*!
+ Slot to handle a request to decrease volume.
+ */
+void MpEngine::decreaseVolume()
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->decreaseVolume();
+    }
+}
+
+/*!
+ Slot to handle a request to set the volume level.
+ */
+void MpEngine::setVolume( int value )
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->setVolume( value );
+    }
+}
+
+/*!
+ Slot to handle a request to get the current mute state.
+ Response will be asynchronously sent through volumePropertyChanged() signal.
+ */
+void MpEngine::getMuteState( )
+{
+    mMpxPlaybackWrapper->getMuteState();
+}
+
+/*!
+ Slot to handle a request to mute.
+ */
+void MpEngine::mute()
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->mute();
+    }
+}
+
+/*!
+ Slot to handle a request to unmute.
+ */
+void MpEngine::unmute()
+{
+    if ( mHandleMediaCommands ) {
+        mMpxPlaybackWrapper->unmute();
+    }
+}
+
+/*!
  Returns pointer to MpSongData, which is the song data for Details View.
  */
 MpSongData *MpEngine::songData()