From f924fd380cc7cb331212e30f9c3806ca655894ff Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser <muesli@gmail.com> Date: Wed, 14 Nov 2012 02:20:43 +0100 Subject: [PATCH] * Update FlexibleView's header when playlist gets changed. --- src/libtomahawk/playlist/FlexibleView.cpp | 28 ++++++++++++++++++++--- src/libtomahawk/playlist/FlexibleView.h | 6 ++++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/playlist/FlexibleView.cpp b/src/libtomahawk/playlist/FlexibleView.cpp index 0944aac71..b668398ae 100644 --- a/src/libtomahawk/playlist/FlexibleView.cpp +++ b/src/libtomahawk/playlist/FlexibleView.cpp @@ -24,6 +24,7 @@ #include "playlist/FlexibleHeader.h" #include "playlist/PlayableModel.h" +#include "playlist/PlaylistModel.h" #include "playlist/TrackView.h" #include "playlist/GridView.h" #include "playlist/PlaylistLargeItemDelegate.h" @@ -187,9 +188,21 @@ FlexibleView::setPlayableModel( PlayableModel* model ) m_detailedView->proxyModel()->sort( -1 ); m_gridView->proxyModel()->sort( -1 ); - m_header->setPixmap( m_pixmap ); - m_header->setCaption( model->title() ); - m_header->setDescription( model->description() ); + onModelChanged(); +} + + +void +FlexibleView::setPlaylistModel( PlaylistModel* model ) +{ + if ( m_model ) + { + disconnect( m_model, SIGNAL( changed() ), this, SLOT( onModelChanged() ) ); + } + + setPlayableModel( model ); + + connect( model, SIGNAL( changed() ), SLOT( onModelChanged() ), Qt::UniqueConnection ); } @@ -292,6 +305,15 @@ FlexibleView::setPixmap( const QPixmap& pixmap ) } +void +FlexibleView::onModelChanged() +{ + m_header->setPixmap( m_pixmap ); + m_header->setCaption( m_model->title() ); + m_header->setDescription( m_model->description() ); +} + + void FlexibleView::onWidgetDestroyed( QWidget* widget ) { diff --git a/src/libtomahawk/playlist/FlexibleView.h b/src/libtomahawk/playlist/FlexibleView.h index dbbdbb0ac..71591a2b3 100644 --- a/src/libtomahawk/playlist/FlexibleView.h +++ b/src/libtomahawk/playlist/FlexibleView.h @@ -28,6 +28,7 @@ class QStackedWidget; class GridView; class TrackView; class PlayableModel; +class PlaylistModel; class FlexibleHeader; class FlexibleViewInterface; @@ -62,8 +63,10 @@ public: void setDetailedView( TrackView* view ); void setGridView( GridView* view ); - void setPixmap( const QPixmap& pixmap ); void setPlayableModel( PlayableModel* model ); + void setPlaylistModel( PlaylistModel* model ); + + void setPixmap( const QPixmap& pixmap ); void setEmptyTip( const QString& tip ); public slots: @@ -75,6 +78,7 @@ signals: void destroyed( QWidget* widget ); private slots: + void onModelChanged(); void onWidgetDestroyed( QWidget* widget ); private: