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"