[pim/kdepim-addons] kmail/editorsendcheckplugins/confirm-address: Make sure to delete config. Until now we didn't return subgroup
Laurent Montel <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 797addf8d173d96d488177bced0a4049738e6e8a by Laurent Montel.
Committed on 15/08/2026 at 08:55.
Pushed by mlaurent into branch 'master'.
Make sure to delete config. Until now we didn't return subgroup
M +21 -2 kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.cpp
M +1 -0 kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.h
M +7 -5 kmail/editorsendcheckplugins/confirm-address/confirmaddressconfigurewidget.cpp
https://invent.kde.org/pim/kdepim-addons/-/commit/797addf8d173d96d488177bced0a4049738e6e8a
diff --git a/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.cpp b/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.cpp
index 437df8db0..a8c2bfccf 100644
--- a/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.cpp
+++ b/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.cpp
@@ -5,16 +5,18 @@
*/
#include "confirmaddressconfigurewidgettest.h"
-using namespace Qt::Literals::StringLiterals;
#include "../confirmaddressconfiguretab.h"
#include "../confirmaddressconfigurewidget.h"
+#include <KConfigGroup>
+#include <KSharedConfig>
#include <QCheckBox>
#include <QStandardPaths>
#include <QTest>
#include <QVBoxLayout>
+using namespace Qt::Literals::StringLiterals;
ConfirmAddressConfigureWidgetTest::ConfirmAddressConfigureWidgetTest(QObject *parent)
: QObject(parent)
{
@@ -25,7 +27,7 @@ ConfirmAddressConfigureWidgetTest::~ConfirmAddressConfigureWidgetTest() = defaul
void ConfirmAddressConfigureWidgetTest::shouldHaveDefaultValue()
{
- ConfirmAddressConfigureWidget w;
+ const ConfirmAddressConfigureWidget w;
auto vboxlayout = w.findChild<QVBoxLayout *>(u"mainlayout"_s);
QVERIFY(vboxlayout);
@@ -42,6 +44,23 @@ void ConfirmAddressConfigureWidgetTest::shouldLoadSaveResetValue()
w.resetSettings();
}
+void ConfirmAddressConfigureWidgetTest::shouldRemoveSettingsFromUnknownIdentity()
+{
+ // 4242 is not a known identity uoid, so saving must drop its leftover settings.
+ const QString staleGroupName = u"Confirm Address 4242"_s;
+ KSharedConfig::Ptr config = KSharedConfig::openConfig();
+ KConfigGroup grp(config, u"Confirm Address"_s);
+ KConfigGroup staleGroup = grp.group(staleGroupName);
+ staleGroup.writeEntry("Domains", QStringList() << u"foo.com"_s);
+ staleGroup.sync();
+ QVERIFY(grp.groupList().contains(staleGroupName));
+
+ ConfirmAddressConfigureWidget w;
+ w.saveSettings();
+
+ QVERIFY(!grp.groupList().contains(staleGroupName));
+}
+
QTEST_MAIN(ConfirmAddressConfigureWidgetTest)
#include "moc_confirmaddressconfigurewidgettest.cpp"
diff --git a/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.h b/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.h
index d2108aa5c..a8791c3b6 100644
--- a/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.h
+++ b/kmail/editorsendcheckplugins/confirm-address/autotests/confirmaddressconfigurewidgettest.h
@@ -17,4 +17,5 @@ public:
private Q_SLOTS:
void shouldHaveDefaultValue();
void shouldLoadSaveResetValue();
+ void shouldRemoveSettingsFromUnknownIdentity();
};
diff --git a/kmail/editorsendcheckplugins/confirm-address/confirmaddressconfigurewidget.cpp b/kmail/editorsendcheckplugins/confirm-address/confirmaddressconfigurewidget.cpp
index 95e553fe6..842120b80 100644
--- a/kmail/editorsendcheckplugins/confirm-address/confirmaddressconfigurewidget.cpp
+++ b/kmail/editorsendcheckplugins/confirm-address/confirmaddressconfigurewidget.cpp
@@ -37,12 +37,14 @@ void ConfirmAddressConfigureWidget::loadSettings()
void ConfirmAddressConfigureWidget::saveSettings()
{
KSharedConfig::Ptr config = KSharedConfig::openConfig();
- // first, delete all filter groups:
- const QStringList filterGroups = config->groupList().filter(QRegularExpression(u"Confirm Address \\d+"_s));
- for (const QString &group : filterGroups) {
- config->deleteGroup(group);
- }
KConfigGroup grp(config, u"Confirm Address"_s);
+ // The per-identity settings are subgroups of "Confirm Address", so they must be looked up there:
+ // KConfig::groupList() only returns top-level groups. Delete them all first, so that settings
+ // belonging to identities which don't exist anymore don't survive.
+ const QStringList identityGroups = grp.groupList().filter(QRegularExpression(u"^Confirm Address \\d+$"_s));
+ for (const QString &group : identityGroups) {
+ grp.group(group).deleteGroup();
+ }
mConfirmAddressConfigureTab->saveSettings(grp);
}