--- 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<TInt>( KMPXMediaMusicAlbumId ) );
+ }
-
+ if ( aProperties.IsSupported( KMPXMediaGeneralId) ) {
+ changed |= iPlaybackData->setId(
+ aProperties.ValueTObjectL<TInt>( 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 );