File indexing completed on 2024-06-16 05:00:34
0001 /* 0002 SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "importmailfolderattributejob.h" 0008 #include "importmailjobinterface.h" 0009 #include "pimdataexportcore_debug.h" 0010 #include "utils.h" 0011 0012 #include <KArchive> 0013 #include <KArchiveDirectory> 0014 #include <KArchiveFile> 0015 #include <KConfigGroup> 0016 0017 ImportMailFolderAttributeJob::ImportMailFolderAttributeJob(QObject *parent) 0018 : QObject{parent} 0019 { 0020 } 0021 0022 ImportMailFolderAttributeJob::~ImportMailFolderAttributeJob() 0023 { 0024 } 0025 0026 bool ImportMailFolderAttributeJob::canStart() const 0027 { 0028 return (mArchiveDirectory != nullptr) && !mExtractPath.isEmpty(); 0029 } 0030 0031 void ImportMailFolderAttributeJob::setArchiveDirectory(const KArchiveDirectory *zip) 0032 { 0033 mArchiveDirectory = zip; 0034 } 0035 0036 void ImportMailFolderAttributeJob::setExportInterface(ImportMailJobInterface *interface) 0037 { 0038 mInterface = interface; 0039 } 0040 0041 void ImportMailFolderAttributeJob::setExtractPath(const QString &extractPath) 0042 { 0043 mExtractPath = extractPath; 0044 } 0045 0046 void ImportMailFolderAttributeJob::start() 0047 { 0048 if (!canStart()) { 0049 Q_EMIT failed(); 0050 qCWarning(PIMDATAEXPORTERCORE_LOG) << " Impossible to start job"; 0051 deleteLater(); 0052 return; 0053 } 0054 const KArchiveEntry *mailFolderAttributeFile = mArchiveDirectory->entry(Utils::configsPath() + QStringLiteral("mailfolderattributes")); 0055 QMap<Akonadi::Collection::Id, ImportExportMailUtil::AttributeInfo> mapAttributeInfo; 0056 if (mailFolderAttributeFile && mailFolderAttributeFile->isFile()) { 0057 const auto file = static_cast<const KArchiveFile *>(mailFolderAttributeFile); 0058 const QString destDirectory = mExtractPath + QLatin1Char('/') + Utils::resourcesPath(); 0059 // qDebug() << " destDirectory " << destDirectory; 0060 mInterface->copyArchiveFileTo(file, destDirectory); 0061 const QString filename(file->name()); 0062 const QString mailFolderAttributesFileName = destDirectory + QLatin1Char('/') + filename; 0063 KConfig conf(mailFolderAttributesFileName, KConfig::SimpleConfig); 0064 0065 const QStringList groupList = conf.groupList(); 0066 for (const QString &groupStr : groupList) { 0067 ImportExportMailUtil::AttributeInfo info; 0068 KConfigGroup group = conf.group(groupStr); 0069 // qDebug() << "groupStr " << groupStr; 0070 const Akonadi::Collection::Id id = mInterface->convertPathToId(groupStr); 0071 const QString displayStr(QStringLiteral("Display")); 0072 if (group.hasKey(displayStr)) { 0073 info.displayAttribute = group.readEntry(displayStr, QByteArray()); 0074 } 0075 const QString expireStr(QStringLiteral("Expire")); 0076 if (group.hasKey(expireStr)) { 0077 info.expireAttribute = group.readEntry(expireStr, QByteArray()); 0078 } 0079 const QString favoriteStr(QStringLiteral("Favorite")); 0080 if (group.hasKey(favoriteStr)) { 0081 info.favoriteAttribute = group.readEntry(favoriteStr, QByteArray()); 0082 } 0083 const QString folderStr(QStringLiteral("Folder")); 0084 if (group.hasKey(folderStr)) { 0085 info.folderAttribute = group.readEntry(folderStr, QByteArray()); 0086 } 0087 // qDebug() << " identifier " << id << " info.expireAttribute " << info.expireAttribute << " info.displayAttribute " << info.displayAttribute; 0088 mapAttributeInfo.insert(id, info); 0089 } 0090 } 0091 applyAttributes(mapAttributeInfo); 0092 } 0093 0094 void ImportMailFolderAttributeJob::restoreFileFolderAttribute() 0095 { 0096 Q_EMIT successed(); 0097 deleteLater(); 0098 } 0099 0100 #include "moc_importmailfolderattributejob.cpp"