diff --git a/src/globalactionmanager.cpp b/src/globalactionmanager.cpp index 65ef3fba8..2f9d64279 100644 --- a/src/globalactionmanager.cpp +++ b/src/globalactionmanager.cpp @@ -18,6 +18,7 @@ #include "globalactionmanager.h" +#include "audio/audioengine.h" #include "utils/xspfloader.h" #include "sourcelist.h" #include "playlist/dynamic/GeneratorInterface.h" @@ -324,11 +325,15 @@ GlobalActionManager::doBookmark( const Tomahawk::playlist_ptr& pl, const Tomahaw connect( pl.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( showPlaylist() ) ); m_toShow = pl; - m_waitingToBookmark.clear(); // if nothing is playing, lets start this // TODO -// if( !AudioEngine::instance()->isPlaying() ) + if( !AudioEngine::instance()->isPlaying() ) { + connect( q.data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( waitingForResolved( bool ) ) ); + m_waitingToPlay = q; + } + + m_waitingToBookmark.clear(); } void @@ -342,3 +347,14 @@ GlobalActionManager::showPlaylist() m_toShow.clear(); } +void +GlobalActionManager::waitingForResolved( bool success ) +{ + if( success && !m_waitingToPlay.isNull() && !m_waitingToPlay->results().isEmpty() ) { // play it! + AudioEngine::instance()->playItem( AudioEngine::instance()->playlist(), m_waitingToPlay->results().first() ); + } + + m_waitingToPlay.clear(); +} + + diff --git a/src/globalactionmanager.h b/src/globalactionmanager.h index d038b066d..d4b94af37 100644 --- a/src/globalactionmanager.h +++ b/src/globalactionmanager.h @@ -34,6 +34,7 @@ public: public slots: bool parseTomahawkLink( const QString& link ); + void waitingForResolved( bool ); private slots: void bookmarkPlaylistCreated( const Tomahawk::playlist_ptr& pl ); @@ -50,8 +51,9 @@ private: bool handleSearchCommand(const QUrl& url ); bool handlePlayCommand(const QUrl& url ); - Tomahawk::query_ptr m_waitingToBookmark; Tomahawk::playlist_ptr m_toShow; + Tomahawk::query_ptr m_waitingToBookmark; + Tomahawk::query_ptr m_waitingToPlay; static GlobalActionManager* s_instance; };