diff options
| author | Melvin Keskin <melvo@olomono.de> | 2022-09-25 14:12:51 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-25 14:12:51 +0200 |
| commit | 524a02debffd9552f0928b5804d7b51b045aa9d2 (patch) | |
| tree | a8832b961839c27511193ec58e608ea552ff5362 /src/base/QXmppJingleIq.cpp | |
| parent | 48bc0775e68cb6d7647287e90c3e69fde387003a (diff) | |
| download | qxmpp-524a02debffd9552f0928b5804d7b51b045aa9d2.tar.gz | |
Implement XEP-0272: Multiparty Jingle (Muji) stanza extensions (#457)
Adds the presence extension and the extension of the Jingle IQ.
https://xmpp.org/extensions/xep-0272.html
Diffstat (limited to 'src/base/QXmppJingleIq.cpp')
| -rw-r--r-- | src/base/QXmppJingleIq.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/base/QXmppJingleIq.cpp b/src/base/QXmppJingleIq.cpp index 1c244d7b..9d883860 100644 --- a/src/base/QXmppJingleIq.cpp +++ b/src/base/QXmppJingleIq.cpp @@ -1,4 +1,5 @@ // SPDX-FileCopyrightText: 2010 Jeremy Lainé <jeremy.laine@m4x.org> +// SPDX-FileCopyrightText: 2022 Melvin Keskin <melvo@olomono.de> // // SPDX-License-Identifier: LGPL-2.1-or-later @@ -718,6 +719,8 @@ public: QString responder; QString sid; + QString mujiGroupChatJid; + QList<QXmppJingleIq::Content> contents; QXmppJingleIq::Reason reason; bool ringing; @@ -871,6 +874,30 @@ void QXmppJingleIq::setSid(const QString &sid) d->sid = sid; } +/// +/// Returns the JID of the \xep{0272, Multiparty Jingle (Muji)} group chat. +/// +/// \return the Muji group chat JID +/// +/// \since QXmpp 1.5 +/// +QString QXmppJingleIq::mujiGroupChatJid() const +{ + return d->mujiGroupChatJid; +} + +/// +/// Sets the JID of the \xep{0272, Multiparty Jingle (Muji)} group chat. +/// +/// \param mujiGroupChatJid Muji group chat JID +/// +/// \since QXmpp 1.5 +/// +void QXmppJingleIq::setMujiGroupChatJid(const QString &mujiGroupChatJid) +{ + d->mujiGroupChatJid = mujiGroupChatJid; +} + /// \cond bool QXmppJingleIq::isJingleIq(const QDomElement &element) { @@ -892,6 +919,12 @@ void QXmppJingleIq::parseElementFromChild(const QDomElement &element) d->responder = jingleElement.attribute(QStringLiteral("responder")); d->sid = jingleElement.attribute(QStringLiteral("sid")); + // XEP-0272: Multiparty Jingle (Muji) + if (const auto mujiGroupChatElement = jingleElement.firstChildElement(QStringLiteral("muji")); + mujiGroupChatElement.namespaceURI() == ns_muji) { + d->mujiGroupChatJid = mujiGroupChatElement.attribute(QStringLiteral("room")); + } + // content d->contents.clear(); QDomElement contentElement = jingleElement.firstChildElement(QStringLiteral("content")); @@ -917,9 +950,19 @@ void QXmppJingleIq::toXmlElementFromChild(QXmlStreamWriter *writer) const helperToXmlAddAttribute(writer, QStringLiteral("initiator"), d->initiator); helperToXmlAddAttribute(writer, QStringLiteral("responder"), d->responder); helperToXmlAddAttribute(writer, QStringLiteral("sid"), d->sid); + + // XEP-0272: Multiparty Jingle (Muji) + if (!d->mujiGroupChatJid.isEmpty()) { + writer->writeStartElement(QStringLiteral("muji")); + writer->writeDefaultNamespace(ns_muji); + helperToXmlAddAttribute(writer, QStringLiteral("room"), d->mujiGroupChatJid); + writer->writeEndElement(); + } + for (const auto &content : d->contents) { content.toXml(writer); } + d->reason.toXml(writer); // ringing |
