diff -r 3ec52facab4d -r 8192e5b5c935 mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp --- a/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp Fri May 14 15:49:53 2010 +0300 +++ b/mpengine/src/mpmpxplaybackframeworkwrapper_p.cpp Thu May 27 12:49:57 2010 +0300 @@ -32,6 +32,11 @@ #include "mpplaybackdata.h" #include "mpcommondefs.h" #include "mptrace.h" +#include "mpxaudioeffectengine.h" + +_LIT(KMPXPnRealAudioMimeType, "audio/x-pn-realaudio"); +_LIT(KMPXRealAudioMimeType, "audio/x-realaudio"); +_LIT(KMPXRnRealAudioMimeType, "audio/vnd.rn-realaudio"); /*! \class MpMpxPlaybackFrameworkWrapperPrivate \brief Wrapper for mpx framework utilities - private implementation. @@ -44,9 +49,9 @@ */ MpMpxPlaybackFrameworkWrapperPrivate::MpMpxPlaybackFrameworkWrapperPrivate( MpMpxPlaybackFrameworkWrapper *qq) : q_ptr( qq ), - iPlaybackUtility(0), - iMedia(0), - iPlaybackData(0) + iPlaybackUtility( 0 ), + iMedia( 0 ), + iPlaybackData( 0 ) { TX_LOG } @@ -73,9 +78,8 @@ /*! \internal */ -void MpMpxPlaybackFrameworkWrapperPrivate::init( MpCommon::MpViewMode viewMode, TUid hostUid ) +void MpMpxPlaybackFrameworkWrapperPrivate::init( TUid hostUid ) { - iViewMode = viewMode; mHostUid = hostUid; TRAPD(err, DoInitL()); if ( err != KErrNone ) { @@ -146,6 +150,32 @@ /*! \internal */ +void MpMpxPlaybackFrameworkWrapperPrivate::startSeekForward() +{ + TX_ENTRY + TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekForward)); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ +void MpMpxPlaybackFrameworkWrapperPrivate::stopSeeking() +{ + TX_ENTRY + TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStopSeeking)); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ void MpMpxPlaybackFrameworkWrapperPrivate::skipBackward() { TX_ENTRY @@ -159,6 +189,19 @@ /*! \internal */ +void MpMpxPlaybackFrameworkWrapperPrivate::startSeekBackward() +{ + TX_ENTRY + TRAPD(err, iPlaybackUtility->CommandL(EPbCmdStartSeekBackward)); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ void MpMpxPlaybackFrameworkWrapperPrivate::setPosition( int value ) { TX_ENTRY_ARGS("value =" << value); @@ -198,6 +241,45 @@ /*! \internal */ +void MpMpxPlaybackFrameworkWrapperPrivate::setBalance( int value ) +{ + TX_ENTRY_ARGS("value =" << value); + TRAPD( err, iPlaybackUtility->SetL( EPbPropertyBalance, value ) ); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ +void MpMpxPlaybackFrameworkWrapperPrivate::applyAudioEffects() +{ + TX_ENTRY + TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KAudioEffectsID ) ); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ +void MpMpxPlaybackFrameworkWrapperPrivate::applyEqualizer() +{ + TX_ENTRY + TRAPD( err, iPlaybackUtility->CommandL( EPbApplyEffect, KEqualizerID ) ); + if ( err != KErrNone ) { + TX_LOG_ARGS("Error: " << err << "; should never get here."); + } + TX_EXIT +} + +/*! + \internal + */ MpPlaybackData *MpMpxPlaybackFrameworkWrapperPrivate::playbackData() { return iPlaybackData; @@ -308,11 +390,19 @@ else { changed |= iPlaybackData->setAlbum(hbTrId("txt_mus_other_unknown4")); } - if ( changed ) { - // This is required to propagate the playback info to UI at once. - iPlaybackData->commitPlaybackInfo(); + if (aProperties.IsSupported(TMPXAttribute(KMPXMediaGeneralMimeType))) { + + const TDesC& mimeType = aProperties.ValueText ( KMPXMediaGeneralMimeType ); + + bool realAudioMode = + ( mimeType.Compare( KMPXPnRealAudioMimeType ) == 0 ) || + ( mimeType.Compare( KMPXRealAudioMimeType ) == 0) || + ( mimeType.Compare( KMPXRnRealAudioMimeType ) == 0 ); + + changed |= iPlaybackData->setRealAudio( realAudioMode ); } + if ( aProperties.IsSupported( KMPXMediaGeneralUri) ) { iPlaybackData->setUri( QString::fromUtf16( @@ -331,8 +421,20 @@ aProperties.ValueText( KMPXMediaGeneralUri ).Ptr(), aProperties.ValueText( KMPXMediaGeneralUri ).Length() ) ); } + if ( aProperties.IsSupported( KMPXMediaMusicAlbumId) ) { + changed |= iPlaybackData->setAlbumId( + aProperties.ValueTObjectL( KMPXMediaMusicAlbumId ) ); + } - + if ( aProperties.IsSupported( KMPXMediaGeneralId) ) { + changed |= iPlaybackData->setId( + aProperties.ValueTObjectL( KMPXMediaGeneralId ) ); + } + + if ( changed ) { + // This is required to propagate the playback info to UI at once. + iPlaybackData->commitPlaybackInfo(); + } TX_EXIT } @@ -342,10 +444,14 @@ void MpMpxPlaybackFrameworkWrapperPrivate::DoInitL() { TX_ENTRY + iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid ); + iPlaybackUtility->AddObserverL( *this ); + iPlaybackData = new MpPlaybackData(); - iPlaybackUtility = MMPXPlaybackUtility::UtilityL( mHostUid ); - iPlaybackUtility->AddObserverL( *this ); - iPlaybackData = new MpPlaybackData(); + UpdateStateL(); + if ( iPlaybackUtility->Source() ) { + RetrieveSongDetailsL(); + } TX_EXIT } @@ -429,6 +535,13 @@ TX_LOG_ARGS("TMPXPlaybackMessage::EMediaChanged") RetrieveSongDetailsL(); break; + case TMPXPlaybackMessage::EPlaylistUpdated: + TX_LOG_ARGS( "EPlaylistUpdated" ) + case TMPXPlaybackMessage::EActivePlayerChanged: + TX_LOG_ARGS( "EActivePlayerChanged or fall through from EPlaylistUpdated" ) + UpdateStateL(); + RetrieveSongDetailsL(); + break; default: break; } @@ -466,7 +579,7 @@ TX_ENTRY if ( !iPlaybackUtility->Source() ) { TX_LOG_ARGS("There is no source") - iPlaybackData->setPlaybackState( MpPlaybackData::Stopped ); + iPlaybackData->setPlaybackState( MpPlaybackData::NotPlaying ); } else { switch ( iPlaybackUtility->StateL() ) { @@ -504,6 +617,10 @@ requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbum ) ); requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralUri ) ); requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumArtFileName ) ); + requestedAttr.AppendL( TMPXAttribute( KMPXMediaMusicAlbumId ) ); + requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralMimeType ) ); + requestedAttr.AppendL( TMPXAttribute( KMPXMediaGeneralId ) ); + mediaSrc->MediaL( requestedAttr.Array(), *this ); CleanupStack::PopAndDestroy( &requestedAttr );