File indexing completed on 2024-05-12 05:22:32
0001 /* 0002 * This file is part of LibKGAPI library 0003 * 0004 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #include "taskdeletejob.h" 0010 #include "account.h" 0011 #include "debug.h" 0012 #include "private/queuehelper_p.h" 0013 #include "task.h" 0014 #include "tasksservice.h" 0015 #include "utils.h" 0016 0017 #include <QNetworkRequest> 0018 0019 using namespace KGAPI2; 0020 0021 class Q_DECL_HIDDEN TaskDeleteJob::Private 0022 { 0023 public: 0024 QueueHelper<QString> tasksIds; 0025 QString taskListId; 0026 }; 0027 0028 TaskDeleteJob::TaskDeleteJob(const TaskPtr &task, const QString &taskListId, const AccountPtr &account, QObject *parent) 0029 : DeleteJob(account, parent) 0030 , d(new Private()) 0031 { 0032 d->tasksIds << task->uid(); 0033 d->taskListId = taskListId; 0034 } 0035 0036 TaskDeleteJob::TaskDeleteJob(const TasksList &tasks, const QString &tasklistId, const AccountPtr &account, QObject *parent) 0037 : DeleteJob(account, parent) 0038 , d(new Private()) 0039 { 0040 d->tasksIds.reserve(tasks.size()); 0041 for (const TaskPtr &task : std::as_const(tasks)) { 0042 d->tasksIds << task->uid(); 0043 } 0044 d->taskListId = tasklistId; 0045 } 0046 0047 TaskDeleteJob::TaskDeleteJob(const QString &taskId, const QString &taskListId, const AccountPtr &account, QObject *parent) 0048 : DeleteJob(account, parent) 0049 , d(new Private()) 0050 { 0051 d->tasksIds << taskId; 0052 d->taskListId = taskListId; 0053 } 0054 0055 TaskDeleteJob::TaskDeleteJob(const QStringList &tasksIds, const QString &taskListId, const AccountPtr &account, QObject *parent) 0056 : DeleteJob(account, parent) 0057 , d(new Private()) 0058 { 0059 d->tasksIds = tasksIds; 0060 d->taskListId = taskListId; 0061 } 0062 0063 TaskDeleteJob::~TaskDeleteJob() = default; 0064 0065 void TaskDeleteJob::start() 0066 { 0067 if (d->tasksIds.atEnd()) { 0068 emitFinished(); 0069 return; 0070 } 0071 0072 const QString taskId = d->tasksIds.current(); 0073 const QUrl url = TasksService::removeTaskUrl(d->taskListId, taskId); 0074 QNetworkRequest request(url); 0075 0076 enqueueRequest(request); 0077 } 0078 0079 void TaskDeleteJob::handleReply(const QNetworkReply *reply, const QByteArray &rawData) 0080 { 0081 d->tasksIds.currentProcessed(); 0082 0083 KGAPI2::DeleteJob::handleReply(reply, rawData); 0084 } 0085 0086 #include "moc_taskdeletejob.cpp"