diff --git a/src/libtomahawk-widgets/CMakeLists.txt b/src/libtomahawk-widgets/CMakeLists.txt index e635059d2..6b94e218e 100644 --- a/src/libtomahawk-widgets/CMakeLists.txt +++ b/src/libtomahawk-widgets/CMakeLists.txt @@ -4,22 +4,16 @@ set(TOMAHAWK_WIDGETS_LIBRARY_TARGET tomahawk-widgets) list(APPEND ${TOMAHAWK_WIDGETS_LIBRARY_TARGET}_SOURCES PlaylistDelegate.cpp PlaylistWidget.cpp - - # ViewPages - NetworkActivityWidget.cpp - NetworkActivityWorker.cpp SocialPlaylistWidget.cpp ) list(APPEND ${TOMAHAWK_WIDGETS_LIBRARY_TARGET}_UI - NetworkActivityWidget.ui SocialPlaylistWidget.ui ) tomahawk_add_library(${TOMAHAWK_WIDGETS_LIBRARY_TARGET} SOURCES ${${TOMAHAWK_WIDGETS_LIBRARY_TARGET}_SOURCES} UI ${${TOMAHAWK_WIDGETS_LIBRARY_TARGET}_UI} - QT5_MODULES Concurrent EXPORT TomahawkLibraryDepends VERSION ${TOMAHAWK_VERSION_SHORT} ) diff --git a/src/libtomahawk/ViewPageLazyLoader.h b/src/libtomahawk/ViewPageLazyLoader.h index 7a6ff41d0..45c6b14f7 100644 --- a/src/libtomahawk/ViewPageLazyLoader.h +++ b/src/libtomahawk/ViewPageLazyLoader.h @@ -35,11 +35,13 @@ public: { } + virtual ~ViewPageLazyLoader() { delete m_widget; } + virtual T* widget() { if( !m_widget ) @@ -49,6 +51,32 @@ public: } + virtual playlistinterface_ptr playlistInterface() const + { + if( m_widget ) + return m_widget->playlistInterface(); + + return playlistinterface_ptr(); + } + + + virtual bool isBeingPlayed() const + { + if( m_widget && m_widget->isBeingPlayed() ) + return true; + + return false; + } + + + virtual bool jumpToCurrentTrack() + { + if( m_widget && m_widget->jumpToCurrentTrack() ) + return true; + + return false; + } + protected: T* m_widget; }; diff --git a/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp b/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp index 96fa9be67..c1934e6b1 100644 --- a/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp +++ b/src/libtomahawk/database/DatabaseCommand_CreateDynamicPlaylist.cpp @@ -29,10 +29,6 @@ #include "SourceList.h" #include "TomahawkSqlQuery.h" -#ifndef ENABLE_HEADLESS - #include "ViewManager.h" -#endif - #include #include diff --git a/src/libtomahawk/database/DatabaseCommand_ShareTrack.cpp b/src/libtomahawk/database/DatabaseCommand_ShareTrack.cpp index 6e0d630f3..f812a0eeb 100644 --- a/src/libtomahawk/database/DatabaseCommand_ShareTrack.cpp +++ b/src/libtomahawk/database/DatabaseCommand_ShareTrack.cpp @@ -28,7 +28,6 @@ #include "Database.h" #include "DatabaseImpl.h" #include "PlaylistEntry.h" -#include "ViewManager.h" namespace Tomahawk { diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 57636517c..93b81f42e 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -720,10 +720,6 @@ defaultPixmap( ImageType type, ImageMode mode, const QSize& size ) pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/outbox.svg", size ); break; - case NetworkActivity: - pixmap = ImageRegistry::instance()->pixmap( RESPATH "images/network-activity.svg", size ); - break; - default: break; } diff --git a/src/tomahawk/sourcetree/SourcesModel.cpp b/src/tomahawk/sourcetree/SourcesModel.cpp index 1ee0e2a8f..09af4c451 100644 --- a/src/tomahawk/sourcetree/SourcesModel.cpp +++ b/src/tomahawk/sourcetree/SourcesModel.cpp @@ -22,8 +22,6 @@ #include "../../viewpages/dashboard/Dashboard.h" -#include - #include "sourcetree/items/ScriptCollectionItem.h" #include "sourcetree/items/SourceTreeItem.h" #include "sourcetree/items/SourceItem.h" @@ -340,13 +338,6 @@ SourcesModel::appendGroups() endInsertRows(); - ViewManager::instance()->addDynamicPage("network_activity", - tr( "Network Activity" ), - TomahawkUtils::defaultPixmap( TomahawkUtils::NetworkActivity, TomahawkUtils::Original ), - boost::lambda::bind( boost::lambda::new_ptr< Tomahawk::Widgets::NetworkActivityWidget >() ), - 2 - ); - QHash< QString, ViewPagePlugin* > plugins = Tomahawk::Utils::PluginLoader( "viewpage" ).loadPlugins< ViewPagePlugin >(); foreach ( ViewPagePlugin* plugin, plugins.values() ) { diff --git a/src/viewpages/dashboard/Dashboard.cpp b/src/viewpages/dashboard/Dashboard.cpp index 0bef6aa98..8703f5aab 100644 --- a/src/viewpages/dashboard/Dashboard.cpp +++ b/src/viewpages/dashboard/Dashboard.cpp @@ -200,20 +200,20 @@ DashboardWidget::~DashboardWidget() } -Tomahawk::playlistinterface_ptr -Dashboard::playlistInterface() const +playlistinterface_ptr +DashboardWidget::playlistInterface() const { - return m_widget->m_playlistInterface; + return m_playlistInterface; } bool -Dashboard::jumpToCurrentTrack() +DashboardWidget::jumpToCurrentTrack() { - if ( m_widget->ui->tracksView->jumpToCurrentTrack() ) + if ( ui->tracksView->jumpToCurrentTrack() ) return true; - if ( m_widget->ui->additionsView->jumpToCurrentTrack() ) + if ( ui->additionsView->jumpToCurrentTrack() ) return true; return false; @@ -221,12 +221,12 @@ Dashboard::jumpToCurrentTrack() bool -Dashboard::isBeingPlayed() const +DashboardWidget::isBeingPlayed() const { - if ( m_widget->ui->additionsView->isBeingPlayed() ) + if ( ui->additionsView->isBeingPlayed() ) return true; - return AudioEngine::instance()->currentTrackPlaylist() == m_widget->ui->tracksView->playlistInterface(); + return AudioEngine::instance()->currentTrackPlaylist() == ui->tracksView->playlistInterface(); } diff --git a/src/viewpages/dashboard/Dashboard.h b/src/viewpages/dashboard/Dashboard.h index 7cfb341c2..e1de1ffb2 100644 --- a/src/viewpages/dashboard/Dashboard.h +++ b/src/viewpages/dashboard/Dashboard.h @@ -61,6 +61,10 @@ public: DashboardWidget( QWidget* parent = 0 ); virtual ~DashboardWidget(); + virtual bool isBeingPlayed() const; + virtual playlistinterface_ptr playlistInterface() const; + virtual bool jumpToCurrentTrack(); + public slots: void updatePlaylists(); void updateRecentAdditions(); @@ -92,8 +96,6 @@ public: Dashboard( QWidget* parent = 0 ); virtual ~Dashboard(); - virtual Tomahawk::playlistinterface_ptr playlistInterface() const; - virtual const QString defaultName() { return DASHBOARD_VIEWPAGE_NAME; } virtual QString title() const { return tr( "Dashboard" ); } virtual QString description() const { return tr( "An overview of your recent activity" ); } @@ -102,9 +104,6 @@ public: virtual int sortValue() { return 1; } virtual bool showInfoBar() const { return true; } - virtual bool isBeingPlayed() const; - - virtual bool jumpToCurrentTrack(); }; diff --git a/src/viewpages/networkactivity/CMakeLists.txt b/src/viewpages/networkactivity/CMakeLists.txt new file mode 100644 index 000000000..263451d70 --- /dev/null +++ b/src/viewpages/networkactivity/CMakeLists.txt @@ -0,0 +1,13 @@ +tomahawk_add_plugin(networkactivity + TYPE viewpage + EXPORT_MACRO TOMAHAWK_VIEWPAGE_EXPORT_PRO + SOURCES + NetworkActivity.cpp + NetworkActivityWidget.cpp + NetworkActivityWorker.cpp + UI + NetworkActivityWidget.ui + QT5_MODULES Concurrent + LINK_LIBRARIES + tomahawk-widgets +) diff --git a/src/viewpages/networkactivity/NetworkActivity.cpp b/src/viewpages/networkactivity/NetworkActivity.cpp new file mode 100644 index 000000000..b3e8a4c91 --- /dev/null +++ b/src/viewpages/networkactivity/NetworkActivity.cpp @@ -0,0 +1,21 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2013, Uwe L. Korn + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#include "NetworkActivity.h" + +Q_EXPORT_PLUGIN2( ViewPagePlugin, Tomahawk::Widgets::NetworkActivity ) diff --git a/src/viewpages/networkactivity/NetworkActivity.h b/src/viewpages/networkactivity/NetworkActivity.h new file mode 100644 index 000000000..8c1f42244 --- /dev/null +++ b/src/viewpages/networkactivity/NetworkActivity.h @@ -0,0 +1,68 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2013, Uwe L. Korn + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#ifndef NETWORKACTIVITY_H +#define NETWORKACTIVITY_H + +#include "NetworkActivityWidget.h" + +#include "ViewPage.h" +#include "ViewPageLazyLoader.h" + +#include "../ViewPageDllMacro.h" + +class AnimatedSpinner; +class PlaylistModel; +class QModelIndex; +class QStandardItemModel; +class QSortFilterProxyModel; +namespace Ui +{ + class NetworkActivityWidget; +} + +namespace Tomahawk +{ +namespace Widgets +{ + +class NetworkActivityWidgetPrivate; + +class TOMAHAWK_VIEWPAGE_EXPORT NetworkActivity : public Tomahawk::ViewPageLazyLoader< NetworkActivityWidget > +{ +Q_OBJECT +Q_INTERFACES( Tomahawk::ViewPagePlugin ) + +public: + NetworkActivity() {} + virtual ~NetworkActivity() {} + + virtual const QString defaultName() { return QLatin1String( "networkactivity" ); } + virtual QString title() const { return tr( "Network Activity" ); } + virtual QString description() const { return tr( "Listening activity among your friends" ); } + virtual const QString pixmapPath() const { return ( RESPATH "images/network-activity.svg" ); } + virtual bool showInfoBar() const { return true; } + + virtual int sortValue() { return 2; } +}; + +} // Widgets + +} // Tomahawk + +#endif // NETWORKACTIVITY_H diff --git a/src/libtomahawk-widgets/NetworkActivityWidget.cpp b/src/viewpages/networkactivity/NetworkActivityWidget.cpp similarity index 98% rename from src/libtomahawk-widgets/NetworkActivityWidget.cpp rename to src/viewpages/networkactivity/NetworkActivityWidget.cpp index 2d335a1b3..4c5ce4cf8 100644 --- a/src/libtomahawk-widgets/NetworkActivityWidget.cpp +++ b/src/viewpages/networkactivity/NetworkActivityWidget.cpp @@ -18,6 +18,8 @@ #include "NetworkActivityWidget_p.h" +#include "libtomahawk-widgets/PlaylistDelegate.h" + #include "audio/AudioEngine.h" #include "database/Database.h" #include "database/DatabaseCommand_NetworkCharts.h" @@ -38,7 +40,6 @@ #include "widgets/RecentlyPlayedPlaylistsModel.h" #include "MetaPlaylistInterface.h" #include "Pipeline.h" -#include "PlaylistDelegate.h" #include "ViewManager.h" #include @@ -275,15 +276,6 @@ NetworkActivityWidget::playlistInterface() const } -QPixmap -NetworkActivityWidget::pixmap() const -{ - return TomahawkUtils::defaultPixmap( TomahawkUtils::NetworkActivity, - TomahawkUtils::Original, - TomahawkUtils::DpiScaler::scaled( this, 80, 80 ) ); -} - - bool NetworkActivityWidget::isBeingPlayed() const { diff --git a/src/libtomahawk-widgets/NetworkActivityWidget.h b/src/viewpages/networkactivity/NetworkActivityWidget.h similarity index 86% rename from src/libtomahawk-widgets/NetworkActivityWidget.h rename to src/viewpages/networkactivity/NetworkActivityWidget.h index 93750833e..b404c5cba 100644 --- a/src/libtomahawk-widgets/NetworkActivityWidget.h +++ b/src/viewpages/networkactivity/NetworkActivityWidget.h @@ -21,7 +21,7 @@ #include "ViewPage.h" -#include "WidgetsDllMacro.h" +#include "../ViewPageDllMacro.h" class AnimatedSpinner; class PlaylistModel; @@ -40,7 +40,7 @@ namespace Widgets class NetworkActivityWidgetPrivate; -class TOMAHAWK_WIDGETS_EXPORT NetworkActivityWidget : public QWidget, public Tomahawk::ViewPage +class TOMAHAWK_VIEWPAGE_EXPORT NetworkActivityWidget : public QWidget { Q_OBJECT public: @@ -57,22 +57,15 @@ public: NetworkActivityWidget(QWidget* parent = 0); ~NetworkActivityWidget(); - virtual QWidget* widget() { return this; } - virtual Tomahawk::playlistinterface_ptr playlistInterface() const; - - virtual QString title() const { return tr( "Network Activity" ); } - virtual QString description() const { return QString("Listening activity among your friends"); } - virtual QPixmap pixmap() const; - - virtual bool showInfoBar() const { return true; } - virtual bool isBeingPlayed() const; - - virtual bool jumpToCurrentTrack(); - static const uint numberOfHotPlaylists = 3; static const uint numberOfTrendingArtists = 3; static const uint numberOfTrendingTracks = 3; static const uint numberOfNetworkChartEntries = 20; + + // ViewPageWidget interface + virtual Tomahawk::playlistinterface_ptr playlistInterface() const; + virtual bool isBeingPlayed() const; + virtual bool jumpToCurrentTrack(); protected: QScopedPointer d_ptr; diff --git a/src/libtomahawk-widgets/NetworkActivityWidget.ui b/src/viewpages/networkactivity/NetworkActivityWidget.ui similarity index 99% rename from src/libtomahawk-widgets/NetworkActivityWidget.ui rename to src/viewpages/networkactivity/NetworkActivityWidget.ui index 5a76e97f8..05eac0f71 100644 --- a/src/libtomahawk-widgets/NetworkActivityWidget.ui +++ b/src/viewpages/networkactivity/NetworkActivityWidget.ui @@ -190,7 +190,7 @@ Tomahawk::Widgets::PlaylistWidget QListWidget -
PlaylistWidget.h
+
libtomahawk-widgets/PlaylistWidget.h
Tomahawk::Breadcrumb diff --git a/src/libtomahawk-widgets/NetworkActivityWidget_p.h b/src/viewpages/networkactivity/NetworkActivityWidget_p.h similarity index 100% rename from src/libtomahawk-widgets/NetworkActivityWidget_p.h rename to src/viewpages/networkactivity/NetworkActivityWidget_p.h diff --git a/src/libtomahawk-widgets/NetworkActivityWorker.cpp b/src/viewpages/networkactivity/NetworkActivityWorker.cpp similarity index 100% rename from src/libtomahawk-widgets/NetworkActivityWorker.cpp rename to src/viewpages/networkactivity/NetworkActivityWorker.cpp diff --git a/src/libtomahawk-widgets/NetworkActivityWorker.h b/src/viewpages/networkactivity/NetworkActivityWorker.h similarity index 100% rename from src/libtomahawk-widgets/NetworkActivityWorker.h rename to src/viewpages/networkactivity/NetworkActivityWorker.h diff --git a/src/libtomahawk-widgets/NetworkActivityWorker_p.h b/src/viewpages/networkactivity/NetworkActivityWorker_p.h similarity index 100% rename from src/libtomahawk-widgets/NetworkActivityWorker_p.h rename to src/viewpages/networkactivity/NetworkActivityWorker_p.h