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

0001 /*
0002    SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "exportresourcearchivejob.h"
0008 #include "pimdatabackupthread.h"
0009 #include "pimdataexportcore_debug.h"
0010 #include "storeresourcejob.h"
0011 #include <KZip>
0012 
0013 #include <Akonadi/ServerManager>
0014 
0015 ExportResourceArchiveJob::ExportResourceArchiveJob(QObject *parent)
0016     : QObject(parent)
0017 {
0018 }
0019 
0020 ExportResourceArchiveJob::~ExportResourceArchiveJob() = default;
0021 
0022 void ExportResourceArchiveJob::setArchive(KZip *zip)
0023 {
0024     mZip = zip;
0025 }
0026 
0027 void ExportResourceArchiveJob::setIdentifier(const QString &identifier)
0028 {
0029     mIdentifier = identifier;
0030 }
0031 
0032 void ExportResourceArchiveJob::setUrl(const QString &url)
0033 {
0034     mUrl = url;
0035 }
0036 
0037 void ExportResourceArchiveJob::setArchivePath(const QString &archivePath)
0038 {
0039     mArchivePath = archivePath;
0040 }
0041 
0042 void ExportResourceArchiveJob::setArchiveName(const QString &archiveName)
0043 {
0044     mArchiveName = archiveName;
0045 }
0046 
0047 void ExportResourceArchiveJob::start()
0048 {
0049     if (mZip) {
0050         mThread = new PimDataBackupThread(mZip, mUrl, mArchivePath, mArchiveName);
0051         connect(mThread, &PimDataBackupThread::error, this, &ExportResourceArchiveJob::error);
0052         connect(mThread, &PimDataBackupThread::info, this, &ExportResourceArchiveJob::info);
0053         connect(mThread, &PimDataBackupThread::terminated, this, &ExportResourceArchiveJob::slotTerminated);
0054         connect(mThread, &QThread::finished, mThread, &QObject::deleteLater);
0055         mThread->start();
0056     } else {
0057         qCDebug(PIMDATAEXPORTERCORE_LOG) << "zip not defined !";
0058         finished();
0059     }
0060 }
0061 
0062 void ExportResourceArchiveJob::slotTerminated(bool success)
0063 {
0064     if (success) {
0065         auto job = new StoreResourceJob(this);
0066         connect(job, &StoreResourceJob::error, this, &ExportResourceArchiveJob::error);
0067         connect(job, &StoreResourceJob::info, this, &ExportResourceArchiveJob::info);
0068         job->setArchivePath(mArchivePath);
0069         job->setZip(mZip);
0070         job->setIdentifier(mIdentifier);
0071         job->start();
0072     }
0073     finished();
0074 }
0075 
0076 void ExportResourceArchiveJob::slotTaskCanceled()
0077 {
0078     qCDebug(PIMDATAEXPORTERCORE_LOG) << " void ExportResourceArchiveJob::slotTaskCanceled()";
0079     if (mThread) {
0080         mThread->exit();
0081     }
0082 }
0083 
0084 void ExportResourceArchiveJob::finished()
0085 {
0086     Q_EMIT terminated();
0087     deleteLater();
0088 }
0089 
0090 #include "moc_exportresourcearchivejob.cpp"