5#ifndef QXMPPPUBSUBEVENT_H
6#define QXMPPPUBSUBEVENT_H
8#include "QXmppMessage.h"
9#include "QXmppPubSubSubscription.h"
17class QXmppPubSubEventPrivate;
55 std::optional<QXmppPubSubSubscription>
subscription()
const;
63 static bool isPubSubEvent(
const QDomElement &element, std::function<
bool(
const QDomElement &)> isItemValid);
68 virtual void parseItems(
const QDomElement &) = 0;
69 virtual void serializeItems(QXmlStreamWriter *writer)
const = 0;
73 QSharedDataPointer<QXmppPubSubEventPrivate> d;
76template<
typename T = QXmppPubSubBaseItem>
80 QVector<T>
items()
const;
87 void parseItems(
const QDomElement &)
override;
88 void serializeItems(QXmlStreamWriter *writer)
const override;
120 return QXmppPubSubEventBase::isPubSubEvent(element, [](
const QDomElement &element) {
121 return T::isItem(element);
129 QDomElement child = parent.firstChildElement(QStringLiteral(
"item"));
130 while (!child.isNull()) {
135 child = child.nextSiblingElement(QStringLiteral(
"item"));
142 for (
const auto &item : qAsConst(m_items)) {
virtual bool parseExtension(const QDomElement &element, QXmpp::SceMode)
Definition QXmppMessage.cpp:1633
QXmppMessage(const QString &from=QString(), const QString &to=QString(), const QString &body=QString(), const QString &thread=QString())
Definition QXmppMessage.cpp:201
virtual void serializeExtensions(QXmlStreamWriter *writer, QXmpp::SceMode, const QString &baseNamespace={}) const
Definition QXmppMessage.cpp:1896
Definition QXmppPubSubBaseItem.h:19
Definition QXmppPubSubEvent.h:21
void setSubscription(const std::optional< QXmppPubSubSubscription > &subscription)
Definition QXmppPubSubEvent.cpp:198
QXmppPubSubEventBase & operator=(const QXmppPubSubEventBase &other)
Default assignment operator.
void setEventType(EventType)
Definition QXmppPubSubEvent.cpp:112
std::optional< QXmppPubSubSubscription > subscription() const
Definition QXmppPubSubEvent.cpp:190
void setConfigurationForm(const std::optional< QXmppDataForm > &configurationForm)
Definition QXmppPubSubEvent.cpp:214
QString node() const
Definition QXmppPubSubEvent.cpp:126
void setRedirectUri(const QString &)
Definition QXmppPubSubEvent.cpp:182
EventType
Definition QXmppPubSubEvent.h:26
QXmppPubSubEventBase & operator=(QXmppPubSubEventBase &&)
Default move-assignment operator.
std::optional< QXmppDataForm > configurationForm() const
Definition QXmppPubSubEvent.cpp:206
QXmppPubSubEventBase(const QXmppPubSubEventBase &other)
Default copy-constructor.
QString redirectUri() const
Definition QXmppPubSubEvent.cpp:171
void setNode(const QString &node)
Definition QXmppPubSubEvent.cpp:140
QXmppPubSubEventBase(EventType=Items, const QString &node={})
Definition QXmppPubSubEvent.cpp:85
QXmppPubSubEventBase(QXmppPubSubEventBase &&)
Default move-constructor.
QStringList retractIds() const
Definition QXmppPubSubEvent.cpp:150
EventType eventType() const
Definition QXmppPubSubEvent.cpp:104
void setRetractIds(const QStringList &)
Definition QXmppPubSubEvent.cpp:160
The QXmppPubSubEvent class represents a PubSub event notification as defined by XEP-0060: Publish-Sub...
Definition QXmppPubSubEvent.h:78
static bool isPubSubEvent(const QDomElement &element)
Definition QXmppPubSubEvent.h:118
QVector< T > items() const
Definition QXmppPubSubEvent.h:99
void setItems(const QVector< T > &items)
Definition QXmppPubSubEvent.h:108
SceMode
Definition QXmppGlobal.h:136