aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppMixItem.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-03-10 09:36:08 +0100
committerLinus Jahn <lnj@kaidan.im>2022-03-10 10:03:30 +0100
commit686b7f7c2ab6b3987925241888fa387be35a97a8 (patch)
treea8f79c68f804926732267792086d97005eb68a4c /src/base/QXmppMixItem.cpp
parent523030f0751d69e4f33ee7dc3a4078e213ee94aa (diff)
downloadqxmpp-686b7f7c2ab6b3987925241888fa387be35a97a8.tar.gz
Rename MixItem.h to MixItems.h
Diffstat (limited to 'src/base/QXmppMixItem.cpp')
-rw-r--r--src/base/QXmppMixItem.cpp267
1 files changed, 0 insertions, 267 deletions
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 <lnj@kaidan.im>
-//
-// 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;
- });
-}