1 /*
2 SPDX-FileCopyrightText: 2014-2021 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "sieveeditormanagesievewidget.h"
8 #include "readserversieveconfigjob.h"
9 #include <KSieveUi/ManageSieveTreeView>
10 #include <KSieveUi/SieveTreeWidgetItem>
11
12 #include <KManageSieve/SieveJob>
13
14 #include <KLocalizedString>
15
16 using namespace KSieveUi;
17
SieveEditorManageSieveWidget(QWidget * parent)18 SieveEditorManageSieveWidget::SieveEditorManageSieveWidget(QWidget *parent)
19 : KSieveUi::ManageSieveWidget(parent)
20 {
21 }
22
~SieveEditorManageSieveWidget()23 SieveEditorManageSieveWidget::~SieveEditorManageSieveWidget()
24 {
25 }
26
refreshList()27 bool SieveEditorManageSieveWidget::refreshList()
28 {
29 bool noImapFound = true;
30 SieveTreeWidgetItem *last = nullptr;
31 for (const SieveEditorUtil::SieveServerConfig &conf : std::as_const(mSieveServerSettings)) {
32 last = new SieveTreeWidgetItem(treeView(), last);
33 last->setText(0, conf.sieveSettings.serverName + QStringLiteral(" (%1)").arg(conf.sieveSettings.userName));
34 last->setIcon(0, QIcon::fromTheme(QStringLiteral("network-server")));
35
36 const QUrl u = conf.url();
37 if (u.isEmpty()) {
38 auto item = new QTreeWidgetItem(last);
39 item->setText(0, i18n("No Sieve URL configured"));
40 item->setFlags(item->flags() & ~Qt::ItemIsEnabled);
41 treeView()->expandItem(last);
42 } else if (!conf.enabled) {
43 last->setFlags(last->flags() & ~Qt::ItemIsEnabled);
44 last->setText(0, i18n("(Disabled) %1", last->text(0)));
45 } else {
46 KManageSieve::SieveJob *job = KManageSieve::SieveJob::list(u);
47 job->setProperty("sieveimapaccountsettings", QVariant::fromValue(conf.sieveImapAccountSettings));
48 connect(job, &KManageSieve::SieveJob::gotList, this, &SieveEditorManageSieveWidget::slotGotList);
49 mJobs.insert(job, last);
50 mUrls.insert(last, u);
51 last->startAnimation();
52 }
53 noImapFound = false;
54 }
55 return noImapFound;
56 }
57
updateSieveSettings()58 void SieveEditorManageSieveWidget::updateSieveSettings()
59 {
60 auto job = new ReadServerSieveConfigJob(this);
61 connect(job, &ReadServerSieveConfigJob::finished, this, &SieveEditorManageSieveWidget::slotReadServerSieveConfigDone);
62 job->start();
63 }
64
slotReadServerSieveConfigDone(const QVector<SieveEditorUtil::SieveServerConfig> & lstConfig)65 void SieveEditorManageSieveWidget::slotReadServerSieveConfigDone(const QVector<SieveEditorUtil::SieveServerConfig> &lstConfig)
66 {
67 mSieveServerSettings = lstConfig;
68 Q_EMIT updateSieveSettingsDone();
69 }
70