diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp index aabfff2c1..197334459 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.cpp @@ -138,6 +138,7 @@ DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist ) disconnect( m_playlist.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ), this, SLOT(onRevisionLoaded( Tomahawk::DynamicPlaylistRevision) ) ); disconnect( m_playlist->generator().data(), SIGNAL( error( QString, QString ) ), this, SLOT( generatorError( QString, QString ) ) ); disconnect( m_playlist.data(), SIGNAL( deleted( Tomahawk::dynplaylist_ptr ) ), this, SLOT( onDeleted() ) ); + disconnect( m_playlist.data(), SIGNAL( changed() ), this, SLOT( onChanged() ) ); } @@ -165,6 +166,7 @@ DynamicWidget::loadDynamicPlaylist( const Tomahawk::dynplaylist_ptr& playlist ) connect( m_playlist.data(), SIGNAL( dynamicRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ), this, SLOT( onRevisionLoaded( Tomahawk::DynamicPlaylistRevision ) ) ); connect( m_playlist->generator().data(), SIGNAL( error( QString, QString ) ), this, SLOT( generatorError( QString, QString ) ) ); connect( m_playlist.data(), SIGNAL( deleted( Tomahawk::dynplaylist_ptr ) ), this, SLOT( onDeleted() ) ); + connect( m_playlist.data(), SIGNAL( changed() ), this, SLOT( onChanged() ) ); } @@ -418,3 +420,10 @@ DynamicWidget::onDeleted() emit destroyed( widget() ); deleteLater(); } + +void +DynamicWidget::onChanged() +{ + if( !m_playlist.isNull() ) + emit nameChanged( m_playlist->title() ); +} diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h index 6b8ef96e3..07a7b65b0 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicWidget.h @@ -95,6 +95,7 @@ public slots: void tracksAdded(); signals: + void nameChanged( const QString& name ); void descriptionChanged( const QString& caption ); void destroyed( QWidget* widget ); @@ -109,6 +110,7 @@ private slots: void layoutFloatingWidgets(); void onDeleted(); + void onChanged(); private: dynplaylist_ptr m_playlist; diff --git a/src/libtomahawk/playlist/playlistview.cpp b/src/libtomahawk/playlist/playlistview.cpp index a7d01d3f0..ae6bc4826 100644 --- a/src/libtomahawk/playlist/playlistview.cpp +++ b/src/libtomahawk/playlist/playlistview.cpp @@ -74,6 +74,7 @@ PlaylistView::setPlaylistModel( PlaylistModel* model ) connect( m_model, SIGNAL( trackCountChanged( unsigned int ) ), SLOT( onTrackCountChanged( unsigned int ) ) ); connect( m_model, SIGNAL( playlistDeleted() ), SLOT( onDeleted() ) ); + connect( m_model->playlist().data(), SIGNAL( changed() ), SLOT( onChanged() ) ); } @@ -181,3 +182,10 @@ PlaylistView::onDeleted() emit destroyed( widget() ); deleteLater(); } + +void +PlaylistView::onChanged() +{ + if ( m_model && !m_model->playlist().isNull() ) + emit nameChanged( m_model->playlist()->title() ); +} diff --git a/src/libtomahawk/playlist/playlistview.h b/src/libtomahawk/playlist/playlistview.h index f4cbc9c12..fe845d5b8 100644 --- a/src/libtomahawk/playlist/playlistview.h +++ b/src/libtomahawk/playlist/playlistview.h @@ -54,6 +54,7 @@ public: virtual bool jumpToCurrentTrack(); signals: + void nameChanged( const QString& title ); void destroyed( QWidget* widget ); protected: @@ -67,6 +68,7 @@ private slots: void deleteItems(); void onDeleted(); + void onChanged(); private: void setupMenus(); diff --git a/src/libtomahawk/viewmanager.cpp b/src/libtomahawk/viewmanager.cpp index e319f66ca..b6b610ec6 100644 --- a/src/libtomahawk/viewmanager.cpp +++ b/src/libtomahawk/viewmanager.cpp @@ -158,10 +158,10 @@ ViewManager::createPageForPlaylist( const playlist_ptr& pl ) PlaylistView* view = new PlaylistView(); PlaylistModel* model = new PlaylistModel(); + model->loadPlaylist( pl ); view->setPlaylistModel( model ); view->setFrameShape( QFrame::NoFrame ); view->setAttribute( Qt::WA_MacShowFocusRect, 0 ); - model->loadPlaylist( pl ); pl->resolve(); m_playlistViews.insert( pl, view ); @@ -626,10 +626,10 @@ ViewManager::setPage( ViewPage* page, bool trackHistory ) // if the signal exists (just to hide the qobject runtime warning...) if( obj->metaObject()->indexOfSignal( "descriptionChanged(QString)" ) > -1 ) connect( obj, SIGNAL( descriptionChanged( QString ) ), m_infobar, SLOT( setDescription( QString ) ), Qt::UniqueConnection ); - } - if ( QObject* obj = dynamic_cast< QObject* >( currentPage() ) ) - { - // if the signal exists (just to hide the qobject runtime warning...) + + if( obj->metaObject()->indexOfSignal( "nameChanged(QString)" ) > -1 ) + connect( obj, SIGNAL( nameChanged( QString ) ), m_infobar, SLOT( setCaption( QString ) ), Qt::UniqueConnection ); + if( obj->metaObject()->indexOfSignal( "destroyed(QWidget*)" ) > -1 ) connect( obj, SIGNAL( destroyed( QWidget* ) ), SLOT( onWidgetDestroyed( QWidget* ) ), Qt::UniqueConnection ); }