From 5f59b30a8cef05d21b68855f1655a917d6d49a81 Mon Sep 17 00:00:00 2001 From: Alejandro Wainzinger <aikawarazuni@gmail.com> Date: Thu, 11 Aug 2011 17:49:30 -0700 Subject: [PATCH] Add basic metadata MPRIS info. --- .../infoplugins/unix/mprisplugin.cpp | 29 +++++++++++++++---- .../unix/mprispluginplayeradaptor.cpp | 2 ++ 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/infosystem/infoplugins/unix/mprisplugin.cpp b/src/libtomahawk/infosystem/infoplugins/unix/mprisplugin.cpp index f8e1c1da4..b431f6d74 100644 --- a/src/libtomahawk/infosystem/infoplugins/unix/mprisplugin.cpp +++ b/src/libtomahawk/infosystem/infoplugins/unix/mprisplugin.cpp @@ -21,6 +21,7 @@ #include "audio/audioengine.h" #include "infosystem/infosystemworker.h" +#include "album.h" #include "artist.h" #include "result.h" #include "tomahawksettings.h" @@ -149,7 +150,7 @@ MprisPlugin::canPlay() const bool MprisPlugin::canSeek() const { - return true; + return false; } QString @@ -201,7 +202,18 @@ MprisPlugin::maximumRate() const QVariantMap MprisPlugin::metadata() const { - return QVariantMap(); + QVariantMap metadataMap; + Tomahawk::result_ptr track = AudioEngine::instance()->currentTrack(); + if( track ) + { + metadataMap.insert( "mpris:trackid", track->id() ); + metadataMap.insert( "mpris:length", track->duration() ); + metadataMap.insert( "xesam:album", track->album()->name() ); + metadataMap.insert( "xesam:artist", track->artist()->name() ); + metadataMap.insert( "xesam:title", track->track() ); + } + + return metadataMap; } double @@ -278,9 +290,12 @@ MprisPlugin::Next() } void -MprisPlugin::OpenUri(const QString &Uri) +MprisPlugin::OpenUri( const QString &Uri ) { - // TODO + if( Uri.contains( "tomahawk://" ) ) + GlobalActionManager::instance()->parseTomahawkLink( Uri ); + else if( Uri.contains( "spotify:" ) ) + GlobalActionManager::instance()->openSpotifyLink( Uri ); } void @@ -310,7 +325,10 @@ MprisPlugin::Previous() void MprisPlugin::Seek( qlonglong Offset ) { + qDebug() << Q_FUNC_INFO; + /* qlonglong seekTime = position() + Offset; + qDebug() << "seekTime: " << seekTime; if( seekTime < 0 ) AudioEngine::instance()->seek( 0 ); else if( seekTime > AudioEngine::instance()->currentTrackTotalTime() ) @@ -318,8 +336,7 @@ MprisPlugin::Seek( qlonglong Offset ) // seekTime is in microseconds, but we work internally in milliseconds else AudioEngine::instance()->seek( (qint64) ( seekTime / 1000 ) ); - - + */ } void diff --git a/src/libtomahawk/infosystem/infoplugins/unix/mprispluginplayeradaptor.cpp b/src/libtomahawk/infosystem/infoplugins/unix/mprispluginplayeradaptor.cpp index 47e8c8c9f..c1a155b2d 100644 --- a/src/libtomahawk/infosystem/infoplugins/unix/mprispluginplayeradaptor.cpp +++ b/src/libtomahawk/infosystem/infoplugins/unix/mprispluginplayeradaptor.cpp @@ -185,12 +185,14 @@ void MprisPluginPlayerAdaptor::Previous() void MprisPluginPlayerAdaptor::Seek(qlonglong Offset) { + qDebug() << Q_FUNC_INFO; // handle method call org.mpris.MediaPlayer2.Player.Seek QMetaObject::invokeMethod(parent(), "Seek", Q_ARG(qlonglong, Offset)); } void MprisPluginPlayerAdaptor::SetPosition(const QDBusObjectPath &TrackId, qlonglong Position) { + qDebug() << Q_FUNC_INFO; // handle method call org.mpris.MediaPlayer2.Player.SetPosition QMetaObject::invokeMethod(parent(), "SetPosition", Q_ARG(QDBusObjectPath, TrackId), Q_ARG(qlonglong, Position)); }