File indexing completed on 2025-02-16 04:50:19
0001 /* 0002 SPDX-FileCopyrightText: 2014 Christian Mollekopf <mollekopf@kolabsys.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <KIMAP/ImapSet> 0010 #include <KIMAP/Session> 0011 #include <KJob> 0012 #include <KMime/Message> 0013 0014 /** 0015 * This job appends a message, marks the old one as deleted, and returns the uid of the appended message. 0016 */ 0017 class ReplaceMessageJob : public KJob 0018 { 0019 Q_OBJECT 0020 public: 0021 ReplaceMessageJob(const KMime::Message::Ptr &msg, 0022 KIMAP::Session *session, 0023 const QString &mailbox, 0024 qint64 uidNext = -1, 0025 const KIMAP::ImapSet &oldUids = KIMAP::ImapSet(), 0026 QObject *parent = nullptr); 0027 0028 qint64 newUid() const; 0029 0030 void start() override; 0031 0032 private: 0033 void triggerSearchJob(); 0034 void triggerDeleteJobIfNecessary(); 0035 0036 private Q_SLOTS: 0037 void onAppendMessageDone(KJob *job); 0038 void onSelectDone(KJob *job); 0039 void onSearchDone(KJob *job); 0040 void onDeleteDone(KJob *job); 0041 0042 private: 0043 KIMAP::Session *mSession = nullptr; 0044 const KMime::Message::Ptr mMessage; 0045 const QString mMailbox; 0046 qint64 mUidNext; 0047 KIMAP::ImapSet mOldUids; 0048 qint64 mNewUid = -1; 0049 const QByteArray mMessageId; 0050 };