diff options
| author | fbeutel <fbeutel@users.noreply.github.com> | 2016-09-04 22:56:15 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2016-09-04 22:56:15 +0200 |
| commit | 78a3b26a36a720bf5bbeb86622a17588a1d881b5 (patch) | |
| tree | 8795a95058740b95dbb8f324183bed441748325f /src/base/QXmppMessage.cpp | |
| parent | 8606658a9c9eef83e89e6f62fffd913bffb99b0f (diff) | |
| download | qxmpp-78a3b26a36a720bf5bbeb86622a17588a1d881b5.tar.gz | |
Merge pull request #88 from fbeutel/carbons
* Implemented XEP-0280: Message Carbons
Diffstat (limited to 'src/base/QXmppMessage.cpp')
| -rw-r--r-- | src/base/QXmppMessage.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
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 <private> 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 <private> 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<QPair<QString, QString> > &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); |
