Mailcommon

collectionexpirypage.cpp
1/*
2 SPDX-FileCopyrightText: 2009-2025 Laurent Montel <montel@kde.org>
3 SPDX-FileCopyrightText: 2013 Jonathan Marten <jjm@keelhaul.me.uk>
4
5 SPDX-License-Identifier: GPL-2.0-only
6*/
7
8#include "collectionexpirypage.h"
9#include "collectionexpirywidget.h"
10
11#include "attributes/expirecollectionattribute.h"
12
13#include <KLocalizedString>
14#include <QVBoxLayout>
15
16using namespace Akonadi;
17using namespace MailCommon;
18
19CollectionExpiryPage::CollectionExpiryPage(QWidget *parent)
21{
22 setObjectName(QLatin1StringView("MailCommon::CollectionExpiryPage"));
23 setPageTitle(i18nc("@title:tab Expiry settings for a folder.", "Expiry"));
24}
25
26CollectionExpiryPage::~CollectionExpiryPage() = default;
27
28bool CollectionExpiryPage::canHandle(const Akonadi::Collection &col) const
29{
30 return CollectionExpiryWidget::canHandle(col);
31}
32
33void CollectionExpiryPage::init()
34{
35 auto globalVBox = new QVBoxLayout(this);
36 mCollectionExpiryWidget = new CollectionExpiryWidget(this);
37 connect(mCollectionExpiryWidget, &CollectionExpiryWidget::saveAndExpireRequested, this, &CollectionExpiryPage::slotSaveAndExpire);
38 connect(mCollectionExpiryWidget, &CollectionExpiryWidget::configChanged, this, &CollectionExpiryPage::slotConfigChanged);
39 globalVBox->addWidget(mCollectionExpiryWidget);
40
41 globalVBox->addStretch(100); // eat all superfluous space
42}
43
44void CollectionExpiryPage::slotConfigChanged(bool changed)
45{
46 mChanged = changed;
47}
48
49void CollectionExpiryPage::load(const Akonadi::Collection &collection)
50{
51 mCollection = collection;
52 init();
53 const auto *attr = collection.attribute<MailCommon::ExpireCollectionAttribute>();
54 if (attr) {
55 MailCommon::CollectionExpirySettings settings;
56 settings.convertFromExpireCollectionAttribute(attr);
57 mCollectionExpiryWidget->load(settings);
58 } else {
59 mCollectionExpiryWidget->load({});
60 }
61 mChanged = false;
62}
63
64void CollectionExpiryPage::save(Akonadi::Collection &collection)
65{
66 if (mChanged) {
67 saveAndExpire(collection, false, true);
68 }
69}
70
71void CollectionExpiryPage::saveAndExpire(Akonadi::Collection &collection, bool saveSettings, bool expireNow)
72{
73 mCollectionExpiryWidget->save(collection, saveSettings, expireNow);
74 mChanged = false;
75}
76
77void CollectionExpiryPage::slotSaveAndExpire()
78{
79 saveAndExpire(mCollection, true, true); // save and start expire job
80}
81
82void CollectionExpiryPage::slotChanged()
83{
84 mChanged = true;
85}
86
87#include "moc_collectionexpirypage.cpp"
const T * attribute() const
QString i18nc(const char *context, const char *text, const TYPE &arg...)
The filter dialog.
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
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.