File indexing completed on 2024-05-12 05:17:15
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 <QByteArray> 0010 #include <QList> 0011 #include <QMetaType> 0012 0013 namespace KIMAP 0014 { 0015 struct Response { 0016 class Part 0017 { 0018 public: 0019 enum Type { String = 0, List }; 0020 0021 explicit Part(const QByteArray &string) 0022 : m_type(String) 0023 , m_string(string) 0024 { 0025 } 0026 explicit Part(const QList<QByteArray> &list) 0027 : m_type(List) 0028 , m_list(list) 0029 { 0030 } 0031 0032 inline Type type() const 0033 { 0034 return m_type; 0035 } 0036 inline QByteArray toString() const 0037 { 0038 return m_string; 0039 } 0040 inline QList<QByteArray> toList() const 0041 { 0042 return m_list; 0043 } 0044 0045 private: 0046 Type m_type; 0047 QByteArray m_string; 0048 QList<QByteArray> m_list; 0049 }; 0050 0051 inline QByteArray toString() const 0052 { 0053 QByteArray result; 0054 0055 for (const Part &part : std::as_const(content)) { 0056 if (part.type() == Part::List) { 0057 result += '('; 0058 const QList<QByteArray> lstBa = part.toList(); 0059 for (const QByteArray &item : lstBa) { 0060 result += ' '; 0061 result += item; 0062 } 0063 result += " ) "; 0064 } else { 0065 result += part.toString() + ' '; 0066 } 0067 } 0068 0069 if (!responseCode.isEmpty()) { 0070 result += "[ "; 0071 for (const Part &part : std::as_const(responseCode)) { 0072 if (part.type() == Part::List) { 0073 result += '('; 0074 const QList<QByteArray> lstBa = part.toList(); 0075 for (const QByteArray &item : lstBa) { 0076 result += ' '; 0077 result += item; 0078 } 0079 result += " ) "; 0080 } else { 0081 result += part.toString() + ' '; 0082 } 0083 } 0084 result += " ]"; 0085 } 0086 0087 return result; 0088 } 0089 0090 QList<Part> content; 0091 QList<Part> responseCode; 0092 }; 0093 0094 } 0095 0096 Q_DECLARE_METATYPE(KIMAP::Response) 0097 static const int _kimap_messageTypeId = qRegisterMetaType<KIMAP::Response>();