1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-19 12:21:52 +02:00

Moved NewReleasesWidget into a separate viewpage plugin.

This commit is contained in:
Christian Muehlhaeuser
2014-10-12 14:11:55 +02:00
parent bba643a63d
commit 34dc326560
8 changed files with 63 additions and 82 deletions

View File

@@ -139,7 +139,6 @@ set( libGuiSources
widgets/HeaderLabel.cpp widgets/HeaderLabel.cpp
widgets/HistoryWidget.cpp widgets/HistoryWidget.cpp
widgets/ImageButton.cpp widgets/ImageButton.cpp
widgets/NewReleasesWidget.cpp
widgets/OverlayButton.cpp widgets/OverlayButton.cpp
widgets/OverlayWidget.cpp widgets/OverlayWidget.cpp
widgets/PlayableCover.cpp widgets/PlayableCover.cpp
@@ -372,7 +371,6 @@ ENDIF(LIBLASTFM_FOUND)
set( libUI ${libUI} set( libUI ${libUI}
widgets/HeaderWidget.ui widgets/HeaderWidget.ui
widgets/NewReleasesWidget.ui
viewpages/SearchViewPage.ui viewpages/SearchViewPage.ui
viewpages/SourceViewPage.ui viewpages/SourceViewPage.ui
viewpages/ArtistViewPage.ui viewpages/ArtistViewPage.ui

View File

@@ -50,7 +50,6 @@
#include "viewpages/AlbumViewPage.h" #include "viewpages/AlbumViewPage.h"
#include "viewpages/TrackViewPage.h" #include "viewpages/TrackViewPage.h"
#include "widgets/NewReleasesWidget.h"
#include "widgets/AnimatedSplitter.h" #include "widgets/AnimatedSplitter.h"
#include "utils/Logger.h" #include "utils/Logger.h"
@@ -76,7 +75,6 @@ ViewManager::ViewManager( QObject* parent )
: QObject( parent ) : QObject( parent )
, m_widget( new QWidget() ) , m_widget( new QWidget() )
, m_queue( 0 ) , m_queue( 0 )
, m_newReleasesWidget( 0 )
, m_inboxWidget( 0 ) , m_inboxWidget( 0 )
, m_currentPage( 0 ) , m_currentPage( 0 )
{ {
@@ -104,7 +102,6 @@ ViewManager::ViewManager( QObject* parent )
ViewManager::~ViewManager() ViewManager::~ViewManager()
{ {
delete m_newReleasesWidget;
delete m_inboxWidget; delete m_inboxWidget;
delete m_widget; 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* Tomahawk::ViewPage*
ViewManager::showQueuePage() ViewManager::showQueuePage()
{ {
@@ -659,13 +643,6 @@ ViewManager::showCurrentTrack()
} }
Tomahawk::ViewPage*
ViewManager::newReleasesWidget() const
{
return m_newReleasesWidget;
}
Tomahawk::ViewPage* Tomahawk::ViewPage*
ViewManager::inboxWidget() const ViewManager::inboxWidget() const
{ {

View File

@@ -52,7 +52,6 @@ class TreeModel;
class TrackView; class TrackView;
class SourceInfoWidget; class SourceInfoWidget;
class TrackInfoWidget; class TrackInfoWidget;
class NewReleasesWidget;
class QPushButton; class QPushButton;
class InboxModel; class InboxModel;
@@ -82,9 +81,7 @@ public:
Tomahawk::ViewPage* show( Tomahawk::ViewPage* page ); Tomahawk::ViewPage* show( Tomahawk::ViewPage* page );
Tomahawk::ViewPage* newReleasesWidget() const;
Tomahawk::ViewPage* inboxWidget() const; Tomahawk::ViewPage* inboxWidget() const;
Tomahawk::ViewPage* dynamicPageWidget( const QString& pageName ) const; Tomahawk::ViewPage* dynamicPageWidget( const QString& pageName ) const;
InboxModel* inboxModel(); InboxModel* inboxModel();
@@ -120,7 +117,6 @@ signals:
void viewPageAdded( const QString& pageName, Tomahawk::ViewPage* page, int sortValue ); void viewPageAdded( const QString& pageName, Tomahawk::ViewPage* page, int sortValue );
public slots: public slots:
Tomahawk::ViewPage* showNewReleasesPage();
Tomahawk::ViewPage* showInboxPage(); Tomahawk::ViewPage* showInboxPage();
Tomahawk::ViewPage* showQueuePage(); Tomahawk::ViewPage* showQueuePage();
@@ -162,7 +158,6 @@ private:
AnimatedSplitter* m_splitter; AnimatedSplitter* m_splitter;
QueueView* m_queue; QueueView* m_queue;
NewReleasesWidget* m_newReleasesWidget;
Tomahawk::ViewPage* m_inboxWidget; Tomahawk::ViewPage* m_inboxWidget;
InboxModel* m_inboxModel; InboxModel* m_inboxModel;

View File

@@ -312,17 +312,6 @@ SourcesModel::appendGroups()
InboxItem* inbox = new InboxItem( this, m_browse ); InboxItem* inbox = new InboxItem( this, m_browse );
inbox->setSortValue( 4 ); 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_collectionsGroup = new GroupItem( this, m_rootItem, tr( "Friends" ), 4 );
m_cloudGroup = new GroupItem( this, m_rootItem, tr( "Cloud Collections" ), 5 ); m_cloudGroup = new GroupItem( this, m_rootItem, tr( "Cloud Collections" ), 5 );

View File

@@ -1,4 +1,3 @@
file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*")
foreach(SUBDIRECTORY ${SUBDIRECTORIES}) foreach(SUBDIRECTORY ${SUBDIRECTORIES})
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt") if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt")

View File

@@ -25,17 +25,14 @@
#include "ViewManager.h" #include "ViewManager.h"
#include "SourceList.h" #include "SourceList.h"
#include "TomahawkSettings.h" #include "TomahawkSettings.h"
#include "RecentPlaylistsModel.h" #include "Pipeline.h"
#include "ChartDataLoader.h"
#include "audio/AudioEngine.h" #include "audio/AudioEngine.h"
#include "playlist/dynamic/GeneratorInterface.h"
#include "playlist/PlaylistModel.h"
#include "playlist/TreeProxyModel.h"
#include "utils/TomahawkUtilsGui.h" #include "utils/TomahawkUtilsGui.h"
#include "utils/Logger.h" #include "utils/Logger.h"
#include "Pipeline.h"
#include "utils/AnimatedSpinner.h" #include "utils/AnimatedSpinner.h"
#include "widgets/ChartDataLoader.h"
#include <QPainter> #include <QPainter>
#include <QStandardItemModel> #include <QStandardItemModel>
#include <QStandardItem> #include <QStandardItem>
@@ -46,6 +43,7 @@
#define HISTORY_RESOLVING_TIMEOUT 2500 #define HISTORY_RESOLVING_TIMEOUT 2500
using namespace Tomahawk; using namespace Tomahawk;
using namespace Tomahawk::Widgets;
static QString s_newReleasesIdentifier = QString( "NewReleasesWidget" ); static QString s_newReleasesIdentifier = QString( "NewReleasesWidget" );
@@ -85,6 +83,8 @@ NewReleasesWidget::NewReleasesWidget( QWidget* parent )
ui->breadCrumbLeft->setVisible( false ); ui->breadCrumbLeft->setVisible( false );
m_spinner = new AnimatedSpinner( ui->albumsView ); m_spinner = new AnimatedSpinner( ui->albumsView );
m_spinner->fadeIn(); m_spinner->fadeIn();
fetchData();
} }
@@ -169,7 +169,7 @@ NewReleasesWidget::infoSystemInfo( Tomahawk::InfoSystem::InfoRequestData request
case InfoSystem::InfoNewRelease: case InfoSystem::InfoNewRelease:
{ {
if( !returnedData.contains("type") ) if ( !returnedData.contains("type") )
break; break;
const QString type = returnedData["type"].toString(); const QString type = returnedData["type"].toString();
if( !returnedData.contains(type) ) if( !returnedData.contains(type) )
@@ -378,3 +378,16 @@ NewReleasesWidget::newReleasesLoaded( ChartDataLoader* loader, const QList< albu
m_workers.remove( loader ); m_workers.remove( loader );
loader->deleteLater(); loader->deleteLater();
} }
NewReleasesPage::NewReleasesPage( QWidget* parent )
{
Q_UNUSED( parent )
}
NewReleasesPage::~NewReleasesPage()
{
}
Q_EXPORT_PLUGIN2( ViewPagePlugin, NewReleasesPage )

View File

@@ -1,7 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
* *
* Copyright 2012, Casey Link <unnamedrambler@gmail.com> * Copyright 2012, Casey Link <unnamedrambler@gmail.com>
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * Copyright 2010-2014, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2011, Leo Franchi <lfranchi@kde.org> * Copyright 2011, Leo Franchi <lfranchi@kde.org>
* Copyright 2011, Jeff Mitchell <jeff@tomahawk-player.org> * Copyright 2011, Jeff Mitchell <jeff@tomahawk-player.org>
* *
@@ -19,28 +19,19 @@
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>. * along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifndef NEWRELEASESWIDGET_H #ifndef TOMAHAWK_NEWRELEASESWIDGET_H
#define NEWRELEASESWIDGET_H #define TOMAHAWK_NEWRELEASESWIDGET_H
#include "PlaylistInterface.h" #include "../ViewPageDllMacro.h"
#include "infosystem/InfoSystem.h" #include "ViewPagePlugin.h"
#include "ViewPage.h" #include "ViewPageLazyLoader.h"
#include "DllMacro.h"
#include <QWidget>
#include <QListWidgetItem>
#include <QStyledItemDelegate>
class AnimatedSpinner;
class PlayableModel;
class QSortFilterProxyModel; class QSortFilterProxyModel;
class QStandardItemModel; class QStandardItemModel;
class QStandardItem; class QStandardItem;
class TreeModel;
class PlaylistModel;
class TreeProxyModel;
class AlbumModel;
class PlayableModel;
class AnimatedSpinner;
namespace Ui namespace Ui
{ {
class NewReleasesWidget; class NewReleasesWidget;
@@ -49,15 +40,18 @@ namespace Ui
namespace Tomahawk namespace Tomahawk
{ {
class ChartDataLoader; class ChartDataLoader;
class ChartsPlaylistInterface;
class ChartDataLoader;
} }
namespace Tomahawk
{
namespace Widgets
{
/** /**
* \class * \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 Q_OBJECT
@@ -65,14 +59,8 @@ public:
NewReleasesWidget( QWidget* parent = 0 ); NewReleasesWidget( QWidget* parent = 0 );
~NewReleasesWidget(); ~NewReleasesWidget();
virtual QWidget* widget() { return this; } Tomahawk::playlistinterface_ptr playlistInterface() const;
virtual Tomahawk::playlistinterface_ptr playlistInterface() const;
virtual QString title() const { return tr( "New Releases" ); }
virtual QString description() const { return QString(); }
virtual bool isBeingPlayed() const; virtual bool isBeingPlayed() const;
virtual bool jumpToCurrentTrack(); virtual bool jumpToCurrentTrack();
protected: protected:
@@ -92,11 +80,9 @@ private slots:
void newReleasesLoaded( Tomahawk::ChartDataLoader*, const QList< Tomahawk::album_ptr >& ); void newReleasesLoaded( Tomahawk::ChartDataLoader*, const QList< Tomahawk::album_ptr >& );
private: private:
void setLeftViewArtists( TreeModel* artistModel );
void setLeftViewAlbums( PlayableModel* albumModel ); void setLeftViewAlbums( PlayableModel* albumModel );
void setLeftViewTracks( PlaylistModel* trackModel ); void setLeftViewTracks( PlaylistModel* trackModel );
QStandardItem* parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data ); QStandardItem* parseNode( QStandardItem* parentItem, const QString &label, const QVariant &data );
Ui::NewReleasesWidget *ui; Ui::NewReleasesWidget *ui;
Tomahawk::playlistinterface_ptr m_playlistInterface; Tomahawk::playlistinterface_ptr m_playlistInterface;
@@ -116,7 +102,31 @@ private:
QSet< QString > m_queuedFetches; QSet< QString > m_queuedFetches;
AnimatedSpinner* m_spinner; AnimatedSpinner* m_spinner;
bool m_loading; 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