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 }