File indexing completed on 2024-05-12 05:10:35

0001 /*
0002   SPDX-FileCopyrightText: 2013 Sérgio Martins <iamsergio@gmail.com>
0003 
0004   SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0
0005 */
0006 
0007 #pragma once
0008 
0009 #include "options.h"
0010 
0011 #include <Akonadi/Collection>
0012 #include <KCalendarCore/MemoryCalendar>
0013 
0014 #include <QList>
0015 #include <QObject>
0016 
0017 class KJob;
0018 
0019 class Backuper : public QObject
0020 {
0021     Q_OBJECT
0022 public:
0023     explicit Backuper(QObject *parent = nullptr);
0024     void backup(const QString &filename, const QList<Akonadi::Collection::Id> &collectionIds);
0025 
0026 Q_SIGNALS:
0027     void finished(bool success, const QString &errorMessage);
0028 
0029 private Q_SLOTS:
0030     void onCollectionsFetched(KJob *);
0031     void onCollectionLoaded(KJob *);
0032 
0033 private:
0034     void loadCollection(const Akonadi::Collection &collection);
0035     void emitFinished(bool success, const QString &message);
0036 
0037     QList<Akonadi::Collection::Id> m_requestedCollectionIds;
0038     QList<Akonadi::Collection::Id> m_pendingCollections;
0039 
0040     Akonadi::Collection::List m_collections;
0041     QString m_filename;
0042     KCalendarCore::MemoryCalendar::Ptr m_calendar;
0043 
0044     bool m_backupInProgress;
0045 };