diff --git a/src/libtomahawk/CMakeLists.txt b/src/libtomahawk/CMakeLists.txt index af0f8be22..aff80c92d 100644 --- a/src/libtomahawk/CMakeLists.txt +++ b/src/libtomahawk/CMakeLists.txt @@ -139,7 +139,6 @@ set( libGuiSources widgets/HeaderLabel.cpp widgets/HistoryWidget.cpp widgets/ImageButton.cpp - widgets/NewReleasesWidget.cpp widgets/OverlayButton.cpp widgets/OverlayWidget.cpp widgets/PlayableCover.cpp @@ -372,7 +371,6 @@ ENDIF(LIBLASTFM_FOUND) set( libUI ${libUI} widgets/HeaderWidget.ui - widgets/NewReleasesWidget.ui viewpages/SearchViewPage.ui viewpages/SourceViewPage.ui viewpages/ArtistViewPage.ui diff --git a/src/libtomahawk/ViewManager.cpp b/src/libtomahawk/ViewManager.cpp index 4090a324f..acd68cb91 100644 --- a/src/libtomahawk/ViewManager.cpp +++ b/src/libtomahawk/ViewManager.cpp @@ -50,7 +50,6 @@ #include "viewpages/AlbumViewPage.h" #include "viewpages/TrackViewPage.h" -#include "widgets/NewReleasesWidget.h" #include "widgets/AnimatedSplitter.h" #include "utils/Logger.h" @@ -76,7 +75,6 @@ ViewManager::ViewManager( QObject* parent ) : QObject( parent ) , m_widget( new QWidget() ) , m_queue( 0 ) - , m_newReleasesWidget( 0 ) , m_inboxWidget( 0 ) , m_currentPage( 0 ) { @@ -104,7 +102,6 @@ ViewManager::ViewManager( QObject* parent ) ViewManager::~ViewManager() { - delete m_newReleasesWidget; delete m_inboxWidget; delete m_widget; } @@ -350,19 +347,6 @@ ViewManager::playlistInterfaceChanged( Tomahawk::playlistinterface_ptr interface } -Tomahawk::ViewPage* -ViewManager::showNewReleasesPage() -{ - if ( !m_newReleasesWidget ) - { - m_newReleasesWidget = new NewReleasesWidget(); - m_newReleasesWidget->fetchData(); - } - - return show( m_newReleasesWidget ); -} - - Tomahawk::ViewPage* ViewManager::showQueuePage() { @@ -659,13 +643,6 @@ ViewManager::showCurrentTrack() } -Tomahawk::ViewPage* -ViewManager::newReleasesWidget() const -{ - return m_newReleasesWidget; -} - - Tomahawk::ViewPage* ViewManager::inboxWidget() const { diff --git a/src/libtomahawk/ViewManager.h b/src/libtomahawk/ViewManager.h index 25447b284..7744f0e67 100644 --- a/src/libtomahawk/ViewManager.h +++ b/src/libtomahawk/ViewManager.h @@ -52,7 +52,6 @@ class TreeModel; class TrackView; class SourceInfoWidget; class TrackInfoWidget; -class NewReleasesWidget; class QPushButton; class InboxModel; @@ -82,9 +81,7 @@ public: Tomahawk::ViewPage* show( Tomahawk::ViewPage* page ); - Tomahawk::ViewPage* newReleasesWidget() const; Tomahawk::ViewPage* inboxWidget() const; - Tomahawk::ViewPage* dynamicPageWidget( const QString& pageName ) const; InboxModel* inboxModel(); @@ -120,7 +117,6 @@ signals: void viewPageAdded( const QString& pageName, Tomahawk::ViewPage* page, int sortValue ); public slots: - Tomahawk::ViewPage* showNewReleasesPage(); Tomahawk::ViewPage* showInboxPage(); Tomahawk::ViewPage* showQueuePage(); @@ -162,7 +158,6 @@ private: AnimatedSplitter* m_splitter; QueueView* m_queue; - NewReleasesWidget* m_newReleasesWidget; Tomahawk::ViewPage* m_inboxWidget; InboxModel* m_inboxModel; diff --git a/src/tomahawk/sourcetree/SourcesModel.cpp b/src/tomahawk/sourcetree/SourcesModel.cpp index a120b6224..175aa528d 100644 --- a/src/tomahawk/sourcetree/SourcesModel.cpp +++ b/src/tomahawk/sourcetree/SourcesModel.cpp @@ -312,17 +312,6 @@ SourcesModel::appendGroups() InboxItem* inbox = new InboxItem( this, m_browse ); inbox->setSortValue( 4 ); - // super collection -/* GenericPageItem* sc = new GenericPageItem( this, m_browse, tr( "SuperCollection" ), ImageRegistry::instance()->icon( RESPATH "images/supercollection.svg" ), - boost::bind( &ViewManager::showSuperCollection, ViewManager::instance() ), - boost::bind( &ViewManager::superCollectionView, ViewManager::instance() ) ); - sc->setSortValue( 5 );*/ - - GenericPageItem* newReleases = new GenericPageItem( this, m_browse, tr( "New Releases" ), ImageRegistry::instance()->icon( RESPATH "images/new-releases.svg" ), - boost::bind( &ViewManager::showNewReleasesPage, ViewManager::instance() ), - boost::bind( &ViewManager::newReleasesWidget, ViewManager::instance() ) ); - newReleases->setSortValue( 7 ); - m_collectionsGroup = new GroupItem( this, m_rootItem, tr( "Friends" ), 4 ); m_cloudGroup = new GroupItem( this, m_rootItem, tr( "Cloud Collections" ), 5 ); diff --git a/src/viewpages/CMakeLists.txt b/src/viewpages/CMakeLists.txt index 6b2882ef0..8530d9307 100644 --- a/src/viewpages/CMakeLists.txt +++ b/src/viewpages/CMakeLists.txt @@ -1,4 +1,3 @@ - file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") foreach(SUBDIRECTORY ${SUBDIRECTORIES}) if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt") diff --git a/src/libtomahawk/widgets/NewReleasesWidget.cpp b/src/viewpages/newreleases/NewReleasesWidget.cpp similarity index 97% rename from src/libtomahawk/widgets/NewReleasesWidget.cpp rename to src/viewpages/newreleases/NewReleasesWidget.cpp index da094f9df..9e22d4574 100644 --- a/src/libtomahawk/widgets/NewReleasesWidget.cpp +++ b/src/viewpages/newreleases/NewReleasesWidget.cpp @@ -25,17 +25,14 @@ #include "ViewManager.h" #include "SourceList.h" #include "TomahawkSettings.h" -#include "RecentPlaylistsModel.h" -#include "ChartDataLoader.h" +#include "Pipeline.h" #include "audio/AudioEngine.h" -#include "playlist/dynamic/GeneratorInterface.h" -#include "playlist/PlaylistModel.h" -#include "playlist/TreeProxyModel.h" #include "utils/TomahawkUtilsGui.h" #include "utils/Logger.h" -#include "Pipeline.h" #include "utils/AnimatedSpinner.h" +#include "widgets/ChartDataLoader.h" + #include #include #include @@ -46,6 +43,7 @@ #define HISTORY_RESOLVING_TIMEOUT 2500 using namespace Tomahawk; +using namespace Tomahawk::Widgets; static QString s_newReleasesIdentifier = QString( "NewReleasesWidget" ); @@ -85,6 +83,8 @@ NewReleasesWidget::NewReleasesWidget( QWidget* parent ) ui->breadCrumbLeft->setVisible( false ); m_spinner = new AnimatedSpinner( ui->albumsView ); m_spinner->fadeIn(); + + fetchData(); } @@ -169,7 +169,7 @@ NewReleasesWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData request case InfoSystem::InfoNewRelease: { - if( !returnedData.contains("type") ) + if ( !returnedData.contains("type") ) break; const QString type = returnedData["type"].toString(); if( !returnedData.contains(type) ) @@ -378,3 +378,16 @@ NewReleasesWidget::newReleasesLoaded( ChartDataLoader* loader, const QList< albu m_workers.remove( loader ); loader->deleteLater(); } + + +NewReleasesPage::NewReleasesPage( QWidget* parent ) +{ + Q_UNUSED( parent ) +} + + +NewReleasesPage::~NewReleasesPage() +{ +} + +Q_EXPORT_PLUGIN2( ViewPagePlugin, NewReleasesPage ) diff --git a/src/libtomahawk/widgets/NewReleasesWidget.h b/src/viewpages/newreleases/NewReleasesWidget.h similarity index 67% rename from src/libtomahawk/widgets/NewReleasesWidget.h rename to src/viewpages/newreleases/NewReleasesWidget.h index 4d5b45b3e..0a9b083d0 100644 --- a/src/libtomahawk/widgets/NewReleasesWidget.h +++ b/src/viewpages/newreleases/NewReleasesWidget.h @@ -1,7 +1,7 @@ /* === This file is part of Tomahawk Player - === * * Copyright 2012, Casey Link - * Copyright 2010-2011, Christian Muehlhaeuser + * Copyright 2010-2014, Christian Muehlhaeuser * Copyright 2011, Leo Franchi * Copyright 2011, Jeff Mitchell * @@ -19,28 +19,19 @@ * along with Tomahawk. If not, see . */ -#ifndef NEWRELEASESWIDGET_H -#define NEWRELEASESWIDGET_H +#ifndef TOMAHAWK_NEWRELEASESWIDGET_H +#define TOMAHAWK_NEWRELEASESWIDGET_H -#include "PlaylistInterface.h" -#include "infosystem/InfoSystem.h" -#include "ViewPage.h" - -#include "DllMacro.h" - -#include -#include -#include +#include "../ViewPageDllMacro.h" +#include "ViewPagePlugin.h" +#include "ViewPageLazyLoader.h" +class AnimatedSpinner; +class PlayableModel; class QSortFilterProxyModel; class QStandardItemModel; class QStandardItem; -class TreeModel; -class PlaylistModel; -class TreeProxyModel; -class AlbumModel; -class PlayableModel; -class AnimatedSpinner; + namespace Ui { class NewReleasesWidget; @@ -49,15 +40,18 @@ namespace Ui namespace Tomahawk { class ChartDataLoader; - class ChartsPlaylistInterface; - class ChartDataLoader; } +namespace Tomahawk +{ +namespace Widgets +{ + /** * \class - * \brief The tomahawk page that shows music charts. + * \brief The tomahawk page that shows new releases. */ -class DLLEXPORT NewReleasesWidget : public QWidget, public Tomahawk::ViewPage +class DLLEXPORT NewReleasesWidget : public QWidget { Q_OBJECT @@ -65,14 +59,8 @@ public: NewReleasesWidget( QWidget* parent = 0 ); ~NewReleasesWidget(); - virtual QWidget* widget() { return this; } - virtual Tomahawk::playlistinterface_ptr playlistInterface() const; - - virtual QString title() const { return tr( "New Releases" ); } - virtual QString description() const { return QString(); } - + Tomahawk::playlistinterface_ptr playlistInterface() const; virtual bool isBeingPlayed() const; - virtual bool jumpToCurrentTrack(); protected: @@ -92,11 +80,9 @@ private slots: void newReleasesLoaded( Tomahawk::ChartDataLoader*, const QList< Tomahawk::album_ptr >& ); private: - void setLeftViewArtists( TreeModel* artistModel ); void setLeftViewAlbums( PlayableModel* albumModel ); void setLeftViewTracks( PlaylistModel* trackModel ); - QStandardItem* parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data ); Ui::NewReleasesWidget *ui; Tomahawk::playlistinterface_ptr m_playlistInterface; @@ -116,7 +102,31 @@ private: QSet< QString > m_queuedFetches; AnimatedSpinner* m_spinner; bool m_loading; - friend class Tomahawk::ChartsPlaylistInterface; }; -#endif // NEWRELEASESWIDGET_H +const QString NEWRELEASES_VIEWPAGE_NAME = "newreleases"; + +class TOMAHAWK_VIEWPAGE_EXPORT NewReleasesPage : public Tomahawk::ViewPageLazyLoader< NewReleasesWidget > +{ + Q_OBJECT + Q_INTERFACES( Tomahawk::ViewPagePlugin ) + Q_PLUGIN_METADATA( IID "org.tomahawk-player.Player.ViewPagePlugin" ) + +public: + NewReleasesPage( QWidget* parent = 0 ); + virtual ~NewReleasesPage(); + + const QString defaultName() Q_DECL_OVERRIDE { return NEWRELEASES_VIEWPAGE_NAME; } + QString title() const Q_DECL_OVERRIDE { return tr( "New Releases" ); } + QString description() const Q_DECL_OVERRIDE { return QString(); } + + const QString pixmapPath() const Q_DECL_OVERRIDE { return ( RESPATH "images/new-releases.svg" ); } + + int sortValue() Q_DECL_OVERRIDE { return 5; } +}; + + +} // Widgets +} // Tomahawk + +#endif // TOMAHAWK_NEWRELEASESWIDGET_H diff --git a/src/libtomahawk/widgets/NewReleasesWidget.ui b/src/viewpages/newreleases/NewReleasesWidget.ui similarity index 100% rename from src/libtomahawk/widgets/NewReleasesWidget.ui rename to src/viewpages/newreleases/NewReleasesWidget.ui