From 686b7f7c2ab6b3987925241888fa387be35a97a8 Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Thu, 10 Mar 2022 09:36:08 +0100 Subject: Rename MixItem.h to MixItems.h --- src/CMakeLists.txt | 2 +- src/base/QXmppMixItem.cpp | 267 --------------------------------------------- src/base/QXmppMixItems.cpp | 267 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 268 insertions(+), 268 deletions(-) delete mode 100644 src/base/QXmppMixItem.cpp create mode 100644 src/base/QXmppMixItems.cpp (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fad9a885..cb9a04f1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -161,7 +161,7 @@ set(SOURCE_FILES base/QXmppMessage.cpp base/QXmppMixInvitation.cpp base/QXmppMixIq.cpp - base/QXmppMixItem.cpp + base/QXmppMixItems.cpp base/QXmppMucIq.cpp base/QXmppNonza.cpp base/QXmppNonSASLAuth.cpp diff --git a/src/base/QXmppMixItem.cpp b/src/base/QXmppMixItem.cpp deleted file mode 100644 index 35ed3335..00000000 --- a/src/base/QXmppMixItem.cpp +++ /dev/null @@ -1,267 +0,0 @@ -// SPDX-FileCopyrightText: 2019 Linus Jahn -// -// SPDX-License-Identifier: LGPL-2.1-or-later - -#include "QXmppConstants_p.h" -#include "QXmppDataFormBase.h" -#include "QXmppMixInfoItem.h" -#include "QXmppMixParticipantItem.h" - -static const auto NAME = QStringLiteral("Name"); -static const auto DESCRIPTION = QStringLiteral("Description"); -static const auto CONTACT_JIDS = QStringLiteral("Contact"); - -class QXmppMixInfoItemPrivate : public QSharedData, public QXmppDataFormBase -{ -public: - QString name; - QString description; - QStringList contactJids; - - ~QXmppMixInfoItemPrivate() override = default; - - void reset() - { - name.clear(); - description.clear(); - contactJids.clear(); - } - - QString formType() const override - { - return ns_mix; - } - - void parseForm(const QXmppDataForm &form) override - { - const auto fields = form.fields(); - for (const auto &field : fields) { - const auto key = field.key(); - const auto value = field.value(); - - if (key == NAME) { - name = value.toString(); - } else if (key == DESCRIPTION) { - description = value.toString(); - } else if (key == CONTACT_JIDS) { - contactJids = value.toStringList(); - } - } - } - void serializeForm(QXmppDataForm &form) const override - { - using Type = QXmppDataForm::Field::Type; - serializeNullable(form, Type::TextSingleField, NAME, name); - serializeNullable(form, Type::TextSingleField, DESCRIPTION, description); - serializeEmptyable(form, Type::JidMultiField, CONTACT_JIDS, contactJids); - } -}; - -/// -/// \class QXmppMixInfoItem -/// -/// \brief The QXmppMixInfoItem class represents a PubSub item of a MIX -/// channel containing channel information as defined by \xep{0369, Mediated -/// Information eXchange (MIX)}. -/// -/// \since QXmpp 1.5 -/// -/// \ingroup Stanzas -/// - -QXmppMixInfoItem::QXmppMixInfoItem() - : d(new QXmppMixInfoItemPrivate) -{ -} - -/// Default copy-constructor -QXmppMixInfoItem::QXmppMixInfoItem(const QXmppMixInfoItem &) = default; - -/// Default assignment operator -QXmppMixInfoItem &QXmppMixInfoItem::operator=(const QXmppMixInfoItem &) = default; - -QXmppMixInfoItem::~QXmppMixInfoItem() = default; - -/// -/// Returns the user-specified name of the MIX channel. This is not the name -/// part of the channel's JID. -/// -const QString &QXmppMixInfoItem::name() const -{ - return d->name; -} - -/// -/// Sets the name of the channel. -/// -void QXmppMixInfoItem::setName(QString name) -{ - d->name = std::move(name); -} - -/// -/// Returns the description of the channel. This string might be very long. -/// -const QString &QXmppMixInfoItem::description() const -{ - return d->description; -} - -/// -/// Sets the longer channel description. -/// -void QXmppMixInfoItem::setDescription(QString description) -{ - d->description = std::move(description); -} - -/// -/// Returns a list of JIDs that are responsible for this channel. -/// -const QStringList &QXmppMixInfoItem::contactJids() const -{ - return d->contactJids; -} - -/// -/// Sets a list of public JIDs that are responsible for this channel. -/// -void QXmppMixInfoItem::setContactJids(QStringList contactJids) -{ - d->contactJids = std::move(contactJids); -} - -/// -/// Returns true, if the given dom element is a MIX channel info item. -/// -bool QXmppMixInfoItem::isItem(const QDomElement &element) -{ - return QXmppPubSubItem::isItem(element, [](const QDomElement &payload) { - // check FORM_TYPE without parsing a full QXmppDataForm - if (payload.tagName() != u'x' || payload.namespaceURI() != ns_data) { - return false; - } - for (auto fieldEl = payload.firstChildElement(); - !fieldEl.isNull(); - fieldEl = fieldEl.nextSiblingElement()) { - if (fieldEl.attribute(QStringLiteral("var")) == QStringLiteral(u"FORM_TYPE")) { - return fieldEl.firstChildElement(QStringLiteral("value")).text() == ns_mix; - } - } - return false; - }); -} - -/// \cond -void QXmppMixInfoItem::parsePayload(const QDomElement &payload) -{ - d->reset(); - - QXmppDataForm form; - form.parse(payload); - - d->parseForm(form); -} - -void QXmppMixInfoItem::serializePayload(QXmlStreamWriter *writer) const -{ - auto form = d->toDataForm(); - form.setType(QXmppDataForm::Result); - form.toXml(writer); -} -/// \endcond - -class QXmppMixParticipantItemPrivate : public QSharedData -{ -public: - QString nick; - QString jid; -}; - -/// -/// \class QXmppMixParticipantItem -/// -/// The QXmppMixParticipantItem class represents a PubSub item of a MIX channel -/// participant as defined by \xep{0369, Mediated Information eXchange (MIX)}. -/// -/// \since QXmpp 1.5 -/// -/// \ingroup Stanzas -/// - -QXmppMixParticipantItem::QXmppMixParticipantItem() - : d(new QXmppMixParticipantItemPrivate) -{ -} - -/// Default copy-constructor -QXmppMixParticipantItem::QXmppMixParticipantItem(const QXmppMixParticipantItem &) = default; - -/// Default assignment operator -QXmppMixParticipantItem &QXmppMixParticipantItem::operator=(const QXmppMixParticipantItem &) = default; - -QXmppMixParticipantItem::~QXmppMixParticipantItem() = default; - -/// -/// Returns the participant's nickname. -/// -const QString &QXmppMixParticipantItem::nick() const -{ - return d->nick; -} - -/// -/// Sets the participants nickname. -/// -void QXmppMixParticipantItem::setNick(QString nick) -{ - d->nick = std::move(nick); -} - -/// -/// Returns the participant's JID. -/// -const QString &QXmppMixParticipantItem::jid() const -{ - return d->jid; -} - -/// -/// Sets the participant's JID. -/// -void QXmppMixParticipantItem::setJid(QString jid) -{ - d->jid = std::move(jid); -} - -/// \cond -void QXmppMixParticipantItem::parsePayload(const QDomElement &payload) -{ - d->nick = payload.firstChildElement(QStringLiteral("nick")).text(); - d->jid = payload.firstChildElement(QStringLiteral("jid")).text(); -} - -void QXmppMixParticipantItem::serializePayload(QXmlStreamWriter *writer) const -{ - writer->writeStartElement(QStringLiteral("participant")); - writer->writeDefaultNamespace(ns_mix); - if (!d->jid.isEmpty()) { - writer->writeTextElement("jid", d->jid); - } - if (!d->nick.isEmpty()) { - writer->writeTextElement("nick", d->nick); - } - writer->writeEndElement(); -} -/// \endcond - -/// -/// Returns true, if this dom element is a MIX participant item. -/// -bool QXmppMixParticipantItem::isItem(const QDomElement &element) -{ - return QXmppPubSubItem::isItem(element, [](const QDomElement &payload) { - return payload.tagName() == QStringLiteral("participant") && - payload.namespaceURI() == ns_mix; - }); -} diff --git a/src/base/QXmppMixItems.cpp b/src/base/QXmppMixItems.cpp new file mode 100644 index 00000000..35ed3335 --- /dev/null +++ b/src/base/QXmppMixItems.cpp @@ -0,0 +1,267 @@ +// SPDX-FileCopyrightText: 2019 Linus Jahn +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#include "QXmppConstants_p.h" +#include "QXmppDataFormBase.h" +#include "QXmppMixInfoItem.h" +#include "QXmppMixParticipantItem.h" + +static const auto NAME = QStringLiteral("Name"); +static const auto DESCRIPTION = QStringLiteral("Description"); +static const auto CONTACT_JIDS = QStringLiteral("Contact"); + +class QXmppMixInfoItemPrivate : public QSharedData, public QXmppDataFormBase +{ +public: + QString name; + QString description; + QStringList contactJids; + + ~QXmppMixInfoItemPrivate() override = default; + + void reset() + { + name.clear(); + description.clear(); + contactJids.clear(); + } + + QString formType() const override + { + return ns_mix; + } + + void parseForm(const QXmppDataForm &form) override + { + const auto fields = form.fields(); + for (const auto &field : fields) { + const auto key = field.key(); + const auto value = field.value(); + + if (key == NAME) { + name = value.toString(); + } else if (key == DESCRIPTION) { + description = value.toString(); + } else if (key == CONTACT_JIDS) { + contactJids = value.toStringList(); + } + } + } + void serializeForm(QXmppDataForm &form) const override + { + using Type = QXmppDataForm::Field::Type; + serializeNullable(form, Type::TextSingleField, NAME, name); + serializeNullable(form, Type::TextSingleField, DESCRIPTION, description); + serializeEmptyable(form, Type::JidMultiField, CONTACT_JIDS, contactJids); + } +}; + +/// +/// \class QXmppMixInfoItem +/// +/// \brief The QXmppMixInfoItem class represents a PubSub item of a MIX +/// channel containing channel information as defined by \xep{0369, Mediated +/// Information eXchange (MIX)}. +/// +/// \since QXmpp 1.5 +/// +/// \ingroup Stanzas +/// + +QXmppMixInfoItem::QXmppMixInfoItem() + : d(new QXmppMixInfoItemPrivate) +{ +} + +/// Default copy-constructor +QXmppMixInfoItem::QXmppMixInfoItem(const QXmppMixInfoItem &) = default; + +/// Default assignment operator +QXmppMixInfoItem &QXmppMixInfoItem::operator=(const QXmppMixInfoItem &) = default; + +QXmppMixInfoItem::~QXmppMixInfoItem() = default; + +/// +/// Returns the user-specified name of the MIX channel. This is not the name +/// part of the channel's JID. +/// +const QString &QXmppMixInfoItem::name() const +{ + return d->name; +} + +/// +/// Sets the name of the channel. +/// +void QXmppMixInfoItem::setName(QString name) +{ + d->name = std::move(name); +} + +/// +/// Returns the description of the channel. This string might be very long. +/// +const QString &QXmppMixInfoItem::description() const +{ + return d->description; +} + +/// +/// Sets the longer channel description. +/// +void QXmppMixInfoItem::setDescription(QString description) +{ + d->description = std::move(description); +} + +/// +/// Returns a list of JIDs that are responsible for this channel. +/// +const QStringList &QXmppMixInfoItem::contactJids() const +{ + return d->contactJids; +} + +/// +/// Sets a list of public JIDs that are responsible for this channel. +/// +void QXmppMixInfoItem::setContactJids(QStringList contactJids) +{ + d->contactJids = std::move(contactJids); +} + +/// +/// Returns true, if the given dom element is a MIX channel info item. +/// +bool QXmppMixInfoItem::isItem(const QDomElement &element) +{ + return QXmppPubSubItem::isItem(element, [](const QDomElement &payload) { + // check FORM_TYPE without parsing a full QXmppDataForm + if (payload.tagName() != u'x' || payload.namespaceURI() != ns_data) { + return false; + } + for (auto fieldEl = payload.firstChildElement(); + !fieldEl.isNull(); + fieldEl = fieldEl.nextSiblingElement()) { + if (fieldEl.attribute(QStringLiteral("var")) == QStringLiteral(u"FORM_TYPE")) { + return fieldEl.firstChildElement(QStringLiteral("value")).text() == ns_mix; + } + } + return false; + }); +} + +/// \cond +void QXmppMixInfoItem::parsePayload(const QDomElement &payload) +{ + d->reset(); + + QXmppDataForm form; + form.parse(payload); + + d->parseForm(form); +} + +void QXmppMixInfoItem::serializePayload(QXmlStreamWriter *writer) const +{ + auto form = d->toDataForm(); + form.setType(QXmppDataForm::Result); + form.toXml(writer); +} +/// \endcond + +class QXmppMixParticipantItemPrivate : public QSharedData +{ +public: + QString nick; + QString jid; +}; + +/// +/// \class QXmppMixParticipantItem +/// +/// The QXmppMixParticipantItem class represents a PubSub item of a MIX channel +/// participant as defined by \xep{0369, Mediated Information eXchange (MIX)}. +/// +/// \since QXmpp 1.5 +/// +/// \ingroup Stanzas +/// + +QXmppMixParticipantItem::QXmppMixParticipantItem() + : d(new QXmppMixParticipantItemPrivate) +{ +} + +/// Default copy-constructor +QXmppMixParticipantItem::QXmppMixParticipantItem(const QXmppMixParticipantItem &) = default; + +/// Default assignment operator +QXmppMixParticipantItem &QXmppMixParticipantItem::operator=(const QXmppMixParticipantItem &) = default; + +QXmppMixParticipantItem::~QXmppMixParticipantItem() = default; + +/// +/// Returns the participant's nickname. +/// +const QString &QXmppMixParticipantItem::nick() const +{ + return d->nick; +} + +/// +/// Sets the participants nickname. +/// +void QXmppMixParticipantItem::setNick(QString nick) +{ + d->nick = std::move(nick); +} + +/// +/// Returns the participant's JID. +/// +const QString &QXmppMixParticipantItem::jid() const +{ + return d->jid; +} + +/// +/// Sets the participant's JID. +/// +void QXmppMixParticipantItem::setJid(QString jid) +{ + d->jid = std::move(jid); +} + +/// \cond +void QXmppMixParticipantItem::parsePayload(const QDomElement &payload) +{ + d->nick = payload.firstChildElement(QStringLiteral("nick")).text(); + d->jid = payload.firstChildElement(QStringLiteral("jid")).text(); +} + +void QXmppMixParticipantItem::serializePayload(QXmlStreamWriter *writer) const +{ + writer->writeStartElement(QStringLiteral("participant")); + writer->writeDefaultNamespace(ns_mix); + if (!d->jid.isEmpty()) { + writer->writeTextElement("jid", d->jid); + } + if (!d->nick.isEmpty()) { + writer->writeTextElement("nick", d->nick); + } + writer->writeEndElement(); +} +/// \endcond + +/// +/// Returns true, if this dom element is a MIX participant item. +/// +bool QXmppMixParticipantItem::isItem(const QDomElement &element) +{ + return QXmppPubSubItem::isItem(element, [](const QDomElement &payload) { + return payload.tagName() == QStringLiteral("participant") && + payload.namespaceURI() == ns_mix; + }); +} -- cgit v1.2.3