File indexing completed on 2024-06-09 05:18:08
0001 /* -*- mode: C++ -*- 0002 * SPDX-FileCopyrightText: 2004 David Faure <faure@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "jobscheduler.h" 0010 0011 #include <Akonadi/Collection> 0012 #include <Akonadi/Item> 0013 0014 class KJob; 0015 0016 namespace MailCommon 0017 { 0018 class ExpireJob : public ScheduledJob 0019 { 0020 Q_OBJECT 0021 public: 0022 explicit ExpireJob(const Akonadi::Collection &folder, bool immediate); 0023 ~ExpireJob() override; 0024 0025 void execute() override; 0026 void kill() override; 0027 0028 private: 0029 void slotDoWork(); 0030 void slotExpireDone(KJob *job); 0031 void slotMoveDone(KJob *job); 0032 void itemFetchResult(KJob *job); 0033 void done(); 0034 void slotExpireDeleteDone(); 0035 0036 private: 0037 Akonadi::Item::List mRemovedMsgs; 0038 qint64 mMaxUnreadTime = 0; 0039 qint64 mMaxReadTime = 0; 0040 bool mExpireMessagesWithoutInvalidDate = false; 0041 Akonadi::Collection mMoveToFolder; 0042 }; 0043 0044 /// A scheduled "expire mails in this folder" task. 0045 class ScheduledExpireTask : public ScheduledTask 0046 { 0047 public: 0048 /// If immediate is set, the job will execute synchronously. This is used when 0049 /// the user requests explicitly that the operation should happen immediately. 0050 ScheduledExpireTask(const Akonadi::Collection &folder, bool immediate) 0051 : ScheduledTask(folder, immediate) 0052 { 0053 } 0054 0055 ~ScheduledExpireTask() override = default; 0056 0057 ScheduledJob *run() override 0058 { 0059 return folder().isValid() ? new ExpireJob(folder(), isImmediate()) : nullptr; 0060 } 0061 0062 int taskTypeId() const override 0063 { 0064 return 1; 0065 } 0066 }; 0067 } // namespace