mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-01 03:40:16 +02:00
TWK-393: Play immediately when dropping something onto audiocontrols
This commit is contained in:
@@ -538,6 +538,7 @@ AudioControls::dropEvent( QDropEvent* e )
|
|||||||
if ( DropJob::acceptsMimeData( e->mimeData() ) )
|
if ( DropJob::acceptsMimeData( e->mimeData() ) )
|
||||||
{
|
{
|
||||||
DropJob *dj = new DropJob();
|
DropJob *dj = new DropJob();
|
||||||
|
dj->setDropAction( DropJob::Append );
|
||||||
connect( dj, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
|
connect( dj, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( droppedTracks( QList<Tomahawk::query_ptr> ) ) );
|
||||||
dj->tracksFromMimeData( e->mimeData() );
|
dj->tracksFromMimeData( e->mimeData() );
|
||||||
|
|
||||||
@@ -551,8 +552,8 @@ AudioControls::droppedTracks( QList< query_ptr > tracks )
|
|||||||
{
|
{
|
||||||
if ( !tracks.isEmpty() )
|
if ( !tracks.isEmpty() )
|
||||||
{
|
{
|
||||||
// queue and play the first if nothign is playing
|
// queue and play the first no matter what
|
||||||
GlobalActionManager::instance()->handleOpenTrack( tracks.first() );
|
GlobalActionManager::instance()->handlePlayTrack( tracks.first() );
|
||||||
|
|
||||||
// just queue the rest
|
// just queue the rest
|
||||||
for ( int i = 1; i < tracks.size(); i++ )
|
for ( int i = 1; i < tracks.size(); i++ )
|
||||||
|
@@ -363,6 +363,13 @@ GlobalActionManager::handleOpenTrack ( const query_ptr& q )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
GlobalActionManager::handlePlayTrack( const query_ptr& qry )
|
||||||
|
{
|
||||||
|
playNow( qry );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
GlobalActionManager::handleQueueCommand( const QUrl& url )
|
GlobalActionManager::handleQueueCommand( const QUrl& url )
|
||||||
@@ -697,11 +704,8 @@ GlobalActionManager::handlePlayCommand( const QUrl& url )
|
|||||||
query_ptr q = Query::get( artist, title, album );
|
query_ptr q = Query::get( artist, title, album );
|
||||||
if( !urlStr.isEmpty() )
|
if( !urlStr.isEmpty() )
|
||||||
q->setResultHint( urlStr );
|
q->setResultHint( urlStr );
|
||||||
Pipeline::instance()->resolve( q, true );
|
|
||||||
|
|
||||||
m_waitingToPlay = q;
|
|
||||||
connect( q.data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( waitingForResolved( bool ) ) );
|
|
||||||
|
|
||||||
|
playNow( q );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -717,14 +721,25 @@ GlobalActionManager::playSpotify( const QUrl& url )
|
|||||||
|
|
||||||
QString spotifyUrl = url.hasQueryItem( "spotifyURI" ) ? url.queryItemValue( "spotifyURI" ) : url.queryItemValue( "spotifyURL" );
|
QString spotifyUrl = url.hasQueryItem( "spotifyURI" ) ? url.queryItemValue( "spotifyURI" ) : url.queryItemValue( "spotifyURL" );
|
||||||
SpotifyParser* p = new SpotifyParser( spotifyUrl, this );
|
SpotifyParser* p = new SpotifyParser( spotifyUrl, this );
|
||||||
connect( p, SIGNAL( track( Tomahawk::query_ptr ) ), this, SLOT( playNow( Tomahawk::query_ptr ) ) );
|
connect( p, SIGNAL( track( Tomahawk::query_ptr ) ), this, SLOT( playOrQueueNow( Tomahawk::query_ptr ) ) );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GlobalActionManager::playNow( const query_ptr& q )
|
GlobalActionManager::playNow( const query_ptr& q )
|
||||||
|
{
|
||||||
|
|
||||||
|
Pipeline::instance()->resolve( q, true );
|
||||||
|
|
||||||
|
m_waitingToPlay = q;
|
||||||
|
q->setProperty( "playNow", true );
|
||||||
|
connect( q.data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( waitingForResolved( bool ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
GlobalActionManager::playOrQueueNow( const query_ptr& q )
|
||||||
{
|
{
|
||||||
Pipeline::instance()->resolve( q, true );
|
Pipeline::instance()->resolve( q, true );
|
||||||
|
|
||||||
@@ -743,7 +758,7 @@ GlobalActionManager::playRdio( const QUrl& url )
|
|||||||
QString rdioUrl = url.hasQueryItem( "rdioURI" ) ? url.queryItemValue( "spotifyURI" ) : url.queryItemValue( "rdioURL" );
|
QString rdioUrl = url.hasQueryItem( "rdioURI" ) ? url.queryItemValue( "spotifyURI" ) : url.queryItemValue( "rdioURL" );
|
||||||
RdioParser* p = new RdioParser( this );
|
RdioParser* p = new RdioParser( this );
|
||||||
p->parse( rdioUrl );
|
p->parse( rdioUrl );
|
||||||
connect( p, SIGNAL( track( Tomahawk::query_ptr ) ), this, SLOT( playNow( Tomahawk::query_ptr ) ) );
|
connect( p, SIGNAL( track( Tomahawk::query_ptr ) ), this, SLOT( playOrQueueNow( Tomahawk::query_ptr ) ) );
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -921,7 +936,17 @@ GlobalActionManager::waitingForResolved( bool /* success */ )
|
|||||||
{
|
{
|
||||||
// play it!
|
// play it!
|
||||||
// AudioEngine::instance()->playItem( AudioEngine::instance()->playlist(), m_waitingToPlay->results().first() );
|
// AudioEngine::instance()->playItem( AudioEngine::instance()->playlist(), m_waitingToPlay->results().first() );
|
||||||
AudioEngine::instance()->play();
|
if ( sender() && sender()->property( "playNow" ).toBool() )
|
||||||
|
{
|
||||||
|
if ( AudioEngine::instance()->playlist() )
|
||||||
|
AudioEngine::instance()->playItem( AudioEngine::instance()->playlist(), m_waitingToPlay->results().first() );
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ViewManager::instance()->queue()->model()->append( m_waitingToPlay );
|
||||||
|
AudioEngine::instance()->play();
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
AudioEngine::instance()->play();
|
||||||
|
|
||||||
m_waitingToPlay.clear();
|
m_waitingToPlay.clear();
|
||||||
}
|
}
|
||||||
|
@@ -64,6 +64,7 @@ public slots:
|
|||||||
Tomahawk::dynplaylist_ptr loadDynamicPlaylist( const QUrl& url, bool station );
|
Tomahawk::dynplaylist_ptr loadDynamicPlaylist( const QUrl& url, bool station );
|
||||||
|
|
||||||
void handleOpenTrack( const Tomahawk::query_ptr& qry );
|
void handleOpenTrack( const Tomahawk::query_ptr& qry );
|
||||||
|
void handlePlayTrack( const Tomahawk::query_ptr& qry );
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void shortLinkReady( QUrl longUrl, QUrl shortUrl ) const;
|
void shortLinkReady( QUrl longUrl, QUrl shortUrl ) const;
|
||||||
@@ -77,6 +78,7 @@ private slots:
|
|||||||
|
|
||||||
void xspfCreated( const QByteArray& xspf );
|
void xspfCreated( const QByteArray& xspf );
|
||||||
|
|
||||||
|
void playOrQueueNow( const Tomahawk::query_ptr& );
|
||||||
void playNow( const Tomahawk::query_ptr& );
|
void playNow( const Tomahawk::query_ptr& );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Reference in New Issue
Block a user