diff --git a/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.cpp b/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.cpp index aad9fdbdf..b50b22a16 100644 --- a/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.cpp +++ b/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.cpp @@ -33,6 +33,8 @@ #include #include +#include + using namespace Tomahawk::InfoSystem; static QString @@ -47,7 +49,7 @@ LastFmPlugin::LastFmPlugin() : InfoPlugin() , m_scrobbler( 0 ) { - m_supportedGetTypes << InfoAlbumCoverArt << InfoArtistImages << InfoArtistSimilars << InfoArtistSongs << InfoChartArtists << InfoChartTracks; + m_supportedGetTypes << InfoAlbumCoverArt << InfoArtistImages << InfoArtistSimilars << InfoArtistSongs << InfoChartArtists << InfoChartTracks << InfoChartCapabilities; m_supportedPushTypes << InfoSubmitScrobble << InfoSubmitNowPlaying << InfoLove << InfoUnLove; /* @@ -155,7 +157,9 @@ LastFmPlugin::getInfo( uint requestId, Tomahawk::InfoSystem::InfoRequestData req case InfoChartTracks: fetchChartTracks( requestId, requestData ); break; - + case InfoChartCapabilities: + fetchChartCapabilities( requestId, requestData ); + break; default: dataError( requestId, requestData ); } @@ -345,6 +349,20 @@ LastFmPlugin::fetchChartTracks( uint requestId, Tomahawk::InfoSystem::InfoReques } +void +LastFmPlugin::fetchChartCapabilities( uint requestId, Tomahawk::InfoSystem::InfoRequestData requestData ) +{ + if ( !requestData.input.canConvert< Tomahawk::InfoSystem::InfoCriteriaHash >() ) + { + dataError( requestId, requestData ); + return; + } + InfoCriteriaHash hash = requestData.input.value< Tomahawk::InfoSystem::InfoCriteriaHash >(); + Tomahawk::InfoSystem::InfoCriteriaHash criteria; + + emit getCachedInfo( requestId, criteria, 2419200000, requestData ); +} + void LastFmPlugin::fetchCoverArt( uint requestId, Tomahawk::InfoSystem::InfoRequestData requestData ) { @@ -440,6 +458,27 @@ LastFmPlugin::notInCacheSlot( uint requestId, QHash criteria, return; } + case InfoChartCapabilities: + { + tDebug() << "LastfmPlugin: InfoChartCapabilities not in cache, fetching"; + QString json("{'Last.fm': {'Tracks': ['Top Tracks','Hyped Tracks','Most Loved Tracks']," + "'Artists': ['Top Artists', 'Hyped Artists']}}"); + json.replace("'", "\""); + QJson::Parser parser; + bool ok = false; + QVariantMap result = parser.parse (json.toUtf8(), &ok).toMap(); + if(!ok) { + tDebug() << "Lastfm Plugin: parsing json failed"; + return; + } + emit info( + requestId, + requestData, + result + ); + return; + } + case InfoArtistSimilars: { lastfm::Artist a( criteria["artist"] ); diff --git a/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.h b/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.h index c8da91a73..11c4fffc8 100644 --- a/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.h +++ b/src/libtomahawk/infosystem/infoplugins/generic/lastfmplugin.h @@ -70,6 +70,7 @@ private: void fetchTopTracks( uint requestId, Tomahawk::InfoSystem::InfoRequestData requestData ); void fetchChartArtists( uint requestId, Tomahawk::InfoSystem::InfoRequestData requestData ); void fetchChartTracks( uint requestId, Tomahawk::InfoSystem::InfoRequestData requestData ); + void fetchChartCapabilities( uint requestId, Tomahawk::InfoSystem::InfoRequestData requestData ); void createScrobbler(); void nowPlaying( const QVariant &input );