diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index a84769cfb..2d3f80b3b 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -90,7 +90,6 @@ ViewManager::ViewManager( QObject* parent ) , m_radioView( 0 ) , m_networkActivityWidget( 0 ) , m_currentPage( 0 ) - , m_stubWidget( 0 ) , m_loaded( false ) { s_instance = this; @@ -946,20 +945,26 @@ private: QWidget* m_widget; }; -ViewPage* ViewManager::stubWidget() const + +ViewPage* +ViewManager::dynamicPageWidget( const QString& pageName ) const { - return m_stubWidget; + return m_dynamicPages.value( pageName ); } -ViewPage* ViewManager::showStub() +ViewPage* +ViewManager::showDynamicPage( const QString& pageName ) { - if ( !m_stubWidget ) + tLog() << Q_FUNC_INFO << "pageName: " << pageName; + + //HACK: this should be initialized somewhere else + if ( !dynamicPageWidget( pageName ) ) { - m_stubWidget = new StubWidget( m_widget ); + m_dynamicPages.insert( pageName, new StubWidget( m_widget ) ); } - return show( m_stubWidget ); + return show( dynamicPageWidget( pageName ) ); } diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h index 8dd80c06c..95f1127df 100644 --- a/src/libtomahawk/ViewManager.h +++ b/src/libtomahawk/ViewManager.h @@ -98,7 +98,8 @@ public: Tomahawk::ViewPage* superCollectionView() const; Tomahawk::ViewPage* inboxWidget() const; Tomahawk::ViewPage* networkActivityWidget() const; - Tomahawk::ViewPage* stubWidget() const; + + Tomahawk::ViewPage* dynamicPageWidget( const QString& pageName ) const; InboxModel* inboxModel(); @@ -147,7 +148,7 @@ public slots: Tomahawk::ViewPage* showInboxPage(); Tomahawk::ViewPage* showNetworkActivityPage(); - Tomahawk::ViewPage* showStub(); + Tomahawk::ViewPage* showDynamicPage( const QString& pageName ); void showCurrentTrack(); @@ -205,7 +206,7 @@ private: InboxModel* m_inboxModel; NetworkActivityWidget* m_networkActivityWidget; - StubWidget* m_stubWidget; + QHash< QString, Tomahawk::ViewPage* > m_dynamicPages; QList< Tomahawk::collection_ptr > m_superCollections; diff --git a/src/tomahawk/sourcetree/SourcesModel.cpp b/src/tomahawk/sourcetree/SourcesModel.cpp index 958aa2f9e..e6c61eb8b 100644 --- a/src/tomahawk/sourcetree/SourcesModel.cpp +++ b/src/tomahawk/sourcetree/SourcesModel.cpp @@ -339,8 +339,9 @@ SourcesModel::appendGroups() GenericPageItem* stub = new GenericPageItem( this, browse, tr( "Stub page" ), ImageRegistry::instance()->icon( RESPATH "images/new-releases.svg" ), - boost::bind( &ViewManager::showStub, ViewManager::instance() ), - boost::bind( &ViewManager::stubWidget, ViewManager::instance() ) ); + boost::bind( &ViewManager::showDynamicPage, ViewManager::instance(), QString( "stub" )), + boost::bind( &ViewManager::dynamicPageWidget, ViewManager::instance(), QString( "stub" ) ) ); + stub->setSortValue( 7 );