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"