File indexing completed on 2024-05-12 05:25:34
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "pimdataimportdatainfofile.h" 0008 #include "pimdataexportcore_debug.h" 0009 #include "utils.h" 0010 #include <KZip> 0011 #include <QTemporaryDir> 0012 0013 PimDataImportDataInfoFile::PimDataImportDataInfoFile(QObject *parent) 0014 : QObject(parent) 0015 { 0016 } 0017 0018 PimDataImportDataInfoFile::~PimDataImportDataInfoFile() 0019 { 0020 delete mTempDir; 0021 } 0022 0023 void PimDataImportDataInfoFile::setCurrentFileName(const QString &filename) 0024 { 0025 mFilename = filename; 0026 } 0027 0028 QString PimDataImportDataInfoFile::importDataInfoPath() 0029 { 0030 QString temporaryFilePath; 0031 if (mFilename.isEmpty()) { 0032 return temporaryFilePath; 0033 } 0034 mTempDir = new QTemporaryDir; 0035 QString errorMsg; 0036 KZip *archive = Utils::openZip(mFilename, errorMsg); 0037 if (!archive) { 0038 qCWarning(PIMDATAEXPORTERCORE_LOG) << "unable to open zip file " << errorMsg; 0039 } else { 0040 const KArchiveEntry *informationFile = archive->directory()->entry(Utils::infoPath() + Utils::exportDataTypeFileName()); 0041 if (informationFile && informationFile->isFile()) { 0042 const auto file = static_cast<const KArchiveFile *>(informationFile); 0043 if (file->size() == 0) { 0044 qCWarning(PIMDATAEXPORTERCORE_LOG) << "Empty exporteddata information file, skipping it"; 0045 } else { 0046 temporaryFilePath = mTempDir->path() + QLatin1Char('/') + Utils::exportDataTypeFileName(); 0047 if (file->copyTo(mTempDir->path())) { 0048 temporaryFilePath = mTempDir->path() + QLatin1Char('/') + Utils::exportDataTypeFileName(); 0049 } else { 0050 qCWarning(PIMDATAEXPORTERCORE_LOG) << "Impossible to copy to temporary file" << temporaryFilePath; 0051 } 0052 } 0053 } else { 0054 qCWarning(PIMDATAEXPORTERCORE_LOG) << "Old archive without exporteddata information"; 0055 } 0056 } 0057 delete archive; 0058 return temporaryFilePath; 0059 } 0060 0061 #include "moc_pimdataimportdatainfofile.cpp"