diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3d4b117ca..18fd51f8e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,6 +15,7 @@ add_subdirectory( libtomahawk-widgets ) # plugins add_subdirectory( accounts ) add_subdirectory( infoplugins ) +add_subdirectory( viewpages ) # application diff --git a/src/libtomahawk-widgets/CMakeLists.txt b/src/libtomahawk-widgets/CMakeLists.txt index 174f35d0c..e635059d2 100644 --- a/src/libtomahawk-widgets/CMakeLists.txt +++ b/src/libtomahawk-widgets/CMakeLists.txt @@ -6,14 +6,12 @@ list(APPEND ${TOMAHAWK_WIDGETS_LIBRARY_TARGET}_SOURCES PlaylistWidget.cpp # ViewPages - Dashboard.cpp NetworkActivityWidget.cpp NetworkActivityWorker.cpp SocialPlaylistWidget.cpp ) list(APPEND ${TOMAHAWK_WIDGETS_LIBRARY_TARGET}_UI - DashboardWidget.ui NetworkActivityWidget.ui SocialPlaylistWidget.ui ) diff --git a/src/libtomahawk-widgets/SocialPlaylistWidget.h b/src/libtomahawk-widgets/SocialPlaylistWidget.h index 418bf2951..271505111 100644 --- a/src/libtomahawk-widgets/SocialPlaylistWidget.h +++ b/src/libtomahawk-widgets/SocialPlaylistWidget.h @@ -38,7 +38,6 @@ #include #include "WidgetsDllMacro.h" -#include "Dashboard.h" class PlayableModel; diff --git a/src/tomahawk/sourcetree/SourcesModel.cpp b/src/tomahawk/sourcetree/SourcesModel.cpp index 9b8d357ab..35bcf6a1f 100644 --- a/src/tomahawk/sourcetree/SourcesModel.cpp +++ b/src/tomahawk/sourcetree/SourcesModel.cpp @@ -20,8 +20,9 @@ #include "sourcetree/SourcesModel.h" +#include "../../viewpages/dashboard/Dashboard.h" + #include -#include #include "sourcetree/items/ScriptCollectionItem.h" #include "sourcetree/items/SourceTreeItem.h" @@ -44,6 +45,7 @@ #include "playlist/dynamic/widgets/DynamicWidget.h" #include "utils/ImageRegistry.h" #include "utils/Logger.h" +#include "utils/PluginLoader.h" #include #include @@ -338,19 +340,29 @@ SourcesModel::appendGroups() endInsertRows(); - // addDynamicPage takes care of begin/endInsertRows itself - ViewManager::instance()->addDynamicPage( new Tomahawk::Widgets::Dashboard, Tomahawk::Widgets::DASHBOARD_VIEWPAGE_NAME ); - - //HACK: this may not belong here, but adding the pages probably doesn't belong here either - //TODO: find a good place for this - ViewManager::instance()->showDynamicPage( Tomahawk::Widgets::DASHBOARD_VIEWPAGE_NAME ); - 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, QObject* > plugins = Tomahawk::Utils::PluginLoader( "viewpage" ).loadPlugins(); + foreach ( QObject* plugin, plugins.values() ) + { + Tomahawk::ViewPagePlugin* viewPagePlugin = qobject_cast< ViewPagePlugin* >( plugin ); + if ( viewPagePlugin ) + { + tDebug() << Q_FUNC_INFO << "Loaded viewpage plugin:" << plugins.key( plugin ); + ViewManager::instance()->addDynamicPage( viewPagePlugin ); + } + else + { + tDebug() << Q_FUNC_INFO << "Loaded invalid plugin:" << plugins.key( plugin ); + } + } + + ViewManager::instance()->showDynamicPage( Tomahawk::Widgets::DASHBOARD_VIEWPAGE_NAME ); } void diff --git a/src/viewpages/CMakeLists.txt b/src/viewpages/CMakeLists.txt new file mode 100644 index 000000000..6b2882ef0 --- /dev/null +++ b/src/viewpages/CMakeLists.txt @@ -0,0 +1,7 @@ + +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") + add_subdirectory(${SUBDIRECTORY}) + endif() +endforeach() diff --git a/src/viewpages/ViewPageDllMacro.h b/src/viewpages/ViewPageDllMacro.h new file mode 100644 index 000000000..5dd07c686 --- /dev/null +++ b/src/viewpages/ViewPageDllMacro.h @@ -0,0 +1,33 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2010-2011, Christian Muehlhaeuser + * Copyright 2010-2011, Jeff Mitchell + * + * 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 ACCOUNTDLLMACRO_H +#define ACCOUNTDLLMACRO_H + +#include + +#ifndef TOMAHAWK_VIEWPAGE_EXPORT +# if defined (TOMAHAWK_VIEWPAGE_EXPORT_PRO) +# define TOMAHAWK_VIEWPAGE_EXPORT Q_DECL_EXPORT +# else +# define TOMAHAWK_VIEWPAGE_EXPORT Q_DECL_IMPORT +# endif +#endif + +#endif diff --git a/src/viewpages/dashboard/CMakeLists.txt b/src/viewpages/dashboard/CMakeLists.txt new file mode 100644 index 000000000..f3cadb023 --- /dev/null +++ b/src/viewpages/dashboard/CMakeLists.txt @@ -0,0 +1,10 @@ +tomahawk_add_plugin(dashboard + TYPE viewpage + EXPORT_MACRO TOMAHAWK_VIEWPAGE_EXPORT_PRO + SOURCES + Dashboard.cpp + UI + DashboardWidget.ui + LINK_LIBRARIES + tomahawk-widgets +) diff --git a/src/libtomahawk-widgets/Dashboard.cpp b/src/viewpages/dashboard/Dashboard.cpp similarity index 99% rename from src/libtomahawk-widgets/Dashboard.cpp rename to src/viewpages/dashboard/Dashboard.cpp index 2e9dc787a..0bef6aa98 100644 --- a/src/libtomahawk-widgets/Dashboard.cpp +++ b/src/viewpages/dashboard/Dashboard.cpp @@ -21,13 +21,14 @@ #include "Dashboard.h" #include "ui_DashboardWidget.h" +#include "libtomahawk-widgets/PlaylistDelegate.h" + #include "ViewManager.h" #include "SourceList.h" #include "TomahawkSettings.h" #include "widgets/RecentPlaylistsModel.h" #include "widgets/RecentlyPlayedPlaylistsModel.h" #include "MetaPlaylistInterface.h" -#include "PlaylistDelegate.h" #include "audio/AudioEngine.h" #include "playlist/AlbumModel.h" #include "playlist/RecentlyPlayedModel.h" diff --git a/src/libtomahawk-widgets/Dashboard.h b/src/viewpages/dashboard/Dashboard.h similarity index 95% rename from src/libtomahawk-widgets/Dashboard.h rename to src/viewpages/dashboard/Dashboard.h index faf1b577d..7cfb341c2 100644 --- a/src/libtomahawk-widgets/Dashboard.h +++ b/src/viewpages/dashboard/Dashboard.h @@ -33,7 +33,7 @@ #include #include -#include "WidgetsDllMacro.h" +#include "../ViewPageDllMacro.h" class AlbumModel; class RecentlyPlayedModel; @@ -83,7 +83,7 @@ private: const QString DASHBOARD_VIEWPAGE_NAME = "dashboard"; -class TOMAHAWK_WIDGETS_EXPORT Dashboard : public Tomahawk::ViewPageLazyLoader< DashboardWidget > +class TOMAHAWK_VIEWPAGE_EXPORT Dashboard : public Tomahawk::ViewPageLazyLoader< DashboardWidget > { Q_OBJECT Q_INTERFACES( Tomahawk::ViewPagePlugin ) diff --git a/src/libtomahawk-widgets/DashboardWidget.ui b/src/viewpages/dashboard/DashboardWidget.ui similarity index 99% rename from src/libtomahawk-widgets/DashboardWidget.ui rename to src/viewpages/dashboard/DashboardWidget.ui index 826b30f09..e5d3037e0 100644 --- a/src/libtomahawk-widgets/DashboardWidget.ui +++ b/src/viewpages/dashboard/DashboardWidget.ui @@ -298,7 +298,7 @@ Tomahawk::Widgets::PlaylistWidget QListWidget -
PlaylistWidget.h
+
libtomahawk-widgets/PlaylistWidget.h