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 };