aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2011-06-14 10:56:43 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2011-06-14 10:56:43 +0000
commit498881bcf60b59b945beed450e31592b1c8e96a3 (patch)
tree686442e532b82827f11247e2b5c0abd81690418a /src
parent6f701abe515c0d04d712a69e4883ce92ce6517b5 (diff)
downloadqxmpp-498881bcf60b59b945beed450e31592b1c8e96a3.tar.gz
make logger accessible as a property
Diffstat (limited to 'src')
-rw-r--r--src/QXmppClient.cpp61
-rw-r--r--src/QXmppClient.h13
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