diff options
Diffstat (limited to 'src/QXmppClient.cpp')
| -rw-r--r-- | src/QXmppClient.cpp | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/QXmppClient.cpp b/src/QXmppClient.cpp index 4fc9f04a..ed126496 100644 --- a/src/QXmppClient.cpp +++ b/src/QXmppClient.cpp @@ -243,8 +243,14 @@ QXmppClient::~QXmppClient() /// /// \param extension -void QXmppClient::addExtension(QXmppClientExtension* extension) +bool QXmppClient::addExtension(QXmppClientExtension* extension) { + if (d->extensions.contains(extension)) + { + qWarning("Cannot add extension, it has already been added"); + return false; + } + extension->setParent(this); extension->setClient(this); @@ -258,18 +264,24 @@ void QXmppClient::addExtension(QXmppClientExtension* extension) d->stream->addFeatures(extension->discoveryFeatures()); d->extensions << extension; + return true; } -void QXmppClient::removeExtension(QXmppClientExtension* extension) +/// Unregisters the given extension from the client. If the extension +/// is found, it will be destroyed. +/// +/// \param extension + +bool QXmppClient::removeExtension(QXmppClientExtension* extension) { - QList<QXmppClientExtension*> list = extensions(); - for (int i = 0; i < list.size(); ++i) + if (d->extensions.contains(extension)) { - if(extension == list.at(i)) - { - list.takeAt(i); - delete extension; - } + d->extensions.removeAll(extension); + delete extension; + return true; + } else { + qWarning("Cannot remove extension, it was never added"); + return false; } } |
