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 #include "movecommand.h" 0009 #include "util_p.h" 0010 0011 #include <Akonadi/ItemDeleteJob> 0012 #include <Akonadi/ItemMoveJob> 0013 using namespace Akonadi; 0014 0015 class Akonadi::MoveCommandPrivate 0016 { 0017 public: 0018 MoveCommandPrivate() = default; 0019 0020 Akonadi::Collection mDestFolder; 0021 Akonadi::Item::List mMessages; 0022 }; 0023 0024 MoveCommand::MoveCommand(const Akonadi::Collection &destFolder, const Akonadi::Item::List &msgList, QObject *parent) 0025 : CommandBase(parent) 0026 , d(new Akonadi::MoveCommandPrivate()) 0027 { 0028 d->mDestFolder = destFolder; 0029 d->mMessages = msgList; 0030 } 0031 0032 MoveCommand::~MoveCommand() = default; 0033 0034 void MoveCommand::execute() 0035 { 0036 if (d->mMessages.isEmpty()) { 0037 emitResult(OK); 0038 return; 0039 } 0040 if (d->mDestFolder.isValid()) { 0041 auto job = new Akonadi::ItemMoveJob(d->mMessages, d->mDestFolder, this); 0042 connect(job, &Akonadi::ItemMoveJob::result, this, &MoveCommand::slotMoveResult); 0043 } else { 0044 auto job = new Akonadi::ItemDeleteJob(d->mMessages, this); 0045 connect(job, &Akonadi::ItemDeleteJob::result, this, &MoveCommand::slotMoveResult); 0046 } 0047 } 0048 0049 void MoveCommand::slotMoveResult(KJob *job) 0050 { 0051 if (job->error()) { 0052 // handle errors 0053 Util::showJobError(job); 0054 emitResult(Failed); 0055 } else { 0056 emitResult(OK); 0057 } 0058 } 0059 0060 #include "moc_movecommand.cpp"