File indexing completed on 2024-05-12 05:25:41

0001 /*
0002    SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "sieveeditormanagesievewidget.h"
0008 #include "readserversieveconfigjob.h"
0009 #include <KSieveUi/ManageSieveTreeView>
0010 #include <KSieveUi/SieveTreeWidgetItem>
0011 
0012 #include <KManageSieve/SieveJob>
0013 
0014 #include <KLocalizedString>
0015 
0016 using namespace KSieveUi;
0017 
0018 SieveEditorManageSieveWidget::SieveEditorManageSieveWidget(QWidget *parent)
0019     : KSieveUi::ManageSieveWidget(parent)
0020 {
0021 }
0022 
0023 SieveEditorManageSieveWidget::~SieveEditorManageSieveWidget() = default;
0024 
0025 bool SieveEditorManageSieveWidget::refreshList()
0026 {
0027     bool noImapFound = true;
0028     SieveTreeWidgetItem *last = nullptr;
0029     for (const SieveEditorUtil::SieveServerConfig &conf : std::as_const(mSieveServerSettings)) {
0030         last = new SieveTreeWidgetItem(treeView(), last);
0031         last->setText(0, conf.sieveSettings.serverName + QStringLiteral(" (%1)").arg(conf.sieveSettings.userName));
0032         last->setIcon(0, QIcon::fromTheme(QStringLiteral("network-server")));
0033 
0034         const QUrl u = conf.url();
0035         if (u.isEmpty()) {
0036             auto item = new QTreeWidgetItem(last);
0037             item->setText(0, i18n("No Sieve URL configured"));
0038             item->setFlags(item->flags() & ~Qt::ItemIsEnabled);
0039             treeView()->expandItem(last);
0040         } else if (!conf.enabled) {
0041             last->setFlags(last->flags() & ~Qt::ItemIsEnabled);
0042             last->setText(0, i18n("(Disabled) %1", last->text(0)));
0043         } else {
0044             KManageSieve::SieveJob *job = KManageSieve::SieveJob::list(u);
0045             job->setProperty("sieveimapaccountsettings", QVariant::fromValue(conf.sieveImapAccountSettings));
0046             connect(job, &KManageSieve::SieveJob::gotList, this, &SieveEditorManageSieveWidget::slotGotList);
0047             mJobs.insert(job, last);
0048             mUrls.insert(last, u);
0049             last->startAnimation();
0050         }
0051         noImapFound = false;
0052     }
0053     return noImapFound;
0054 }
0055 
0056 void SieveEditorManageSieveWidget::updateSieveSettings()
0057 {
0058     auto job = new ReadServerSieveConfigJob(this);
0059     connect(job, &ReadServerSieveConfigJob::finished, this, &SieveEditorManageSieveWidget::slotReadServerSieveConfigDone);
0060     job->start();
0061 }
0062 
0063 void SieveEditorManageSieveWidget::slotReadServerSieveConfigDone(const QList<SieveEditorUtil::SieveServerConfig> &lstConfig)
0064 {
0065     mSieveServerSettings = lstConfig;
0066     Q_EMIT updateSieveSettingsDone();
0067 }
0068 
0069 #include "moc_sieveeditormanagesievewidget.cpp"