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 };