aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppMessage.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-02-06 20:13:06 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-02-06 20:13:06 +0000
commitd793ea8b18527009ddd47816afbf52ada6ae7736 (patch)
tree64beacd1ca0188b14c08f93f8f13b6c0edafd27d /src/QXmppMessage.cpp
parent78711c314a4cc20aaf276e519d9db1d91cf22fa7 (diff)
downloadqxmpp-d793ea8b18527009ddd47816afbf52ada6ae7736.tar.gz
make QXmppMessage carry a receipt ID for XEP-0184
Diffstat (limited to 'src/QXmppMessage.cpp')
-rw-r--r--src/QXmppMessage.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/QXmppMessage.cpp b/src/QXmppMessage.cpp
index a10ee7e5..58579c43 100644
--- a/src/QXmppMessage.cpp
+++ b/src/QXmppMessage.cpp
@@ -118,6 +118,22 @@ void QXmppMessage::setReceiptRequested(bool requested)
generateAndSetNextId();
}
+/// If this message is a delivery receipt, returns the ID of the
+/// original message.
+
+QString QXmppMessage::receiptId() const
+{
+ return m_receiptId;
+}
+
+/// Make this message a delivery receipt for the message with
+/// the given \a id.
+
+void QXmppMessage::setReceiptId(const QString &id)
+{
+ m_receiptId = id;
+}
+
/// Returns the message's type.
///
@@ -251,6 +267,12 @@ void QXmppMessage::parse(const QDomElement &element)
}
// XEP-0184: Message Delivery Receipts
+ QDomElement receivedElement = element.firstChildElement("received");
+ if (!receivedElement.isNull() && receivedElement.namespaceURI() == ns_message_receipts) {
+ m_receiptId = receivedElement.attribute("id");
+ } else {
+ m_receiptId = QString();
+ }
m_receiptRequested = element.firstChildElement("request").namespaceURI() == ns_message_receipts;
// XEP-0203: Delayed Delivery
@@ -331,6 +353,12 @@ void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const
}
// XEP-0184: Message Delivery Receipts
+ if (!m_receiptId.isEmpty()) {
+ xmlWriter->writeStartElement("received");
+ xmlWriter->writeAttribute("xmlns", ns_message_receipts);
+ xmlWriter->writeAttribute("id", m_receiptId);
+ xmlWriter->writeEndElement();
+ }
if (m_receiptRequested) {
xmlWriter->writeStartElement("request");
xmlWriter->writeAttribute("xmlns", ns_message_receipts);