File indexing completed on 2024-05-12 05:22:13
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 "eventdeletejob.h" 0010 #include "calendarservice.h" 0011 #include "event.h" 0012 #include "private/queuehelper_p.h" 0013 0014 #include <QNetworkRequest> 0015 0016 using namespace KGAPI2; 0017 0018 class Q_DECL_HIDDEN EventDeleteJob::Private 0019 { 0020 public: 0021 QueueHelper<QString> eventsIds; 0022 QString calendarId; 0023 }; 0024 0025 EventDeleteJob::EventDeleteJob(const EventPtr &event, const QString &calendarId, const AccountPtr &account, QObject *parent) 0026 : DeleteJob(account, parent) 0027 , d(new Private) 0028 { 0029 d->eventsIds << event->id(); 0030 d->calendarId = calendarId; 0031 } 0032 0033 EventDeleteJob::EventDeleteJob(const EventsList &events, const QString &calendarId, const AccountPtr &account, QObject *parent) 0034 : DeleteJob(account, parent) 0035 , d(new Private) 0036 { 0037 for (const EventPtr &event : events) { 0038 d->eventsIds << event->id(); 0039 } 0040 d->calendarId = calendarId; 0041 } 0042 0043 EventDeleteJob::EventDeleteJob(const QString &eventId, const QString &calendarId, const AccountPtr &account, QObject *parent) 0044 : DeleteJob(account, parent) 0045 , d(new Private) 0046 { 0047 d->eventsIds << eventId; 0048 d->calendarId = calendarId; 0049 } 0050 0051 EventDeleteJob::EventDeleteJob(const QStringList &eventIds, const QString &calendarId, const AccountPtr &account, QObject *parent) 0052 : DeleteJob(account, parent) 0053 , d(new Private) 0054 { 0055 d->eventsIds = eventIds; 0056 d->calendarId = calendarId; 0057 } 0058 0059 EventDeleteJob::~EventDeleteJob() = default; 0060 0061 void EventDeleteJob::start() 0062 { 0063 if (d->eventsIds.atEnd()) { 0064 emitFinished(); 0065 return; 0066 } 0067 0068 const QString eventId = d->eventsIds.current(); 0069 const auto request = CalendarService::prepareRequest(CalendarService::removeEventUrl(d->calendarId, eventId)); 0070 0071 enqueueRequest(request); 0072 } 0073 0074 void EventDeleteJob::handleReply(const QNetworkReply *reply, const QByteArray &rawData) 0075 { 0076 d->eventsIds.currentProcessed(); 0077 0078 KGAPI2::DeleteJob::handleReply(reply, rawData); 0079 }