diff --git a/src/libtomahawk/playlist/dynamic/DynamicModel.cpp b/src/libtomahawk/playlist/dynamic/DynamicModel.cpp index ac64b2848..5b3182525 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicModel.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicModel.cpp @@ -77,10 +77,11 @@ DynamicModel::newTrackGenerated( const Tomahawk::query_ptr& query ) } void -DynamicModel::stopOnDemand() +DynamicModel::stopOnDemand( bool stopPlaying ) { m_onDemandRunning = false; - AudioEngine::instance()->stop(); + if( stopPlaying ) + AudioEngine::instance()->stop(); disconnect( AudioEngine::instance(), SIGNAL( loading( Tomahawk::result_ptr ) ), this, SLOT( newTrackLoading() ) ); } diff --git a/src/libtomahawk/playlist/dynamic/DynamicModel.h b/src/libtomahawk/playlist/dynamic/DynamicModel.h index 2386d3fd2..53c9828ce 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicModel.h +++ b/src/libtomahawk/playlist/dynamic/DynamicModel.h @@ -37,7 +37,7 @@ public: virtual ~DynamicModel(); void startOnDemand(); - void stopOnDemand(); + void stopOnDemand( bool stopPlaying = true ); void changeStation(); void loadPlaylist( const dynplaylist_ptr& playlist ); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp index 98a802bae..42c065896 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp @@ -65,7 +65,7 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget m_layout->addWidget( m_view, 1 ); connect( m_model, SIGNAL( collapseFromTo( int, int ) ), m_view, SLOT( collapseEntries( int, int ) ) ); - connect( m_model, SIGNAL( trackGenerationFailure( QString ) ), m_view, SLOT( showMessage( QString ) ) ); + connect( m_model, SIGNAL( trackGenerationFailure( QString ) ), this, SLOT( stationFailed( QString ) ) ); m_setup = new DynamicSetupWidget( playlist, this ); @@ -227,6 +227,17 @@ DynamicWidget::generate( int num ) } } +void +DynamicWidget::stationFailed( const QString& msg ) +{ + m_view->showMessage( msg ); + + if( m_runningOnDemand ) { + stopStation( false ); + } +} + + void DynamicWidget::pausePressed() { @@ -249,13 +260,14 @@ DynamicWidget::playPressed() void -DynamicWidget::stopStation() +DynamicWidget::stopStation( bool stopPlaying ) { - m_model->stopOnDemand(); + m_model->stopOnDemand( stopPlaying ); m_runningOnDemand = false; // TODO until i add a qwidget interface QMetaObject::invokeMethod( m_steering, "fadeOut", Qt::DirectConnection ); + m_setup->fadeIn(); } void @@ -333,9 +345,6 @@ void DynamicWidget::generatorError( const QString& title, const QString& content ) { m_view->showMessageTimeout( title, content ); - - if( m_runningOnDemand ) - stopStation(); } void diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h index 30469c813..7db1a75c2 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h @@ -77,10 +77,11 @@ public slots: void playlistTypeChanged(QString); void startStation(); - void stopStation(); + void stopStation( bool stopPlaying = true ); void playPressed(); void pausePressed(); + void stationFailed( const QString& ); private slots: void generate( int = -1 );