mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp
changeset 29 8192e5b5c935
parent 22 ecf06a08d4d9
child 32 c163ef0b758d
equal deleted inserted replaced
25:3ec52facab4d 29:8192e5b5c935
    30 #include "mpmpxplaybackframeworkwrapper_p.h"
    30 #include "mpmpxplaybackframeworkwrapper_p.h"
    31 #include "mpmpxplaybackframeworkwrapper.h"
    31 #include "mpmpxplaybackframeworkwrapper.h"
    32 #include "mpplaybackdata.h"
    32 #include "mpplaybackdata.h"
    33 #include "mpcommondefs.h"
    33 #include "mpcommondefs.h"
    34 #include "mptrace.h"
    34 #include "mptrace.h"
       
    35 #include "mpxaudioeffectengine.h"
       
    36 
       
    37 _LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio");
       
    38 _LIT(KMPXRealAudioMimeType, "audio/x-realaudio");
       
    39 _LIT(KMPXRnRealAudioMimeType, "audio/vnd.rn-realaudio");
    35 /*!
    40 /*!
    36     \class MpMpxPlaybackFrameworkWrapperPrivate
    41     \class MpMpxPlaybackFrameworkWrapperPrivate
    37     \brief Wrapper for mpx framework utilities - private implementation.
    42     \brief Wrapper for mpx framework utilities - private implementation.
    38 
    43 
    39     This is a private implementation of the mpx framework wrapper utilties interface.
    44     This is a private implementation of the mpx framework wrapper utilties interface.
    42 /*!
    47 /*!
    43  \internal
    48  \internal
    44  */
    49  */
    45 MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq)
    50 MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq)
    46     : q_ptr( qq ),
    51     : q_ptr( qq ),
    47       iPlaybackUtility(0),
    52       iPlaybackUtility( 0 ),
    48       iMedia(0),
    53       iMedia( 0 ),
    49       iPlaybackData(0)
    54       iPlaybackData( 0 )
    50 {
    55 {
    51     TX_LOG
    56     TX_LOG
    52 }
    57 }
    53 
    58 
    54 /*!
    59 /*!
    71 }
    76 }
    72 
    77 
    73 /*!
    78 /*!
    74  \internal
    79  \internal
    75  */
    80  */
    76 void MpMpxPlaybackFrameworkWrapperPrivate::init( MpCommon::MpViewMode viewMode, TUid hostUid )
    81 void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid )
    77 {
    82 {
    78     iViewMode = viewMode;
       
    79     mHostUid = hostUid;
    83     mHostUid = hostUid;
    80     TRAPD(err, DoInitL());
    84     TRAPD(err, DoInitL());
    81     if ( err != KErrNone ) {
    85     if ( err != KErrNone ) {
    82         TX_LOG_ARGS("Error: " << err << "; should never get here.");
    86         TX_LOG_ARGS("Error: " << err << "; should never get here.");
    83     }
    87     }
   144 }
   148 }
   145 
   149 
   146 /*!
   150 /*!
   147  \internal
   151  \internal
   148  */
   152  */
       
   153 void MpMpxPlaybackFrameworkWrapperPrivate::startSeekForward()
       
   154 {
       
   155     TX_ENTRY
       
   156     TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekForward));
       
   157     if ( err != KErrNone ) {
       
   158         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   159     }
       
   160     TX_EXIT
       
   161 }
       
   162 
       
   163 /*!
       
   164  \internal
       
   165  */
       
   166 void MpMpxPlaybackFrameworkWrapperPrivate::stopSeeking()
       
   167 {
       
   168     TX_ENTRY
       
   169     TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStopSeeking));
       
   170     if ( err != KErrNone ) {
       
   171         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   172     }
       
   173     TX_EXIT
       
   174 }
       
   175 
       
   176 /*!
       
   177  \internal
       
   178  */
   149 void MpMpxPlaybackFrameworkWrapperPrivate::skipBackward()
   179 void MpMpxPlaybackFrameworkWrapperPrivate::skipBackward()
   150 {
   180 {
   151     TX_ENTRY
   181     TX_ENTRY
   152     TRAPD(err, iPlaybackUtility->CommandL(EPbCmdPrevious));
   182     TRAPD(err, iPlaybackUtility->CommandL(EPbCmdPrevious));
       
   183     if ( err != KErrNone ) {
       
   184         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   185     }
       
   186     TX_EXIT
       
   187 }
       
   188 
       
   189 /*!
       
   190  \internal
       
   191  */
       
   192 void MpMpxPlaybackFrameworkWrapperPrivate::startSeekBackward()
       
   193 {
       
   194     TX_ENTRY
       
   195     TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekBackward));
   153     if ( err != KErrNone ) {
   196     if ( err != KErrNone ) {
   154         TX_LOG_ARGS("Error: " << err << "; should never get here.");
   197         TX_LOG_ARGS("Error: " << err << "; should never get here.");
   155     }
   198     }
   156     TX_EXIT
   199     TX_EXIT
   157 }
   200 }
   187  */
   230  */
   188 void MpMpxPlaybackFrameworkWrapperPrivate::setRepeat( bool mode )
   231 void MpMpxPlaybackFrameworkWrapperPrivate::setRepeat( bool mode )
   189 {
   232 {
   190     TX_ENTRY_ARGS("mode =" << mode);
   233     TX_ENTRY_ARGS("mode =" << mode);
   191     TRAPD(err, iPlaybackUtility->SetL(EPbPropertyRepeatMode, mode ? EPbRepeatAll : EPbRepeatOff));
   234     TRAPD(err, iPlaybackUtility->SetL(EPbPropertyRepeatMode, mode ? EPbRepeatAll : EPbRepeatOff));
       
   235     if ( err != KErrNone ) {
       
   236         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   237     }
       
   238     TX_EXIT
       
   239 }
       
   240 
       
   241 /*!
       
   242  \internal
       
   243  */
       
   244 void MpMpxPlaybackFrameworkWrapperPrivate::setBalance( int value )
       
   245 {
       
   246     TX_ENTRY_ARGS("value =" << value);
       
   247     TRAPD( err, iPlaybackUtility->SetL( EPbPropertyBalance, value ) );
       
   248     if ( err != KErrNone ) {
       
   249         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   250     }
       
   251     TX_EXIT
       
   252 }
       
   253 
       
   254 /*!
       
   255  \internal
       
   256  */
       
   257 void MpMpxPlaybackFrameworkWrapperPrivate::applyAudioEffects()
       
   258 {
       
   259     TX_ENTRY
       
   260     TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KAudioEffectsID ) );
       
   261     if ( err != KErrNone ) {
       
   262         TX_LOG_ARGS("Error: " << err << "; should never get here.");
       
   263     }
       
   264     TX_EXIT
       
   265 }
       
   266 
       
   267 /*!
       
   268  \internal
       
   269  */
       
   270 void MpMpxPlaybackFrameworkWrapperPrivate::applyEqualizer()
       
   271 {
       
   272     TX_ENTRY
       
   273     TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KEqualizerID ) );
   192     if ( err != KErrNone ) {
   274     if ( err != KErrNone ) {
   193         TX_LOG_ARGS("Error: " << err << "; should never get here.");
   275         TX_LOG_ARGS("Error: " << err << "; should never get here.");
   194     }
   276     }
   195     TX_EXIT
   277     TX_EXIT
   196 }
   278 }
   306                 aProperties.ValueText( KMPXMediaMusicAlbum ).Length() ) );
   388                 aProperties.ValueText( KMPXMediaMusicAlbum ).Length() ) );
   307     }
   389     }
   308     else {
   390     else {
   309             changed |= iPlaybackData->setAlbum(hbTrId("txt_mus_other_unknown4"));
   391             changed |= iPlaybackData->setAlbum(hbTrId("txt_mus_other_unknown4"));
   310     }
   392     }
   311     if ( changed ) {
   393     if (aProperties.IsSupported(TMPXAttribute(KMPXMediaGeneralMimeType))) {
   312         // This is required to propagate the playback info to UI at once.
   394         
   313         iPlaybackData->commitPlaybackInfo();
   395             const TDesC& mimeType = aProperties.ValueText ( KMPXMediaGeneralMimeType );
   314     }
   396             
       
   397             bool realAudioMode =
       
   398                     ( mimeType.Compare( KMPXPnRealAudioMimeType ) == 0 ) ||
       
   399                     ( mimeType.Compare( KMPXRealAudioMimeType ) == 0) ||
       
   400                     ( mimeType.Compare( KMPXRnRealAudioMimeType ) == 0 );
       
   401             
       
   402             changed |= iPlaybackData->setRealAudio( realAudioMode );
       
   403     }
       
   404 
   315 
   405 
   316     if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) {
   406     if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) {
   317         iPlaybackData->setUri(
   407         iPlaybackData->setUri(
   318             QString::fromUtf16(
   408             QString::fromUtf16(
   319                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   409                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   329         iPlaybackData->setAlbumArtUri(
   419         iPlaybackData->setAlbumArtUri(
   330             QString::fromUtf16(
   420             QString::fromUtf16(
   331                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   421                 aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(),
   332                 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) );
   422                 aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) );
   333     }
   423     }
       
   424     if ( aProperties.IsSupported( KMPXMediaMusicAlbumId) ) {
       
   425     changed |= iPlaybackData->setAlbumId( 
       
   426                 aProperties.ValueTObjectL<TInt>( KMPXMediaMusicAlbumId ) );
       
   427     }
   334     
   428     
   335   
   429     if ( aProperties.IsSupported( KMPXMediaGeneralId) ) {
       
   430     changed |= iPlaybackData->setId( 
       
   431                 aProperties.ValueTObjectL<TInt>( KMPXMediaGeneralId ) );
       
   432     }
       
   433     
       
   434     if ( changed ) {
       
   435         // This is required to propagate the playback info to UI at once.
       
   436         iPlaybackData->commitPlaybackInfo();
       
   437     }
   336     TX_EXIT
   438     TX_EXIT
   337 }
   439 }
   338 
   440 
   339 /*!
   441 /*!
   340  \internal
   442  \internal
   341  */
   443  */
   342 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL()
   444 void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL()
   343 {
   445 {
   344     TX_ENTRY
   446     TX_ENTRY
   345 
   447     iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
   346    iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid );
   448     iPlaybackUtility->AddObserverL( *this );
   347    iPlaybackUtility->AddObserverL( *this );
   449     iPlaybackData = new MpPlaybackData();
   348    iPlaybackData = new MpPlaybackData();
   450 
       
   451     UpdateStateL();
       
   452     if ( iPlaybackUtility->Source() ) {
       
   453         RetrieveSongDetailsL();
       
   454     }
   349     TX_EXIT
   455     TX_EXIT
   350 }
   456 }
   351 
   457 
   352 /*!
   458 /*!
   353  \internal
   459  \internal
   427                 break;
   533                 break;
   428             case TMPXPlaybackMessage::EMediaChanged:
   534             case TMPXPlaybackMessage::EMediaChanged:
   429                 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged")
   535                 TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged")
   430                 RetrieveSongDetailsL();
   536                 RetrieveSongDetailsL();
   431                 break;
   537                 break;
       
   538             case TMPXPlaybackMessage::EPlaylistUpdated:
       
   539                 TX_LOG_ARGS( "EPlaylistUpdated" )
       
   540             case TMPXPlaybackMessage::EActivePlayerChanged:
       
   541                 TX_LOG_ARGS( "EActivePlayerChanged or fall through from EPlaylistUpdated" )
       
   542                 UpdateStateL();
       
   543                 RetrieveSongDetailsL();
       
   544                 break;
   432             default:
   545             default:
   433                 break;
   546                 break;
   434         }
   547         }
   435     }
   548     }
   436     TX_EXIT
   549     TX_EXIT
   464 void MpMpxPlaybackFrameworkWrapperPrivate::UpdateStateL()
   577 void MpMpxPlaybackFrameworkWrapperPrivate::UpdateStateL()
   465 {
   578 {
   466     TX_ENTRY
   579     TX_ENTRY
   467     if ( !iPlaybackUtility->Source() ) {
   580     if ( !iPlaybackUtility->Source() ) {
   468         TX_LOG_ARGS("There is no source")
   581         TX_LOG_ARGS("There is no source")
   469         iPlaybackData->setPlaybackState( MpPlaybackData::Stopped );
   582         iPlaybackData->setPlaybackState( MpPlaybackData::NotPlaying );
   470     }
   583     }
   471     else {
   584     else {
   472         switch ( iPlaybackUtility->StateL() ) {
   585         switch ( iPlaybackUtility->StateL() ) {
   473             case EPbStatePlaying:
   586             case EPbStatePlaying:
   474                 TX_LOG_ARGS("EPbStatePlaying")
   587                 TX_LOG_ARGS("EPbStatePlaying")
   502     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralTitle ) );
   615     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralTitle ) );
   503     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicArtist ) );
   616     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicArtist ) );
   504     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) );
   617     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) );
   505     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) );
   618     requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) );
   506     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) );
   619     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) );
       
   620     requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumId ) );
       
   621 	requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralMimeType ) );
       
   622 	requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralId ) );
       
   623 	
   507 
   624 
   508     mediaSrc->MediaL( requestedAttr.Array(), *this );
   625     mediaSrc->MediaL( requestedAttr.Array(), *this );
   509     CleanupStack::PopAndDestroy( &requestedAttr );
   626     CleanupStack::PopAndDestroy( &requestedAttr );
   510     TX_EXIT
   627     TX_EXIT
   511 }
   628 }