1 /* 2 SPDX-FileCopyrightText: 2020-2021 Laurent Montel <montel@kde.org> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #include "storeresourcejob.h" 8 #include "pimdataexportcore_debug.h" 9 #include "resourceconverterimpl.h" 10 #include "utils.h" 11 #include <Akonadi/ServerManager> 12 #include <KLocalizedString> 13 #include <KZip> 14 15 #include <QFileInfo> 16 StoreResourceJob(QObject * parent)17StoreResourceJob::StoreResourceJob(QObject *parent) 18 : QObject(parent) 19 { 20 } 21 ~StoreResourceJob()22StoreResourceJob::~StoreResourceJob() 23 { 24 } 25 setArchivePath(const QString & archivePath)26void StoreResourceJob::setArchivePath(const QString &archivePath) 27 { 28 mArchivePath = archivePath; 29 } 30 setIdentifier(const QString & identifier)31void StoreResourceJob::setIdentifier(const QString &identifier) 32 { 33 mIdentifier = identifier; 34 } 35 setZip(KZip * zip)36void StoreResourceJob::setZip(KZip *zip) 37 { 38 mZip = zip; 39 } 40 start()41void StoreResourceJob::start() 42 { 43 if (!mZip) { 44 qCWarning(PIMDATAEXPORTERCORE_LOG) << " mZip null it's a bug"; 45 deleteLater(); 46 return; 47 } 48 49 ResourceConverterImpl converter; 50 const QString errorStr = converter.storeResources(mZip, mIdentifier, mArchivePath); 51 if (!errorStr.isEmpty()) { 52 Q_EMIT error(errorStr); 53 } 54 const QString url = Akonadi::ServerManager::agentConfigFilePath(mIdentifier); 55 if (!url.isEmpty()) { 56 const QFileInfo fi(url); 57 const QString filename = fi.fileName(); 58 const bool fileAdded = mZip->addLocalFile(url, mArchivePath + filename); 59 if (fileAdded) { 60 Q_EMIT info(i18n("\"%1\" was backed up.", filename)); 61 } else { 62 Q_EMIT error(i18n("\"%1\" file cannot be added to backup file.", filename)); 63 } 64 } 65 deleteLater(); 66 } 67