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: