Mailcommon

collectionexpirywidget.h
1/*
2 SPDX-FileCopyrightText: 2020-2025 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8#include "mailcommon_export.h"
9
10#include <MailCommon/ExpireCollectionAttribute>
11#include <QWidget>
12class QCheckBox;
13class QSpinBox;
14class QRadioButton;
15class QPushButton;
16namespace MailCommon
17{
18class FolderRequester;
19struct MAILCOMMON_EXPORT CollectionExpirySettings {
20 [[nodiscard]] bool isValid() const;
21
22 bool expiryGloballyOn = false;
23 bool expiryMessagesWithInvalidDate = false;
24 int daysToExpireRead = -1;
25 int daysToExpireUnread = -1;
26 ExpireCollectionAttribute::ExpireUnits mUnreadExpireUnits = ExpireCollectionAttribute::ExpireNever;
27 ExpireCollectionAttribute::ExpireUnits mReadExpireUnits = ExpireCollectionAttribute::ExpireNever;
28 ExpireCollectionAttribute::ExpireAction mExpireAction = ExpireCollectionAttribute::ExpireDelete;
29 Akonadi::Collection::Id mExpireToFolderId = -1;
30
31 void convertFromExpireCollectionAttribute(const ExpireCollectionAttribute *attr);
32};
33
34class MAILCOMMON_EXPORT CollectionExpiryWidget : public QWidget
35{
36 Q_OBJECT
37public:
38 explicit CollectionExpiryWidget(QWidget *parent = nullptr);
39 ~CollectionExpiryWidget() override;
40
41 void load(const MailCommon::CollectionExpirySettings &settings);
42 void save(Akonadi::Collection &collection, bool saveSettings, bool expireNow);
43 void save(const CollectionExpirySettings &collectionExpirySettings, Akonadi::Collection &collection, bool saveSettings, bool expireNow);
44 [[nodiscard]] CollectionExpirySettings settings() const;
45 void hideExpireNowButton();
46 [[nodiscard]] static bool canHandle(const Akonadi::Collection &col);
47Q_SIGNALS:
48 void saveAndExpireRequested();
49 void configChanged(bool changed = true);
50
51private:
52 [[nodiscard]] MAILCOMMON_NO_EXPORT bool validateExpireFolder(bool expireNow);
53 [[nodiscard]] MAILCOMMON_NO_EXPORT MailCommon::ExpireCollectionAttribute *assignFolderAttribute(Akonadi::Collection &collection, bool &expireNow);
54 MAILCOMMON_NO_EXPORT void slotChanged();
55 QSpinBox *const mExpireReadMailSB;
56 QSpinBox *const mExpireUnreadMailSB;
57 QRadioButton *mMoveToRB = nullptr;
58 FolderRequester *const mFolderSelector;
59 QRadioButton *mDeletePermanentlyRB = nullptr;
60 QPushButton *const mExpireNowPB;
61 QCheckBox *const mExpireMailWithInvalidDateCB;
62};
63}
64MAILCOMMON_EXPORT QDebug operator<<(QDebug d, const MailCommon::CollectionExpirySettings &t);
QAction * save(const QObject *recvr, const char *slot, QObject *parent)
QAction * load(const QObject *recvr, const char *slot, QObject *parent)
bool isValid(QStringView ifopt)
The filter dialog.
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri Apr 11 2025 11:50:55 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.