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 <QSharedDataPointer> 10 #include <QXmlStreamWriter> 11 12 #include "ewstypes.h" 13 14 class EwsPropertyFieldPrivate; 15 16 class EwsPropertyField 17 { 18 public: 19 enum Type { 20 Field, 21 ExtendedField, 22 IndexedField, 23 UnknownField, 24 }; 25 26 EwsPropertyField(); 27 explicit EwsPropertyField(const QString &uri); // FieldURI 28 EwsPropertyField(const QString &uri, unsigned index); // IndexedFieldURI 29 EwsPropertyField(EwsDistinguishedPropSetId psid, unsigned id, EwsPropertyType type); 30 EwsPropertyField(EwsDistinguishedPropSetId psid, const QString &name, EwsPropertyType type); 31 EwsPropertyField(const QString &psid, unsigned id, EwsPropertyType type); 32 EwsPropertyField(const QString &psid, const QString &name, EwsPropertyType type); 33 EwsPropertyField(unsigned tag, EwsPropertyType type); 34 EwsPropertyField(const EwsPropertyField &other); 35 ~EwsPropertyField(); 36 37 EwsPropertyField &operator=(const EwsPropertyField &other); 38 bool operator==(const EwsPropertyField &other) const; 39 40 EwsPropertyField(EwsPropertyField &&other); 41 EwsPropertyField &operator=(EwsPropertyField &&other); 42 43 void write(QXmlStreamWriter &writer) const; 44 bool read(QXmlStreamReader &reader); 45 46 bool writeWithValue(QXmlStreamWriter &writer, const QVariant &value) const; 47 void writeValue(QXmlStreamWriter &writer, const QVariant &value) const; 48 void writeExtendedValue(QXmlStreamWriter &writer, const QVariant &value) const; 49 50 Type type() const; 51 QString uri() const; 52 53 private: 54 QSharedDataPointer<EwsPropertyFieldPrivate> d; 55 56 friend uint qHash(const EwsPropertyField &prop, uint seed); 57 friend QDebug operator<<(QDebug debug, const EwsPropertyField &prop); 58 }; 59 60 uint qHash(const EwsPropertyField &prop, uint seed); 61 62 QDebug operator<<(QDebug debug, const EwsPropertyField &prop); 63 64