1 /*
2    SPDX-FileCopyrightText: 2012-2021 Laurent Montel <montel@kde.org>
3 
4    SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 #pragma once
7 
8 #include <Akonadi/Collection>
9 #include <KConfigGroup>
10 #include <MailCommon/BackupJob>
11 #include <QDate>
12 #include <QUrl>
13 
14 class ArchiveMailInfo
15 {
16 public:
17     explicit ArchiveMailInfo();
18     explicit ArchiveMailInfo(const KConfigGroup &config);
19     ArchiveMailInfo(const ArchiveMailInfo &info);
20     ~ArchiveMailInfo();
21 
22     ArchiveMailInfo &operator=(const ArchiveMailInfo &old);
23 
24     enum ArchiveUnit {
25         ArchiveDays = 0,
26         ArchiveWeeks,
27         ArchiveMonths,
28         ArchiveYears,
29     };
30 
31     Q_REQUIRED_RESULT QUrl realUrl(const QString &folderName, bool &dirExist) const;
32 
33     Q_REQUIRED_RESULT bool isValid() const;
34 
35     Q_REQUIRED_RESULT Akonadi::Collection::Id saveCollectionId() const;
36     void setSaveCollectionId(Akonadi::Collection::Id collectionId);
37 
38     void setSaveSubCollection(bool b);
39     Q_REQUIRED_RESULT bool saveSubCollection() const;
40 
41     void setUrl(const QUrl &url);
42     Q_REQUIRED_RESULT QUrl url() const;
43 
44     void readConfig(const KConfigGroup &config);
45     void writeConfig(KConfigGroup &config);
46 
47     void setArchiveType(MailCommon::BackupJob::ArchiveType type);
48     Q_REQUIRED_RESULT MailCommon::BackupJob::ArchiveType archiveType() const;
49 
50     void setArchiveUnit(ArchiveMailInfo::ArchiveUnit unit);
51     Q_REQUIRED_RESULT ArchiveMailInfo::ArchiveUnit archiveUnit() const;
52 
53     void setArchiveAge(int age);
54     Q_REQUIRED_RESULT int archiveAge() const;
55 
56     void setLastDateSaved(QDate date);
57     Q_REQUIRED_RESULT QDate lastDateSaved() const;
58 
59     Q_REQUIRED_RESULT int maximumArchiveCount() const;
60     void setMaximumArchiveCount(int max);
61 
62     Q_REQUIRED_RESULT QStringList listOfArchive(const QString &foldername, bool &dirExist) const;
63 
64     Q_REQUIRED_RESULT bool isEnabled() const;
65     void setEnabled(bool b);
66 
67     Q_REQUIRED_RESULT bool operator==(const ArchiveMailInfo &other) const;
68 
69 private:
70     QString dirArchive(bool &dirExit) const;
71     QDate mLastDateSaved;
72     int mArchiveAge = 1;
73     MailCommon::BackupJob::ArchiveType mArchiveType = MailCommon::BackupJob::Zip;
74     ArchiveUnit mArchiveUnit = ArchiveMailInfo::ArchiveDays;
75     Akonadi::Collection::Id mSaveCollectionId = -1;
76     QUrl mPath;
77     int mMaximumArchiveCount = 0;
78     bool mSaveSubCollection = false;
79     bool mIsEnabled = true;
80 };
81 
82