From efbc9a27f985c78d0081a4d08caf3bb74d477500 Mon Sep 17 00:00:00 2001 From: "Uwe L. Korn" Date: Fri, 31 Jan 2014 19:49:26 +0000 Subject: [PATCH] Add now playing api call --- src/libtomahawk-playdarapi/Api_v1_5.cpp | 36 +++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/libtomahawk-playdarapi/Api_v1_5.cpp b/src/libtomahawk-playdarapi/Api_v1_5.cpp index b122b9e45..caec36bc9 100644 --- a/src/libtomahawk-playdarapi/Api_v1_5.cpp +++ b/src/libtomahawk-playdarapi/Api_v1_5.cpp @@ -19,8 +19,11 @@ #include "Api_v1_5.h" #include "Api_v1.h" +#include "Result.h" +#include "Track.h" #include "audio/AudioEngine.h" +#include "resolvers/Resolver.h" #include "utils/Logger.h" // Assumptions: QxtWebRequestEvent instance is called event and result is true on success @@ -78,6 +81,39 @@ Api_v1_5::playback( QxtWebRequestEvent* event, const QString& command ) { JSON_REPLY( QMetaObject::invokeMethod( AudioEngine::instance(), "raiseVolume", Qt::QueuedConnection ), "Raising volume failed." ); } + else if ( command == "currenttrack" ) + { + QByteArray json; + Tomahawk::result_ptr currentTrack = AudioEngine::instance()->currentTrack(); + + if ( currentTrack.isNull() ) + { + json = "{ playing: false }"; + } + else + { + QVariantMap trackInfo; + trackInfo.insert( "playing", true ); + trackInfo.insert( "bitrate", currentTrack->bitrate() ); + trackInfo.insert( "resolvedBy", currentTrack->resolvedBy()->name() ); + trackInfo.insert( "score", currentTrack->score() ); + trackInfo.insert( "album", currentTrack->track()->album() ); + trackInfo.insert( "albumpos", currentTrack->track()->albumpos() ); + trackInfo.insert( "artist", currentTrack->track()->artist() ); + trackInfo.insert( "duration", currentTrack->track()->duration() ); + trackInfo.insert( "track", currentTrack->track()->track() ); + + QJson::Serializer serializer; + bool ok; + json = serializer.serialize( trackInfo, &ok ); + Q_ASSERT( ok ); + } + + QxtWebPageEvent * e = new QxtWebPageEvent( event->sessionID, event->requestID, json ); + e->headers.insert( "Access-Control-Allow-Origin", "*" ); + e->contentType = "application/json"; + m_service->postEvent( e ); + } else { m_service->sendJsonError( event, "No such playback command." );