File indexing completed on 2024-09-22 04:52:51
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_PARSER_THREADINGNODE 0024 #define IMAP_PARSER_THREADINGNODE 0025 0026 #include <QDataStream> 0027 #include <QMetaType> 0028 #include <QVector> 0029 0030 namespace Imap 0031 { 0032 namespace Responses 0033 { 0034 0035 /** @short Structure for keeping track of the message hierarchy, or threading */ 0036 struct ThreadingNode { 0037 /** @short Message sequence number or UID number 0038 0039 Which of the two allowed numbering schemes would be used depends on 0040 the command which triggered this reply, if it was plain THREAD, it 0041 will use message sequence numbers, if it was an UID THREAD command, 0042 it uses UIDs. 0043 0044 Special value 0 means "parent is present and its existence can be 0045 proved, but it doesn't match the search criteria or it isn't in the 0046 mailbox. 0047 */ 0048 uint num; 0049 /** @short Recursive data structure storing numbers of all messages which are children of the current one */ 0050 QVector<ThreadingNode> children; 0051 ThreadingNode(const uint num=0, const QVector<ThreadingNode> &children=QVector<ThreadingNode>()): 0052 num(num), children(children) 0053 { 0054 } 0055 }; 0056 0057 bool operator==(const ThreadingNode &n1, const ThreadingNode &n2); 0058 bool operator!=(const ThreadingNode &n1, const ThreadingNode &n2); 0059 0060 QDataStream &operator>>(QDataStream &s, ThreadingNode &n); 0061 QDataStream &operator<<(QDataStream &s, const ThreadingNode &n); 0062 0063 } 0064 } 0065 0066 Q_DECLARE_METATYPE(Imap::Responses::ThreadingNode); 0067 0068 0069 #endif // IMAP_PARSER_THREADINGNODE