aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppMessage.cpp
diff options
context:
space:
mode:
authorfbeutel <fbeutel@users.noreply.github.com>2016-09-04 22:56:15 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2016-09-04 22:56:15 +0200
commit78a3b26a36a720bf5bbeb86622a17588a1d881b5 (patch)
tree8795a95058740b95dbb8f324183bed441748325f /src/base/QXmppMessage.cpp
parent8606658a9c9eef83e89e6f62fffd913bffb99b0f (diff)
downloadqxmpp-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.cpp38
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);