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 // --------------------------------------------------------------------------- |