QXmpp  Version: 1.5.2
QXmppPubSubItem.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 #ifndef QXMPPPUBSUBITEM_H
7 #define QXMPPPUBSUBITEM_H
8 
9 #include "QXmppGlobal.h"
10 
11 #include <QDomElement>
12 #include <QMetaType>
13 #include <QSharedDataPointer>
14 
15 class QXmlStreamWriter;
16 class QXmppPubSubItemPrivate;
17 
18 class QXMPP_EXPORT QXmppPubSubItem
19 {
20 public:
21  QXmppPubSubItem(const QString &id = {}, const QString &publisher = {});
24  virtual ~QXmppPubSubItem();
25 
28 
29  QString id() const;
30  void setId(const QString &id);
31 
32  QString publisher() const;
33  void setPublisher(const QString &publisher);
34 
36  void parse(const QDomElement &element);
37  void toXml(QXmlStreamWriter *writer) const;
39 
40  static bool isItem(const QDomElement &element);
41 
42 protected:
43  virtual void parsePayload(const QDomElement &payloadElement);
44  virtual void serializePayload(QXmlStreamWriter *writer) const;
45 
46  template<typename PayloadChecker>
47  static bool isItem(const QDomElement &element, PayloadChecker isPayloadValid);
48 
49 private:
50  QSharedDataPointer<QXmppPubSubItemPrivate> d;
51 };
52 
72 template<typename PayloadChecker>
73 bool QXmppPubSubItem::isItem(const QDomElement &element, PayloadChecker isPayloadValid)
74 {
75  if (!isItem(element)) {
76  return false;
77  }
78 
79  const QDomElement payload = element.firstChildElement();
80 
81  // we can only check the payload if it's existant
82  if (!payload.isNull()) {
83  return isPayloadValid(payload);
84  }
85  return true;
86 }
87 
88 Q_DECLARE_METATYPE(QXmppPubSubItem)
89 
90 #endif // QXMPPPUBSUBITEM_H
Definition: QXmppPubSubItem.h:19
static bool isItem(const QDomElement &element)
Definition: QXmppPubSubItem.cpp:130
QXmppPubSubItem(QXmppPubSubItem &&)
Default move-constructor.
QXmppPubSubItem & operator=(QXmppPubSubItem &&)
Default move-assignment operator.
QXmppPubSubItem(const QXmppPubSubItem &)
Default copy-constructor.
QXmppPubSubItem & operator=(const QXmppPubSubItem &)
Default assignment operator.