File indexing completed on 2024-05-12 05:22:12

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 "calendardeletejob.h"
0010 #include "calendar.h"
0011 #include "calendarservice.h"
0012 #include "private/queuehelper_p.h"
0013 
0014 #include <QNetworkRequest>
0015 
0016 using namespace KGAPI2;
0017 
0018 class Q_DECL_HIDDEN CalendarDeleteJob::Private
0019 {
0020 public:
0021     QueueHelper<QString> calendarsIds;
0022 };
0023 
0024 CalendarDeleteJob::CalendarDeleteJob(const CalendarPtr &calendar, const AccountPtr &account, QObject *parent)
0025     : DeleteJob(account, parent)
0026     , d(new Private)
0027 {
0028     d->calendarsIds << calendar->uid();
0029 }
0030 
0031 CalendarDeleteJob::CalendarDeleteJob(const CalendarsList &calendars, const AccountPtr &account, QObject *parent)
0032     : DeleteJob(account, parent)
0033     , d(new Private)
0034 {
0035     for (const CalendarPtr &calendar : calendars) {
0036         d->calendarsIds << calendar->uid();
0037     }
0038 }
0039 
0040 CalendarDeleteJob::CalendarDeleteJob(const QString &calendarId, const AccountPtr &account, QObject *parent)
0041     : DeleteJob(account, parent)
0042     , d(new Private)
0043 {
0044     d->calendarsIds << calendarId;
0045 }
0046 
0047 CalendarDeleteJob::CalendarDeleteJob(const QStringList &calendarsIds, const AccountPtr &account, QObject *parent)
0048     : DeleteJob(account, parent)
0049     , d(new Private)
0050 {
0051     d->calendarsIds = calendarsIds;
0052 }
0053 
0054 CalendarDeleteJob::~CalendarDeleteJob() = default;
0055 
0056 void CalendarDeleteJob::start()
0057 {
0058     if (d->calendarsIds.atEnd()) {
0059         emitFinished();
0060         return;
0061     }
0062 
0063     const QString calendarId = d->calendarsIds.current();
0064     const auto request = CalendarService::prepareRequest(CalendarService::removeCalendarUrl(calendarId));
0065 
0066     enqueueRequest(request);
0067 }
0068 
0069 void CalendarDeleteJob::handleReply(const QNetworkReply *reply, const QByteArray &rawData)
0070 {
0071     d->calendarsIds.currentProcessed();
0072 
0073     KGAPI2::DeleteJob::handleReply(reply, rawData);
0074 }