aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppJingleIq.cpp
diff options
context:
space:
mode:
authorMelvin Keskin <melvo@olomono.de>2022-09-25 14:12:51 +0200
committerGitHub <noreply@github.com>2022-09-25 14:12:51 +0200
commit524a02debffd9552f0928b5804d7b51b045aa9d2 (patch)
treea8832b961839c27511193ec58e608ea552ff5362 /src/base/QXmppJingleIq.cpp
parent48bc0775e68cb6d7647287e90c3e69fde387003a (diff)
downloadqxmpp-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.cpp43
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