diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2015-08-31 13:54:28 +0200 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2015-08-31 13:54:28 +0200 |
| commit | aa131bd436b528a68bdcea4fab180b551f2a0d81 (patch) | |
| tree | fc9478f5b7f51737d57d48103560922f2880f61b /src/base | |
| parent | ae4e941db2932b6cf73091eb8bf5f0260491600e (diff) | |
| download | qxmpp-aa131bd436b528a68bdcea4fab180b551f2a0d81.tar.gz | |
hide QXmppJingleIq internals
Diffstat (limited to 'src/base')
| -rw-r--r-- | src/base/QXmppJingleIq.cpp | 135 | ||||
| -rw-r--r-- | src/base/QXmppJingleIq.h | 36 |
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 |
