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 "serversievesettingsdialog.h"
8 #include "serversievesettings.h"
9 
10 #include <KLocalizedString>
11 #include <QDialogButtonBox>
12 #include <QPushButton>
13 #include <QVBoxLayout>
14 
ServerSieveSettingsDialog(QWidget * parent)15 ServerSieveSettingsDialog::ServerSieveSettingsDialog(QWidget *parent)
16     : QDialog(parent)
17 {
18     setWindowTitle(i18nc("@title:window", "Add Sieve Server"));
19 
20     auto w = new QWidget;
21     auto lay = new QVBoxLayout;
22     mServerSieveSettings = new ServerSieveSettings;
23     connect(mServerSieveSettings, &ServerSieveSettings::enableOkButton, this, &ServerSieveSettingsDialog::slotEnableButtonOk);
24     lay->addWidget(mServerSieveSettings);
25     lay->setContentsMargins({});
26     w->setLayout(lay);
27     auto mainLayout = new QVBoxLayout(this);
28     mainLayout->addWidget(w);
29 
30     auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
31     mOkButton = buttonBox->button(QDialogButtonBox::Ok);
32     mOkButton->setDefault(true);
33     mOkButton->setShortcut(Qt::CTRL | Qt::Key_Return);
34     connect(buttonBox, &QDialogButtonBox::accepted, this, &ServerSieveSettingsDialog::accept);
35     connect(buttonBox, &QDialogButtonBox::rejected, this, &ServerSieveSettingsDialog::reject);
36     mainLayout->addWidget(buttonBox);
37 
38     readConfig();
39     mOkButton->setEnabled(false);
40 }
41 
~ServerSieveSettingsDialog()42 ServerSieveSettingsDialog::~ServerSieveSettingsDialog()
43 {
44     writeConfig();
45 }
46 
readConfig()47 void ServerSieveSettingsDialog::readConfig()
48 {
49     KConfigGroup group(KSharedConfig::openStateConfig(), "ServerSieveSettingsDialog");
50     const QSize size = group.readEntry("Size", QSize(450, 350));
51     if (size.isValid()) {
52         resize(size);
53     }
54 }
55 
writeConfig()56 void ServerSieveSettingsDialog::writeConfig()
57 {
58     KConfigGroup group(KSharedConfig::openStateConfig(), "ServerSieveSettingsDialog");
59     group.writeEntry("Size", size());
60     group.sync();
61 }
62 
slotEnableButtonOk(bool b)63 void ServerSieveSettingsDialog::slotEnableButtonOk(bool b)
64 {
65     mOkButton->setEnabled(b);
66 }
67 
serverName() const68 QString ServerSieveSettingsDialog::serverName() const
69 {
70     return mServerSieveSettings->serverName();
71 }
72 
setServerName(const QString & name)73 void ServerSieveSettingsDialog::setServerName(const QString &name)
74 {
75     mServerSieveSettings->setServerName(name);
76 }
77 
port() const78 int ServerSieveSettingsDialog::port() const
79 {
80     return mServerSieveSettings->port();
81 }
82 
setPort(int value)83 void ServerSieveSettingsDialog::setPort(int value)
84 {
85     mServerSieveSettings->setPort(value);
86 }
87 
userName() const88 QString ServerSieveSettingsDialog::userName() const
89 {
90     return mServerSieveSettings->userName();
91 }
92 
setUserName(const QString & name)93 void ServerSieveSettingsDialog::setUserName(const QString &name)
94 {
95     mServerSieveSettings->setUserName(name);
96 }
97 
password() const98 QString ServerSieveSettingsDialog::password() const
99 {
100     return mServerSieveSettings->password();
101 }
102 
setPassword(const QString & pass)103 void ServerSieveSettingsDialog::setPassword(const QString &pass)
104 {
105     mServerSieveSettings->setPassword(pass);
106 }
107 
setServerSieveConfig(const SieveEditorUtil::SieveServerConfig & conf)108 void ServerSieveSettingsDialog::setServerSieveConfig(const SieveEditorUtil::SieveServerConfig &conf)
109 {
110     mServerSieveSettings->setServerSieveConfig(conf);
111 }
112 
serverSieveConfig() const113 SieveEditorUtil::SieveServerConfig ServerSieveSettingsDialog::serverSieveConfig() const
114 {
115     return mServerSieveSettings->serverSieveConfig();
116 }
117