aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-09-03 09:47:33 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-09-03 09:47:33 +0000
commitd502675789e46062999547ce1e8604dff59f5e89 (patch)
treeac11b6db645fbe5f6a08f87d89c9869df3013e1a /src
parent9f3c33e464c8e388074ff21908c25819a5c97ece (diff)
downloadqxmpp-d502675789e46062999547ce1e8604dff59f5e89.tar.gz
give QXmppClientExtensions access to the QXmppClient instance
Diffstat (limited to 'src')
-rw-r--r--src/QXmppClient.cpp9
-rw-r--r--src/QXmppClient.h1
-rw-r--r--src/QXmppClientExtension.cpp40
-rw-r--r--src/QXmppClientExtension.h13
4 files changed, 63 insertions, 0 deletions
diff --git a/src/QXmppClient.cpp b/src/QXmppClient.cpp
index c4846a58..aef252c3 100644
--- a/src/QXmppClient.cpp
+++ b/src/QXmppClient.cpp
@@ -189,6 +189,7 @@ QXmppClient::~QXmppClient()
void QXmppClient::addExtension(QXmppClientExtension *extension)
{
extension->setParent(this);
+ extension->setClient(this);
// Logging
bool check = connect(extension, SIGNAL(logMessage(QXmppLogger::MessageType, QString)),
@@ -199,6 +200,14 @@ void QXmppClient::addExtension(QXmppClientExtension *extension)
d->extensions << extension;
}
+/// Returns a list containing all the client's extensions.
+///
+
+QList<QXmppClientExtension*> QXmppClient::extensions()
+{
+ return d->extensions;
+}
+
/// Returns a modifiable reference to the current configuration of QXmppClient.
/// \return Reference to the QXmppClient's configuration for the connection.
diff --git a/src/QXmppClient.h b/src/QXmppClient.h
index e15ee8d3..2a46168a 100644
--- a/src/QXmppClient.h
+++ b/src/QXmppClient.h
@@ -94,6 +94,7 @@ public:
~QXmppClient();
void addExtension(QXmppClientExtension *extension);
+ QList<QXmppClientExtension*> extensions();
void connectToServer(const QXmppConfiguration&,
const QXmppPresence& initialPresence =
diff --git a/src/QXmppClientExtension.cpp b/src/QXmppClientExtension.cpp
index 6794a800..8505c50a 100644
--- a/src/QXmppClientExtension.cpp
+++ b/src/QXmppClientExtension.cpp
@@ -23,6 +23,46 @@
#include "QXmppClientExtension.h"
+class QXmppClientExtensionPrivate
+{
+public:
+ QXmppClient *client;
+};
+
+/// Constructs a QXmppClient extension.
+///
+
+QXmppClientExtension::QXmppClientExtension()
+ : d(new QXmppClientExtensionPrivate)
+{
+ d->client = 0;
+}
+
+/// Destroys a QXmppClient extension.
+///
+
+QXmppClientExtension::~QXmppClientExtension()
+{
+ delete d;
+}
+
+/// Returns the client which loaded this extension.
+///
+
+QXmppClient *QXmppClientExtension::client()
+{
+ return d->client;
+}
+
+/// Sets the client which loaded this extension.
+///
+/// \param client
+
+void QXmppClientExtension::setClient(QXmppClient *client)
+{
+ d->client = client;
+}
+
/// Logs a debugging message.
///
/// \param message
diff --git a/src/QXmppClientExtension.h b/src/QXmppClientExtension.h
index 627983b1..c9715df8 100644
--- a/src/QXmppClientExtension.h
+++ b/src/QXmppClientExtension.h
@@ -27,6 +27,9 @@
#include "QXmppLogger.h"
class QDomElement;
+
+class QXmppClient;
+class QXmppClientExtensionPrivate;
class QXmppStream;
/// \brief The QXmppClientExtension class is the base class for QXmppClient
@@ -38,6 +41,8 @@ class QXmppClientExtension : public QObject
Q_OBJECT
public:
+ QXmppClientExtension();
+ ~QXmppClientExtension();
virtual bool handleStanza(QXmppStream *stream, const QDomElement &stanza) = 0;
signals:
@@ -45,10 +50,18 @@ signals:
void logMessage(QXmppLogger::MessageType type, const QString &msg);
protected:
+ QXmppClient *client();
+
// Logging helpers
void debug(const QString&);
void info(const QString&);
void warning(const QString&);
+
+private:
+ void setClient(QXmppClient *client);
+ QXmppClientExtensionPrivate * const d;
+
+ friend class QXmppClient;
};
#endif