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 };