1 /* 2 SPDX-FileCopyrightText: 2008 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 CollectionCopyJobPrivate; 16 17 /** 18 * @short Job that copies a collection into another collection in the Akonadi storage. 19 * 20 * This job copies a single collection into a specified target collection. 21 * 22 * @code 23 * 24 * Akonadi::Collection source = ... 25 * Akonadi::Collection target = ... 26 * 27 * Akonadi::CollectionCopyJob *job = new Akonadi::CollectionCopyJob( source, target ); 28 * connect( job, SIGNAL(result(KJob*)), SLOT(copyFinished(KJob*)) ); 29 * 30 * ... 31 * 32 * MyClass::copyFinished( KJob *job ) 33 * { 34 * if ( job->error() ) 35 * qDebug() << "Error occurred"; 36 * else 37 * qDebug() << "Copied successfully"; 38 * } 39 * 40 * @endcode 41 * 42 * @author Volker Krause <vkrause@kde.org> 43 */ 44 class AKONADICORE_EXPORT CollectionCopyJob : public Job 45 { 46 Q_OBJECT 47 48 public: 49 /** 50 * Creates a new collection copy job to copy the given @p source collection into @p target. 51 * 52 * @param source The collection to copy. 53 * @param target The target collection. 54 * @param parent The parent object. 55 */ 56 CollectionCopyJob(const Collection &source, const Collection &target, QObject *parent = nullptr); 57 58 /** 59 * Destroys the collection copy job. 60 */ 61 ~CollectionCopyJob() override; 62 63 protected: 64 void doStart() override; 65 bool doHandleResponse(qint64 tag, const Protocol::CommandPtr &response) override; 66 67 private: 68 Q_DECLARE_PRIVATE(CollectionCopyJob) 69 }; 70 71 } 72 73