aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppClient.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-09-30 08:48:39 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-09-30 08:48:39 +0000
commit1ddc6a696ef58e85569f762f2be21d54afcd48a0 (patch)
tree8e1f65eb1e5c51ba4480696488e041a56b09d463 /src/QXmppClient.cpp
parent99779f6c24cb5164cc2749dac7301e0818eded55 (diff)
downloadqxmpp-1ddc6a696ef58e85569f762f2be21d54afcd48a0.tar.gz
* make addExtension / removeExtension return a boolean
* document removeExtension
Diffstat (limited to 'src/QXmppClient.cpp')
-rw-r--r--src/QXmppClient.cpp30
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;
}
}