mpxmusicplayer/metadatahandler/src/mpxmetadatahandlerimp.cpp
branchRCL_3
changeset 49 455f89b7fcc5
parent 15 171e07ac910f
equal deleted inserted replaced
40:cb96c29156b2 49:455f89b7fcc5
   184 
   184 
   185     delete iTrackTitle;
   185     delete iTrackTitle;
   186     delete iArtist;
   186     delete iArtist;
   187     delete iAlbum;
   187     delete iAlbum;
   188     delete iGenre;
   188     delete iGenre;
       
   189     delete iMetadataIter;
   189     }
   190     }
   190 
   191 
   191 // ---------------------------------------------------------------------------
   192 // ---------------------------------------------------------------------------
   192 // Handle playback message.
   193 // Handle playback message.
   193 // ---------------------------------------------------------------------------
   194 // ---------------------------------------------------------------------------
   366         if ( colId.iUid != iColId.iUid || lastTrackNumber != iTrackNumber )
   367         if ( colId.iUid != iColId.iUid || lastTrackNumber != iTrackNumber )
   367             {
   368             {
   368             iColId = colId;
   369             iColId = colId;
   369             iTrackNumber = lastTrackNumber;
   370             iTrackNumber = lastTrackNumber;
   370             iPlayerEventsObserver->TrackChanged(iColId.iUid, iPlayingTime);
   371             iPlayerEventsObserver->TrackChanged(iColId.iUid, iPlayingTime);
       
   372             
       
   373             if ( iMetadataIter )
       
   374                 {
       
   375                 SendCurrentlyPlayingMetadata( *iMetadataIter );
       
   376                 delete iMetadataIter;
       
   377                 iMetadataIter = NULL;
       
   378                 }
   371             }
   379             }
   372         else
   380         else
   373             {
   381             {
   374             MPX_DEBUG1( "CMPXMetaDataHandlerImp::DoHandleMediaL DUPLICATE Trace Change Received" );
   382             MPX_DEBUG1( "CMPXMetaDataHandlerImp::DoHandleMediaL DUPLICATE Trace Change Received" );
   375             }
   383             }
   567             }
   575             }
   568         }
   576         }
   569     }
   577     }
   570 
   578 
   571 // -----------------------------------------------------------------------------
   579 // -----------------------------------------------------------------------------
   572 // From MRemConMediaInformationTargetObserver
   580 // Sends currently playing metadata.
   573 // For each element in aAttributeList the client should respond by calling 
   581 // see MrcmitoGetCurrentlyPlayingMetadata
   574 // CRemConMediaInformationTarget::AttributeValue(). After all attributes have 
       
   575 // been supplied the client should call CRemConMediaInformationTarget::Completed().
       
   576 // @param aAttributeList A list of TAttributeID requested by the controller
       
   577 // -----------------------------------------------------------------------------
   582 // -----------------------------------------------------------------------------
   578 //
   583 //
   579 void CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata( 
   584 void CMPXMetaDataHandlerImp::SendCurrentlyPlayingMetadata( 
   580     TMediaAttributeIter& aAttributeIter )
   585     TMediaAttributeIter& aAttributeIter )
   581     {
   586     {
   582     MPX_FUNC( "CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata" );
   587     MPX_FUNC( "CMPXMetaDataHandlerImp::SendCurrentlyPlayingMetadata" );
   583     const TInt KMaxMediaAttrLen = 300;  // >110 is required for AVRCP fragmentation
   588     const TInt KMaxMediaAttrLen = 300;  // >110 is required for AVRCP fragmentation
   584     TBuf8<KMaxMediaAttrLen> attrBuf;
   589     TBuf8<KMaxMediaAttrLen> attrBuf;
   585     TMediaAttributeId attrId;
   590     TMediaAttributeId attrId;
   586     aAttributeIter.Start();
   591     aAttributeIter.Start();
   587     while( aAttributeIter.Next( attrId ) )
   592     while( aAttributeIter.Next( attrId ) )
   673         iMediaInfoTarget->AttributeValue( attrId, attrBuf );
   678         iMediaInfoTarget->AttributeValue( attrId, attrBuf );
   674         }
   679         }
   675     iMediaInfoTarget->Completed();
   680     iMediaInfoTarget->Completed();
   676     }
   681     }
   677 
   682 
   678 
   683 // -----------------------------------------------------------------------------
       
   684 // From MRemConMediaInformationTargetObserver
       
   685 // For each element in aAttributeList the client should respond by calling 
       
   686 // CRemConMediaInformationTarget::AttributeValue(). After all attributes have 
       
   687 // been supplied the client should call CRemConMediaInformationTarget::Completed().
       
   688 // @param aAttributeList A list of TAttributeID requested by the controller
       
   689 // -----------------------------------------------------------------------------
       
   690 //
       
   691 void CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata( 
       
   692     TMediaAttributeIter& aAttributeIter )
       
   693     {
       
   694     MPX_FUNC( "CMPXMetaDataHandlerImp::MrcmitoGetCurrentlyPlayingMetadata" );
       
   695     
       
   696     if ( iTrackTitle ) 
       
   697         {
       
   698         SendCurrentlyPlayingMetadata( aAttributeIter );
       
   699         delete iMetadataIter;
       
   700         iMetadataIter = NULL;
       
   701         }
       
   702     else
       
   703         {
       
   704         delete iMetadataIter;
       
   705         iMetadataIter = new TMediaAttributeIter( aAttributeIter );
       
   706         }
       
   707     }
   679 
   708 
   680 // ---------------------------------------------------------------------------
   709 // ---------------------------------------------------------------------------
   681 // From class MRemConGroupNavigationTargetObserver.
   710 // From class MRemConGroupNavigationTargetObserver.
   682 // A 'Next Group' command has been received.
   711 // A 'Next Group' command has been received.
   683 // ---------------------------------------------------------------------------
   712 // ---------------------------------------------------------------------------