File indexing completed on 2024-05-12 05:25:34

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 #include "pimdataexportcore_debug.h"
0009 #include "pimdataexporter_export.h"
0010 #include <KSharedConfig>
0011 #include <QString>
0012 class KZip;
0013 
0014 struct ResourceFiles {
0015     QString akonadiConfigFile;
0016     QString akonadiResources;
0017     QString akonadiAgentConfigFile;
0018     void debug() const
0019     {
0020         qDebug() << " akonadiconfigfile :" << akonadiConfigFile << " akonadiResources:" << akonadiResources
0021                  << " akonadiAgentConfigFile:" << akonadiAgentConfigFile;
0022     }
0023 
0024     bool operator<(const ResourceFiles &other) const
0025     {
0026         return other.akonadiConfigFile < akonadiConfigFile;
0027     }
0028 };
0029 
0030 namespace Utils
0031 {
0032 struct AkonadiInstanceInfo {
0033     QString identifier;
0034     QStringList mimeTypes;
0035     QStringList capabilities;
0036 };
0037 enum StoredType {
0038     None = 0,
0039     Identity = 1,
0040     Mails = 2,
0041     MailTransport = 4,
0042     Resources = 8,
0043     Config = 16,
0044     Data = 32
0045     // TODO add more type to import/export
0046 };
0047 Q_DECLARE_FLAGS(StoredTypes, StoredType)
0048 
0049 enum AppsType { Unknown = 0, KMail, KAddressBook, KAlarm, KOrganizer, KNotes, Akregator };
0050 
0051 struct importExportParameters {
0052     importExportParameters()
0053         : numberSteps(0)
0054         , types(None)
0055     {
0056     }
0057 
0058     bool isEmpty() const
0059     {
0060         return types == None;
0061     }
0062 
0063     int numberSteps;
0064     Utils::StoredTypes types;
0065 };
0066 
0067 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString transportsPath();
0068 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString resourcesPath();
0069 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString identitiesPath();
0070 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString mailsPath();
0071 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString configsPath();
0072 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString akonadiPath();
0073 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString dataPath();
0074 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString calendarPath();
0075 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString addressbookPath();
0076 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString alarmPath();
0077 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString infoPath();
0078 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString notePath();
0079 
0080 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString storeMails();
0081 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString backupnote();
0082 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString storeCalendar();
0083 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString storeAlarm();
0084 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString storeAddressbook();
0085 
0086 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString resourceNoteArchiveName();
0087 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString resourceAddressbookArchiveName();
0088 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString resourceAlarmArchiveName();
0089 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString resourceCalendarArchiveName();
0090 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString resourceMailArchiveName();
0091 
0092 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString prefixAkonadiConfigFile();
0093 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString exportDataTypeFileName();
0094 [[nodiscard]] QString akonadiAgentName(const QString &configPath);
0095 [[nodiscard]] PIMDATAEXPORTER_EXPORT QList<Utils::AkonadiInstanceInfo> listOfResource();
0096 
0097 KZip *openZip(const QString &filename, QString &errorMsg);
0098 PIMDATAEXPORTER_EXPORT void storeDataExportInfo(KZip *archive, const QString &exportInfoFileName);
0099 
0100 PIMDATAEXPORTER_EXPORT void addVersion(KZip *archive);
0101 [[nodiscard]] PIMDATAEXPORTER_EXPORT int archiveVersion(KZip *archive);
0102 
0103 [[nodiscard]] PIMDATAEXPORTER_EXPORT int currentArchiveVersion();
0104 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString appTypeToI18n(AppsType type);
0105 [[nodiscard]] PIMDATAEXPORTER_EXPORT QString storedTypeToI18n(StoredType type);
0106 }
0107 Q_DECLARE_TYPEINFO(Utils::AkonadiInstanceInfo, Q_RELOCATABLE_TYPE);
0108 Q_DECLARE_METATYPE(Utils::StoredTypes)