mpxmusicplayer/metadatahandler/src/mpxmetadatahandlerimp.cpp
branchRCL_3
changeset 49 455f89b7fcc5
parent 15 171e07ac910f
--- a/mpxmusicplayer/metadatahandler/src/mpxmetadatahandlerimp.cpp	Mon Jun 21 15:37:19 2010 +0300
+++ b/mpxmusicplayer/metadatahandler/src/mpxmetadatahandlerimp.cpp	Thu Jul 15 18:35:42 2010 +0300
@@ -186,6 +186,7 @@
     delete iArtist;
     delete iAlbum;
     delete iGenre;
+    delete iMetadataIter;
     }
 
 // ---------------------------------------------------------------------------
@@ -368,6 +369,13 @@
             iColId = colId;
             iTrackNumber = lastTrackNumber;
             iPlayerEventsObserver->TrackChanged(iColId.iUid, iPlayingTime);
+            
+            if ( iMetadataIter )
+                {
+                SendCurrentlyPlayingMetadata( *iMetadataIter );
+                delete iMetadataIter;
+                iMetadataIter = NULL;
+                }
             }
         else
             {
@@ -569,17 +577,14 @@
     }
 
 // -----------------------------------------------------------------------------
-// From MRemConMediaInformationTargetObserver
-// For each element in aAttributeList the client should respond by calling 
-// CRemConMediaInformationTarget::AttributeValue(). After all attributes have 
-// been supplied the client should call CRemConMediaInformationTarget::Completed().
-// @param aAttributeList A list of TAttributeID requested by the controller
+// Sends currently playing metadata.
+// see MrcmitoGetCurrentlyPlayingMetadata
 // -----------------------------------------------------------------------------
 //
-void CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata( 
+void CMPXMetaDataHandlerImp::SendCurrentlyPlayingMetadata( 
     TMediaAttributeIter& aAttributeIter )
     {
-    MPX_FUNC( "CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata" );
+    MPX_FUNC( "CMPXMetaDataHandlerImp::SendCurrentlyPlayingMetadata" );
     const TInt KMaxMediaAttrLen = 300;  // >110 is required for AVRCP fragmentation
     TBuf8<KMaxMediaAttrLen> attrBuf;
     TMediaAttributeId attrId;
@@ -675,7 +680,31 @@
     iMediaInfoTarget->Completed();
     }
 
-
+// -----------------------------------------------------------------------------
+// From MRemConMediaInformationTargetObserver
+// For each element in aAttributeList the client should respond by calling 
+// CRemConMediaInformationTarget::AttributeValue(). After all attributes have 
+// been supplied the client should call CRemConMediaInformationTarget::Completed().
+// @param aAttributeList A list of TAttributeID requested by the controller
+// -----------------------------------------------------------------------------
+//
+void CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata( 
+    TMediaAttributeIter& aAttributeIter )
+    {
+    MPX_FUNC( "CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata" );
+    
+    if ( iTrackTitle ) 
+        {
+        SendCurrentlyPlayingMetadata( aAttributeIter );
+        delete iMetadataIter;
+        iMetadataIter = NULL;
+        }
+    else
+        {
+        delete iMetadataIter;
+        iMetadataIter = new TMediaAttributeIter( aAttributeIter );
+        }
+    }
 
 // ---------------------------------------------------------------------------
 // From class MRemConGroupNavigationTargetObserver.