File indexing completed on 2024-05-12 05:25:33

0001 /*
0002    SPDX-FileCopyrightText: 2014-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "utils.h"
0010 #include <QObject>
0011 class AbstractImportExportJob;
0012 class ArchiveStorage;
0013 
0014 class PIMDATAEXPORTER_EXPORT PimDataBackupRestore : public QObject
0015 {
0016     Q_OBJECT
0017 public:
0018     explicit PimDataBackupRestore(QObject *parent = nullptr);
0019     ~PimDataBackupRestore() override;
0020 
0021     [[nodiscard]] bool backupStart(const QString &filename);
0022     [[nodiscard]] bool restoreStart(const QString &filename);
0023 
0024     void setStoredParameters(const QMap<Utils::AppsType, Utils::importExportParameters> &stored);
0025 
0026     void nextStep();
0027     void closeArchive();
0028     void setExportedInfoFileName(const QString &filename);
0029 
0030 Q_SIGNALS:
0031     void addInfo(const QString &);
0032     void addEndLine();
0033     void updateActions(bool state);
0034     void addError(const QString &);
0035     void addTitle(const QString &);
0036     void jobFinished();
0037     void backupDone();
0038     void restoreDone();
0039     void jobFailed();
0040     void needSyncResource(const QString &name, const QString &identifier);
0041 
0042 protected:
0043     virtual bool continueToRestore();
0044 
0045     virtual void addExportProgressIndicator();
0046     AbstractImportExportJob *mImportExportData = nullptr;
0047 
0048 private:
0049     void slotJobFinished();
0050     enum Action { Backup, Restore };
0051     [[nodiscard]] bool openArchive(const QString &filename, bool readWrite);
0052     void backupNextStep();
0053     void restoreNextStep();
0054     void backupFinished();
0055     void restoreFinished();
0056     void executeJob();
0057     void addDate();
0058 
0059     QString mExportedInfoFileName;
0060     QMap<Utils::AppsType, Utils::importExportParameters> mStored;
0061     QMap<Utils::AppsType, Utils::importExportParameters>::const_iterator mStoreIterator;
0062     Action mAction = Backup;
0063     ArchiveStorage *mArchiveStorage = nullptr;
0064 };