aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppMessage.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2019-01-04 22:02:37 +0100
committerJeremy Lainé <jeremy.laine@m4x.org>2019-05-01 10:24:51 +0200
commitf8fc440ef424dec4e465eb6a57eadb734f43da59 (patch)
tree1fb9eba0b57690941cf63614e91a454da2370b47 /src/base/QXmppMessage.cpp
parent27f6a12ee97dc3968aa46ce004ecd87d3c55c8ac (diff)
Implement MIX-CORE XEP-0396: Message extension
This implements the new message extension specified by XEP-0369: Mediated Information eXchange (MIX) in version 0.14.2. https://xmpp.org/extensions/xep-0369.html#usecase-user-message
Diffstat (limited to 'src/base/QXmppMessage.cpp')
-rw-r--r--src/base/QXmppMessage.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp
index f5869bf4..0bd28da6 100644
--- a/src/base/QXmppMessage.cpp
+++ b/src/base/QXmppMessage.cpp
@@ -102,6 +102,10 @@ public:
// XEP-0308: Last Message Correction
QString replaceId;
+
+ // XEP-0369: Mediated Information eXchange (MIX)
+ QString mixUserJid;
+ QString mixUserNick;
};
/// Constructs a QXmppMessage.
@@ -513,6 +517,34 @@ void QXmppMessage::setReplaceId(const QString &replaceId)
d->replaceId = replaceId;
}
+/// Returns the actual JID of a MIX channel participant.
+
+QString QXmppMessage::mixUserJid() const
+{
+ return d->mixUserJid;
+}
+
+/// Sets the actual JID of a MIX channel participant.
+
+void QXmppMessage::setMixUserJid(const QString& mixUserJid)
+{
+ d->mixUserJid = mixUserJid;
+}
+
+/// Returns the MIX participant's nickname.
+
+QString QXmppMessage::mixUserNick() const
+{
+ return d->mixUserNick;
+}
+
+/// Sets the MIX participant's nickname.
+
+void QXmppMessage::setMixUserNick(const QString& mixUserNick)
+{
+ d->mixUserNick = mixUserNick;
+}
+
/// \cond
void QXmppMessage::parse(const QDomElement &element)
{
@@ -654,6 +686,10 @@ void QXmppMessage::parse(const QDomElement &element)
else {
extensions << QXmppElement(xElement);
}
+ // XEP-0369: Mediated Information eXchange (MIX)
+ } else if (xElement.tagName() == "mix" && xElement.namespaceURI() == ns_mix) {
+ d->mixUserJid = xElement.firstChildElement("jid").text();
+ d->mixUserNick = xElement.firstChildElement("nick").text();
} else if (!knownElems.contains(qMakePair(xElement.tagName(), xElement.namespaceURI())) &&
!knownElems.contains(qMakePair(xElement.tagName(), QString()))) {
// other extensions
@@ -791,6 +827,15 @@ void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const
xmlWriter->writeEndElement();
}
+ // XEP-0369: Mediated Information eXchange (MIX)
+ if (!d->mixUserJid.isEmpty() || !d->mixUserNick.isEmpty()) {
+ xmlWriter->writeStartElement("mix");
+ xmlWriter->writeAttribute("xmlns", ns_mix);
+ helperToXmlAddTextElement(xmlWriter, "jid", d->mixUserJid);
+ helperToXmlAddTextElement(xmlWriter, "nick", d->mixUserNick);
+ xmlWriter->writeEndElement();
+ }
+
// other extensions
QXmppStanza::extensionsToXml(xmlWriter);