1 /*
2    SPDX-FileCopyrightText: 2012-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 #include "pimdataexportcore_debug.h"
9 #include "pimdataexporter_export.h"
10 #include <KSharedConfig>
11 #include <QString>
12 class KZip;
13 
14 struct ResourceFiles {
15     QString akonadiConfigFile;
16     QString akonadiResources;
17     QString akonadiAgentConfigFile;
debugResourceFiles18     void debug() const
19     {
20         qDebug() << " akonadiconfigfile :" << akonadiConfigFile << " akonadiResources:" << akonadiResources
21                  << " akonadiAgentConfigFile:" << akonadiAgentConfigFile;
22     }
23 
24     bool operator<(const ResourceFiles &other) const
25     {
26         return other.akonadiConfigFile < akonadiConfigFile;
27     }
28 };
29 
30 namespace Utils
31 {
32 struct AkonadiInstanceInfo {
33     QString identifier;
34     QStringList mimeTypes;
35     QStringList capabilities;
36 };
37 enum StoredType {
38     None = 0,
39     Identity = 1,
40     Mails = 2,
41     MailTransport = 4,
42     Resources = 8,
43     Config = 16,
44     Data = 32
45     // TODO add more type to import/export
46 };
47 Q_DECLARE_FLAGS(StoredTypes, StoredType)
48 
49 enum AppsType { Unknown = 0, KMail, KAddressBook, KAlarm, KOrganizer, KNotes, Akregator };
50 
51 struct importExportParameters {
importExportParametersimportExportParameters52     importExportParameters()
53         : numberSteps(0)
54         , types(None)
55     {
56     }
57 
isEmptyimportExportParameters58     bool isEmpty() const
59     {
60         return types == None;
61     }
62 
63     int numberSteps;
64     Utils::StoredTypes types;
65 };
66 
67 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString transportsPath();
68 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString resourcesPath();
69 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString identitiesPath();
70 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString mailsPath();
71 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString configsPath();
72 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString akonadiPath();
73 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString dataPath();
74 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString calendarPath();
75 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString addressbookPath();
76 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString alarmPath();
77 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString infoPath();
78 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString notePath();
79 
80 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString storeMails();
81 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString backupnote();
82 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString storeCalendar();
83 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString storeAlarm();
84 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString storeAddressbook();
85 
86 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString resourceNoteArchiveName();
87 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString resourceAddressbookArchiveName();
88 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString resourceAlarmArchiveName();
89 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString resourceCalendarArchiveName();
90 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString resourceMailArchiveName();
91 
92 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString prefixAkonadiConfigFile();
93 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString exportDataTypeFileName();
94 Q_REQUIRED_RESULT QString akonadiAgentName(const QString &configPath);
95 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QVector<Utils::AkonadiInstanceInfo> listOfResource();
96 
97 KZip *openZip(const QString &filename, QString &errorMsg);
98 PIMDATAEXPORTER_EXPORT void storeDataExportInfo(KZip *archive, const QString &exportInfoFileName);
99 
100 PIMDATAEXPORTER_EXPORT void addVersion(KZip *archive);
101 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT int archiveVersion(KZip *archive);
102 
103 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT int currentArchiveVersion();
104 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString appTypeToI18n(AppsType type);
105 PIMDATAEXPORTER_EXPORT Q_REQUIRED_RESULT QString storedTypeToI18n(StoredType type);
106 }
107 Q_DECLARE_TYPEINFO(Utils::AkonadiInstanceInfo, Q_MOVABLE_TYPE);
108 Q_DECLARE_METATYPE(Utils::StoredTypes)
109