diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-10 09:53:25 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-09-10 09:53:25 +0000 |
| commit | 134781f6cfa3b75ebd91b7028e0e9de709d86702 (patch) | |
| tree | e88f9e63e645029093ba5d6c65ab96a8a59f6c3a /src | |
| parent | 966067c17e939bb4b03fee41ecaa468a3f836c4e (diff) | |
| download | qxmpp-134781f6cfa3b75ebd91b7028e0e9de709d86702.tar.gz | |
refactor QXmppVersionManager as a client extension
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppClient.cpp | 4 | ||||
| -rw-r--r-- | src/QXmppOutgoingClient.cpp | 8 | ||||
| -rw-r--r-- | src/QXmppOutgoingClient.h | 4 | ||||
| -rw-r--r-- | src/QXmppVersionManager.cpp | 64 | ||||
| -rw-r--r-- | src/QXmppVersionManager.h | 16 |
5 files changed, 41 insertions, 55 deletions
diff --git a/src/QXmppClient.cpp b/src/QXmppClient.cpp index 6266cebc..d3bf7e55 100644 --- a/src/QXmppClient.cpp +++ b/src/QXmppClient.cpp @@ -175,7 +175,9 @@ QXmppClient::QXmppClient(QObject *parent) d->mucManager = new QXmppMucManager(d->stream, this); d->transferManager = new QXmppTransferManager(d->stream, this); d->vCardManager = new QXmppVCardManager(d->stream, this); - d->versionManager = new QXmppVersionManager(d->stream, this); + + d->versionManager = new QXmppVersionManager; + addExtension(d->versionManager); } /// Destructor, destroys the QXmppClient object. diff --git a/src/QXmppOutgoingClient.cpp b/src/QXmppOutgoingClient.cpp index f52f4309..f4ec1bc1 100644 --- a/src/QXmppOutgoingClient.cpp +++ b/src/QXmppOutgoingClient.cpp @@ -52,7 +52,6 @@ #include "QXmppSessionIq.h" #include "QXmppStreamInitiationIq.h" #include "QXmppVCardIq.h" -#include "QXmppVersionIq.h" #include <QBuffer> #include <QCoreApplication> @@ -586,13 +585,6 @@ void QXmppOutgoingClient::handleStanza(const QDomElement &nodeRecv) sendNonSASLAuth(plainText); } } - // XEP-0092: Software Version - else if(QXmppVersionIq::isVersionIq(nodeRecv)) - { - QXmppVersionIq versionIq; - versionIq.parse(nodeRecv); - emit versionIqReceived(versionIq); - } // XEP-0095: Stream Initiation else if(QXmppStreamInitiationIq::isStreamInitiationIq(nodeRecv)) { diff --git a/src/QXmppOutgoingClient.h b/src/QXmppOutgoingClient.h index 4efca3c2..3aafdd44 100644 --- a/src/QXmppOutgoingClient.h +++ b/src/QXmppOutgoingClient.h @@ -56,7 +56,6 @@ class QXmppJingleIq; class QXmppMucAdminIq; class QXmppMucOwnerIq; class QXmppStreamInitiationIq; -class QXmppVersionIq; class QXmppOutgoingClientPrivate; @@ -126,9 +125,6 @@ signals: // XEP-0166: Jingle void jingleIqReceived(const QXmppJingleIq&); - // XEP-0092: Software Version - void versionIqReceived(const QXmppVersionIq&); - protected: /// \cond // Overridable methods diff --git a/src/QXmppVersionManager.cpp b/src/QXmppVersionManager.cpp index 4ee5c687..46db6cea 100644 --- a/src/QXmppVersionManager.cpp +++ b/src/QXmppVersionManager.cpp @@ -21,56 +21,56 @@ * */ +#include <QCoreApplication> +#include <QDomElement> + #include "QXmppVersionManager.h" #include "QXmppOutgoingClient.h" #include "QXmppVersionIq.h" #include "QXmppGlobal.h" -#include <QCoreApplication> - -QXmppVersionManager::QXmppVersionManager(QXmppOutgoingClient* stream, QObject *parent) - : QObject(parent), - m_stream(stream) +bool QXmppVersionManager::handleStanza(QXmppStream *stream, const QDomElement &element) { - bool check = QObject::connect(m_stream, SIGNAL(versionIqReceived(const QXmppVersionIq&)), - this, SLOT(versionIqReceived(const QXmppVersionIq&))); - Q_ASSERT(check); - Q_UNUSED(check); -} - -void QXmppVersionManager::versionIqReceived(const QXmppVersionIq& versionIq) -{ - if(versionIq.type() == QXmppIq::Get) + if (element.tagName() == "iq" && QXmppVersionIq::isVersionIq(element)) { - // respond to query - QXmppVersionIq responseIq; - responseIq.setType(QXmppIq::Result); - responseIq.setId(versionIq.id()); - responseIq.setTo(versionIq.from()); + QXmppVersionIq versionIq; + versionIq.parse(element); - QString name = qApp->applicationName(); - if(name.isEmpty()) - name = "Based on QXmpp"; - responseIq.setName(name); + if(versionIq.type() == QXmppIq::Get) + { + // respond to query + QXmppVersionIq responseIq; + responseIq.setType(QXmppIq::Result); + responseIq.setId(versionIq.id()); + responseIq.setTo(versionIq.from()); - QString version = qApp->applicationVersion(); - if(version.isEmpty()) - version = QXmppVersion(); - responseIq.setVersion(version); + QString name = qApp->applicationName(); + if(name.isEmpty()) + name = "Based on QXmpp"; + responseIq.setName(name); - // TODO set OS aswell + QString version = qApp->applicationVersion(); + if(version.isEmpty()) + version = QXmppVersion(); + responseIq.setVersion(version); - m_stream->sendPacket(responseIq); + // TODO set OS aswell + stream->sendPacket(responseIq); + } + + emit versionReceived(versionIq); + return true; } - emit versionReceived(versionIq); + return false; } void QXmppVersionManager::requestVersion(const QString& jid) { QXmppVersionIq request; request.setType(QXmppIq::Get); - request.setFrom(m_stream->configuration().jid()); + request.setFrom(client()->configuration().jid()); request.setTo(jid); - m_stream->sendPacket(request); + client()->sendPacket(request); } + diff --git a/src/QXmppVersionManager.h b/src/QXmppVersionManager.h index 8d7a19ce..6b748f51 100644 --- a/src/QXmppVersionManager.h +++ b/src/QXmppVersionManager.h @@ -24,7 +24,7 @@ #ifndef QXMPPVERSIONMANAGER_H #define QXMPPVERSIONMANAGER_H -#include <QObject> +#include "QXmppClientExtension.h" class QXmppOutgoingClient; class QXmppVersionIq; @@ -34,23 +34,19 @@ class QXmppVersionIq; /// /// \ingroup Managers -class QXmppVersionManager : public QObject +class QXmppVersionManager : public QXmppClientExtension { Q_OBJECT public: - QXmppVersionManager(QXmppOutgoingClient* stream, QObject *parent = 0); void requestVersion(const QString& jid); + /// \cond + bool handleStanza(QXmppStream *stream, const QDomElement &element); + /// \endcond + signals: void versionReceived(const QXmppVersionIq&); - -private slots: - void versionIqReceived(const QXmppVersionIq&); - -private: - // reference to the xmpp stream (no ownership) - QXmppOutgoingClient* m_stream; }; #endif // QXMPPVERSIONMANAGER_H |
