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