1 /*
2     SPDX-FileCopyrightText: 2015-2017 Krzysztof Nowicki <krissn@op.pl>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include <QList>
10 
11 #include "ewsitembase.h"
12 
13 class QXmlStreamReader;
14 class QXmlStreamWriter;
15 class EwsItemPrivate;
16 
17 class EwsItem : public EwsItemBase
18 {
19 public:
20     typedef QList<EwsItem> List;
21     typedef QMultiMap<QString, QString> HeaderMap;
22 
23     EwsItem();
24     explicit EwsItem(QXmlStreamReader &reader);
25     EwsItem(const EwsItem &other);
26     EwsItem(EwsItem &&other);
27     ~EwsItem() override;
28 
29     EwsItem &operator=(const EwsItem &other);
30     EwsItem &operator=(EwsItem &&other);
31 
32     EwsItemType type() const;
33     void setType(EwsItemType type);
34     EwsItemType internalType() const;
35 
36     bool write(QXmlStreamWriter &writer) const;
37 
38     bool operator==(const EwsItem &other) const;
39 
40 protected:
41     bool readBaseItemElement(QXmlStreamReader &reader);
42 };
43 
44 Q_DECLARE_METATYPE(EwsItem)
45 Q_DECLARE_METATYPE(EwsItem::List)
46 Q_DECLARE_METATYPE(EwsItem::HeaderMap)
47 
48