File indexing completed on 2024-05-26 05:27:08
0001 /* 0002 SPDX-FileCopyrightText: 2012-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "abstractimportexportjob.h" 0010 #include "pimdataexportercore_private_export.h" 0011 #include <Akonadi/Collection> 0012 #include <Akonadi/SpecialMailCollections> 0013 #include <KArchive> 0014 #include <QHash> 0015 #include <QStringList> 0016 class KArchiveDirectory; 0017 class KArchiveFile; 0018 class ArchiveStorage; 0019 class SmtpMailTransport; 0020 namespace MailTransport 0021 { 0022 class Transport; 0023 } 0024 namespace MailCommon 0025 { 0026 } 0027 0028 class PIMDATAEXPORTER_TESTS_EXPORT ImportMailJobInterface : public AbstractImportExportJob 0029 { 0030 Q_OBJECT 0031 public: 0032 explicit ImportMailJobInterface(QObject *widget, Utils::StoredTypes typeSelected, ArchiveStorage *archiveStorage, int numberOfStep); 0033 ~ImportMailJobInterface() override; 0034 0035 void start() override; 0036 0037 // For debugging 0038 void importMailTransport(const QString &tempDirName); 0039 0040 protected: 0041 void slotNextStep() override; 0042 0043 void convertCollectionStrToAkonadiId(const KSharedConfig::Ptr &config, const QString &groupName, const QString &key); 0044 virtual void restoreMails(); 0045 void restoreResources(); 0046 virtual void registerSpecialCollection(Akonadi::SpecialMailCollections::Type type, qint64 colId) = 0; 0047 virtual void synchronizeResource(const QStringList &lst) = 0; 0048 virtual void importFilters(const QString &filename) = 0; 0049 [[nodiscard]] virtual QString configLocation() const = 0; 0050 [[nodiscard]] virtual QString adaptResourcePath(const KSharedConfigPtr &resourceConfig, const QString &storedData) = 0; 0051 virtual void addNewIdentity(const QString &name, KConfigGroup &group, int defaultIdentities, int oldUid) = 0; 0052 virtual void importCustomMailTransport(const QString &identifierValue, const KConfigGroup &group, int defaultTransport, int transportId) = 0; 0053 virtual void importSmtpMailTransport(const SmtpMailTransport &smtpMailTransport, int defaultTransport, int transportId) = 0; 0054 0055 [[nodiscard]] QString applicationName() const override; 0056 0057 virtual void importFolderAttributes() = 0; 0058 0059 QHash<int, uint> mHashIdentity; 0060 QHash<int, int> mHashTransport; 0061 0062 private: 0063 void restoreTransports(); 0064 void restoreConfig(); 0065 void restoreIdentity(); 0066 0067 void 0068 importTemplatesConfig(const KArchiveFile *templatesconfiguration, const QString &templatesconfigurationrc, const QString &filename, const QString &prefix); 0069 void importKmailConfig(const KArchiveFile *kmailsnippet, const QString &kmail2rc, const QString &filename, const QString &prefix); 0070 void importArchiveConfig(const KArchiveFile *archiveconfiguration, const QString &archiveconfigurationrc, const QString &filename, const QString &prefix); 0071 void 0072 importFolderArchiveConfig(const KArchiveFile *archiveconfiguration, const QString &archiveconfigurationrc, const QString &filename, const QString &prefix); 0073 void searchAllMailsFiles(const KArchiveDirectory *dir, const QString &prefix); 0074 void storeMailArchiveResource(const KArchiveDirectory *dir, const QString &prefix); 0075 0076 void 0077 importMailArchiveConfig(const KArchiveFile *archiveconfiguration, const QString &archiveconfigurationrc, const QString &filename, const QString &prefix); 0078 void mergeLdapConfig(const KArchiveFile *archivefile, const QString &filename, const QString &prefix); 0079 void mergeKmailSnippetConfig(const KArchiveFile *archivefile, const QString &filename, const QString &prefix); 0080 void mergeArchiveMailAgentConfig(const KArchiveFile *archivefile, const QString &filename, const QString &prefix); 0081 void copyArchiveMailAgentConfigGroup(const KSharedConfig::Ptr &archiveConfigOrigin, const KSharedConfig::Ptr &archiveConfigDestination); 0082 void copyMailArchiveConfig(const KSharedConfig::Ptr &archiveConfigOrigin, const KSharedConfig::Ptr &archiveConfigDestination); 0083 void mergeMailArchiveConfig(const KArchiveFile *archivefile, const QString &filename, const QString &prefix); 0084 void mergeUnifiedMailBoxConfig(const KArchiveFile *archivefile, const QString &filename, const QString &prefix); 0085 void mergeSieveTemplate(const KArchiveFile *archivefile, const QString &filename, const QString &prefix); 0086 void importSimpleFilesInDirectory(const QString &relativePath); 0087 void copyUnifiedMailBoxConfig(const KSharedConfig::Ptr &archiveConfigOrigin, const KSharedConfig::Ptr &archiveConfigDestination); 0088 void 0089 importUnifiedMailBoxConfig(const KArchiveFile *archiveconfiguration, const QString &archiveconfigurationrc, const QString &filename, const QString &prefix); 0090 0091 QHash<QString, QString> mHashResources; 0092 QStringList mFileList; 0093 };