Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37418694
en ru br
Репозитории ALT

Группа :: Сети/Передача файлов
Пакет: 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;
     }
 
     /**
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin