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 "tasklistdeletejob.h"
0010 #include "private/queuehelper_p.h"
0011 #include "tasklist.h"
0012 #include "tasksservice.h"
0013 
0014 #include <QNetworkRequest>
0015 
0016 using namespace KGAPI2;
0017 
0018 class Q_DECL_HIDDEN TaskListDeleteJob::Private
0019 {
0020 public:
0021     Private(TaskListDeleteJob *parent);
0022     void processNextTaskList();
0023 
0024     QueueHelper<QString> taskListsIds;
0025 
0026 private:
0027     TaskListDeleteJob *const q;
0028 };
0029 
0030 TaskListDeleteJob::Private::Private(TaskListDeleteJob *parent)
0031     : q(parent)
0032 {
0033 }
0034 
0035 void TaskListDeleteJob::Private::processNextTaskList()
0036 {
0037     if (taskListsIds.atEnd()) {
0038         q->emitFinished();
0039         return;
0040     }
0041 
0042     const QString taskListId = taskListsIds.current();
0043     const QUrl url = TasksService::removeTaskListUrl(taskListId);
0044     QNetworkRequest request(url);
0045 
0046     QStringList headers;
0047     const auto rawHeaderList = request.rawHeaderList();
0048     headers.reserve(rawHeaderList.size());
0049     for (const QByteArray &str : std::as_const(rawHeaderList)) {
0050         headers << QLatin1StringView(str) + QLatin1StringView(": ") + QLatin1StringView(request.rawHeader(str));
0051     }
0052 
0053     q->enqueueRequest(request);
0054 }
0055 
0056 TaskListDeleteJob::TaskListDeleteJob(const TaskListPtr &taskList, const AccountPtr &account, QObject *parent)
0057     : DeleteJob(account, parent)
0058     , d(new Private(this))
0059 {
0060     d->taskListsIds << taskList->uid();
0061 }
0062 
0063 TaskListDeleteJob::TaskListDeleteJob(const TaskListsList &taskLists, const AccountPtr &account, QObject *parent)
0064     : DeleteJob(account, parent)
0065     , d(new Private(this))
0066 {
0067     d->taskListsIds.reserve(taskLists.size());
0068     for (const TaskListPtr &taskList : taskLists) {
0069         d->taskListsIds << taskList->uid();
0070     }
0071 }
0072 
0073 TaskListDeleteJob::TaskListDeleteJob(const QStringList &taskListsIds, const AccountPtr &account, QObject *parent)
0074     : DeleteJob(account, parent)
0075     , d(new Private(this))
0076 {
0077     d->taskListsIds = taskListsIds;
0078 }
0079 
0080 TaskListDeleteJob::TaskListDeleteJob(const QString &taskListsId, const AccountPtr &account, QObject *parent)
0081     : DeleteJob(account, parent)
0082     , d(new Private(this))
0083 {
0084     d->taskListsIds << taskListsId;
0085 }
0086 
0087 TaskListDeleteJob::~TaskListDeleteJob() = default;
0088 
0089 void TaskListDeleteJob::start()
0090 {
0091     d->processNextTaskList();
0092 }
0093 
0094 void TaskListDeleteJob::handleReply(const QNetworkReply *reply, const QByteArray &rawData)
0095 {
0096     d->taskListsIds.currentProcessed();
0097 
0098     KGAPI2::DeleteJob::handleReply(reply, rawData);
0099 }
0100 
0101 #include "moc_tasklistdeletejob.cpp"