aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppMessage.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:51:15 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-02-08 12:51:15 +0000
commitdeb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch)
treed956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/QXmppMessage.cpp
parente8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff)
downloadqxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz
move files common to client/server into "base"
Diffstat (limited to 'src/QXmppMessage.cpp')
-rw-r--r--src/QXmppMessage.cpp417
1 files changed, 0 insertions, 417 deletions
diff --git a/src/QXmppMessage.cpp b/src/QXmppMessage.cpp
deleted file mode 100644
index 109c0d84..00000000
--- a/src/QXmppMessage.cpp
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (C) 2008-2011 The QXmpp developers
- *
- * Authors:
- * Manjeet Dahiya
- * Jeremy Lainé
- *
- * Source:
- * http://code.google.com/p/qxmpp
- *
- * This file is a part of QXmpp library.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- */
-
-#include <QDomElement>
-#include <QXmlStreamWriter>
-
-#include "QXmppConstants.h"
-#include "QXmppMessage.h"
-#include "QXmppUtils.h"
-
-static const char* chat_states[] = {
- "",
- "active",
- "inactive",
- "gone",
- "composing",
- "paused",
-};
-
-/// Constructs a QXmppMessage.
-///
-/// \param from
-/// \param to
-/// \param body
-/// \param thread
-
-QXmppMessage::QXmppMessage(const QString& from, const QString& to, const
- QString& body, const QString& thread)
- : QXmppStanza(from, to),
- m_type(Chat),
- m_stampType(QXmppMessage::DelayedDelivery),
- m_state(None),
- m_attentionRequested(false),
- m_body(body),
- m_thread(thread),
- m_receiptRequested(false)
-{
-}
-
-QXmppMessage::~QXmppMessage()
-{
-
-}
-
-/// Returns the message's body.
-///
-
-QString QXmppMessage::body() const
-{
- return m_body;
-}
-
-/// Sets the message's body.
-///
-/// \param body
-
-void QXmppMessage::setBody(const QString& body)
-{
- m_body = body;
-}
-
-/// Returns true if the user's attention is requested, as defined
-/// by XEP-0224: Attention.
-
-bool QXmppMessage::isAttentionRequested() const
-{
- return m_attentionRequested;
-}
-
-/// Sets whether the user's attention is requested, as defined
-/// by XEP-0224: Attention.
-///
-/// \a param requested
-
-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();
-}
-
-/// 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.
-///
-
-QXmppMessage::Type QXmppMessage::type() const
-{
- return m_type;
-}
-
-QString QXmppMessage::getTypeStr() const
-{
- switch(m_type)
- {
- case QXmppMessage::Error:
- return "error";
- case QXmppMessage::Normal:
- return "normal";
- case QXmppMessage::Chat:
- return "chat";
- case QXmppMessage::GroupChat:
- return "groupchat";
- case QXmppMessage::Headline:
- return "headline";
- default:
- qWarning("QXmppMessage::getTypeStr() invalid type %d", (int)m_type);
- return "";
- }
-}
-
-/// Sets the message's type.
-///
-/// \param type
-
-void QXmppMessage::setType(QXmppMessage::Type type)
-{
- m_type = type;
-}
-
-void QXmppMessage::setTypeFromStr(const QString& str)
-{
- if(str == "error")
- {
- setType(QXmppMessage::Error);
- return;
- }
- else if(str == "") // if no type is specified
- {
- setType(QXmppMessage::Normal);
- return;
- }
- else if(str == "normal")
- {
- setType(QXmppMessage::Normal);
- return;
- }
- else if(str == "chat")
- {
- setType(QXmppMessage::Chat);
- return;
- }
- else if(str == "groupchat")
- {
- setType(QXmppMessage::GroupChat);
- return;
- }
- else if(str == "headline")
- {
- setType(QXmppMessage::Headline);
- return;
- }
- else
- {
- setType(static_cast<QXmppMessage::Type>(-1));
- qWarning("QXmppMessage::setTypeFromStr() invalid input string type: %s",
- qPrintable(str));
- return;
- }
-}
-
-/// Returns the message's timestamp (if any).
-
-QDateTime QXmppMessage::stamp() const
-{
- return m_stamp;
-}
-
-/// Sets the message's timestamp.
-///
-/// \param stamp
-
-void QXmppMessage::setStamp(const QDateTime &stamp)
-{
- m_stamp = stamp;
-}
-
-/// Returns the message's chat state.
-///
-
-QXmppMessage::State QXmppMessage::state() const
-{
- return m_state;
-}
-
-/// Sets the message's chat state.
-///
-/// \param state
-
-void QXmppMessage::setState(QXmppMessage::State state)
-{
- m_state = state;
-}
-
-void QXmppMessage::parse(const QDomElement &element)
-{
- QXmppStanza::parse(element);
-
- setTypeFromStr(element.attribute("type"));
- m_body = element.firstChildElement("body").text();
- m_subject = element.firstChildElement("subject").text();
- m_thread = element.firstChildElement("thread").text();
-
- // chat states
- for (int i = Active; i <= Paused; i++)
- {
- QDomElement stateElement = element.firstChildElement(chat_states[i]);
- if (!stateElement.isNull() &&
- stateElement.namespaceURI() == ns_chat_states)
- {
- m_state = static_cast<QXmppMessage::State>(i);
- break;
- }
- }
-
- // XEP-0184: Message Delivery Receipts
- QDomElement receivedElement = element.firstChildElement("received");
- if (!receivedElement.isNull() && receivedElement.namespaceURI() == ns_message_receipts) {
- m_receiptId = receivedElement.attribute("id");
-
- // compatibility with old-style XEP
- if (m_receiptId.isEmpty())
- m_receiptId = id();
- } else {
- m_receiptId = QString();
- }
- 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)
- {
- const QString str = delayElement.attribute("stamp");
- m_stamp = datetimeFromString(str);
- m_stampType = QXmppMessage::DelayedDelivery;
- }
-
- // XEP-0224: Attention
- m_attentionRequested = element.firstChildElement("attention").namespaceURI() == ns_attention;
-
- QXmppElementList extensions;
- QDomElement xElement = element.firstChildElement("x");
- while (!xElement.isNull())
- {
- if (xElement.namespaceURI() == ns_legacy_delayed_delivery)
- {
- // XEP-0091: Legacy Delayed Delivery
- const QString str = xElement.attribute("stamp");
- m_stamp = QDateTime::fromString(str, "yyyyMMddThh:mm:ss");
- m_stamp.setTimeSpec(Qt::UTC);
- m_stampType = QXmppMessage::LegacyDelayedDelivery;
- } else {
- // other extensions
- extensions << QXmppElement(xElement);
- }
- xElement = xElement.nextSiblingElement("x");
- }
- setExtensions(extensions);
-}
-
-void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const
-{
-
- xmlWriter->writeStartElement("message");
- helperToXmlAddAttribute(xmlWriter, "xml:lang", lang());
- helperToXmlAddAttribute(xmlWriter, "id", id());
- helperToXmlAddAttribute(xmlWriter, "to", to());
- helperToXmlAddAttribute(xmlWriter, "from", from());
- helperToXmlAddAttribute(xmlWriter, "type", getTypeStr());
- if (!m_subject.isEmpty())
- helperToXmlAddTextElement(xmlWriter, "subject", m_subject);
- if (!m_body.isEmpty())
- helperToXmlAddTextElement(xmlWriter, "body", m_body);
- if (!m_thread.isEmpty())
- helperToXmlAddTextElement(xmlWriter, "thread", m_thread);
- error().toXml(xmlWriter);
-
- // chat states
- if (m_state > None && m_state <= Paused)
- {
- xmlWriter->writeStartElement(chat_states[m_state]);
- xmlWriter->writeAttribute("xmlns", ns_chat_states);
- xmlWriter->writeEndElement();
- }
-
- // time stamp
- if (m_stamp.isValid())
- {
- QDateTime utcStamp = m_stamp.toUTC();
- if (m_stampType == QXmppMessage::DelayedDelivery)
- {
- // XEP-0203: Delayed Delivery
- xmlWriter->writeStartElement("delay");
- xmlWriter->writeAttribute("xmlns", ns_delayed_delivery);
- helperToXmlAddAttribute(xmlWriter, "stamp", datetimeToString(utcStamp));
- xmlWriter->writeEndElement();
- } else {
- // XEP-0091: Legacy Delayed Delivery
- xmlWriter->writeStartElement("x");
- xmlWriter->writeAttribute("xmlns", ns_legacy_delayed_delivery);
- helperToXmlAddAttribute(xmlWriter, "stamp", utcStamp.toString("yyyyMMddThh:mm:ss"));
- xmlWriter->writeEndElement();
- }
- }
-
- // 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);
- xmlWriter->writeEndElement();
- }
-
- // XEP-0224: Attention
- if (m_attentionRequested) {
- xmlWriter->writeStartElement("attention");
- xmlWriter->writeAttribute("xmlns", ns_attention);
- xmlWriter->writeEndElement();
- }
-
- // other extensions
- foreach (const QXmppElement &extension, extensions())
- extension.toXml(xmlWriter);
- xmlWriter->writeEndElement();
-}
-
-/// Returns the message's subject.
-///
-
-QString QXmppMessage::subject() const
-{
- return m_subject;
-}
-
-/// Sets the message's subject.
-///
-/// \param subject
-
-void QXmppMessage::setSubject(const QString& subject)
-{
- m_subject = subject;
-}
-
-/// Returns the message's thread.
-
-QString QXmppMessage::thread() const
-{
- return m_thread;
-}
-
-/// Sets the message's thread.
-///
-/// \param thread
-
-void QXmppMessage::setThread(const QString& thread)
-{
- m_thread = thread;
-}
-