Loading...
Searching...
No Matches
QXmppPubSubBaseItem.h
// SPDX-FileCopyrightText: 2019 Jeremy Lainé <jeremy.laine@m4x.org>
// SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im>
//
// SPDX-License-Identifier: LGPL-2.1-or-later
#ifndef QXMPPPUBSUBBASEITEM_H
#define QXMPPPUBSUBBASEITEM_H
#include "QXmppGlobal.h"
#include <QDomElement>
#include <QMetaType>
#include <QSharedDataPointer>
class QXmlStreamWriter;
class QXmppPubSubBaseItemPrivate;
class QXMPP_EXPORT QXmppPubSubBaseItem
{
public:
QXmppPubSubBaseItem(const QString &id = {}, const QString &publisher = {});
QXmppPubSubBaseItem(const QXmppPubSubBaseItem &) noexcept;
QXmppPubSubBaseItem(QXmppPubSubBaseItem &&) noexcept;
virtual ~QXmppPubSubBaseItem() noexcept;
QXmppPubSubBaseItem &operator=(const QXmppPubSubBaseItem &) noexcept;
QXmppPubSubBaseItem &operator=(QXmppPubSubBaseItem &&) noexcept;
QString id() const;
void setId(const QString &id);
QString publisher() const;
void setPublisher(const QString &publisher);
void parse(const QDomElement &element);
void toXml(QXmlStreamWriter *writer) const;
static bool isItem(const QDomElement &element);
protected:
virtual void parsePayload(const QDomElement &payloadElement);
virtual void serializePayload(QXmlStreamWriter *writer) const;
template<typename PayloadChecker>
static bool isItem(const QDomElement &element, PayloadChecker isPayloadValid);
private:
QSharedDataPointer<QXmppPubSubBaseItemPrivate> d;
};
template<typename PayloadChecker>
bool QXmppPubSubBaseItem::isItem(const QDomElement &element, PayloadChecker isPayloadValid)
{
if (!isItem(element)) {
return false;
}
const QDomElement payload = element.firstChildElement();
// we can only check the payload if it's existant
if (!payload.isNull()) {
return isPayloadValid(payload);
}
return true;
}
Q_DECLARE_METATYPE(QXmppPubSubBaseItem)
#endif // QXMPPPUBSUBBASEITEM_H
QXmppPubSubBaseItem
Definition QXmppPubSubBaseItem.h:19
QXmppPubSubBaseItem::QXmppPubSubBaseItem
QXmppPubSubBaseItem(const QXmppPubSubBaseItem &) noexcept
Default copy-constructor.
QXmppPubSubBaseItem::setId
void setId(const QString &id)
Definition QXmppPubSubBaseItem.cpp:90
QXmppPubSubBaseItem::serializePayload
virtual void serializePayload(QXmlStreamWriter *writer) const
Definition QXmppPubSubBaseItem.cpp:154
QXmppPubSubBaseItem::publisher
QString publisher() const
Definition QXmppPubSubBaseItem.cpp:98
QXmppPubSubBaseItem::setPublisher
void setPublisher(const QString &publisher)
Definition QXmppPubSubBaseItem.cpp:106
QXmppPubSubBaseItem::QXmppPubSubBaseItem
QXmppPubSubBaseItem(QXmppPubSubBaseItem &&) noexcept
Default move-constructor.
QXmppPubSubBaseItem::QXmppPubSubBaseItem
QXmppPubSubBaseItem(const QString &id={}, const QString &publisher={})
Definition QXmppPubSubBaseItem.cpp:62
QXmppPubSubBaseItem::parsePayload
virtual void parsePayload(const QDomElement &payloadElement)
Definition QXmppPubSubBaseItem.cpp:144
QXmppPubSubBaseItem::isItem
static bool isItem(const QDomElement &element)
Definition QXmppPubSubBaseItem.cpp:134