mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp
changeset 59 cd9e40a08dda
parent 55 f3930dda3342
--- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Fri Sep 03 19:58:01 2010 -0500
+++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Tue Sep 21 11:40:39 2010 -0500
@@ -55,6 +55,7 @@
 MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq)
     : q_ptr(qq),
       iPlaybackUtility(0),
+      iEmbeddedPlaybackHelper(0),
       iPlaybackData(0),
       iDetailsRequest(false)
 {
@@ -68,10 +69,10 @@
 {
     TX_ENTRY
     if ( iPlaybackUtility ) {
-        TRAP_IGNORE( ForceStopL() );
         TRAP_IGNORE( iPlaybackUtility->RemoveObserverL(*this) );
         iPlaybackUtility->Close();
     }
+    delete iEmbeddedPlaybackHelper;
     delete iPlaybackData;
     TX_EXIT
 }
@@ -452,6 +453,19 @@
 /*!
  \internal
  */
+void MpMpxPlaybackFrameworkWrapperPrivate::forceStop()
+{
+    TX_ENTRY
+    TRAPD( err, ForceStopL() );
+    if ( err != KErrNone ) {
+        TX_LOG_ARGS("Error: " << err << "; should never get here.");
+    }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
 void MpMpxPlaybackFrameworkWrapperPrivate::HandlePlaybackMessage( CMPXMessage *aMessage, TInt aError )
 {
     TX_ENTRY_ARGS("aError=" << aError);
@@ -609,10 +623,8 @@
                     aMedia.ValueTObjectL<TInt>( KMPXMediaGeneralId ) );
         }
 
-        if ( changed ) {
-            // This is required to propagate the playback info to UI at once.
-            iPlaybackData->commitPlaybackInfo();
-        }
+        // This is required to propagate the playback info to UI at once.
+        iPlaybackData->commitPlaybackInfo( changed );
     }
     TX_EXIT
 }
@@ -620,6 +632,17 @@
 /*!
  \internal
  */
+void MpMpxPlaybackFrameworkWrapperPrivate::HandleEmbeddedPlaybackError( TInt aError )
+{
+    TX_ENTRY_ARGS( "aError=" << aError );
+    Q_UNUSED( aError );
+    emit q_ptr->corruptedStop( true );
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL()
 {
     TX_ENTRY
@@ -639,10 +662,17 @@
  */
 void MpMpxPlaybackFrameworkWrapperPrivate::DoPlayL( QString aFilename )
 {
-    TX_ENTRY
-    if ( !aFilename.isNull() ) {
+    TX_ENTRY_ARGS( "Filename: " << aFilename );
+    if ( !aFilename.isEmpty() ) {
         const TDesC& playTitle = TPtrC(reinterpret_cast<const TText*>( aFilename.constData() ));
-        iPlaybackUtility->InitL( playTitle );
+        if ( !iEmbeddedPlaybackHelper ) {
+            iEmbeddedPlaybackHelper = 
+                    CMpMpxEmbeddedPlaybackHelper::NewL( iHostUid, iPlaybackUtility, this );
+        }
+        iEmbeddedPlaybackHelper->playL( playTitle );
+    }
+    else {
+        HandleEmbeddedPlaybackError( KErrArgument );
     }
     TX_EXIT
 }
@@ -653,15 +683,7 @@
 void MpMpxPlaybackFrameworkWrapperPrivate::DoPlayL( const XQSharableFile& file )
 {
     TX_ENTRY
-
-    RFile xqfile;
-    bool ok = file.getHandle( xqfile );
-    if ( ok ) {
-        iPlaybackUtility->InitL( xqfile );
-    }
-    else {
-        TX_LOG_ARGS("Error: " << ok << "; should never get here.");
-    }
+    DoPlayL( file.fileName() );
     TX_EXIT
 }