[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