File indexing completed on 2024-05-12 05:25:33
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 "backupresourcefilejobbase.h" 0008 #include "pimdataexportcore_debug.h" 0009 #include "storeresourcejob.h" 0010 0011 #include <KLocalizedString> 0012 0013 #include <QFileInfo> 0014 0015 BackupResourceFileJobBase::BackupResourceFileJobBase(QObject *parent) 0016 : QObject(parent) 0017 { 0018 } 0019 0020 BackupResourceFileJobBase::~BackupResourceFileJobBase() = default; 0021 0022 void BackupResourceFileJobBase::storeResource(const QString &archivePath) 0023 { 0024 auto job = new StoreResourceJob(this); 0025 connect(job, &StoreResourceJob::error, this, &BackupResourceFileJobBase::error); 0026 connect(job, &StoreResourceJob::info, this, &BackupResourceFileJobBase::info); 0027 job->setArchivePath(archivePath); 0028 job->setZip(mZip); 0029 job->setIdentifier(mIdentifier); 0030 job->start(); 0031 } 0032 0033 void BackupResourceFileJobBase::start() 0034 { 0035 if (!canStart()) { 0036 qCWarning(PIMDATAEXPORTERCORE_LOG) << "Impossible to start backupResourceFileJob"; 0037 deleteLater(); 0038 return; 0039 } 0040 0041 const QString archivePath = mDefaultPath + mIdentifier + QLatin1Char('/'); 0042 0043 const QString url = resourcePath(mIdentifier); 0044 if (!url.isEmpty()) { 0045 QFileInfo fi(url); 0046 if (!fi.isFile()) { 0047 Q_EMIT info(i18n("\"%1\" is not a file.", url)); 0048 } else { 0049 const QString filename = fi.fileName(); 0050 const bool fileAdded = mZip->addLocalFile(url, archivePath + filename); 0051 if (fileAdded) { 0052 storeResource(archivePath); 0053 Q_EMIT info(i18n("\"%1\" was backed up.", filename)); 0054 } else { 0055 Q_EMIT error(i18n("\"%1\" file cannot be added to backup file.", filename)); 0056 } 0057 } 0058 } else { 0059 storeResource(archivePath); 0060 Q_EMIT info(i18n("\"%1\" was backed up.", mIdentifier)); 0061 } 0062 deleteLater(); 0063 } 0064 0065 bool BackupResourceFileJobBase::canStart() const 0066 { 0067 return mZip && !mDefaultPath.isEmpty() && !mIdentifier.isEmpty(); 0068 } 0069 0070 QString BackupResourceFileJobBase::identifier() const 0071 { 0072 return mIdentifier; 0073 } 0074 0075 void BackupResourceFileJobBase::setIdentifier(const QString &identifier) 0076 { 0077 mIdentifier = identifier; 0078 } 0079 0080 KZip *BackupResourceFileJobBase::zip() const 0081 { 0082 return mZip; 0083 } 0084 0085 void BackupResourceFileJobBase::setZip(KZip *zip) 0086 { 0087 mZip = zip; 0088 } 0089 0090 QString BackupResourceFileJobBase::defaultPath() const 0091 { 0092 return mDefaultPath; 0093 } 0094 0095 void BackupResourceFileJobBase::setDefaultPath(const QString &defaultPath) 0096 { 0097 mDefaultPath = defaultPath; 0098 } 0099 0100 #include "moc_backupresourcefilejobbase.cpp"