7#include "foldercollectionmonitor.h"
8#include "collectionpage/attributes/expirecollectionattribute.h"
9#include "foldersettings.h"
10#include "mailcommon_debug.h"
11#include "util/mailutil.h"
12#include <Akonadi/ChangeRecorder>
13#include <Akonadi/Collection>
14#include <Akonadi/CollectionFetchScope>
15#include <Akonadi/EntityAnnotationsAttribute>
16#include <Akonadi/EntityTreeModel>
17#include <Akonadi/Item>
18#include <Akonadi/ItemDeleteJob>
19#include <Akonadi/ItemFetchJob>
20#include <Akonadi/ItemFetchScope>
21#include <Akonadi/MessageParts>
25class MailCommon::FolderCollectionMonitorPrivate
28 Akonadi::ChangeRecorder *mMonitor =
nullptr;
33 , d(new
MailCommon::FolderCollectionMonitorPrivate)
37 d->mMonitor->setSession(session);
39 d->mMonitor->fetchCollectionStatistics(
true);
40 d->mMonitor->collectionFetchScope().setIncludeStatistics(
true);
41 d->mMonitor->fetchCollection(
true);
42 d->mMonitor->setAllMonitored(
true);
44 d->mMonitor->setResourceMonitored(
"akonadi_search_resource",
true);
46 d->mMonitor->itemFetchScope().setFetchModificationTime(
false);
47 d->mMonitor->itemFetchScope().setFetchRemoteIdentification(
false);
48 d->mMonitor->itemFetchScope().setFetchTags(
true);
52FolderCollectionMonitor::~FolderCollectionMonitor() =
default;
59void FolderCollectionMonitor::expireAllFolders(
bool immediate, QAbstractItemModel *collectionModel)
61 if (collectionModel) {
62 expireAllCollection(collectionModel, immediate);
66void FolderCollectionMonitor::expireAllCollection(
const QAbstractItemModel *model,
bool immediate,
const QModelIndex &parentIndex)
68 const int rowCount = model->
rowCount(parentIndex);
69 for (
int row = 0; row < rowCount; ++row) {
70 const QModelIndex index = model->
index(row, 0, parentIndex);
73 if (!collection.isValid() || Util::isVirtualCollection(collection)) {
77 const auto attr = collection.attribute<MailCommon::ExpireCollectionAttribute>();
79 if (attr->isAutoExpire()) {
80 MailCommon::Util::expireOldMessages(collection, immediate);
85 expireAllCollection(model, immediate, index);
90void FolderCollectionMonitor::expunge(
const Akonadi::Collection &col,
bool sync)
93 auto job =
new Akonadi::ItemDeleteJob(col,
this);
94 connect(job, &Akonadi::ItemDeleteJob::result,
this, &FolderCollectionMonitor::slotDeleteJob);
99 qCDebug(MAILCOMMON_LOG) <<
" Try to expunge an invalid collection :" << col;
103void FolderCollectionMonitor::slotDeleteJob(KJob *job)
105 Util::showJobErrorMessage(job);
108#include "moc_foldercollectionmonitor.cpp"
static QString mimeType()
AKONADI_MIME_EXPORT const char Envelope[]
virtual QVariant data(const QModelIndex &index, int role) const const=0
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const const=0
virtual int rowCount(const QModelIndex &parent) const const=0
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)