1 /*
2 SPDX-FileCopyrightText: 2013-2021 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "sieveeditorconfiguredialog.h"
8 #include "serversievelistwidget.h"
9 #include "sieveeditorconfigureserverwidget.h"
10 #include "sieveeditorglobalconfig.h"
11 #include <PimCommon/ConfigureImmutableWidgetUtils>
12
13 #ifdef WITH_KUSERFEEDBACK
14 #include "userfeedback/userfeedbackmanager.h"
15 #include <KUserFeedback/FeedbackConfigWidget>
16 #include <KUserFeedback/Provider>
17 #endif
18
19 #include <KLocalizedString>
20 #include <KSharedConfig>
21
22 #include <KConfigGroup>
23 #include <QCheckBox>
24 #include <QDialogButtonBox>
25 #include <QPushButton>
26 #include <QVBoxLayout>
27
SieveEditorConfigureDialog(QWidget * parent)28 SieveEditorConfigureDialog::SieveEditorConfigureDialog(QWidget *parent)
29 : KPageDialog(parent)
30 {
31 setWindowTitle(i18nc("@title:window", "Configure"));
32 setFaceType(KPageDialog::List);
33
34 buttonBox()->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
35
36 connect(buttonBox(), &QDialogButtonBox::accepted, this, &SieveEditorConfigureDialog::accept);
37 connect(buttonBox(), &QDialogButtonBox::rejected, this, &SieveEditorConfigureDialog::reject);
38
39 // Server page
40 auto serverConfigureWiget = new QWidget;
41 auto layout = new QVBoxLayout(serverConfigureWiget);
42 mServerWidget = new SieveEditorConfigureServerWidget;
43 layout->addWidget(mServerWidget);
44
45 auto serverPageWidgetPage = new KPageWidgetItem(serverConfigureWiget, i18n("Sieve Server"));
46 serverPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("network-workgroup")));
47 addPage(serverPageWidgetPage);
48
49 // Editor page
50 auto editorWidget = new QWidget;
51 editorWidget->setObjectName(QStringLiteral("editorwidget"));
52
53 layout = new QVBoxLayout(editorWidget);
54 mWrapText = new QCheckBox(i18n("Wrap Text"));
55 mWrapText->setObjectName(QStringLiteral("wraptext"));
56 layout->addWidget(mWrapText);
57 layout->addStretch(100);
58
59 auto editorPageWidgetPage = new KPageWidgetItem(editorWidget, i18n("Editor"));
60 editorPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("accessories-text-editor")));
61 addPage(editorPageWidgetPage);
62
63 // UserFeedBack config
64 #ifdef WITH_KUSERFEEDBACK
65 auto userFeedBackWidget = new QWidget;
66 userFeedBackWidget->setObjectName(QStringLiteral("userFeedBackWidget"));
67
68 mUserFeedbackWidget = new KUserFeedback::FeedbackConfigWidget(this);
69
70 auto userFeedBackLayout = new QHBoxLayout(userFeedBackWidget);
71 userFeedBackLayout->setContentsMargins({});
72 userFeedBackLayout->addWidget(mUserFeedbackWidget);
73
74 mUserFeedbackWidget->setFeedbackProvider(UserFeedBackManager::self()->userFeedbackProvider());
75 auto userFeedBackPageWidgetPage = new KPageWidgetItem(userFeedBackWidget, i18n("User Feedback"));
76 userFeedBackPageWidgetPage->setIcon(QIcon::fromTheme(QStringLiteral("preferences-other")));
77 addPage(userFeedBackPageWidgetPage);
78 #endif
79
80 loadServerSieveConfig();
81 readConfig();
82 }
83
~SieveEditorConfigureDialog()84 SieveEditorConfigureDialog::~SieveEditorConfigureDialog()
85 {
86 writeConfig();
87 }
88
loadServerSieveConfig()89 void SieveEditorConfigureDialog::loadServerSieveConfig()
90 {
91 mServerWidget->readConfig();
92 PimCommon::ConfigureImmutableWidgetUtils::loadWidget(mWrapText, SieveEditorGlobalConfig::self()->wrapTextItem());
93 }
94
saveServerSieveConfig()95 void SieveEditorConfigureDialog::saveServerSieveConfig()
96 {
97 mServerWidget->writeConfig();
98 PimCommon::ConfigureImmutableWidgetUtils::saveCheckBox(mWrapText, SieveEditorGlobalConfig::self()->wrapTextItem());
99 SieveEditorGlobalConfig::self()->save();
100 #ifdef WITH_KUSERFEEDBACK
101 // set current active mode + write back the config for future starts
102 UserFeedBackManager::self()->userFeedbackProvider()->setTelemetryMode(mUserFeedbackWidget->telemetryMode());
103 UserFeedBackManager::self()->userFeedbackProvider()->setSurveyInterval(mUserFeedbackWidget->surveyInterval());
104 #endif
105 }
106
readConfig()107 void SieveEditorConfigureDialog::readConfig()
108 {
109 KConfigGroup group(KSharedConfig::openStateConfig(), "SieveEditorConfigureDialog");
110 const QSize size = group.readEntry("Size", QSize(600, 400));
111 if (size.isValid()) {
112 resize(size);
113 }
114 }
115
writeConfig()116 void SieveEditorConfigureDialog::writeConfig()
117 {
118 KConfigGroup group(KSharedConfig::openStateConfig(), "SieveEditorConfigureDialog");
119 group.writeEntry("Size", size());
120 group.sync();
121 }
122