[plasma/systemsettings] app: Use KConfigXT for settings

Nicolas Fella <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit bccb84ceefee72a6e78965a0bc6393d80d7cebd4 by Nicolas Fella.
Committed on 24/07/2026 at 12:23.
Pushed by nicolasfella into branch 'master'.

Use KConfigXT for settings

M  +3    -0    app/CMakeLists.txt
M  +5    -6    app/SidebarMode.cpp
A  +12   -0    app/systemsettings-config.kcfg

https://invent.kde.org/plasma/systemsettings/-/commit/bccb84ceefee72a6e78965a0bc6393d80d7cebd4

diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt
index 9c2e3275..b197a739 100644
--- a/app/CMakeLists.txt
+++ b/app/CMakeLists.txt
@@ -61,6 +61,8 @@ target_link_libraries(systemsettings PRIVATE
     Qt::Quick
 )
 
+kconfig_target_kcfg_file(systemsettings FILE systemsettings-config.kcfg CLASS_NAME Settings MUTATORS)
+
 install(TARGETS systemsettings ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
 install(PROGRAMS kdesystemsettings.desktop systemsettings.desktop DESTINATION ${KDE_INSTALL_APPDIR})
 install(DIRECTORY DESTINATION "${KDE_INSTALL_FULL_DATAROOTDIR}/kglobalaccel")
@@ -69,5 +71,6 @@ install(
 )
 install(FILES org.kde.systemsettings.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
 install(FILES systemsettings.zsh RENAME _systemsettings DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
+install(FILES systemsettings-config.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR})
 
 ecm_finalize_qml_module(systemsettings)
diff --git a/app/SidebarMode.cpp b/app/SidebarMode.cpp
index 6d4ef2be..de5b003a 100644
--- a/app/SidebarMode.cpp
+++ b/app/SidebarMode.cpp
@@ -12,6 +12,7 @@
 #include "MenuProxyModel.h"
 #include "ModuleView.h"
 #include "kcmmetadatahelpers.h"
+#include "systemsettings-config.h"
 
 #include <KAboutData>
 #include <KActionCollection>
@@ -20,7 +21,6 @@
 #include <KDescendantsProxyModel>
 #include <KLocalizedContext>
 #include <KLocalizedString>
-#include <KSharedConfig>
 
 #include <KLocalizedQmlContext>
 #include <QAction>
@@ -133,7 +133,7 @@ public:
     qreal headerHeight = 0;
     bool actionMenuVisible = false;
     bool m_defaultsIndicatorsVisible = false;
-    KConfigGroup config;
+    Settings config;
     MenuItem *rootItem = nullptr;
     MenuItem *homeItem = nullptr;
     KPluginMetaData metaData;
@@ -163,14 +163,13 @@ SidebarMode::SidebarMode(QObject *parent,
     qApp->setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);
     qmlRegisterAnonymousType<QAction>("", 1);
     qmlRegisterAnonymousType<QAbstractItemModel>("", 1);
-    d->config = KSharedConfig::openConfig()->group(QStringLiteral("systemsettings_sidebar_mode"));
     initEvent();
     connect(moduleView(), &ModuleView::moduleChanged, this, &SidebarMode::viewChanged);
 }
 
 SidebarMode::~SidebarMode()
 {
-    d->config.sync();
+    d->config.save();
     delete d;
 }
 
@@ -240,7 +239,7 @@ void SidebarMode::initEvent()
         d->moduleView->setDefaultsVisible(false);
     }
 
-    if (d->config.readEntry("HighlightNonDefaultSettings", false)) {
+    if (d->config.highlightNonDefaultSettings()) {
         toggleDefaultsIndicatorsVisibility();
     }
 }
@@ -535,7 +534,7 @@ void SidebarMode::toggleDefaultsIndicatorsVisibility()
     d->m_defaultsIndicatorsVisible = !d->m_defaultsIndicatorsVisible;
     d->moduleView->moduleShowDefaultsIndicators(d->m_defaultsIndicatorsVisible);
     refreshDefaults();
-    d->config.writeEntry("HighlightNonDefaultSettings", d->m_defaultsIndicatorsVisible);
+    d->config.setHighlightNonDefaultSettings(d->m_defaultsIndicatorsVisible);
     Q_EMIT defaultsIndicatorsVisibleChanged();
 }
 
diff --git a/app/systemsettings-config.kcfg b/app/systemsettings-config.kcfg
new file mode 100644
index 00000000..64abe539
--- /dev/null
+++ b/app/systemsettings-config.kcfg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- SPDX-FileCopyrightText: 2026 Nicolas Fella <[email protected]> -->
+<!-- SPDX-License-Identifier: GPL-2.0-or-later -->
+<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0       http://www.kde.org/standards/kcfg/1.0/kcfg.xsd">
+  <kcfgfile name="systemsettingsrc"/>
+  <group name="systemsettings_sidebar_mode">
+    <entry name="HighlightNonDefaultSettings" type="Bool">
+      <label>Highlight Changed Settings</label>
+      <default>false</default>
+    </entry>
+  </group>
+</kcfg>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.