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"