1 /*
2    SPDX-FileCopyrightText: 2013-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #pragma once
7 
8 #include <Akonadi/Item>
9 #include <QObject>
10 #include <QQueue>
11 namespace Akonadi
12 {
13 class AgentInstance;
14 class Collection;
15 }
16 
17 class FolderArchiveAccountInfo;
18 class FolderArchiveAgentJob;
19 class FolderArchiveCache;
20 class KJob;
21 class FolderArchiveManager : public QObject
22 {
23     Q_OBJECT
24 public:
25     explicit FolderArchiveManager(QObject *parent = nullptr);
26     ~FolderArchiveManager() override;
27 
28     void load();
29     void setArchiveItems(const Akonadi::Item::List &items, const QString &instanceName);
30     void setArchiveItem(qlonglong itemId);
31 
32     void moveFailed(const QString &msg);
33     void moveDone();
34 
35     Q_REQUIRED_RESULT FolderArchiveCache *folderArchiveCache() const;
36     void reloadConfig();
37 
38 public Q_SLOTS:
39     void slotCollectionRemoved(const Akonadi::Collection &collection);
40     void slotInstanceRemoved(const Akonadi::AgentInstance &instance);
41 
42 private:
43     Q_DISABLE_COPY(FolderArchiveManager)
44     void slotFetchParentCollection(KJob *job);
45     void slotFetchCollection(KJob *job);
46 
47     Q_REQUIRED_RESULT FolderArchiveAccountInfo *infoFromInstanceName(const QString &instanceName) const;
48     void nextJob();
49     void removeInfo(const QString &instanceName);
50     QQueue<FolderArchiveAgentJob *> mJobQueue;
51     FolderArchiveAgentJob *mCurrentJob = nullptr;
52     QList<FolderArchiveAccountInfo *> mListAccountInfo;
53     FolderArchiveCache *const mFolderArchiveCache;
54 };
55 
56