commit e7a6affd64807f34eba4c5e54d3649d67eeb76c6 Author: Alexander Lohnau 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 #include +#include #include #include #include +#include #include #include #include @@ -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 #include -#include +#include #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 #include -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 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 #include "pluginactivity.h" +#include #include #include #include @@ -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 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; } /**