From 78711c314a4cc20aaf276e519d9db1d91cf22fa7 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 6 Feb 2012 19:12:19 +0000 Subject: add an attribute to QXmppMessage to carry delivery receipt request --- src/QXmppMessage.cpp | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'src/QXmppMessage.cpp') diff --git a/src/QXmppMessage.cpp b/src/QXmppMessage.cpp index a76e02ec..a10ee7e5 100644 --- a/src/QXmppMessage.cpp +++ b/src/QXmppMessage.cpp @@ -53,7 +53,8 @@ QXmppMessage::QXmppMessage(const QString& from, const QString& to, const m_state(None), m_attentionRequested(false), m_body(body), - m_thread(thread) + m_thread(thread), + m_receiptRequested(false) { } @@ -97,6 +98,26 @@ void QXmppMessage::setAttentionRequested(bool requested) m_attentionRequested = requested; } +/// Returns true if a delivery receipt is requested, as defined +/// by XEP-0184: Message Delivery Receipts. + +bool QXmppMessage::isReceiptRequested() const +{ + return m_receiptRequested; +} + +/// Sets whether a delivery receipt is requested, as defined +/// by XEP-0184: Message Delivery Receipts. +/// +/// \a param requested + +void QXmppMessage::setReceiptRequested(bool requested) +{ + m_receiptRequested = requested; + if (requested && id().isEmpty()) + generateAndSetNextId(); +} + /// Returns the message's type. /// @@ -229,6 +250,9 @@ void QXmppMessage::parse(const QDomElement &element) } } + // XEP-0184: Message Delivery Receipts + m_receiptRequested = element.firstChildElement("request").namespaceURI() == ns_message_receipts; + // XEP-0203: Delayed Delivery QDomElement delayElement = element.firstChildElement("delay"); if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery) @@ -306,6 +330,13 @@ void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const } } + // XEP-0184: Message Delivery Receipts + if (m_receiptRequested) { + xmlWriter->writeStartElement("request"); + xmlWriter->writeAttribute("xmlns", ns_message_receipts); + xmlWriter->writeEndElement(); + } + // XEP-0224: Attention if (m_attentionRequested) { xmlWriter->writeStartElement("attention"); -- cgit v1.2.3