File indexing completed on 2024-05-12 05:17:18

0001 /*
0002     SPDX-FileCopyrightText: 2009 Kevin Ottens <ervin@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "kimap_export.h"
0010 
0011 #include "imapset.h"
0012 #include "job.h"
0013 
0014 namespace KIMAP
0015 {
0016 class Session;
0017 struct Response;
0018 class StoreJobPrivate;
0019 
0020 using MessageFlags = QList<QByteArray>;
0021 
0022 class KIMAP_EXPORT StoreJob : public Job
0023 {
0024     Q_OBJECT
0025     Q_DECLARE_PRIVATE(StoreJob)
0026 
0027     friend class SessionPrivate;
0028 
0029 public:
0030     enum StoreMode { SetFlags, AppendFlags, RemoveFlags };
0031 
0032     explicit StoreJob(Session *session);
0033     ~StoreJob() override;
0034 
0035     void setSequenceSet(const ImapSet &set);
0036     [[nodiscard]] ImapSet sequenceSet() const;
0037 
0038     void setUidBased(bool uidBased);
0039     [[nodiscard]] bool isUidBased() const;
0040 
0041     void setFlags(const MessageFlags &flags);
0042     [[nodiscard]] MessageFlags flags() const;
0043 
0044     void setGMLabels(const MessageFlags &gmLabels);
0045     [[nodiscard]] MessageFlags gmLabels() const;
0046 
0047     void setMode(StoreMode mode);
0048     [[nodiscard]] StoreMode mode() const;
0049 
0050     [[nodiscard]] QMap<int, MessageFlags> resultingFlags() const;
0051 
0052 protected:
0053     void doStart() override;
0054     void handleResponse(const Response &response) override;
0055 };
0056 
0057 }