diff options
Diffstat (limited to 'src/base')
| -rw-r--r-- | src/base/QXmppJingleIq.cpp | 38 | ||||
| -rw-r--r-- | src/base/QXmppJingleIq.h | 6 |
2 files changed, 33 insertions, 11 deletions
diff --git a/src/base/QXmppJingleIq.cpp b/src/base/QXmppJingleIq.cpp index 6d2304f1..fa958490 100644 --- a/src/base/QXmppJingleIq.cpp +++ b/src/base/QXmppJingleIq.cpp @@ -267,6 +267,12 @@ QList<QXmppJingleCandidate> QXmppJingleIq::Content::transportCandidates() const return d->transportCandidates; } +void QXmppJingleIq::Content::setTransportCandidates(const QList<QXmppJingleCandidate> &candidates) +{ + d->transportType = candidates.isEmpty() ? QString() : ns_jingle_ice_udp; + d->transportCandidates = candidates; +} + QString QXmppJingleIq::Content::transportUser() const { return d->transportUser; @@ -662,7 +668,7 @@ public: QString responder; QString sid; - QXmppJingleIq::Content content; + QList<QXmppJingleIq::Content> contents; QXmppJingleIq::Reason reason; bool ringing; }; @@ -705,18 +711,25 @@ void QXmppJingleIq::setAction(QXmppJingleIq::Action action) d->action = action; } -/// Returns a reference to the IQ's content element. +// Adds an element to the IQ's content elements. + +void QXmppJingleIq::addContent(const QXmppJingleIq::Content &content) +{ + d->contents << content; +} + +/// Returns the IQ's content elements. -QXmppJingleIq::Content& QXmppJingleIq::content() +QList<QXmppJingleIq::Content> QXmppJingleIq::contents() const { - return d->content; + return d->contents; } -/// Returns a const reference to the IQ's content element. +/// Sets the IQ's content elements. -const QXmppJingleIq::Content& QXmppJingleIq::content() const +void QXmppJingleIq::setContents(const QList<QXmppJingleIq::Content> &contents) { - return d->content; + d->contents = contents; } /// Returns the session initiator. @@ -819,8 +832,14 @@ void QXmppJingleIq::parseElementFromChild(const QDomElement &element) d->sid = jingleElement.attribute("sid"); // content + d->contents.clear(); QDomElement contentElement = jingleElement.firstChildElement("content"); - d->content.parse(contentElement); + while (!contentElement.isNull()) { + QXmppJingleIq::Content content; + content.parse(contentElement); + addContent(content); + contentElement = contentElement.nextSiblingElement("content"); + } QDomElement reasonElement = jingleElement.firstChildElement("reason"); d->reason.parse(reasonElement); @@ -837,7 +856,8 @@ void QXmppJingleIq::toXmlElementFromChild(QXmlStreamWriter *writer) const helperToXmlAddAttribute(writer, "initiator", d->initiator); helperToXmlAddAttribute(writer, "responder", d->responder); helperToXmlAddAttribute(writer, "sid", d->sid); - d->content.toXml(writer); + foreach (const QXmppJingleIq::Content &content, d->contents) + content.toXml(writer); d->reason.toXml(writer); // ringing diff --git a/src/base/QXmppJingleIq.h b/src/base/QXmppJingleIq.h index 5156646d..7e21b054 100644 --- a/src/base/QXmppJingleIq.h +++ b/src/base/QXmppJingleIq.h @@ -213,6 +213,7 @@ public: void addTransportCandidate(const QXmppJingleCandidate &candidate); QList<QXmppJingleCandidate> transportCandidates() const; + void setTransportCandidates(const QList<QXmppJingleCandidate> &candidates); QString transportUser() const; void setTransportUser(const QString &user); @@ -296,8 +297,9 @@ public: Action action() const; void setAction(Action action); - Content& content(); - const Content& content() const; + void addContent(const Content &content); + QList<Content> contents() const; + void setContents(const QList<Content> &contents); QString initiator() const; void setInitiator(const QString &initiator); |
