mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp
changeset 48 af3740e3753f
parent 32 c163ef0b758d
child 54 c5b304f4d89b
equal deleted inserted replaced
42:79c49924ae23 48:af3740e3753f
    17 
    17 
    18 #include <mpxplaybackutility.h>
    18 #include <mpxplaybackutility.h>
    19 #include <mpxmedia.h>
    19 #include <mpxmedia.h>
    20 #include <mpxmediageneraldefs.h>
    20 #include <mpxmediageneraldefs.h>
    21 #include <mpxmediamusicdefs.h>
    21 #include <mpxmediamusicdefs.h>
       
    22 #include <mpxmediaaudiodefs.h>
       
    23 #include <mpxmediadrmdefs.h>
    22 #include <mpxcommandgeneraldefs.h>
    24 #include <mpxcommandgeneraldefs.h>
    23 #include <mpxplaybackmessage.h>
    25 #include <mpxplaybackmessage.h>
    24 #include <mpxmessagegeneraldefs.h>
    26 #include <mpxmessagegeneraldefs.h>
    25 #include <mpxplaybackmessagedefs.h>
    27 #include <mpxplaybackmessagedefs.h>
    26 #include <mpxplaybackframeworkdefs.h>
    28 #include <mpxplaybackframeworkdefs.h>
    31 #include "mpmpxplaybackframeworkwrapper.h"
    33 #include "mpmpxplaybackframeworkwrapper.h"
    32 #include "mpplaybackdata.h"
    34 #include "mpplaybackdata.h"
    33 #include "mpcommondefs.h"
    35 #include "mpcommondefs.h"
    34 #include "mptrace.h"
    36 #include "mptrace.h"
    35 #include "mpxaudioeffectengine.h"
    37 #include "mpxaudioeffectengine.h"
       
    38 #include "mpsongdata.h"
    36 
    39 
    37 _LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio");
    40 _LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio");
    38 _LIT(KMPXRealAudioMimeType, "audio/x-realaudio");
    41 _LIT(KMPXRealAudioMimeType, "audio/x-realaudio");
    39 _LIT(KMPXRnRealAudioMimeType, "audio/vnd.rn-realaudio");
    42 _LIT(KMPXRnRealAudioMimeType, "audio/vnd.rn-realaudio");
    40 /*!
    43 /*!
    46 
    49 
    47 /*!
    50 /*!
    48  \internal
    51  \internal
    49  */
    52  */
    50 MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq)
    53 MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq)
    51     : q_ptr( qq ),
    54     : q_ptr(qq),
    52       iPlaybackUtility( 0 ),
    55       iPlaybackUtility(0),
    53       iMedia( 0 ),
    56       iPlaybackData(0),
    54       iPlaybackData( 0 )
    57       iDetailsRequest(false)
    55 {
    58 {
    56     TX_LOG
    59     TX_LOG
    57 }
    60 }
    58 
    61 
    59 /*!
    62 /*!
    60  \internal
    63  \internal
    61  */
    64  */
    62 MpMpxPlaybackFrameworkWrapperPrivate::~MpMpxPlaybackFrameworkWrapperPrivate()
    65 MpMpxPlaybackFrameworkWrapperPrivate::~MpMpxPlaybackFrameworkWrapperPrivate()
    63 {
    66 {
    64     TX_ENTRY
    67     TX_ENTRY
    65 
       
    66     if ( iPlaybackUtility ) {
    68     if ( iPlaybackUtility ) {
    67         TRAP_IGNORE( ForceStopL() );
    69         TRAP_IGNORE( ForceStopL() );
    68         TRAP_IGNORE( iPlaybackUtility->RemoveObserverL(*this) );
    70         TRAP_IGNORE( iPlaybackUtility->RemoveObserverL(*this) );
    69         iPlaybackUtility->Close();
    71         iPlaybackUtility->Close();
    70     }
    72     }
    71 
       
    72     delete iMedia;
       
    73     delete iPlaybackData;
    73     delete iPlaybackData;
    74 
    74     TX_EXIT
    75     TX_EXIT
    75 }
    76 }
    76 
    77 
    77 /*!
    78 /*!
    78  \internal
    79  \internal
    79  */
    80  */
    80 void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid, MpSongData *songData )
    81 void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid )
    81 {
    82 {
    82     TX_ENTRY
    83     mHostUid = hostUid;
    83     iHostUid = hostUid;
       
    84     iSongData = songData;
    84     TRAPD(err, DoInitL());
    85     TRAPD(err, DoInitL());
    85     if ( err != KErrNone ) {
    86     if ( err != KErrNone ) {
    86         TX_LOG_ARGS("Error: " << err << "; should never get here.");
    87         TX_LOG_ARGS("Error: " << err << "; should never get here.");
    87     }
    88     }
       
    89     TX_EXIT
    88 }
    90 }
    89 
    91 
    90 /*!
    92 /*!
    91  \internal
    93  \internal
    92  */
    94  */
   106     TRAPD( err, DoPlayL( file ) );
   108     TRAPD( err, DoPlayL( file ) );
   107     if ( err != KErrNone ) {
   109     if ( err != KErrNone ) {
   108         TX_LOG_ARGS( "Error: " << err << "; should never get here." );
   110         TX_LOG_ARGS( "Error: " << err << "; should never get here." );
   109     }
   111     }
   110 }
   112 }
       
   113 
       
   114 /*!
       
   115  \internal
       
   116  */
       
   117 void MpMpxPlaybackFrameworkWrapperPrivate::play()
       
   118 {
       
   119     TX_ENTRY
       
   120     TRAPD( err, iPlaybackUtility->CommandL(EPbCmdPlay) );
       
   121     if ( err != KErrNone ) {
       
   122         TX_LOG_ARGS( "Error: " << err << "; should never get here." );
       
   123     }
       
   124     TX_EXIT
       
   125 }
       
   126 
       
   127 /*!
       
   128  \internal
       
   129  */
       
   130 void MpMpxPlaybackFrameworkWrapperPrivate::pause()
       
   131 {
       
   132     TX_ENTRY
       
   133     TRAPD( err, iPlaybackUtility->CommandL(EPbCmdPause) );
       
   134     if ( err != KErrNone ) {
       
   135         TX_LOG_ARGS( "Error: " << err << "; should never get here." );
       
   136     }
       
   137     TX_EXIT
       
   138 }
       
   139 
   111 /*!
   140 /*!
   112  \internal
   141  \internal
   113  */
   142  */
   114 void MpMpxPlaybackFrameworkWrapperPrivate::playPause()
   143 void MpMpxPlaybackFrameworkWrapperPrivate::playPause()
   115 {
   144 {
   278 }
   307 }
   279 
   308 
   280 /*!
   309 /*!
   281  \internal
   310  \internal
   282  */
   311  */
       
   312 void MpMpxPlaybackFrameworkWrapperPrivate::getMaxVolume()
       
   313 {
       
   314     TX_ENTRY
       
   315     TRAPD( err, iPlaybackUtility->PropertyL( *this, EPbPropertyMaxVolume ) );
       
   316     if ( err != KErrNone ) {
       
   317         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   318     }
       
   319     TX_EXIT
       
   320 }
       
   321 
       
   322 /*!
       
   323  \internal
       
   324  */
       
   325 void MpMpxPlaybackFrameworkWrapperPrivate::getVolume()
       
   326 {
       
   327     TX_ENTRY
       
   328     TRAPD( err, iPlaybackUtility->PropertyL( *this, EPbPropertyVolume ) );
       
   329     if ( err != KErrNone ) {
       
   330         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   331     }
       
   332     TX_EXIT
       
   333 }
       
   334 
       
   335 /*!
       
   336  \internal
       
   337  */
       
   338 void MpMpxPlaybackFrameworkWrapperPrivate::increaseVolume()
       
   339 {
       
   340     TX_ENTRY
       
   341     TRAPD( err, iPlaybackUtility->CommandL( EPbCmdIncreaseVolume ) );
       
   342     if ( err != KErrNone ) {
       
   343         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   344     }
       
   345     TX_EXIT
       
   346 }
       
   347 
       
   348 /*!
       
   349  \internal
       
   350  */
       
   351 void MpMpxPlaybackFrameworkWrapperPrivate::decreaseVolume()
       
   352 {
       
   353     TX_ENTRY
       
   354     TRAPD( err, iPlaybackUtility->CommandL( EPbCmdDecreaseVolume ) );
       
   355     if ( err != KErrNone ) {
       
   356         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   357     }
       
   358     TX_EXIT
       
   359 }
       
   360 
       
   361 /*!
       
   362  \internal
       
   363  */
       
   364 void MpMpxPlaybackFrameworkWrapperPrivate::setVolume( int value )
       
   365 {
       
   366     TX_ENTRY
       
   367     TRAPD( err, iPlaybackUtility->CommandL( EPbCmdSetVolume, value ) );
       
   368     if ( err != KErrNone ) {
       
   369         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   370     }
       
   371     TX_EXIT
       
   372 }
       
   373 
       
   374 /*!
       
   375  \internal
       
   376  */
       
   377 void MpMpxPlaybackFrameworkWrapperPrivate::getMuteState()
       
   378 {
       
   379     TX_ENTRY
       
   380     TRAPD( err, iPlaybackUtility->PropertyL( *this, EPbPropertyMute ) );
       
   381     if ( err != KErrNone ) {
       
   382         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   383     }
       
   384     TX_EXIT
       
   385 }
       
   386 
       
   387 /*!
       
   388  \internal
       
   389  */
       
   390 void MpMpxPlaybackFrameworkWrapperPrivate::mute()
       
   391 {
       
   392     TX_ENTRY
       
   393     TRAPD( err, iPlaybackUtility->CommandL( EPbCmdMuteVolume ) );
       
   394     if ( err != KErrNone ) {
       
   395         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   396     }
       
   397     TX_EXIT
       
   398 }
       
   399 
       
   400 /*!
       
   401  \internal
       
   402  */
       
   403 void MpMpxPlaybackFrameworkWrapperPrivate::unmute()
       
   404 {
       
   405     TX_ENTRY
       
   406     TRAPD( err, iPlaybackUtility->CommandL( EPbCmdUnMuteVolume ) );
       
   407     if ( err != KErrNone ) {
       
   408         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   409     }
       
   410     TX_EXIT
       
   411 }
       
   412 
       
   413 /*!
       
   414  \ Closes current playback source.
       
   415  */
       
   416 void MpMpxPlaybackFrameworkWrapperPrivate::closeCurrentPlayback()
       
   417 {
       
   418     TX_ENTRY
       
   419     TRAPD( err, DoCloseCurrentPlaybackL() );
       
   420     if ( err != KErrNone ) {
       
   421         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   422     }
       
   423     TX_EXIT
       
   424 }
       
   425 
       
   426 /*!
       
   427  \internal
       
   428  */
   283 MpPlaybackData *MpMpxPlaybackFrameworkWrapperPrivate::playbackData()
   429 MpPlaybackData *MpMpxPlaybackFrameworkWrapperPrivate::playbackData()
   284 {
   430 {
   285     return iPlaybackData;
   431     return iPlaybackData;
       
   432 }
       
   433 
       
   434 /*!
       
   435  \internal
       
   436  */
       
   437 void MpMpxPlaybackFrameworkWrapperPrivate::retrieveSongDetails()
       
   438 {
       
   439     TX_ENTRY
       
   440     TRAPD( err, DoRetrieveSongDetailsL(true) );
       
   441     if ( err == KErrNone ) {
       
   442         iDetailsRequest = true;
       
   443     }
       
   444     else {
       
   445         TX_LOG_ARGS( "Error: " << err << "; should never get here." );
       
   446     }
       
   447     TX_EXIT
   286 }
   448 }
   287 
   449 
   288 /*!
   450 /*!
   289  \internal
   451  \internal
   290  */
   452  */
   314                 break;
   476                 break;
   315             case EPbPropertyDuration:
   477             case EPbPropertyDuration:
   316                 TX_LOG_ARGS("EPbPropertyDuration")
   478                 TX_LOG_ARGS("EPbPropertyDuration")
   317                 iPlaybackData->setDuration(aValue);
   479                 iPlaybackData->setDuration(aValue);
   318                 break;
   480                 break;
       
   481             case EPbPropertyVolume:
       
   482                 TX_LOG_ARGS("EPbPropertyVolume")
       
   483                 q_ptr->emit volumePropertyChanged( MpCommon::Volume, aValue );
       
   484                 break;
       
   485             case EPbPropertyMaxVolume:
       
   486                 TX_LOG_ARGS("EPbPropertyMaxVolume")
       
   487                 q_ptr->emit volumePropertyChanged( MpCommon::MaxVolume, aValue );
       
   488                 break;
       
   489             case EPbPropertyMute:
       
   490                 TX_LOG_ARGS("EPbPropertyMute")
       
   491                 q_ptr->emit volumePropertyChanged( MpCommon::MuteState, aValue );
       
   492                 break;
   319             default:
   493             default:
   320                 break;
   494                 break;
   321         }
   495         }
   322     }
   496     }
   323     TX_EXIT
   497     TX_EXIT
   341 
   515 
   342 /*!
   516 /*!
   343  \internal
   517  \internal
   344  */
   518  */
   345 void MpMpxPlaybackFrameworkWrapperPrivate::HandleMediaL(
   519 void MpMpxPlaybackFrameworkWrapperPrivate::HandleMediaL(
   346     const CMPXMedia& aProperties,
   520     const CMPXMedia& aMedia,
   347     TInt aError )
   521     TInt aError )
   348 {
   522 {
   349     TX_ENTRY_ARGS("aError=" << aError);
   523     TX_ENTRY
   350     if ( KErrNone != aError || !iPlaybackData ) {
   524     if ( KErrNone != aError ){
       
   525         TX_LOG_ARGS( "Error: " << aError << "; should never get here." );
   351         TX_EXIT
   526         TX_EXIT
   352         return;
   527         return;
   353     }
   528     }
   354 
   529 
   355     if ( iMedia ) {
   530     if ( iDetailsRequest ) {
   356         delete iMedia;
   531         iDetailsRequest = false;
   357         iMedia = NULL;
   532         iSongData->setMpxMedia( aMedia );
   358     }
       
   359     iMedia = CMPXMedia::NewL( aProperties );
       
   360 
       
   361     bool changed = false;
       
   362     if ( aProperties.IsSupported( KMPXMediaGeneralTitle ) ) {
       
   363         changed |= iPlaybackData->setTitle(
       
   364             QString::fromUtf16(
       
   365                 aProperties.ValueText( KMPXMediaGeneralTitle ).Ptr(),
       
   366                 aProperties.ValueText( KMPXMediaGeneralTitle ).Length() ) );
       
   367     }
   533     }
   368     else {
   534     else {
   369         changed |= iPlaybackData->setTitle(
   535         bool changed = false;
   370             QString::fromUtf16(
   536         if ( aMedia.IsSupported( KMPXMediaGeneralTitle ) ) {
   371                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   537             changed |= iPlaybackData->setTitle(
   372                 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) );
   538                 QString::fromUtf16(
   373     }
   539                     aMedia.ValueText( KMPXMediaGeneralTitle ).Ptr(),
   374     
   540                     aMedia.ValueText( KMPXMediaGeneralTitle ).Length() ) );
   375     if ( aProperties.IsSupported( KMPXMediaMusicArtist ) ) {
   541         }
   376         changed |= iPlaybackData->setArtist(
   542         else {
   377             QString::fromUtf16(
   543             changed |= iPlaybackData->setTitle(
   378                 aProperties.ValueText( KMPXMediaMusicArtist ).Ptr(),
   544                 QString::fromUtf16(
   379                 aProperties.ValueText( KMPXMediaMusicArtist ).Length() ) );
   545                     aMedia.ValueText( KMPXMediaGeneralUri ).Ptr(),
   380     }
   546                     aMedia.ValueText( KMPXMediaGeneralUri ).Length() ) );
   381     else {
   547         }
   382             changed |= iPlaybackData->setArtist(QString());
   548 
   383     }
   549         if ( aMedia.IsSupported( KMPXMediaMusicArtist ) ) {
   384     if ( aProperties.IsSupported( KMPXMediaMusicAlbum ) ) {
   550             changed |= iPlaybackData->setArtist(
   385         changed |= iPlaybackData->setAlbum(
   551                 QString::fromUtf16(
   386             QString::fromUtf16(
   552                     aMedia.ValueText( KMPXMediaMusicArtist ).Ptr(),
   387                 aProperties.ValueText( KMPXMediaMusicAlbum ).Ptr(),
   553                     aMedia.ValueText( KMPXMediaMusicArtist ).Length() ) );
   388                 aProperties.ValueText( KMPXMediaMusicAlbum ).Length() ) );
   554         }
   389     }
   555         else {
   390     else {
   556                 changed |= iPlaybackData->setArtist(QString());
   391             changed |= iPlaybackData->setAlbum(QString());
   557         }
   392     }
   558         if ( aMedia.IsSupported( KMPXMediaMusicAlbum ) ) {
   393     if (aProperties.IsSupported(TMPXAttribute(KMPXMediaGeneralMimeType))) {
   559             changed |= iPlaybackData->setAlbum(
   394         
   560                 QString::fromUtf16(
   395             const TDesC& mimeType = aProperties.ValueText ( KMPXMediaGeneralMimeType );
   561                     aMedia.ValueText( KMPXMediaMusicAlbum ).Ptr(),
   396             
   562                     aMedia.ValueText( KMPXMediaMusicAlbum ).Length() ) );
   397             bool realAudioMode =
   563         }
   398                     ( mimeType.Compare( KMPXPnRealAudioMimeType ) == 0 ) ||
   564         else {
   399                     ( mimeType.Compare( KMPXRealAudioMimeType ) == 0) ||
   565                 changed |= iPlaybackData->setAlbum(QString());
   400                     ( mimeType.Compare( KMPXRnRealAudioMimeType ) == 0 );
   566         }
   401             
   567         if (aMedia.IsSupported(TMPXAttribute(KMPXMediaGeneralMimeType))) {
   402             changed |= iPlaybackData->setRealAudio( realAudioMode );
   568 
   403     }
   569                 const TDesC& mimeType = aMedia.ValueText ( KMPXMediaGeneralMimeType );
   404 
   570 
   405 
   571                 bool realAudioMode =
   406     if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) {
   572                         ( mimeType.Compare( KMPXPnRealAudioMimeType ) == 0 ) ||
   407         iPlaybackData->setUri(
   573                         ( mimeType.Compare( KMPXRealAudioMimeType ) == 0) ||
   408             QString::fromUtf16(
   574                         ( mimeType.Compare( KMPXRnRealAudioMimeType ) == 0 );
   409                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   575 
   410                 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) );
   576                 changed |= iPlaybackData->setRealAudio( realAudioMode );
   411     }
   577         }
   412     if (aProperties.IsSupported(TMPXAttribute(KMPXMediaMusicAlbumArtFileName))) {
   578 
   413         iPlaybackData->setAlbumArtUri(
   579         if ( aMedia.IsSupported( KMPXMediaGeneralUri) ) {
   414             QString::fromUtf16(
   580             iPlaybackData->setUri(
   415                 aProperties.ValueText(KMPXMediaMusicAlbumArtFileName).Ptr(),
   581                 QString::fromUtf16(
   416                 aProperties.ValueText(KMPXMediaMusicAlbumArtFileName).Length()));
   582                     aMedia.ValueText( KMPXMediaGeneralUri ).Ptr(),
   417     }
   583                     aMedia.ValueText( KMPXMediaGeneralUri ).Length() ) );
   418     else {
   584         }
   419         iPlaybackData->setAlbumArtUri(
   585         if (aMedia.IsSupported(TMPXAttribute(KMPXMediaMusicAlbumArtFileName))) {
   420             QString::fromUtf16(
   586             iPlaybackData->setAlbumArtUri(
   421                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   587                 QString::fromUtf16(
   422                 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) );
   588                     aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Ptr(),
   423     }
   589                     aMedia.ValueText(KMPXMediaMusicAlbumArtFileName).Length()));
   424     if ( aProperties.IsSupported( KMPXMediaMusicAlbumId) ) {
   590         }
   425     changed |= iPlaybackData->setAlbumId( 
   591         else {
   426                 aProperties.ValueTObjectL<TInt>( KMPXMediaMusicAlbumId ) );
   592             iPlaybackData->setAlbumArtUri(
   427     }
   593                 QString::fromUtf16(
   428     
   594                     aMedia.ValueText( KMPXMediaGeneralUri ).Ptr(),
   429     if ( aProperties.IsSupported( KMPXMediaGeneralId) ) {
   595                     aMedia.ValueText( KMPXMediaGeneralUri ).Length() ) );
   430     changed |= iPlaybackData->setId( 
   596         }
   431                 aProperties.ValueTObjectL<TInt>( KMPXMediaGeneralId ) );
   597         if ( aMedia.IsSupported( KMPXMediaMusicAlbumId) ) {
   432     }
   598         changed |= iPlaybackData->setAlbumId(
   433     
   599                 aMedia.ValueTObjectL<TMPXItemId>( KMPXMediaMusicAlbumId ) );
   434     if ( changed ) {
   600         }
   435         // This is required to propagate the playback info to UI at once.
   601 
   436         iPlaybackData->commitPlaybackInfo();
   602         if ( aMedia.IsSupported( KMPXMediaGeneralId ) ) {
       
   603         changed |= iPlaybackData->setId(
       
   604                     aMedia.ValueTObjectL<TInt>( KMPXMediaGeneralId ) );
       
   605         }
       
   606 
       
   607         if ( changed ) {
       
   608             // This is required to propagate the playback info to UI at once.
       
   609             iPlaybackData->commitPlaybackInfo();
       
   610         }
   437     }
   611     }
   438     TX_EXIT
   612     TX_EXIT
   439 }
   613 }
   440 
   614 
   441 /*!
   615 /*!
   442  \internal
   616  \internal
   443  */
   617  */
   444 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL()
   618 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL()
   445 {
   619 {
   446     TX_ENTRY
   620     TX_ENTRY
   447     iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
   621     iPlaybackUtility = MMPXPlaybackUtility::UtilityL( iHostUid );
   448     iPlaybackUtility->AddObserverL( *this );
   622     iPlaybackUtility->AddObserverL( *this );
   449     iPlaybackData = new MpPlaybackData();
   623     iPlaybackData = new MpPlaybackData();
   450 
   624 
   451     UpdateStateL();
   625     UpdateStateL();
   452     if ( iPlaybackUtility->Source() ) {
   626     if ( iPlaybackUtility->Source() ) {
   453         RetrieveSongDetailsL();
   627         DoRetrieveSongDetailsL(false);
   454     }
   628     }
   455     TX_EXIT
   629     TX_EXIT
   456 }
   630 }
   457 
   631 
   458 /*!
   632 /*!
   472  \internal
   646  \internal
   473  */
   647  */
   474 void MpMpxPlaybackFrameworkWrapperPrivate::DoPlayL( const XQSharableFile& file )
   648 void MpMpxPlaybackFrameworkWrapperPrivate::DoPlayL( const XQSharableFile& file )
   475 {
   649 {
   476     TX_ENTRY
   650     TX_ENTRY
   477         
   651 
   478     RFile xqfile;
   652     RFile xqfile;
   479     bool ok = file.getHandle( xqfile );
   653     bool ok = file.getHandle( xqfile );
   480     if ( ok ) {
   654     if ( ok ) {
   481         iPlaybackUtility->InitL( xqfile );
   655         iPlaybackUtility->InitL( xqfile );
   482     }
   656     }
   530                 property = static_cast<TMPXPlaybackProperty>( type );
   704                 property = static_cast<TMPXPlaybackProperty>( type );
   531                 HandlePropertyL( property, data, KErrNone );
   705                 HandlePropertyL( property, data, KErrNone );
   532                 break;
   706                 break;
   533             case TMPXPlaybackMessage::EMediaChanged:
   707             case TMPXPlaybackMessage::EMediaChanged:
   534                 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged")
   708                 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged")
   535                 RetrieveSongDetailsL();
   709                 DoRetrieveSongDetailsL(false);
   536                 break;
   710                 break;
   537             case TMPXPlaybackMessage::EPlaylistUpdated:
   711             case TMPXPlaybackMessage::EPlaylistUpdated:
   538                 TX_LOG_ARGS( "EPlaylistUpdated" )
   712                 TX_LOG_ARGS( "EPlaylistUpdated" )
       
   713                 // coverity[fallthrough]
   539             case TMPXPlaybackMessage::EActivePlayerChanged:
   714             case TMPXPlaybackMessage::EActivePlayerChanged:
   540                 TX_LOG_ARGS( "EActivePlayerChanged or fall through from EPlaylistUpdated" )
   715                 TX_LOG_ARGS( "EActivePlayerChanged or fall through from EPlaylistUpdated" )
   541                 UpdateStateL();
   716                 UpdateStateL();
   542                 RetrieveSongDetailsL();
   717                 DoRetrieveSongDetailsL(false);
   543                 break;
   718                 break;
   544             default:
   719             default:
   545                 break;
   720                 break;
   546         }
   721         }
   547     }
   722     }
   604 }
   779 }
   605 
   780 
   606 /*!
   781 /*!
   607  \internal
   782  \internal
   608  */
   783  */
   609 void MpMpxPlaybackFrameworkWrapperPrivate::RetrieveSongDetailsL()
   784 void MpMpxPlaybackFrameworkWrapperPrivate::DoRetrieveSongDetailsL( bool detailsRequest )
   610 {
   785 {
   611     TX_ENTRY
   786     TX_ENTRY
   612     MMPXSource *mediaSrc = iPlaybackUtility->Source();
   787     MMPXSource *mediaSrc = iPlaybackUtility->Source();
   613     User::LeaveIfNull( mediaSrc );
   788     User::LeaveIfNull( mediaSrc );
   614     RArray<TMPXAttribute> requestedAttr;
   789     RArray<TMPXAttribute> requestedAttr;
   615     CleanupClosePushL( requestedAttr );
   790     CleanupClosePushL( requestedAttr );
       
   791     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralId ) );
   616     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralTitle ) );
   792     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralTitle ) );
   617     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicArtist ) );
   793     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicArtist ) );
   618     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) );
   794     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) );
       
   795     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumId ) );
   619     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) );
   796     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) );
   620     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) );
   797     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) );
   621     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumId ) );
   798     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralMimeType ) );
   622 	requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralMimeType ) );
   799     if ( detailsRequest ) {
   623 	requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralId ) );
   800         requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumTrack ) );
   624 	
   801         requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicComposer ) );
   625 
   802         requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicYear ) );
       
   803         requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicGenre ) );
       
   804         requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralDuration ) );
       
   805         requestedAttr.AppendL( TMPXAttribute( KMPXMediaAudioBitrate ) );
       
   806         requestedAttr.AppendL( TMPXAttribute( KMPXMediaAudioSamplerate ) );
       
   807         requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralCopyright ) );
       
   808         requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicURL ) );
       
   809         requestedAttr.AppendL( TMPXAttribute( KMPXMediaDrmProtected ) );
       
   810     }
   626     mediaSrc->MediaL( requestedAttr.Array(), *this );
   811     mediaSrc->MediaL( requestedAttr.Array(), *this );
   627     CleanupStack::PopAndDestroy( &requestedAttr );
   812     CleanupStack::PopAndDestroy( &requestedAttr );
   628     TX_EXIT
   813     TX_EXIT
   629 }
   814 }
   630 
   815 
       
   816 /*!
       
   817  \internal
       
   818  */
       
   819 void MpMpxPlaybackFrameworkWrapperPrivate::DoCloseCurrentPlaybackL()
       
   820 {
       
   821     TX_ENTRY
       
   822     if( iPlaybackUtility->Source() ) {
       
   823         iPlaybackUtility->CommandL( EPbCmdClose );
       
   824     }
       
   825     TX_EXIT
       
   826 }
       
   827