From kde-commits Mon Nov 30 23:09:19 2015 From: Nick Shaforostoff Date: Mon, 30 Nov 2015 23:09:19 +0000 To: kde-commits Subject: [ktorrent/frameworks] /: install plugins into separate folder, adapt infowidget and download order f Message-Id: X-MARC-Message: https://marc.info/?l=kde-commits&m=144892497119356 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 f= or 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: plugin= s/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/pluginma= nager.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 -#include +#include "pluginmanager.h" + +#include +#include #include #include #include +#include #include #include #include #include #include #include -#include "pluginmanager.h" #include "pluginactivity.h" = using namespace bt; @@ -49,14 +51,14 @@ namespace kt = void PluginManager::loadPluginList() { - KService::List offers =3D KServiceTypeTrader::self()->query("KTorr= ent/Plugin"); - plugins =3D KPluginInfo::fromServices(offers); - - for (KPluginInfo::List::iterator i =3D plugins.begin(); i !=3D plu= gins.end(); i++) + pluginsMetaData =3D KPluginLoader::findPlugins(QStringLiteral("kto= rrent")); + foreach (const KPluginMetaData &module, pluginsMetaData) { - KPluginInfo& pi =3D *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 =3D 0; - for (KPluginInfo::List::iterator i =3D plugins.begin(); i !=3D plu= gins.end(); i++) + for (auto i =3D plugins.begin(); i !=3D plugins.end(); i++) { KPluginInfo& pi =3D *i; if (loaded.contains(idx) & !pi.isPluginEnabled()) @@ -94,37 +96,36 @@ namespace kt = void PluginManager::load(const KPluginInfo& pi, int idx) { - KService::Ptr service =3D pi.service(); + KPluginLoader loader(pluginsMetaData.at(idx).fileName()); + KPluginFactory *factory =3D loader.factory(); + if (!factory) + return; = - Plugin* p =3D service->createInstance(); - if (!p) + Plugin* plugin =3D factory->create(); + if (!plugin) { - p =3D service->createInstance(); - if (!p) - { - Out(SYS_GEN | LOG_NOTICE) << - QString("Creating instance of pl= ugin %1 failed !") - .arg(service->library()) << endl; - return; - } + Out(SYS_GEN | LOG_NOTICE) << + QString("Creating instance of plugin= %1 failed !") + .arg(pluginsMetaData.at(idx).fileNam= e()) << 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).fileNam= e()) << endl; = - delete p; + delete plugin; } else { - p->setCore(core); - p->setGUI(gui); - p->load(); - gui->mergePluginGui(p); - p->loaded =3D true; - loaded.insert(idx, p, true); + plugin->setCore(core); + plugin->setGUI(gui); + plugin->load(); + gui->mergePluginGui(plugin); + plugin->loaded =3D true; + loaded.insert(idx, plugin, true); } } = diff --git a/libktcore/plugin/pluginmanager.h b/libktcore/plugin/pluginmana= ger.h index 1967a29..dc62f9b 100644 --- a/libktcore/plugin/pluginmanager.h +++ b/libktcore/plugin/pluginmanager.h @@ -26,6 +26,7 @@ #include #include #include +#include = namespace kt { @@ -42,6 +43,7 @@ namespace kt class KTCORE_EXPORT PluginManager { KPluginInfo::List plugins; + QVector 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 infow= idget) #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/C= MakeLists.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_INSTA= LL_DIR} ) +install(TARGETS ktorrent_downloadorder DESTINATION ${KTORRENT_PLUGIN_INST= ALL_DIR} ) install(FILES ktorrent_downloadorderui.rc DESTINATION ${KXMLGUI_INSTALL_DI= R}/ktorrent ) diff --git a/plugins/downloadorder/downloadorderplugin.cpp b/plugins/downlo= adorder/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();) +K_PLUGIN_FACTORY_WITH_JSON(ktorrent_downloadorder, "ktorrent_downloadorder= .json", registerPlugin();) = 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 =3D createManager(tc); m->load(); diff --git a/plugins/infowidget/CMakeLists.txt b/plugins/infowidget/CMakeLi= sts.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 chunkdownl= oadview.ui trackerview.ui webseedstab.ui) kconfig_add_kcfg_files(ktinfowidgetplugin_SRC infowidgetpluginsettings.kcf= gc) -add_library(ktinfowidgetplugin MODULE ${ktinfowidgetplugin_SRC}) +add_library(ktorrent_infowidget MODULE ${ktinfowidgetplugin_SRC}) + +kcoreaddons_desktop_to_json(ktorrent_infowidget ktorrent_infowidget.deskto= p) = 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/geoip= manager.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: " << geo= ip_url << endl; download_destination =3D kt::DataDir() + geoip_url.fileName(); - KIO::CopyJob* job =3D KIO::copy(geoip_url, download_destination, K= IO::Overwrite | KIO::HideProgressInfo); + KIO::CopyJob* job =3D KIO::copy(geoip_url, QUrl::fromLocalFile(dow= nload_destination), KIO::Overwrite | KIO::HideProgressInfo); connect(job, SIGNAL(result(KJob*)), this, SLOT(databaseDownloadFin= ished(KJob*))); #endif } diff --git a/plugins/infowidget/infowidgetplugin.cpp b/plugins/infowidget/i= nfowidgetplugin.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 #include #include @@ -27,7 +29,6 @@ #include #include = -#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= ();) +K_PLUGIN_FACTORY_WITH_JSON(ktorrent_infowidget, "ktorrent_infowidget.json"= , registerPlugin();) = using namespace bt; = diff --git a/plugins/infowidget/ktinfowidgetplugin.kcfg b/plugins/infowidge= t/ktinfowidgetplugin.kcfg index fc91f5e..3f54054 100644 --- a/plugins/infowidget/ktinfowidgetplugin.kcfg +++ b/plugins/infowidget/ktinfowidgetplugin.kcfg @@ -4,7 +4,7 @@ xsi:schemaLocation=3D"http://www.kde.org/standards/kcfg/1.0 http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > = - + diff --git a/plugins/infowidget/ktinfowidgetplugin.desktop b/plugins/infowi= dget/ktorrent_infowidget.desktop similarity index 100% rename from plugins/infowidget/ktinfowidgetplugin.desktop rename to plugins/infowidget/ktorrent_infowidget.desktop