From dfc57b156fdcb9732b35eec393aa660262cf1d0d Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Thu, 3 Mar 2011 17:40:00 -0500 Subject: [PATCH] fix some station workflow issues --- .../playlist/dynamic/widgets/DynamicWidget.cpp | 11 ++++++++--- .../playlist/dynamic/widgets/DynamicWidget.h | 3 ++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp index ee6763db8..e7829a6bb 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp @@ -92,6 +92,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget connect( PlaylistManager::instance(), SIGNAL( playClicked() ), this, SLOT( playPressed() ) ); connect( PlaylistManager::instance(), SIGNAL( pauseClicked() ), this, SLOT( pausePressed() ) ); + connect( AudioEngine::instance(), SIGNAL( playlistChanged( PlaylistInterface* ) ), this, SLOT( playlistStopped( PlaylistInterface* ) ) ); } DynamicWidget::~DynamicWidget() @@ -207,18 +208,22 @@ DynamicWidget::layoutFloatingWidgets() } void -DynamicWidget::hideEvent( QHideEvent* ev ) +DynamicWidget::playlistStopped( 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(); } - QWidget::hideEvent( ev ); } void DynamicWidget::showEvent(QShowEvent* ) { - if( !m_playlist.isNull() ) { + if( !m_playlist.isNull() && !m_runningOnDemand ) { m_setup->fadeIn(); } } diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h index e8653b2b7..78e133708 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h @@ -67,7 +67,6 @@ public: virtual QSize sizeHint() const; virtual void resizeEvent( QResizeEvent* ); - virtual void hideEvent(QHideEvent* ); virtual void showEvent(QShowEvent* ); static void paintRoundedFilledRect( QPainter& p, QPalette& pal, QRect& r, qreal opacity = .95 ); @@ -90,6 +89,8 @@ public slots: void pausePressed(); void stationFailed( const QString& ); + void playlistStopped( PlaylistInterface* ); + private slots: void generate( int = -1 ); void tracksGenerated( const QList< Tomahawk::query_ptr>& queries );