From 1ddc6a696ef58e85569f762f2be21d54afcd48a0 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Thu, 30 Sep 2010 08:48:39 +0000 Subject: * make addExtension / removeExtension return a boolean * document removeExtension --- src/QXmppClient.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'src/QXmppClient.cpp') 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 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; } } -- cgit v1.2.3