1 /* 2 SPDX-FileCopyrightText: 2006 Volker Krause <vkrause@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #pragma once 8 9 #include "akonadicore_export.h" 10 #include "job.h" 11 12 namespace Akonadi 13 { 14 class Collection; 15 class CollectionDeleteJobPrivate; 16 17 /** 18 * @short Job that deletes a collection in the Akonadi storage. 19 * 20 * This job deletes a collection and all its sub-collections as well as all associated content. 21 * 22 * @code 23 * 24 * Akonadi::Collection collection = ... 25 * 26 * Akonadi::CollectionDeleteJob *job = new Akonadi::CollectionDeleteJob( collection ); 27 * connect( job, SIGNAL(result(KJob*)), this, SLOT(deletionResult(KJob*)) ); 28 * 29 * @endcode 30 * 31 * @note This job deletes the data from the backend storage. To delete the collection 32 * from the Akonadi storage only, leaving the backend storage unchanged, delete 33 * the Agent instead, as follows. (Note that if it's a sub-collection, deleting 34 * the agent will also delete its parent collection; in this case the only 35 * option is to delete the sub-collection data in both Akonadi and backend 36 * storage.) 37 * 38 * @code 39 * 40 * const Akonadi::AgentInstance instance = 41 * Akonadi::AgentManager::self()->instance( collection.resource() ); 42 * if ( instance.isValid() ) { 43 * Akonadi::AgentManager::self()->removeInstance( instance ); 44 * } 45 * 46 * @endcode 47 * 48 * @author Volker Krause <vkrause@kde.org> 49 */ 50 class AKONADICORE_EXPORT CollectionDeleteJob : public Job 51 { 52 Q_OBJECT 53 54 public: 55 /** 56 * Creates a new collection delete job. The collection needs to either have a unique 57 * identifier or a remote identifier set. Note that using a remote identifier only works 58 * in a resource context (that is from within ResourceBase), as remote identifiers 59 * are not guaranteed to be globally unique. 60 * 61 * @param collection The collection to delete. 62 * @param parent The parent object. 63 */ 64 explicit CollectionDeleteJob(const Collection &collection, QObject *parent = nullptr); 65 66 /** 67 * Destroys the collection delete job. 68 */ 69 ~CollectionDeleteJob() override; 70 71 protected: 72 void doStart() override; 73 bool doHandleResponse(qint64 tag, const Protocol::CommandPtr &response) override; 74 75 private: 76 Q_DECLARE_PRIVATE(CollectionDeleteJob) 77 }; 78 79 } 80 81