File indexing completed on 2024-05-12 05:20:13
0001 /* 0002 SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "refreshsettingscleanuppage.h" 0008 #include <KLocalizedString> 0009 #include <KSharedConfig> 0010 #include <QHBoxLayout> 0011 #include <QPushButton> 0012 #include <QRegularExpression> 0013 0014 RefreshSettingsCleanupPage::RefreshSettingsCleanupPage(QWidget *parent) 0015 : QWidget(parent) 0016 { 0017 auto mainLayout = new QHBoxLayout(this); 0018 mainLayout->setObjectName(QLatin1StringView("mainLayout")); 0019 mainLayout->setContentsMargins({}); 0020 auto button = new QPushButton(i18n("Clean"), this); 0021 button->setObjectName(QLatin1StringView("button")); 0022 mainLayout->addWidget(button); 0023 connect(button, &QPushButton::clicked, this, &RefreshSettingsCleanupPage::cleanSettings); 0024 } 0025 0026 RefreshSettingsCleanupPage::~RefreshSettingsCleanupPage() = default; 0027 0028 void RefreshSettingsCleanupPage::cleanSettings() 0029 { 0030 const QStringList configNameFiles{QStringLiteral("kmail2rc"), QStringLiteral("kontactrc")}; 0031 for (const QString &configName : configNameFiles) { 0032 initCleanupFolderSettings(configName); 0033 initCleanupFiltersSettings(configName); 0034 initCleanDialogSettings(configName); 0035 initCleanupDialogSettings(configName); 0036 removeTipOfDay(configName); 0037 } 0038 Q_EMIT cleanUpDone(); 0039 } 0040 0041 void RefreshSettingsCleanupPage::removeTipOfDay(const QString &configName) 0042 { 0043 KSharedConfigPtr settingsrc = KSharedConfig::openConfig(configName); 0044 0045 const QString tipOfDayStr = QStringLiteral("TipOfDay"); 0046 if (settingsrc->hasGroup(tipOfDayStr)) { 0047 settingsrc->deleteGroup(tipOfDayStr); 0048 } 0049 settingsrc->sync(); 0050 Q_EMIT cleanDoneInfo(i18n("Remove obsolete \"TipOfDay\" settings: Done")); 0051 } 0052 0053 void RefreshSettingsCleanupPage::initCleanDialogSettings(const QString &configName) 0054 { 0055 KSharedConfigPtr settingsrc = KSharedConfig::openConfig(configName); 0056 0057 const QStringList dialogList = settingsrc->groupList().filter(QRegularExpression(QStringLiteral(".*Dialog$"))); 0058 for (const QString &str : dialogList) { 0059 settingsrc->deleteGroup(str); 0060 } 0061 settingsrc->sync(); 0062 Q_EMIT cleanDoneInfo(i18n("Delete Dialog settings in file `%1`: Done", configName)); 0063 } 0064 0065 void RefreshSettingsCleanupPage::initCleanupFiltersSettings(const QString &configName) 0066 { 0067 KSharedConfigPtr settingsrc = KSharedConfig::openConfig(configName); 0068 0069 const QStringList filterList = settingsrc->groupList().filter(QRegularExpression(QStringLiteral("Filter #\\d+"))); 0070 for (const QString &str : filterList) { 0071 settingsrc->deleteGroup(str); 0072 } 0073 settingsrc->sync(); 0074 Q_EMIT cleanDoneInfo(i18n("Delete Filters settings in file `%1`: Done", configName)); 0075 } 0076 0077 void RefreshSettingsCleanupPage::initCleanupFolderSettings(const QString &configName) 0078 { 0079 KSharedConfigPtr settingsrc = KSharedConfig::openConfig(configName); 0080 0081 const QStringList folderList = settingsrc->groupList().filter(QRegularExpression(QStringLiteral("Folder-\\d+"))); 0082 for (const QString &str : folderList) { 0083 KConfigGroup oldGroup = settingsrc->group(str); 0084 cleanupFolderSettings(oldGroup); 0085 if (oldGroup.keyList().isEmpty()) { 0086 oldGroup.deleteGroup(); 0087 } 0088 } 0089 settingsrc->sync(); 0090 Q_EMIT cleanDoneInfo(i18n("Clean Folder Settings in setting file `%1`: Done", configName)); 0091 } 0092 0093 void RefreshSettingsCleanupPage::cleanupFolderSettings(KConfigGroup &oldGroup) 0094 { 0095 const bool mailingListEnabled = oldGroup.readEntry("MailingListEnabled", false); 0096 if (!mailingListEnabled) { 0097 oldGroup.deleteEntry("MailingListEnabled"); 0098 } 0099 const int mailingListFeatures = oldGroup.readEntry("MailingListFeatures", 0); 0100 if (mailingListFeatures == 0) { 0101 oldGroup.deleteEntry("MailingListFeatures"); 0102 } 0103 const int mailingListHandler = oldGroup.readEntry("MailingListHandler", 0); 0104 if (mailingListHandler == 0) { 0105 oldGroup.deleteEntry("MailingListHandler"); 0106 } 0107 const QString mailingListId = oldGroup.readEntry("MailingListId"); 0108 if (mailingListId.isEmpty()) { 0109 oldGroup.deleteEntry("MailingListId"); 0110 } 0111 0112 const bool putRepliesInSameFolder = oldGroup.readEntry("PutRepliesInSameFolder", false); 0113 if (!putRepliesInSameFolder) { 0114 oldGroup.deleteEntry("PutRepliesInSameFolder"); 0115 } 0116 0117 const bool folderHtmlLoadExtPreference = oldGroup.readEntry("htmlLoadExternalOverride", false); 0118 if (!folderHtmlLoadExtPreference) { 0119 oldGroup.deleteEntry("htmlLoadExternalOverride"); 0120 } 0121 const bool useDefaultIdentity = oldGroup.readEntry("UseDefaultIdentity", false); 0122 if (useDefaultIdentity) { 0123 oldGroup.deleteEntry("UseDefaultIdentity"); 0124 } 0125 } 0126 0127 void RefreshSettingsCleanupPage::initCleanupDialogSettings(const QString &configName) 0128 { 0129 KSharedConfigPtr settingsrc = KSharedConfig::openConfig(configName); 0130 0131 const QStringList dialogListName{QStringLiteral("AddHostDialog"), 0132 QStringLiteral("AuditLogViewer"), 0133 QStringLiteral("CollectionPropertiesDialog"), 0134 QStringLiteral("MailSourceWebEngineViewer"), 0135 QStringLiteral("SelectAddressBookDialog"), 0136 QStringLiteral("VCardViewer"), 0137 QStringLiteral("MailSourceWebEngineViewer"), 0138 QStringLiteral("ConfigurePluginsWidget"), 0139 QStringLiteral("ConfigureAgentsWidget"), 0140 QStringLiteral("AuditLogViewer")}; 0141 for (const QString &str : dialogListName) { 0142 KConfigGroup oldGroup = settingsrc->group(str); 0143 cleanupFolderSettings(oldGroup); 0144 } 0145 settingsrc->sync(); 0146 Q_EMIT cleanDoneInfo(i18n("Clean Dialog Size in setting file `%1`: Done", configName)); 0147 } 0148 0149 #include "moc_refreshsettingscleanuppage.cpp"