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

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "storeresourcejob.h"
0008 #include "pimdataexportcore_debug.h"
0009 #include "resourceconverterimpl.h"
0010 #include <Akonadi/ServerManager>
0011 #include <KLocalizedString>
0012 #include <KZip>
0013 
0014 #include <QFileInfo>
0015 
0016 StoreResourceJob::StoreResourceJob(QObject *parent)
0017     : QObject(parent)
0018 {
0019 }
0020 
0021 StoreResourceJob::~StoreResourceJob() = default;
0022 
0023 void StoreResourceJob::setArchivePath(const QString &archivePath)
0024 {
0025     mArchivePath = archivePath;
0026 }
0027 
0028 void StoreResourceJob::setIdentifier(const QString &identifier)
0029 {
0030     mIdentifier = identifier;
0031 }
0032 
0033 void StoreResourceJob::setZip(KZip *zip)
0034 {
0035     mZip = zip;
0036 }
0037 
0038 void StoreResourceJob::start()
0039 {
0040     if (!mZip) {
0041         qCWarning(PIMDATAEXPORTERCORE_LOG) << " mZip null it's a bug";
0042         deleteLater();
0043         return;
0044     }
0045 
0046     ResourceConverterImpl converter;
0047     const QString errorStr = converter.storeResources(mZip, mIdentifier, mArchivePath);
0048     if (!errorStr.isEmpty()) {
0049         Q_EMIT error(errorStr);
0050     }
0051     const QString url = Akonadi::ServerManager::agentConfigFilePath(mIdentifier);
0052     if (!url.isEmpty()) {
0053         const QFileInfo fi(url);
0054         const QString filename = fi.fileName();
0055         const bool fileAdded = mZip->addLocalFile(url, mArchivePath + filename);
0056         if (fileAdded) {
0057             Q_EMIT info(i18n("\"%1\" was backed up.", filename));
0058         } else {
0059             Q_EMIT error(i18n("\"%1\" file cannot be added to backup file.", filename));
0060         }
0061     }
0062     deleteLater();
0063 }
0064 
0065 #include "moc_storeresourcejob.cpp"