File indexing completed on 2024-06-23 05:21:16
0001 /* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net> 0002 0003 This file is part of the Trojita Qt IMAP e-mail client, 0004 http://trojita.flaska.net/ 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public License as 0008 published by the Free Software Foundation; either version 2 of 0009 the License or (at your option) version 3 or any later version 0010 accepted by the membership of KDE e.V. (or its successor approved 0011 by the membership of KDE e.V.), which shall act as a proxy 0012 defined in Section 14 of version 3 of the license. 0013 0014 This program is distributed in the hope that it will be useful, 0015 but WITHOUT ANY WARRANTY; without even the implied warranty of 0016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0017 GNU General Public License for more details. 0018 0019 You should have received a copy of the GNU General Public License 0020 along with this program. If not, see <http://www.gnu.org/licenses/>. 0021 */ 0022 0023 #ifndef IMAP_UPDATEFLAGS_TASK_H 0024 #define IMAP_UPDATEFLAGS_TASK_H 0025 0026 #include <QPersistentModelIndex> 0027 #include "Imap/Model/FlagsOperation.h" 0028 #include "ImapTask.h" 0029 0030 namespace Imap 0031 { 0032 namespace Mailbox 0033 { 0034 0035 class CopyMoveMessagesTask; 0036 0037 /** @short Update message flags for a particular message set 0038 0039 The purpose of this task is to make sure the IMAP flags for a set of messages from 0040 a given mailbox are changed. 0041 */ 0042 class UpdateFlagsTask : public ImapTask 0043 { 0044 Q_OBJECT 0045 public: 0046 /** @short Change flags for a message set 0047 0048 IMAP flags for the @arg messages message set are changed -- the @arg flagOperation 0049 should be FLAGS, +FLAGS or -FLAGS (all of them optionally with the ".silent" modifier), 0050 and the desired change (actual flags) is passed in the @arg flags argument. 0051 */ 0052 UpdateFlagsTask(Model *model, const QModelIndexList &messages, const FlagsOperation flagOperation, const QString &flags); 0053 0054 /** @short Marking moved messages as deleted */ 0055 UpdateFlagsTask(Model *model, CopyMoveMessagesTask *copyTask, const QList<QPersistentModelIndex> &messages, 0056 const FlagsOperation flagOperation, const QString &flags); 0057 void perform() override; 0058 0059 bool handleStateHelper(const Imap::Responses::State *const resp) override; 0060 QVariant taskData(const int role) const override; 0061 bool needsMailbox() const override {return true;} 0062 private: 0063 CommandHandle tag; 0064 ImapTask *conn; 0065 CopyMoveMessagesTask *copyMove; 0066 QList<QPersistentModelIndex> messages; 0067 FlagsOperation flagOperation; 0068 QString flags; 0069 }; 0070 0071 } 0072 } 0073 0074 #endif // IMAP_UPDATEFLAGS_TASK_H