aboutsummaryrefslogtreecommitdiff
path: root/src/base
diff options
context:
space:
mode:
Diffstat (limited to 'src/base')
-rw-r--r--src/base/QXmppJingleIq.cpp38
-rw-r--r--src/base/QXmppJingleIq.h6
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);