Группа :: Сети/Передача файлов
Пакет: kde5-ktorrent
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: apply-plugins-fix.patch
Скачать
Скачать
commit e7a6affd64807f34eba4c5e54d3649d67eeb76c6
Author: Alexander Lohnau <alexander.lohnau@gmx.de>
Date: Wed Dec 8 17:44:41 2021 +0100
Port from KPluginSelector to KPluginWidget class
Task: https://phabricator.kde.org/T12265
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 59338be4..fb81a1a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,7 +13,7 @@ add_definitions(-D'VERSION="${RELEASE_SERVICE_VERSION}"'
-D'VERSION_MICRO=${RELEASE_SERVICE_VERSION_MICRO}')
set (QT_MIN_VERSION "5.15.0")
-set (KF5_MIN_VERSION "5.82")
+set (KF5_MIN_VERSION "5.89")
set (LIBKTORRENT_MIN_VERSION "20.11.70")
set (Boost_MIN_VERSION "1.71.0")
diff --git a/ktorrent/main.cpp b/ktorrent/main.cpp
index ee230a90..7c9f9d16 100644
--- a/ktorrent/main.cpp
+++ b/ktorrent/main.cpp
@@ -22,9 +22,11 @@
#include <QFile>
#include <KAboutData>
+#include <KConfigGroup>
#include <KCrash>
#include <KDBusService>
#include <KLocalizedString>
+#include <KSharedConfig>
#include <KStartupInfo>
#include <KWindowSystem>
#include <kwindowsystem_version.h>
@@ -177,6 +179,22 @@ int main(int argc, char **argv)
parser.process(app);
about.processCommandLine(&parser);
+ // config migration code
+ auto config = KSharedConfig::openConfig();
+ if (!config->hasGroup("Plugins")) {
+ KConfigGroup pluginsGroup = config->group("Plugins");
+ const QStringList groups = config->groupList();
+ for (const QString &grpName : groups) {
+ const QString entryName = grpName + QLatin1String("Enabled");
+ KConfigGroup grp = config->group(grpName);
+ if (grp.hasKey(entryName)) {
+ // bool is just for typing reasons - we know that there is a value
+ pluginsGroup.writeEntry(entryName, grp.readEntry(entryName, true));
+ grp.deleteEntry(entryName);
+ }
+ }
+ }
+
const KDBusService dbusService(KDBusService::Unique);
#if 0 // ndef Q_WS_WIN
diff --git a/libktcore/plugin/pluginactivity.cpp b/libktcore/plugin/pluginactivity.cpp
index 385a9373..bac4b518 100644
--- a/libktcore/plugin/pluginactivity.cpp
+++ b/libktcore/plugin/pluginactivity.cpp
@@ -8,7 +8,7 @@
#include <QVBoxLayout>
#include <KLocalizedString>
-#include <KPluginSelector>
+#include <KPluginWidget>
#include "pluginactivity.h"
#include "pluginmanager.h"
@@ -26,11 +26,11 @@ PluginActivity::PluginActivity(PluginManager *pman)
{
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setMargin(0);
- pmw = new KPluginSelector(this);
- connect(pmw, &KPluginSelector::changed, this, &PluginActivity::changed);
- connect(pmw, &KPluginSelector::configCommitted, this, &PluginActivity::changed);
+ pmw = new KPluginWidget(this);
+ connect(pmw, &KPluginWidget::changed, this, &PluginActivity::update);
+ connect(pmw, &KPluginWidget::pluginConfigSaved, this, &PluginActivity::update);
layout->addWidget(pmw);
- list = pman->pluginInfoList();
+ list = pman->pluginsMetaDataList();
}
PluginActivity::~PluginActivity()
@@ -39,20 +39,14 @@ PluginActivity::~PluginActivity()
void PluginActivity::updatePluginList()
{
- pmw->addPlugins(list, KPluginSelector::IgnoreConfigFile, i18n("Plugins"));
+ pmw->clear();
+ pmw->setConfig(KSharedConfig::openConfig()->group("Plugins"));
+ pmw->addPlugins(list, i18n("Plugins"));
}
void PluginActivity::update()
{
- pmw->updatePluginsState();
+ pmw->save();
pman->loadPlugins();
- for (auto &i : list) {
- i.save();
- }
-}
-
-void PluginActivity::changed()
-{
- update();
}
}
diff --git a/libktcore/plugin/pluginactivity.h b/libktcore/plugin/pluginactivity.h
index 98a6490e..ef5e7d56 100644
--- a/libktcore/plugin/pluginactivity.h
+++ b/libktcore/plugin/pluginactivity.h
@@ -10,7 +10,7 @@
#include <QWidget>
#include <interfaces/activity.h>
-class KPluginSelector;
+class KPluginWidget;
namespace kt
{
@@ -30,13 +30,11 @@ public:
void updatePluginList();
void update();
-private Q_SLOTS:
- void changed();
private:
PluginManager *pman;
- KPluginSelector *pmw;
- KPluginInfo::List list;
+ KPluginWidget *pmw;
+ QVector<KPluginMetaData> list;
};
}
diff --git a/libktcore/plugin/pluginmanager.cpp b/libktcore/plugin/pluginmanager.cpp
index d5f2eada..431d4771 100644
--- a/libktcore/plugin/pluginmanager.cpp
+++ b/libktcore/plugin/pluginmanager.cpp
@@ -12,6 +12,7 @@
#include <KPluginMetaData>
#include "pluginactivity.h"
+#include <KSharedConfig>
#include <interfaces/guiinterface.h>
#include <torrent/globals.h>
#include <util/error.h>
@@ -50,19 +51,16 @@ void PluginManager::loadPluginList()
prefpage->update();
}
-inline bool isPluginEnabled(const KPluginMetaData &data)
-{
- return KSharedConfig::openConfig()->group(data.pluginId()).readEntry(data.pluginId() + QLatin1String("Enabled"), data.isEnabledByDefault());
-}
void PluginManager::loadPlugins()
{
+ const KConfigGroup cfg = KSharedConfig::openConfig()->group("Plugins");
int idx = 0;
for (const KPluginMetaData &data : qAsConst(pluginsMetaData)) {
- if (loaded.contains(idx) && !isPluginEnabled(data)) {
+ if (loaded.contains(idx) && !data.isEnabled(cfg)) {
// unload it
unload(data, idx);
- } else if (!loaded.contains(idx) && isPluginEnabled(data)) {
+ } else if (!loaded.contains(idx) && data.isEnabled(cfg)) {
// load it
load(data, idx);
}
diff --git a/libktcore/plugin/pluginmanager.h b/libktcore/plugin/pluginmanager.h
index b58274d9..45ebb600 100644
--- a/libktcore/plugin/pluginmanager.h
+++ b/libktcore/plugin/pluginmanager.h
@@ -42,21 +42,9 @@ public:
PluginManager(CoreInterface *core, GUIInterface *gui);
~PluginManager();
- /**
- * Get the plugin info list.
- */
- KPluginInfo::List pluginInfoList() const
+ QVector<KPluginMetaData> pluginsMetaDataList() const
{
- // This should be removed when the KPluginSelector alternative which is based
- // on KPluginMetaData is published, see https://phabricator.kde.org/T12265
- KPluginInfo::List list;
- for (const KPluginMetaData &data : qAsConst(pluginsMetaData)) {
- KPluginInfo info = KPluginInfo::fromMetaData(data);
- info.setConfig(KSharedConfig::openConfig()->group(data.pluginId()));
- info.load();
- list << info;
- }
- return list;
+ return pluginsMetaData;
}
/**