File indexing completed on 2024-06-02 05:20:35
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KIMAP/ListJob> 0010 #include <KSieveCore/SieveImapAccountSettings> 0011 #include <QObject> 0012 namespace KIMAP 0013 { 0014 class Session; 0015 } 0016 0017 class QStandardItemModel; 0018 class KJob; 0019 class QStandardItem; 0020 class SelectImapLoadFoldersJob : public QObject 0021 { 0022 Q_OBJECT 0023 public: 0024 enum Roles { 0025 PathRole = Qt::UserRole + 1, 0026 }; 0027 0028 explicit SelectImapLoadFoldersJob(QStandardItemModel *model, QObject *parent = nullptr); 0029 ~SelectImapLoadFoldersJob() override; 0030 0031 void start(); 0032 0033 void setSieveImapAccountSettings(const KSieveCore::SieveImapAccountSettings &account); 0034 0035 Q_SIGNALS: 0036 void finished(bool success, QStandardItemModel *model); 0037 0038 private: 0039 void slotLoginDone(KJob *job); 0040 void slotMailBoxesReceived(const QList<KIMAP::MailBoxDescriptor> &mailBoxes, const QList<QList<QByteArray>> &flags); 0041 void slotReloadRequested(); 0042 void slotFullListingDone(KJob *job); 0043 0044 KSieveCore::SieveImapAccountSettings mSieveImapAccount; 0045 QMap<QString, QStandardItem *> mItemsMap; 0046 KIMAP::Session *mSession = nullptr; 0047 QStandardItemModel *const mModel; 0048 };