diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-03 09:47:33 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-03 09:47:33 +0000 |
| commit | d502675789e46062999547ce1e8604dff59f5e89 (patch) | |
| tree | ac11b6db645fbe5f6a08f87d89c9869df3013e1a /src | |
| parent | 9f3c33e464c8e388074ff21908c25819a5c97ece (diff) | |
| download | qxmpp-d502675789e46062999547ce1e8604dff59f5e89.tar.gz | |
give QXmppClientExtensions access to the QXmppClient instance
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppClient.cpp | 9 | ||||
| -rw-r--r-- | src/QXmppClient.h | 1 | ||||
| -rw-r--r-- | src/QXmppClientExtension.cpp | 40 | ||||
| -rw-r--r-- | src/QXmppClientExtension.h | 13 |
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 |
