File indexing completed on 2024-05-12 05:25:40
0001 /* 0002 SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "sieveeditorconfiguredialog.h" 0008 #include "sieveeditorconfigureserverwidget.h" 0009 #include "sieveeditorglobalconfig.h" 0010 #include <PimCommon/ConfigureImmutableWidgetUtils> 0011 0012 #ifdef WITH_KUSERFEEDBACK 0013 #include "userfeedback/userfeedbackmanager.h" 0014 #include <KUserFeedback/FeedbackConfigWidget> 0015 #include <KUserFeedback/Provider> 0016 #endif 0017 0018 #include <KLocalizedString> 0019 #include <KSharedConfig> 0020 0021 #include <KConfigGroup> 0022 #include <KWindowConfig> 0023 #include <QCheckBox> 0024 #include <QDialogButtonBox> 0025 #include <QPushButton> 0026 #include <QVBoxLayout> 0027 #include <QWindow> 0028 0029 namespace 0030 { 0031 static const char mySieveEditorConfigureDialog[] = "SieveEditorConfigureDialog"; 0032 } 0033 0034 SieveEditorConfigureDialog::SieveEditorConfigureDialog(QWidget *parent) 0035 : KPageDialog(parent) 0036 { 0037 setWindowTitle(i18nc("@title:window", "Configure")); 0038 setFaceType(KPageDialog::List); 0039 0040 buttonBox()->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); 0041 0042 connect(buttonBox(), &QDialogButtonBox::accepted, this, &SieveEditorConfigureDialog::accept); 0043 connect(buttonBox(), &QDialogButtonBox::rejected, this, &SieveEditorConfigureDialog::reject); 0044 0045 // Server page 0046 auto serverConfigureWiget = new QWidget; 0047 auto layout = new QVBoxLayout(serverConfigureWiget); 0048 mServerWidget = new SieveEditorConfigureServerWidget; 0049 layout->addWidget(mServerWidget); 0050 0051 auto serverPageWidgetPage = new KPageWidgetItem(serverConfigureWiget, i18n("Sieve Server")); 0052 serverPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("network-workgroup"))); 0053 addPage(serverPageWidgetPage); 0054 0055 // Editor page 0056 auto editorWidget = new QWidget; 0057 editorWidget->setObjectName(QLatin1StringView("editorwidget")); 0058 0059 layout = new QVBoxLayout(editorWidget); 0060 mWrapText = new QCheckBox(i18n("Wrap Text")); 0061 mWrapText->setObjectName(QLatin1StringView("wraptext")); 0062 layout->addWidget(mWrapText); 0063 layout->addStretch(100); 0064 0065 auto editorPageWidgetPage = new KPageWidgetItem(editorWidget, i18n("Editor")); 0066 editorPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("accessories-text-editor"))); 0067 addPage(editorPageWidgetPage); 0068 0069 // UserFeedBack config 0070 #ifdef WITH_KUSERFEEDBACK 0071 auto userFeedBackWidget = new QWidget; 0072 userFeedBackWidget->setObjectName(QLatin1StringView("userFeedBackWidget")); 0073 0074 mUserFeedbackWidget = new KUserFeedback::FeedbackConfigWidget(this); 0075 0076 auto userFeedBackLayout = new QHBoxLayout(userFeedBackWidget); 0077 userFeedBackLayout->setContentsMargins({}); 0078 userFeedBackLayout->addWidget(mUserFeedbackWidget); 0079 0080 mUserFeedbackWidget->setFeedbackProvider(UserFeedBackManager::self()->userFeedbackProvider()); 0081 auto userFeedBackPageWidgetPage = new KPageWidgetItem(userFeedBackWidget, i18n("User Feedback")); 0082 userFeedBackPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("preferences-other"))); 0083 addPage(userFeedBackPageWidgetPage); 0084 #endif 0085 0086 loadServerSieveConfig(); 0087 readConfig(); 0088 } 0089 0090 SieveEditorConfigureDialog::~SieveEditorConfigureDialog() 0091 { 0092 writeConfig(); 0093 } 0094 0095 void SieveEditorConfigureDialog::loadServerSieveConfig() 0096 { 0097 mServerWidget->readConfig(); 0098 PimCommon::ConfigureImmutableWidgetUtils::loadWidget(mWrapText, SieveEditorGlobalConfig::self()->wrapTextItem()); 0099 } 0100 0101 void SieveEditorConfigureDialog::saveServerSieveConfig() 0102 { 0103 mServerWidget->writeConfig(); 0104 PimCommon::ConfigureImmutableWidgetUtils::saveCheckBox(mWrapText, SieveEditorGlobalConfig::self()->wrapTextItem()); 0105 SieveEditorGlobalConfig::self()->save(); 0106 #ifdef WITH_KUSERFEEDBACK 0107 // set current active mode + write back the config for future starts 0108 UserFeedBackManager::self()->userFeedbackProvider()->setTelemetryMode(mUserFeedbackWidget->telemetryMode()); 0109 UserFeedBackManager::self()->userFeedbackProvider()->setSurveyInterval(mUserFeedbackWidget->surveyInterval()); 0110 #endif 0111 } 0112 0113 void SieveEditorConfigureDialog::readConfig() 0114 { 0115 create(); // ensure a window is created 0116 windowHandle()->resize(QSize(600, 400)); 0117 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1StringView(mySieveEditorConfigureDialog)); 0118 KWindowConfig::restoreWindowSize(windowHandle(), group); 0119 resize(windowHandle()->size()); // workaround for QTBUG-40584 0120 } 0121 0122 void SieveEditorConfigureDialog::writeConfig() 0123 { 0124 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1StringView(mySieveEditorConfigureDialog)); 0125 KWindowConfig::saveWindowSize(windowHandle(), group); 0126 group.sync(); 0127 } 0128 0129 #include "moc_sieveeditorconfiguredialog.cpp"