aboutsummaryrefslogtreecommitdiff
path: root/src
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
parent99779f6c24cb5164cc2749dac7301e0818eded55 (diff)
downloadqxmpp-1ddc6a696ef58e85569f762f2be21d54afcd48a0.tar.gz
* make addExtension / removeExtension return a boolean
* document removeExtension
Diffstat (limited to 'src')
-rw-r--r--src/QXmppClient.cpp30
-rw-r--r--src/QXmppClient.h4
2 files changed, 23 insertions, 11 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;
}
}
diff --git a/src/QXmppClient.h b/src/QXmppClient.h
index e57c35ce..843be961 100644
--- a/src/QXmppClient.h
+++ b/src/QXmppClient.h
@@ -94,8 +94,8 @@ public:
QXmppClient(QObject *parent = 0);
~QXmppClient();
- void addExtension(QXmppClientExtension* extension);
- void removeExtension(QXmppClientExtension* extension);
+ bool addExtension(QXmppClientExtension* extension);
+ bool removeExtension(QXmppClientExtension* extension);
QList<QXmppClientExtension*> extensions();