aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2015-08-31 13:54:28 +0200
committerJeremy Lainé <jeremy.laine@m4x.org>2015-08-31 13:54:28 +0200
commitaa131bd436b528a68bdcea4fab180b551f2a0d81 (patch)
treefc9478f5b7f51737d57d48103560922f2880f61b /src/base
parentae4e941db2932b6cf73091eb8bf5f0260491600e (diff)
downloadqxmpp-aa131bd436b528a68bdcea4fab180b551f2a0d81.tar.gz
hide QXmppJingleIq internals
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppJingleIq.cpp135
-rw-r--r--src/base/QXmppJingleIq.h36
2 files changed, 108 insertions, 63 deletions
diff --git a/src/base/QXmppJingleIq.cpp b/src/base/QXmppJingleIq.cpp
index 26799054..6d2304f1 100644
--- a/src/base/QXmppJingleIq.cpp
+++ b/src/base/QXmppJingleIq.cpp
@@ -652,10 +652,40 @@ void QXmppJingleIq::Reason::toXml(QXmlStreamWriter *writer) const
}
/// \endcond
+class QXmppJingleIqPrivate : public QSharedData
+{
+public:
+ QXmppJingleIqPrivate();
+
+ QXmppJingleIq::Action action;
+ QString initiator;
+ QString responder;
+ QString sid;
+
+ QXmppJingleIq::Content content;
+ QXmppJingleIq::Reason reason;
+ bool ringing;
+};
+
+QXmppJingleIqPrivate::QXmppJingleIqPrivate()
+ : ringing(false)
+{
+}
+
/// Constructs a QXmppJingleIq.
QXmppJingleIq::QXmppJingleIq()
- : m_ringing(false)
+ : d(new QXmppJingleIqPrivate())
+{
+}
+
+QXmppJingleIq::QXmppJingleIq(const QXmppJingleIq &other)
+ : QXmppIq(other)
+ , d(other.d)
+{
+}
+
+QXmppJingleIq::~QXmppJingleIq()
{
}
@@ -663,7 +693,7 @@ QXmppJingleIq::QXmppJingleIq()
QXmppJingleIq::Action QXmppJingleIq::action() const
{
- return m_action;
+ return d->action;
}
/// Sets the Jingle IQ's action.
@@ -672,14 +702,28 @@ QXmppJingleIq::Action QXmppJingleIq::action() const
void QXmppJingleIq::setAction(QXmppJingleIq::Action action)
{
- m_action = action;
+ d->action = action;
+}
+
+/// Returns a reference to the IQ's content element.
+
+QXmppJingleIq::Content& QXmppJingleIq::content()
+{
+ return d->content;
+}
+
+/// Returns a const reference to the IQ's content element.
+
+const QXmppJingleIq::Content& QXmppJingleIq::content() const
+{
+ return d->content;
}
/// Returns the session initiator.
QString QXmppJingleIq::initiator() const
{
- return m_initiator;
+ return d->initiator;
}
/// Sets the session initiator.
@@ -688,14 +732,28 @@ QString QXmppJingleIq::initiator() const
void QXmppJingleIq::setInitiator(const QString &initiator)
{
- m_initiator = initiator;
+ d->initiator = initiator;
+}
+
+/// Returns a reference to the IQ's reason element.
+
+QXmppJingleIq::Reason& QXmppJingleIq::reason()
+{
+ return d->reason;
+}
+
+/// Returns a const reference to the IQ's reason element.
+
+const QXmppJingleIq::Reason& QXmppJingleIq::reason() const
+{
+ return d->reason;
}
/// Returns the session responder.
QString QXmppJingleIq::responder() const
{
- return m_responder;
+ return d->responder;
}
/// Sets the session responder.
@@ -704,39 +762,39 @@ QString QXmppJingleIq::responder() const
void QXmppJingleIq::setResponder(const QString &responder)
{
- m_responder = responder;
+ d->responder = responder;
}
-/// Returns the session ID.
+/// Returns true if the call is ringing.
-QString QXmppJingleIq::sid() const
+bool QXmppJingleIq::ringing() const
{
- return m_sid;
+ return d->ringing;
}
-/// Sets the session ID.
+/// Set to true if the call is ringing.
///
-/// \param sid
+/// \param ringing
-void QXmppJingleIq::setSid(const QString &sid)
+void QXmppJingleIq::setRinging(bool ringing)
{
- m_sid = sid;
+ d->ringing = ringing;
}
-/// Returns true if the call is ringing.
+/// Returns the session ID.
-bool QXmppJingleIq::ringing() const
+QString QXmppJingleIq::sid() const
{
- return m_ringing;
+ return d->sid;
}
-/// Set to true if the call is ringing.
+/// Sets the session ID.
///
-/// \param ringing
+/// \param sid
-void QXmppJingleIq::setRinging(bool ringing)
+void QXmppJingleIq::setSid(const QString &sid)
{
- m_ringing = ringing;
+ d->sid = sid;
}
/// \cond
@@ -750,43 +808,40 @@ void QXmppJingleIq::parseElementFromChild(const QDomElement &element)
{
QDomElement jingleElement = element.firstChildElement("jingle");
const QString action = jingleElement.attribute("action");
- for (int i = ContentAccept; i <= TransportReplace; i++)
- {
- if (action == jingle_actions[i])
- {
- m_action = static_cast<Action>(i);
+ for (int i = ContentAccept; i <= TransportReplace; i++) {
+ if (action == jingle_actions[i]) {
+ d->action = static_cast<Action>(i);
break;
}
}
- m_initiator = jingleElement.attribute("initiator");
- m_responder = jingleElement.attribute("responder");
- m_sid = jingleElement.attribute("sid");
+ d->initiator = jingleElement.attribute("initiator");
+ d->responder = jingleElement.attribute("responder");
+ d->sid = jingleElement.attribute("sid");
// content
QDomElement contentElement = jingleElement.firstChildElement("content");
- m_content.parse(contentElement);
+ d->content.parse(contentElement);
QDomElement reasonElement = jingleElement.firstChildElement("reason");
- m_reason.parse(reasonElement);
+ d->reason.parse(reasonElement);
// ringing
QDomElement ringingElement = jingleElement.firstChildElement("ringing");
- m_ringing = (ringingElement.namespaceURI() == ns_jingle_rtp_info);
+ d->ringing = (ringingElement.namespaceURI() == ns_jingle_rtp_info);
}
void QXmppJingleIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
{
writer->writeStartElement("jingle");
writer->writeAttribute("xmlns", ns_jingle);
- helperToXmlAddAttribute(writer, "action", jingle_actions[m_action]);
- helperToXmlAddAttribute(writer, "initiator", m_initiator);
- helperToXmlAddAttribute(writer, "responder", m_responder);
- helperToXmlAddAttribute(writer, "sid", m_sid);
- m_content.toXml(writer);
- m_reason.toXml(writer);
+ helperToXmlAddAttribute(writer, "action", jingle_actions[d->action]);
+ helperToXmlAddAttribute(writer, "initiator", d->initiator);
+ helperToXmlAddAttribute(writer, "responder", d->responder);
+ helperToXmlAddAttribute(writer, "sid", d->sid);
+ d->content.toXml(writer);
+ d->reason.toXml(writer);
// ringing
- if (m_ringing)
- {
+ if (d->ringing) {
writer->writeStartElement("ringing");
writer->writeAttribute("xmlns", ns_jingle_rtp_info);
writer->writeEndElement();
diff --git a/src/base/QXmppJingleIq.h b/src/base/QXmppJingleIq.h
index 046b7c96..5156646d 100644
--- a/src/base/QXmppJingleIq.h
+++ b/src/base/QXmppJingleIq.h
@@ -29,6 +29,7 @@
#include "QXmppIq.h"
class QXmppJingleIqContentPrivate;
+class QXmppJingleIqPrivate;
/// \brief The QXmppJinglePayloadType class represents a payload type
/// as specified by XEP-0167: Jingle RTP Sessions and RFC 5245.
@@ -289,35 +290,31 @@ public:
};
QXmppJingleIq();
+ QXmppJingleIq(const QXmppJingleIq &other);
+ ~QXmppJingleIq();
Action action() const;
void setAction(Action action);
+ Content& content();
+ const Content& content() const;
+
QString initiator() const;
void setInitiator(const QString &initiator);
+ Reason& reason();
+ const Reason& reason() const;
+
QString responder() const;
void setResponder(const QString &responder);
- QString sid() const;
- void setSid(const QString &sid);
-
- /// Returns a reference to the IQ's content element.
- Content& content() { return m_content; };
-
- /// Returns a const reference to the IQ's content element.
- const Content& content() const { return m_content; };
-
- /// Returns a reference to the IQ's reason element.
- Reason& reason() { return m_reason; };
-
- /// Returns a const reference to the IQ's reason element.
- const Reason& reason() const { return m_reason; };
-
// XEP-0167: Jingle RTP Sessions
bool ringing() const;
void setRinging(bool ringing);
+ QString sid() const;
+ void setSid(const QString &sid);
+
/// \cond
static bool isJingleIq(const QDomElement &element);
/// \endcond
@@ -329,14 +326,7 @@ protected:
/// \endcond
private:
- Action m_action;
- QString m_initiator;
- QString m_responder;
- QString m_sid;
-
- Content m_content;
- Reason m_reason;
- bool m_ringing;
+ QSharedDataPointer<QXmppJingleIqPrivate> d;
};
#endif