mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp
changeset 29 8192e5b5c935
parent 22 ecf06a08d4d9
child 32 c163ef0b758d
--- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Fri May 14 15:49:53 2010 +0300
+++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Thu May 27 12:49:57 2010 +0300
@@ -32,6 +32,11 @@
 #include "mpplaybackdata.h"
 #include "mpcommondefs.h"
 #include "mptrace.h"
+#include "mpxaudioeffectengine.h"
+
+_LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio");
+_LIT(KMPXRealAudioMimeType, "audio/x-realaudio");
+_LIT(KMPXRnRealAudioMimeType, "audio/vnd.rn-realaudio");
 /*!
     \class MpMpxPlaybackFrameworkWrapperPrivate
     \brief Wrapper for mpx framework utilities - private implementation.
@@ -44,9 +49,9 @@
  */
 MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq)
     : q_ptr( qq ),
-      iPlaybackUtility(0),
-      iMedia(0),
-      iPlaybackData(0)
+      iPlaybackUtility( 0 ),
+      iMedia( 0 ),
+      iPlaybackData( 0 )
 {
     TX_LOG
 }
@@ -73,9 +78,8 @@
 /*!
  \internal
  */
-void MpMpxPlaybackFrameworkWrapperPrivate::init( MpCommon::MpViewMode viewMode, TUid hostUid )
+void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid )
 {
-    iViewMode = viewMode;
     mHostUid = hostUid;
     TRAPD(err, DoInitL());
     if ( err != KErrNone ) {
@@ -146,6 +150,32 @@
 /*!
  \internal
  */
+void MpMpxPlaybackFrameworkWrapperPrivate::startSeekForward()
+{
+    TX_ENTRY
+    TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekForward));
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpMpxPlaybackFrameworkWrapperPrivate::stopSeeking()
+{
+    TX_ENTRY
+    TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStopSeeking));
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
 void MpMpxPlaybackFrameworkWrapperPrivate::skipBackward()
 {
     TX_ENTRY
@@ -159,6 +189,19 @@
 /*!
  \internal
  */
+void MpMpxPlaybackFrameworkWrapperPrivate::startSeekBackward()
+{
+    TX_ENTRY
+    TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekBackward));
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
 void MpMpxPlaybackFrameworkWrapperPrivate::setPosition( int value )
 {
     TX_ENTRY_ARGS("value =" << value);
@@ -198,6 +241,45 @@
 /*!
  \internal
  */
+void MpMpxPlaybackFrameworkWrapperPrivate::setBalance( int value )
+{
+    TX_ENTRY_ARGS("value =" << value);
+    TRAPD( err, iPlaybackUtility->SetL( EPbPropertyBalance, value ) );
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpMpxPlaybackFrameworkWrapperPrivate::applyAudioEffects()
+{
+    TX_ENTRY
+    TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KAudioEffectsID ) );
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
+void MpMpxPlaybackFrameworkWrapperPrivate::applyEqualizer()
+{
+    TX_ENTRY
+    TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KEqualizerID ) );
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
 MpPlaybackData *MpMpxPlaybackFrameworkWrapperPrivate::playbackData()
 {
     return iPlaybackData;
@@ -308,11 +390,19 @@
     else {
             changed |= iPlaybackData->setAlbum(hbTrId("txt_mus_other_unknown4"));
     }
-    if ( changed ) {
-        // This is required to propagate the playback info to UI at once.
-        iPlaybackData->commitPlaybackInfo();
+    if (aProperties.IsSupported(TMPXAttribute(KMPXMediaGeneralMimeType))) {
+        
+            const TDesC& mimeType = aProperties.ValueText ( KMPXMediaGeneralMimeType );
+            
+            bool realAudioMode =
+                    ( mimeType.Compare( KMPXPnRealAudioMimeType ) == 0 ) ||
+                    ( mimeType.Compare( KMPXRealAudioMimeType ) == 0) ||
+                    ( mimeType.Compare( KMPXRnRealAudioMimeType ) == 0 );
+            
+            changed |= iPlaybackData->setRealAudio( realAudioMode );
     }
 
+
     if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) {
         iPlaybackData->setUri(
             QString::fromUtf16(
@@ -331,8 +421,20 @@
                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
                 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) );
     }
+    if ( aProperties.IsSupported( KMPXMediaMusicAlbumId) ) {
+    changed |= iPlaybackData->setAlbumId( 
+                aProperties.ValueTObjectL<TInt>( KMPXMediaMusicAlbumId ) );
+    }
     
-  
+    if ( aProperties.IsSupported( KMPXMediaGeneralId) ) {
+    changed |= iPlaybackData->setId( 
+                aProperties.ValueTObjectL<TInt>( KMPXMediaGeneralId ) );
+    }
+    
+    if ( changed ) {
+        // This is required to propagate the playback info to UI at once.
+        iPlaybackData->commitPlaybackInfo();
+    }
     TX_EXIT
 }
 
@@ -342,10 +444,14 @@
 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL()
 {
     TX_ENTRY
+    iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
+    iPlaybackUtility->AddObserverL( *this );
+    iPlaybackData = new MpPlaybackData();
 
-   iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
-   iPlaybackUtility->AddObserverL( *this );
-   iPlaybackData = new MpPlaybackData();
+    UpdateStateL();
+    if ( iPlaybackUtility->Source() ) {
+        RetrieveSongDetailsL();
+    }
     TX_EXIT
 }
 
@@ -429,6 +535,13 @@
                 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged")
                 RetrieveSongDetailsL();
                 break;
+            case TMPXPlaybackMessage::EPlaylistUpdated:
+                TX_LOG_ARGS( "EPlaylistUpdated" )
+            case TMPXPlaybackMessage::EActivePlayerChanged:
+                TX_LOG_ARGS( "EActivePlayerChanged or fall through from EPlaylistUpdated" )
+                UpdateStateL();
+                RetrieveSongDetailsL();
+                break;
             default:
                 break;
         }
@@ -466,7 +579,7 @@
     TX_ENTRY
     if ( !iPlaybackUtility->Source() ) {
         TX_LOG_ARGS("There is no source")
-        iPlaybackData->setPlaybackState( MpPlaybackData::Stopped );
+        iPlaybackData->setPlaybackState( MpPlaybackData::NotPlaying );
     }
     else {
         switch ( iPlaybackUtility->StateL() ) {
@@ -504,6 +617,10 @@
     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) );
     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) );
     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) );
+    requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumId ) );
+	requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralMimeType ) );
+	requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralId ) );
+	
 
     mediaSrc->MediaL( requestedAttr.Array(), *this );
     CleanupStack::PopAndDestroy( &requestedAttr );