mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp
changeset 51 560ce2306a17
parent 47 4cc1412daed0
child 55 f3930dda3342
--- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Fri Aug 06 16:51:36 2010 -0500
+++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp	Tue Aug 24 03:36:14 2010 -0500
@@ -28,6 +28,7 @@
 #include <mpxplaybackframeworkdefs.h>
 #include <hbglobal.h>
 #include <xqsharablefile.h>
+#include <mpxcollectionplaylist.h>
 
 #include "mpmpxplaybackframeworkwrapper_p.h"
 #include "mpmpxplaybackframeworkwrapper.h"
@@ -36,6 +37,7 @@
 #include "mptrace.h"
 #include "mpxaudioeffectengine.h"
 #include "mpsongdata.h"
+#include "mpxcollectionpath.h"
 
 _LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio");
 _LIT(KMPXRealAudioMimeType, "audio/x-realaudio");
@@ -456,6 +458,9 @@
     if ( aError == KErrNone && aMessage ) {
         TRAP_IGNORE( DoHandlePlaybackMessageL(*aMessage) );
     }
+    else{
+        TRAP_IGNORE( DoHandlePlaybackErrorL(aError) );
+	}
     TX_EXIT
 }
 
@@ -726,6 +731,39 @@
 /*!
  \internal
  */
+void MpMpxPlaybackFrameworkWrapperPrivate::DoHandlePlaybackErrorL( const TInt aError )
+{
+    TX_ENTRY
+    switch ( aError ) {
+                case KErrCorrupt:{
+                    MMPXSource* source( iPlaybackUtility->Source() );
+                    if ( source ){
+                        CMPXCollectionPlaylist* playlist( source->PlaylistL() );
+                        if ( playlist ){
+                            MpPlaybackData* pData = playbackData();
+                            pData->setCorrupted( playlist->Path().IdOfIndex( playlist->Index() ).iId2 );
+                            
+                            if ( playlist->Index() == ( playlist->Count()-1 ) ){
+                                //reach the end of list, pop up corrupt notification
+                                emit q_ptr->corruptedStop();
+                            }
+                            else{
+                                //corrupted song, skip to next song
+                                skipForward();
+                            }
+                        }
+                    }
+                    break;
+                }
+                default:
+                    break;
+            }
+    TX_EXIT
+}
+
+/*!
+ \internal
+ */
 void MpMpxPlaybackFrameworkWrapperPrivate::ForceStopL()
 {
     TX_ENTRY