From 78a3b26a36a720bf5bbeb86622a17588a1d881b5 Mon Sep 17 00:00:00 2001 From: fbeutel Date: Sun, 4 Sep 2016 22:56:15 +0200 Subject: Merge pull request #88 from fbeutel/carbons * Implemented XEP-0280: Message Carbons --- src/base/QXmppMessage.cpp | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'src/base/QXmppMessage.cpp') diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp index 0ee4be20..b7e83ddf 100644 --- a/src/base/QXmppMessage.cpp +++ b/src/base/QXmppMessage.cpp @@ -93,6 +93,9 @@ public: QXmppMessage::Marker marker; QString markedId; QString markedThread; + + // XEP-0280: Message Carbons + bool privatemsg; }; /// Constructs a QXmppMessage. @@ -117,6 +120,8 @@ QXmppMessage::QXmppMessage(const QString& from, const QString& to, const d->markable = false; d->marker = NoMarker; + + d->privatemsg = false; } /// Constructs a copy of \a other. @@ -372,7 +377,8 @@ namespace << qMakePair(QString("request"), QString()) << qMakePair(QString("delay"), QString()) << qMakePair(QString("attention"), QString()) - << qMakePair(QString("addresses"), QString()); + << qMakePair(QString("addresses"), QString()) + << qMakePair(QString("private"), QString(ns_carbons)); for (int i = QXmppMessage::Active; i <= QXmppMessage::Paused; i++) result << qMakePair(QString(chat_states[i]), QString()); return result; @@ -443,6 +449,24 @@ void QXmppMessage::setMarker(const Marker marker) d->marker = marker; } +/// Returns if the message is marked with a tag, +/// in which case it will not be forwarded to other resources +/// according to XEP-0280: Message Carbons. + +bool QXmppMessage::isPrivate() const +{ + return d->privatemsg; +} + +/// If true is passed, the message is marked with a tag, +/// in which case it will not be forwarded to other resources +/// according to XEP-0280: Message Carbons. + +void QXmppMessage::setPrivate(const bool priv) +{ + d->privatemsg = priv; +} + /// \cond void QXmppMessage::parse(const QDomElement &element) { @@ -543,6 +567,11 @@ void QXmppMessage::parse(const QDomElement &element) } } + // XEP-0280: Message Carbons + QDomElement privateElement = element.firstChildElement("private"); + if (!privateElement.isNull()) + d->privatemsg = true; + const QList > &knownElems = knownMessageSubelems(); QXmppElementList extensions; @@ -685,6 +714,13 @@ void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const xmlWriter->writeEndElement(); } + // XEP-0280: Message Carbons + if (d->privatemsg) { + xmlWriter->writeStartElement("private"); + xmlWriter->writeAttribute("xmlns", ns_carbons); + xmlWriter->writeEndElement(); + } + // other extensions QXmppStanza::extensionsToXml(xmlWriter); -- cgit v1.2.3