From be737a24f251f392c120c732e482e637643de86d Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Thu, 20 Oct 2011 17:23:58 -0400 Subject: [PATCH] Refresh stations preview whenever controls are changed --- .../dynamic/widgets/CollapsibleControls.cpp | 2 +- .../playlist/dynamic/widgets/CollapsibleControls.h | 2 +- .../playlist/dynamic/widgets/DynamicControlList.cpp | 4 ++-- .../playlist/dynamic/widgets/DynamicControlList.h | 2 +- .../playlist/dynamic/widgets/DynamicWidget.cpp | 13 ++++++++++--- .../playlist/dynamic/widgets/DynamicWidget.h | 2 +- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp index fb464a43e..042a46f3b 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp @@ -120,7 +120,7 @@ CollapsibleControls::init() m_layout->setCurrentWidget( m_summary ); connect( m_controls, SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ), SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ) ); - connect( m_controls, SIGNAL( controlsChanged() ), SIGNAL( controlsChanged() ) ); + connect( m_controls, SIGNAL( controlsChanged( bool ) ), SIGNAL( controlsChanged( bool ) ) ); setLayout( m_layout ); diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h index 31fc0d98e..e2c640121 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h @@ -49,7 +49,7 @@ public: virtual QSize sizeHint() const; signals: - void controlsChanged(); + void controlsChanged( bool added ); void controlChanged( const Tomahawk::dyncontrol_ptr& control ); private slots: diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp index b73e30bc2..4314fb616 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp @@ -156,7 +156,7 @@ DynamicControlList::addNewControl() connect( m_controls.last(), SIGNAL( changed() ), this, SLOT( controlChanged() ) ); m_layout->addItem( m_collapseLayout, m_layout->rowCount(), 0, 1, 4, Qt::AlignCenter ); - emit controlsChanged(); + emit controlsChanged( true ); } @@ -170,7 +170,7 @@ DynamicControlList::removeControl() m_generator->removeControl( w->control() ); delete w; - emit controlsChanged(); + emit controlsChanged( false ); } diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h index 1b38e989a..f012bc9ed 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h @@ -53,7 +53,7 @@ public: QList< DynamicControlWrapper* > controls() const { return m_controls; } signals: - void controlsChanged(); + void controlsChanged( bool added ); void controlChanged( const Tomahawk::dyncontrol_ptr& control ); void toggleCollapse(); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp index da2208ef0..4482a2389 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp @@ -95,7 +95,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget layoutFloatingWidgets(); connect( m_controls, SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ), this, SLOT( controlChanged( Tomahawk::dyncontrol_ptr ) ), Qt::QueuedConnection ); - connect( m_controls, SIGNAL( controlsChanged() ), this, SLOT( controlsChanged() ), Qt::QueuedConnection ); + connect( m_controls, SIGNAL( controlsChanged( bool ) ), this, SLOT( controlsChanged( bool ) ), Qt::QueuedConnection ); connect( AudioEngine::instance(), SIGNAL( started( Tomahawk::result_ptr ) ), this, SLOT( trackStarted() ) ); connect( AudioEngine::instance(), SIGNAL( playlistChanged( Tomahawk::PlaylistInterface* ) ), this, SLOT( playlistChanged( Tomahawk::PlaylistInterface* ) ) ); @@ -361,7 +361,7 @@ DynamicWidget::tracksGenerated( const QList< query_ptr >& queries ) void -DynamicWidget::controlsChanged() +DynamicWidget::controlsChanged( bool added ) { // controlsChanged() is emitted when a control is added or removed // in the case of addition, it's blank by default... so to avoid an error @@ -373,6 +373,9 @@ DynamicWidget::controlsChanged() m_playlist->createNewRevision(); m_seqRevLaunched++; + if ( !added ) + showPreview(); + emit descriptionChanged( m_playlist->generator()->sentenceSummary() ); } @@ -395,7 +398,11 @@ DynamicWidget::controlChanged( const Tomahawk::dyncontrol_ptr& control ) void DynamicWidget::showPreview() { - if( m_playlist->mode() == OnDemand && !m_runningOnDemand && m_model->rowCount( QModelIndex() ) == 0 ) { // if this is a not running station, preview matching tracks + if ( m_playlist->mode() == OnDemand && + !m_runningOnDemand ) + { + // if this is a not running station, preview matching tracks + m_model->clear(); generate( 20 ); // ask for more, we'll filter how many we actually want } } diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h index 841c8001c..8715aa84a 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h @@ -101,7 +101,7 @@ private slots: void tracksGenerated( const QList< Tomahawk::query_ptr>& queries ); void generatorError( const QString& title, const QString& content ); - void controlsChanged(); + void controlsChanged( bool added ); void controlChanged( const Tomahawk::dyncontrol_ptr& control ); void showPreview();