diff --git a/src/libtomahawk/playlist/dynamic/DynamicModel.cpp b/src/libtomahawk/playlist/dynamic/DynamicModel.cpp index 332134a7a..580252a0c 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicModel.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicModel.cpp @@ -112,7 +112,7 @@ DynamicModel::trackResolveFinished( bool success ) if( m_currentAttempts < 30 ) { m_playlist->generator()->fetchNext(); } else { - // TODO handle failure + emit trackGenerationFailure( tr( "Could not find a playable track.\n\nPlease change the filters and try again." ) ); } } } diff --git a/src/libtomahawk/playlist/dynamic/DynamicModel.h b/src/libtomahawk/playlist/dynamic/DynamicModel.h index 3259131ef..be8fa2817 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicModel.h +++ b/src/libtomahawk/playlist/dynamic/DynamicModel.h @@ -27,7 +27,7 @@ class StationModelItem; /** - * Extends PlaylistModel with support for handling StationModelItems + * Extends PlaylistModel with support for handling stations */ class DynamicModel : public PlaylistModel { @@ -45,6 +45,8 @@ public: signals: void collapseFromTo( int startRow, int num ); + void trackGenerationFailure( const QString& msg ); + private slots: void newTrackGenerated( const Tomahawk::query_ptr& query ); diff --git a/src/libtomahawk/playlist/dynamic/DynamicView.cpp b/src/libtomahawk/playlist/dynamic/DynamicView.cpp index b1ddf4f16..bb3e9b206 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicView.cpp +++ b/src/libtomahawk/playlist/dynamic/DynamicView.cpp @@ -78,6 +78,14 @@ DynamicView::showMessageTimeout( const QString& title, const QString& body ) overlay()->show( 5 ); } +void +DynamicView::showMessage(const QString& message) +{ + overlay()->setText( message ); + overlay()->show(); +} + + void DynamicView::onTrackCountChanged( unsigned int tracks ) { diff --git a/src/libtomahawk/playlist/dynamic/DynamicView.h b/src/libtomahawk/playlist/dynamic/DynamicView.h index adead115c..3d1593508 100644 --- a/src/libtomahawk/playlist/dynamic/DynamicView.h +++ b/src/libtomahawk/playlist/dynamic/DynamicView.h @@ -42,6 +42,7 @@ public: public slots: void showMessageTimeout( const QString& title, const QString& body ); + void showMessage( const QString& message ); // collapse and animate the transition // there MUST be a row *after* startRow + num. that is, you can't collapse diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp index 3e173d79c..894f694dd 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp @@ -112,7 +112,8 @@ DynamicControlWrapper::removeFromLayout() } -QToolButton* DynamicControlWrapper::initButton( QWidget* parent ) +QToolButton* +DynamicControlWrapper::initButton( QWidget* parent ) { QToolButton* btn = new QToolButton( parent ); btn->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed ); @@ -123,7 +124,8 @@ QToolButton* DynamicControlWrapper::initButton( QWidget* parent ) return btn; } -QWidget* DynamicControlWrapper::createDummy( QWidget* fromW, QWidget* parent ) +QWidget* +DynamicControlWrapper::createDummy( QWidget* fromW, QWidget* parent ) { QWidget* dummy = new QWidget( parent ); dummy->setContentsMargins( 0, 0, 0, 0 ); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp index c988090e0..e093bc633 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp @@ -90,8 +90,9 @@ DynamicWidget::DynamicWidget( const Tomahawk::dynplaylist_ptr& playlist, QWidget m_view->setModel( m_model ); m_view->setContentsMargins( 0, 0, 0, 0 ); m_layout->addWidget( m_view, 1 ); + connect( m_model, SIGNAL( collapseFromTo( int, int ) ), m_view, SLOT( collapseEntries( int, int ) ), Qt::QueuedConnection ); - + connect( m_model, SIGNAL( trackGenerationFailure( QString ) ), m_view, SLOT( showMessage( QString ) ) ); loadDynamicPlaylist( playlist ); m_layout->setContentsMargins( 0, 0, 0, 0 );