File indexing completed on 2024-05-12 05:11:11

0001 /*
0002     SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>
0003     SPDX-FileCopyrightText: 2010 Andras Mantia <andras@kdab.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "commandbase.h"
0011 
0012 #include <Akonadi/Collection>
0013 #include <Akonadi/Item>
0014 
0015 class QAbstractItemModel;
0016 class KJob;
0017 namespace Akonadi
0018 {
0019 class MoveToTrashCommand : public CommandBase
0020 {
0021     Q_OBJECT
0022 public:
0023     MoveToTrashCommand(const QAbstractItemModel *model, const Akonadi::Item::List &msgList, QObject *parent = nullptr);
0024     MoveToTrashCommand(const QAbstractItemModel *model, const Akonadi::Collection::List &folders, QObject *parent = nullptr);
0025 
0026     void execute() override;
0027 
0028 private Q_SLOTS:
0029     void slotMoveDone(Akonadi::CommandBase::Result result);
0030 
0031 private:
0032     void slotFetchDone(KJob *job);
0033     void moveMessages();
0034     Akonadi::Collection trashCollectionFromResource(const Akonadi::Collection &col);
0035     Akonadi::Collection trashCollectionFolder();
0036     Akonadi::Collection findTrashFolder(const Akonadi::Collection &folder);
0037     Akonadi::Collection collectionFromId(Collection::Id id) const;
0038 
0039     Akonadi::Collection::List mFolders;
0040     Akonadi::Item::List mMessages;
0041     Akonadi::Collection::Id the_trashCollectionFolder;
0042     const QAbstractItemModel *mModel = nullptr;
0043     int mFolderListJobCount = 0;
0044 };
0045 }