From d7e3272613bf4c69c2dbccb61c231a5ae4bb291a Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Thu, 19 May 2011 15:43:37 -0400 Subject: [PATCH] Copy result if available when creating a link --- src/libtomahawk/globalactionmanager.cpp | 27 +++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/globalactionmanager.cpp b/src/libtomahawk/globalactionmanager.cpp index d44b28e8e..4f6e960db 100644 --- a/src/libtomahawk/globalactionmanager.cpp +++ b/src/libtomahawk/globalactionmanager.cpp @@ -28,6 +28,7 @@ #include "database/localcollection.h" #include "playlist/playlistview.h" #include "echonest/Playlist.h" +#include "album.h" #include #include @@ -59,12 +60,26 @@ QUrl GlobalActionManager::openLinkFromQuery( const Tomahawk::query_ptr& query ) const { QUrl link( "tomahawk://open/track/" ); - if( !query->track().isEmpty() ) - link.addQueryItem( "title", query->track() ); - if( !query->artist().isEmpty() ) - link.addQueryItem( "artist", query->artist() ); - if( !query->album().isEmpty() ) - link.addQueryItem( "album", query->album() ); + QString title, artist, album; + + if( !query->results().isEmpty() && !query->results().first().isNull() ) + { + title = query->results().first()->track(); + artist = query->results().first()->artist().isNull() ? QString() : query->results().first()->artist()->name(); + album = query->results().first()->album().isNull() ? QString() : query->results().first()->album()->name(); + } else + { + title = query->track(); + artist = query->artist(); + album = query->album(); + } + + if( !title.isEmpty() ) + link.addQueryItem( "title", title ); + if( !artist.isEmpty() ) + link.addQueryItem( "artist", artist ); + if( !album.isEmpty() ) + link.addQueryItem( "album", album ); return link; }