File indexing completed on 2024-06-09 05:17:54
0001 /* 0002 SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 #include "mailcommon_export.h" 0009 0010 #include <MailCommon/ExpireCollectionAttribute> 0011 #include <QWidget> 0012 class QCheckBox; 0013 class KPluralHandlingSpinBox; 0014 class QRadioButton; 0015 class QPushButton; 0016 namespace MailCommon 0017 { 0018 class FolderRequester; 0019 struct MAILCOMMON_EXPORT CollectionExpirySettings { 0020 [[nodiscard]] bool isValid() const; 0021 0022 bool expiryGloballyOn = false; 0023 bool expiryMessagesWithInvalidDate = false; 0024 int daysToExpireRead = -1; 0025 int daysToExpireUnread = -1; 0026 ExpireCollectionAttribute::ExpireUnits mUnreadExpireUnits = ExpireCollectionAttribute::ExpireNever; 0027 ExpireCollectionAttribute::ExpireUnits mReadExpireUnits = ExpireCollectionAttribute::ExpireNever; 0028 ExpireCollectionAttribute::ExpireAction mExpireAction = ExpireCollectionAttribute::ExpireDelete; 0029 Akonadi::Collection::Id mExpireToFolderId = -1; 0030 }; 0031 0032 class MAILCOMMON_EXPORT CollectionExpiryWidget : public QWidget 0033 { 0034 Q_OBJECT 0035 public: 0036 explicit CollectionExpiryWidget(QWidget *parent = nullptr); 0037 ~CollectionExpiryWidget() override; 0038 0039 void load(const MailCommon::CollectionExpirySettings &settings); 0040 void save(Akonadi::Collection &collection, bool saveSettings, bool expireNow); 0041 void save(const CollectionExpirySettings &collectionExpirySettings, Akonadi::Collection &collection, bool saveSettings, bool expireNow); 0042 [[nodiscard]] CollectionExpirySettings settings() const; 0043 void hideExpireNowButton(); 0044 [[nodiscard]] static bool canHandle(const Akonadi::Collection &col); 0045 Q_SIGNALS: 0046 void saveAndExpireRequested(); 0047 void configChanged(bool changed = true); 0048 0049 private: 0050 [[nodiscard]] MAILCOMMON_NO_EXPORT bool validateExpireFolder(bool expireNow); 0051 [[nodiscard]] MAILCOMMON_NO_EXPORT MailCommon::ExpireCollectionAttribute *assignFolderAttribute(Akonadi::Collection &collection, bool &expireNow); 0052 MAILCOMMON_NO_EXPORT void slotChanged(); 0053 KPluralHandlingSpinBox *const mExpireReadMailSB; 0054 KPluralHandlingSpinBox *const mExpireUnreadMailSB; 0055 QRadioButton *mMoveToRB = nullptr; 0056 FolderRequester *const mFolderSelector; 0057 QRadioButton *mDeletePermanentlyRB = nullptr; 0058 QPushButton *const mExpireNowPB; 0059 QCheckBox *const mExpireMailWithInvalidDateCB; 0060 }; 0061 } 0062 MAILCOMMON_EXPORT QDebug operator<<(QDebug d, const MailCommon::CollectionExpirySettings &t);