[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [ktorrent/frameworks] /: install plugins into separate folder, adapt infowidget and download order f
From: Nick Shaforostoff <shafff () ukr ! net>
Date: 2015-11-30 23:09:19
Message-ID: E1a3XZP-0001tN-PD () scm ! kde ! org
[Download RAW message or body]
Git commit b19ad51fa6c8afb0d483454b715b90bfb336f757 by Nick Shaforostoff.
Committed on 30/11/2015 at 23:08.
Pushed by shaforo into branch 'frameworks'.
install plugins into separate folder, adapt infowidget and download order \
for that
M +1 -0 CMakeLists.txt
M +30 -29 libktcore/plugin/pluginmanager.cpp
M +2 -0 libktcore/plugin/pluginmanager.h
M +1 -1 plugins/CMakeLists.txt
M +1 -3 plugins/downloadorder/CMakeLists.txt
M +2 -3 plugins/downloadorder/downloadorderplugin.cpp
M +5 -5 plugins/infowidget/CMakeLists.txt
M +1 -1 plugins/infowidget/geoipmanager.cpp
M +3 -2 plugins/infowidget/infowidgetplugin.cpp
M +1 -1 plugins/infowidget/ktinfowidgetplugin.kcfg
R +0 -0 plugins/infowidget/ktorrent_infowidget.desktop [from: \
plugins/infowidget/ktinfowidgetplugin.desktop - 100% similarity]
http://commits.kde.org/ktorrent/b19ad51fa6c8afb0d483454b715b90bfb336f757
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4aa1b26..e94fdc2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -31,6 +31,7 @@ include(CheckTypeSize) #XFS
kde_enable_exceptions()
set (KTORRENT_DBUS_XML_DIR ${KTORRENT_SOURCE_DIR}/dbus_xml)
+set (KTORRENT_PLUGIN_INSTALL_DIR ${PLUGIN_INSTALL_DIR}/ktorrent)
include_directories(
${KTORRENT_BINARY_DIR}
diff --git a/libktcore/plugin/pluginmanager.cpp \
b/libktcore/plugin/pluginmanager.cpp index 4ecb419..f87e967 100644
--- a/libktcore/plugin/pluginmanager.cpp
+++ b/libktcore/plugin/pluginmanager.cpp
@@ -17,18 +17,20 @@
* Free Software Foundation, Inc., \
*
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. \
*
***************************************************************************/
-#include <qfile.h>
-#include <qtextstream.h>
+#include "pluginmanager.h"
+
+#include <QFile>
+#include <QTextStream>
#include <klocale.h>
#include <kglobal.h>
#include <kservicetypetrader.h>
+#include <kpluginmetadata.h>
#include <util/log.h>
#include <util/error.h>
#include <util/fileops.h>
#include <util/waitjob.h>
#include <torrent/globals.h>
#include <interfaces/guiinterface.h>
-#include "pluginmanager.h"
#include "pluginactivity.h"
using namespace bt;
@@ -49,14 +51,14 @@ namespace kt
void PluginManager::loadPluginList()
{
- KService::List offers = \
KServiceTypeTrader::self()->query("KTorrent/Plugin");
- plugins = KPluginInfo::fromServices(offers);
-
- for (KPluginInfo::List::iterator i = plugins.begin(); i != \
plugins.end(); i++) + pluginsMetaData = \
KPluginLoader::findPlugins(QStringLiteral("ktorrent")); + foreach \
(const KPluginMetaData &module, pluginsMetaData) {
- KPluginInfo& pi = *i;
+ KPluginInfo pi(module);
pi.setConfig(KGlobal::config()->group(pi.pluginName()));
pi.load();
+
+ plugins << pi;
}
if (!prefpage)
@@ -73,7 +75,7 @@ namespace kt
void PluginManager::loadPlugins()
{
int idx = 0;
- for (KPluginInfo::List::iterator i = plugins.begin(); i != \
plugins.end(); i++) + for (auto i = plugins.begin(); i != \
plugins.end(); i++) {
KPluginInfo& pi = *i;
if (loaded.contains(idx) & !pi.isPluginEnabled())
@@ -94,37 +96,36 @@ namespace kt
void PluginManager::load(const KPluginInfo& pi, int idx)
{
- KService::Ptr service = pi.service();
+ KPluginLoader loader(pluginsMetaData.at(idx).fileName());
+ KPluginFactory *factory = loader.factory();
+ if (!factory)
+ return;
- Plugin* p = service->createInstance<kt::Plugin>();
- if (!p)
+ Plugin* plugin = factory->create<kt::Plugin>();
+ if (!plugin)
{
- p = service->createInstance<kt::Plugin>();
- if (!p)
- {
- Out(SYS_GEN | LOG_NOTICE) <<
- QString("Creating instance of \
plugin %1 failed !")
- .arg(service->library()) << \
endl;
- return;
- }
+ Out(SYS_GEN | LOG_NOTICE) <<
+ QString("Creating instance of plugin \
%1 failed !") + \
.arg(pluginsMetaData.at(idx).fileName()) << endl; + return;
}
- if (!p->versionCheck(kt::VERSION_STRING))
+ if (!plugin->versionCheck(kt::VERSION_STRING))
{
Out(SYS_GEN | LOG_NOTICE) <<
QString("Plugin %1 version does not \
match KTorrent version, unloading it.")
- .arg(service->library()) << endl;
+ \
.arg(pluginsMetaData.at(idx).fileName()) << endl;
- delete p;
+ delete plugin;
}
else
{
- p->setCore(core);
- p->setGUI(gui);
- p->load();
- gui->mergePluginGui(p);
- p->loaded = true;
- loaded.insert(idx, p, true);
+ plugin->setCore(core);
+ plugin->setGUI(gui);
+ plugin->load();
+ gui->mergePluginGui(plugin);
+ plugin->loaded = true;
+ loaded.insert(idx, plugin, true);
}
}
diff --git a/libktcore/plugin/pluginmanager.h \
b/libktcore/plugin/pluginmanager.h index 1967a29..dc62f9b 100644
--- a/libktcore/plugin/pluginmanager.h
+++ b/libktcore/plugin/pluginmanager.h
@@ -26,6 +26,7 @@
#include <qstringlist.h>
#include <ktcore_export.h>
#include <kplugininfo.h>
+#include <kpluginmetadata.h>
namespace kt
{
@@ -42,6 +43,7 @@ namespace kt
class KTCORE_EXPORT PluginManager
{
KPluginInfo::List plugins;
+ QVector<KPluginMetaData> pluginsMetaData;
CoreInterface* core;
GUIInterface* gui;
PluginActivity* prefpage;
diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
index 97c70cf..cc3e5a7 100644
--- a/plugins/CMakeLists.txt
+++ b/plugins/CMakeLists.txt
@@ -15,7 +15,7 @@ macro_kt_plugin(ENABLE_INFOWIDGET_PLUGIN infowidget \
infowidget) #macro_kt_plugin(ENABLE_UPNP_PLUGIN upnp upnp)
#macro_kt_plugin(ENABLE_SEARCH_PLUGIN search search)
#macro_kt_plugin(ENABLE_WEBINTERFACE_PLUGIN webinterface webinterface)
-macro_kt_plugin(ENABLE_SCANFOLDER_PLUGIN scanfolder scanfolder)
+#macro_kt_plugin(ENABLE_SCANFOLDER_PLUGIN scanfolder scanfolder)
#macro_kt_plugin(ENABLE_IPFILTER_PLUGIN ipfilter ipfilter)
#macro_kt_plugin(ENABLE_STATS_PLUGIN stats stats)
#macro_kt_plugin(ENABLE_BWSCHEDULER_PLUGIN bwscheduler bwscheduler)
diff --git a/plugins/downloadorder/CMakeLists.txt \
b/plugins/downloadorder/CMakeLists.txt index 0b26fb0..05c1aa8 100644
--- a/plugins/downloadorder/CMakeLists.txt
+++ b/plugins/downloadorder/CMakeLists.txt
@@ -12,8 +12,6 @@ target_link_libraries(
ktorrent_downloadorder
ktcore
${LIBKTORRENT_LIBRARIES}
- KF5::Parts
)
-install(TARGETS ktorrent_downloadorder DESTINATION ${PLUGIN_INSTALL_DIR} \
)
-install(FILES ktorrent_downloadorder.desktop DESTINATION \
${SERVICES_INSTALL_DIR} ) +install(TARGETS ktorrent_downloadorder \
DESTINATION ${KTORRENT_PLUGIN_INSTALL_DIR} ) install(FILES \
ktorrent_downloadorderui.rc DESTINATION \
${KXMLGUI_INSTALL_DIR}/ktorrent )
diff --git a/plugins/downloadorder/downloadorderplugin.cpp \
b/plugins/downloadorder/downloadorderplugin.cpp index ed581ec..a309584 \
100644
--- a/plugins/downloadorder/downloadorderplugin.cpp
+++ b/plugins/downloadorder/downloadorderplugin.cpp
@@ -34,8 +34,7 @@
#include "downloadorderdialog.h"
-
-K_PLUGIN_FACTORY(ktorrent_downloadorder, \
registerPlugin<kt::DownloadOrderPlugin>();) \
+K_PLUGIN_FACTORY_WITH_JSON(ktorrent_downloadorder, \
"ktorrent_downloadorder.json", registerPlugin<kt::DownloadOrderPlugin>();) \
using namespace bt;
@@ -122,7 +121,7 @@ namespace kt
void DownloadOrderPlugin::torrentAdded(bt::TorrentInterface* tc)
{
- if (bt::Exists(tc->getTorDir() + "download_order"))
+ if (bt::Exists(tc->getTorDir() + QLatin1String("download_order")))
{
DownloadOrderManager* m = createManager(tc);
m->load();
diff --git a/plugins/infowidget/CMakeLists.txt \
b/plugins/infowidget/CMakeLists.txt index 7e13bb7..4475e5c 100644
--- a/plugins/infowidget/CMakeLists.txt
+++ b/plugins/infowidget/CMakeLists.txt
@@ -51,15 +51,15 @@ set(ktinfowidgetplugin_SRC
ki18n_wrap_ui(ktinfowidgetplugin_SRC iwprefpage.ui statustab.ui \
chunkdownloadview.ui trackerview.ui webseedstab.ui) \
kconfig_add_kcfg_files(ktinfowidgetplugin_SRC \
infowidgetpluginsettings.kcfgc)
-add_library(ktinfowidgetplugin MODULE ${ktinfowidgetplugin_SRC})
+add_library(ktorrent_infowidget MODULE ${ktinfowidgetplugin_SRC})
+
+kcoreaddons_desktop_to_json(ktorrent_infowidget \
ktorrent_infowidget.desktop)
target_link_libraries(
- ktinfowidgetplugin
+ ktorrent_infowidget
ktcore
${LIBKTORRENT_LIBRARIES}
- KF5::Parts
${geoip_link}
)
-install(TARGETS ktinfowidgetplugin DESTINATION ${PLUGIN_INSTALL_DIR} )
-install(FILES ktinfowidgetplugin.desktop DESTINATION \
${SERVICES_INSTALL_DIR} ) +install(TARGETS ktorrent_infowidget DESTINATION \
${KTORRENT_PLUGIN_INSTALL_DIR} )
diff --git a/plugins/infowidget/geoipmanager.cpp \
b/plugins/infowidget/geoipmanager.cpp index 669d26a..1ecb126 100644
--- a/plugins/infowidget/geoipmanager.cpp
+++ b/plugins/infowidget/geoipmanager.cpp
@@ -107,7 +107,7 @@ namespace kt
#ifndef USE_SYSTEM_GEOIP
Out(SYS_INW | LOG_NOTICE) << "Downloading GeoIP database: " << \
geoip_url << endl; download_destination = kt::DataDir() + \
geoip_url.fileName();
- KIO::CopyJob* job = KIO::copy(geoip_url, download_destination, \
KIO::Overwrite | KIO::HideProgressInfo); + KIO::CopyJob* job = \
KIO::copy(geoip_url, QUrl::fromLocalFile(download_destination), \
KIO::Overwrite | KIO::HideProgressInfo);
connect(job, SIGNAL(result(KJob*)), this, \
SLOT(databaseDownloadFinished(KJob*))); #endif
}
diff --git a/plugins/infowidget/infowidgetplugin.cpp \
b/plugins/infowidget/infowidgetplugin.cpp index 792c68e..7c2e361 100644
--- a/plugins/infowidget/infowidgetplugin.cpp
+++ b/plugins/infowidget/infowidgetplugin.cpp
@@ -17,6 +17,8 @@
* Free Software Foundation, Inc., \
*
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. \
*
***************************************************************************/
+#include "infowidgetplugin.h"
+
#include <kpluginfactory.h>
#include <kglobal.h>
#include <klocale.h>
@@ -27,7 +29,6 @@
#include <interfaces/torrentinterface.h>
#include <settings.h>
-#include "infowidgetplugin.h"
#include "iwprefpage.h"
#include "statustab.h"
#include "fileview.h"
@@ -40,7 +41,7 @@
#include "geoipmanager.h"
-K_PLUGIN_FACTORY(ktorrent_infowidget, \
registerPlugin<kt::InfoWidgetPlugin>();) \
+K_PLUGIN_FACTORY_WITH_JSON(ktorrent_infowidget, \
"ktorrent_infowidget.json", registerPlugin<kt::InfoWidgetPlugin>();)
using namespace bt;
diff --git a/plugins/infowidget/ktinfowidgetplugin.kcfg \
b/plugins/infowidget/ktinfowidgetplugin.kcfg index fc91f5e..3f54054 100644
--- a/plugins/infowidget/ktinfowidgetplugin.kcfg
+++ b/plugins/infowidget/ktinfowidgetplugin.kcfg
@@ -4,7 +4,7 @@
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
- <kcfgfile name="ktinfowidgetpluginrc"/>
+ <kcfgfile name="ktorrent_infowidgetrc"/>
<group name="general">
<entry name="showPeerView" type="Bool">
<label>Show peer view tab in main window</label>
diff --git a/plugins/infowidget/ktinfowidgetplugin.desktop \
b/plugins/infowidget/ktorrent_infowidget.desktop similarity index 100%
rename from plugins/infowidget/ktinfowidgetplugin.desktop
rename to plugins/infowidget/ktorrent_infowidget.desktop
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic