diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-06-14 10:56:43 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2011-06-14 10:56:43 +0000 |
| commit | 498881bcf60b59b945beed450e31592b1c8e96a3 (patch) | |
| tree | 686442e532b82827f11247e2b5c0abd81690418a /src | |
| parent | 6f701abe515c0d04d712a69e4883ce92ce6517b5 (diff) | |
| download | qxmpp-498881bcf60b59b945beed450e31592b1c8e96a3.tar.gz | |
make logger accessible as a property
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppClient.cpp | 61 | ||||
| -rw-r--r-- | src/QXmppClient.h | 13 |
2 files changed, 44 insertions, 30 deletions
diff --git a/src/QXmppClient.cpp b/src/QXmppClient.cpp index 9e30d548..7f17fa7b 100644 --- a/src/QXmppClient.cpp +++ b/src/QXmppClient.cpp @@ -42,36 +42,40 @@ class QXmppClientPrivate { public: - QXmppClientPrivate(QXmppClient *); + QXmppClientPrivate(QXmppClient *qq); + QXmppPresence clientPresence; ///< Current presence of the client QList<QXmppClientExtension*> extensions; QXmppLogger *logger; - QXmppOutgoingClient* stream; ///< Pointer to QXmppOutgoingClient object a wrapper over - ///< TCP socket and XMPP protocol - QXmppPresence clientPresence; ///< Stores the current presence of the connected client + QXmppOutgoingClient *stream; ///< Pointer to the XMPP stream - QXmppReconnectionManager *reconnectionManager; ///< Pointer to the reconnection manager - QXmppRosterManager *rosterManager; ///< Pointer to the roster manager - QXmppVCardManager *vCardManager; ///< Pointer to the vCard manager - QXmppVersionManager *versionManager; ///< Pointer to the version manager + QXmppReconnectionManager *reconnectionManager; ///< Pointer to the reconnection manager + QXmppRosterManager *rosterManager; ///< Pointer to the roster manager + QXmppVCardManager *vCardManager; ///< Pointer to the vCard manager + QXmppVersionManager *versionManager; ///< Pointer to the version manager void addProperCapability(QXmppPresence& presence); - QXmppClient *client; +private: + QXmppClient *q; }; -QXmppClientPrivate::QXmppClientPrivate(QXmppClient *parentClient) - : stream(0), - clientPresence(QXmppPresence::Available), - reconnectionManager(0), client(parentClient) +QXmppClientPrivate::QXmppClientPrivate(QXmppClient *qq) + : clientPresence(QXmppPresence::Available), + logger(0), + stream(0), + reconnectionManager(0), + rosterManager(0), + vCardManager(0), + versionManager(0), + q(qq) { } void QXmppClientPrivate::addProperCapability(QXmppPresence& presence) { - QXmppDiscoveryManager* ext = client->findExtension<QXmppDiscoveryManager>(); - if(ext) - { + QXmppDiscoveryManager* ext = q->findExtension<QXmppDiscoveryManager>(); + if(ext) { presence.setCapabilityHash("sha-1"); presence.setCapabilityNode(ext->clientCapabilitiesNode()); presence.setCapabilityVer(ext->capabilities().verificationString()); @@ -166,7 +170,6 @@ QXmppClient::QXmppClient(QObject *parent) Q_ASSERT(check); // logging - d->logger = 0; setLogger(QXmppLogger::getLogger()); // create managers @@ -553,7 +556,7 @@ void QXmppClient::_q_streamDisconnected() /// Returns the QXmppLogger associated with the current QXmppClient. -QXmppLogger *QXmppClient::logger() +QXmppLogger *QXmppClient::logger() const { return d->logger; } @@ -562,13 +565,19 @@ QXmppLogger *QXmppClient::logger() void QXmppClient::setLogger(QXmppLogger *logger) { - if (d->logger) - QObject::disconnect(this, SIGNAL(logMessage(QXmppLogger::MessageType, QString)), - d->logger, SLOT(log(QXmppLogger::MessageType, QString))); - d->logger = logger; - if (d->logger) - connect(this, SIGNAL(logMessage(QXmppLogger::MessageType, QString)), - d->logger, SLOT(log(QXmppLogger::MessageType, QString))); -} + if (logger != d->logger) { + if (d->logger) { + disconnect(this, SIGNAL(logMessage(QXmppLogger::MessageType, QString)), + d->logger, SLOT(log(QXmppLogger::MessageType, QString))); + } + d->logger = logger; + if (d->logger) { + connect(this, SIGNAL(logMessage(QXmppLogger::MessageType, QString)), + d->logger, SLOT(log(QXmppLogger::MessageType, QString))); + } + + emit loggerChanged(d->logger); + } +} diff --git a/src/QXmppClient.h b/src/QXmppClient.h index 490351d9..ff9755c4 100644 --- a/src/QXmppClient.h +++ b/src/QXmppClient.h @@ -81,6 +81,7 @@ class QXmppClient : public QXmppLoggable { Q_OBJECT Q_ENUMS(Error State) + Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged) Q_PROPERTY(State state READ state NOTIFY stateChanged) public: @@ -88,9 +89,10 @@ public: /// Error could come due a TCP socket or XML stream or due to various stanzas. enum Error { - SocketError, ///< Error due to TCP socket - KeepAliveError, ///< Error due to no response to a keep alive - XmppStreamError, ///< Error due to XML stream + NoError, ///< No error. + SocketError, ///< Error due to TCP socket. + KeepAliveError, ///< Error due to no response to a keep alive. + XmppStreamError, ///< Error due to XML stream. }; /// This enumeration describes a client state. @@ -146,7 +148,7 @@ public: void setClientPresence(const QXmppPresence &presence); QXmppConfiguration &configuration(); - QXmppLogger *logger(); + QXmppLogger *logger() const; void setLogger(QXmppLogger *logger); QAbstractSocket::SocketError socketError(); @@ -194,6 +196,9 @@ signals: /// know the error. void error(QXmppClient::Error); + /// This signal is emitted when the logger changes. + void loggerChanged(QXmppLogger *logger); + /// Notifies that an XMPP message stanza is received. The QXmppMessage /// parameter contains the details of the message sent to this client. /// In other words whenever someone sends you a message this signal is |
