From f0db24aa070b0270bdb31cb5ee733da31fb0e111 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Thu, 24 Mar 2011 10:55:55 -0400 Subject: [PATCH] only add tracks to a station if it is active try harder to not overlay spinner over text --- .../playlist/dynamic/DynamicView.cpp | 1 - .../dynamic/widgets/DynamicWidget.cpp | 23 +++++++++++-------- .../playlist/dynamic/widgets/DynamicWidget.h | 3 ++- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/DynamicView.cpp b/src/libtomahawk/playlist/dynamic/DynamicView.cpp index dffee69f1..05b2c9c9d 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicView.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicView.cpp @@ -144,7 +144,6 @@ DynamicView::onTrackCountChanged( unsigned int tracks ) overlay()->show(); } else { - m_working = false; overlay()->hide(); } } diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp index a6853cee3..75fc46351 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp @@ -50,6 +50,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget , m_layout( new QVBoxLayout ) , m_resolveOnNextLoad( false ) , m_seqRevLaunched( 0 ) + , m_activePlaylist( false ) , m_setup( 0 ) , m_runningOnDemand( false ) , m_controlsChanged( false ) @@ -95,7 +96,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget connect( m_controls, SIGNAL( controlsChanged() ), this, SLOT( controlsChanged() ), Qt::QueuedConnection ); connect( AudioEngine::instance(), SIGNAL( started( Tomahawk::result_ptr ) ), this, SLOT( trackStarted() ) ); - connect( AudioEngine::instance(), SIGNAL( playlistChanged( PlaylistInterface* ) ), this, SLOT( playlistStopped( PlaylistInterface* ) ) ); + connect( AudioEngine::instance(), SIGNAL( playlistChanged( PlaylistInterface* ) ), this, SLOT( playlistChanged( PlaylistInterface* ) ) ); } DynamicWidget::~DynamicWidget() @@ -214,15 +215,17 @@ DynamicWidget::layoutFloatingWidgets() } void -DynamicWidget::playlistStopped( PlaylistInterface* pl ) +DynamicWidget::playlistChanged( PlaylistInterface* pl ) { - if( pl == static_cast< PlaylistInterface* >( m_view->proxyModel() ) ) // same playlist, so don't stop - return; - - // user started playing something somewhere else, so give it a rest - if( m_runningOnDemand ) { - stopStation( false ); - m_model->clear(); + if( pl == static_cast< PlaylistInterface* >( m_view->proxyModel() ) ) { // same playlist + m_activePlaylist = true; + } else { + m_activePlaylist = false; + + // user started playing something somewhere else, so give it a rest + if( m_runningOnDemand ) { + stopStation( false ); + } } } @@ -257,7 +260,7 @@ DynamicWidget::stationFailed( const QString& msg ) void DynamicWidget::trackStarted() { - if( isVisible() && !m_playlist.isNull() && + if( m_activePlaylist && !m_playlist.isNull() && m_playlist->mode() == OnDemand && !m_runningOnDemand ) { startStation(); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h index 34ae1237f..441db1e13 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h @@ -91,7 +91,7 @@ public slots: void trackStarted(); void stationFailed( const QString& ); - void playlistStopped( PlaylistInterface* ); + void playlistChanged( PlaylistInterface* ); void tracksAdded(); private slots: @@ -110,6 +110,7 @@ private: QVBoxLayout* m_layout; bool m_resolveOnNextLoad; int m_seqRevLaunched; // if we shoot off multiple createRevision calls, we don'y want to set one of the middle ones + bool m_activePlaylist; // loading animation LoadingSpinner* m_loading;