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