QXmpp Version: 1.5.5
Loading...
Searching...
No Matches
QXmppPubSubBaseItem.h
1// SPDX-FileCopyrightText: 2019 Jeremy Lainé <jeremy.laine@m4x.org>
2// SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
3//
4// SPDX-License-Identifier: LGPL-2.1-or-later
5
6#pragma once
7
8#include "QXmppGlobal.h"
9
10#include <QDomElement>
11#include <QMetaType>
12#include <QSharedDataPointer>
13
14class QXmlStreamWriter;
15class QXmppPubSubBaseItemPrivate;
16
17class QXMPP_EXPORT QXmppPubSubBaseItem
18{
19public:
20 QXmppPubSubBaseItem(const QString &id = {}, const QString &publisher = {});
23 virtual ~QXmppPubSubBaseItem();
24
27
28 QString id() const;
29 void setId(const QString &id);
30
31 QString publisher() const;
32 void setPublisher(const QString &publisher);
33
35 void parse(const QDomElement &element);
36 void toXml(QXmlStreamWriter *writer) const;
38
39 static bool isItem(const QDomElement &element);
40
41protected:
42 virtual void parsePayload(const QDomElement &payloadElement);
43 virtual void serializePayload(QXmlStreamWriter *writer) const;
44
45 template<typename PayloadChecker>
46 static bool isItem(const QDomElement &element, PayloadChecker isPayloadValid);
47
48private:
49 QSharedDataPointer<QXmppPubSubBaseItemPrivate> d;
50};
51
71template<typename PayloadChecker>
72bool QXmppPubSubBaseItem::isItem(const QDomElement &element, PayloadChecker isPayloadValid)
73{
74 if (!isItem(element)) {
75 return false;
76 }
77
78 const QDomElement payload = element.firstChildElement();
79
80 // we can only check the payload if it's existant
81 if (!payload.isNull()) {
82 return isPayloadValid(payload);
83 }
84 return true;
85}
86
87Q_DECLARE_METATYPE(QXmppPubSubBaseItem)
Definition QXmppPubSubBaseItem.h:18
QXmppPubSubBaseItem & operator=(QXmppPubSubBaseItem &&)
Default move-assignment operator.
QXmppPubSubBaseItem(const QXmppPubSubBaseItem &)
Default copy-constructor.
QXmppPubSubBaseItem(QXmppPubSubBaseItem &&)
Default move-constructor.
static bool isItem(const QDomElement &element)
Definition QXmppPubSubBaseItem.cpp:130
QXmppPubSubBaseItem & operator=(const QXmppPubSubBaseItem &)
Default assignment operator.