diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-11-16 00:46:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-11-16 00:46:15 +0000 |
| commit | 6c50c77fd7b85a1db2c211b45acf394f5a55ca4e (patch) | |
| tree | 9fddd2a95f0ce4affc77cfee4173e2d17ff37052 /src | |
| parent | 70bc01250696baf1ba7b6f45c519219fbed7cc17 (diff) | |
| download | qxmpp-6c50c77fd7b85a1db2c211b45acf394f5a55ca4e.tar.gz | |
add QXmppLoggable, a base class for QObjects which need logging facility
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppLogger.cpp | 57 | ||||
| -rw-r--r-- | src/QXmppLogger.h | 22 |
2 files changed, 79 insertions, 0 deletions
diff --git a/src/QXmppLogger.cpp b/src/QXmppLogger.cpp index 1ef081ce..6098aa2b 100644 --- a/src/QXmppLogger.cpp +++ b/src/QXmppLogger.cpp @@ -24,6 +24,7 @@ #include <iostream> +#include <QChildEvent> #include <QDateTime> #include <QTextStream> #include <QFile> @@ -58,6 +59,62 @@ static QString formatted(QXmppLogger::MessageType type, const QString& text) text; } +/// Constructs a new QXmppLoggable. +/// +/// \param parent + +QXmppLoggable::QXmppLoggable(QObject *parent) + : QObject(parent) +{ + QXmppLoggable *logParent = qobject_cast<QXmppLoggable*>(parent); + if (logParent) { + connect(this, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), + logParent, SIGNAL(logMessage(QXmppLogger::MessageType,QString))); + } +} + +void QXmppLoggable::childEvent(QChildEvent *event) +{ + QXmppLoggable *child = qobject_cast<QXmppLoggable*>(event->child()); + if (!child) + return; + + if (event->added()) { + connect(child, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), + this, SIGNAL(logMessage(QXmppLogger::MessageType,QString))); + } else if (event->removed()) { + disconnect(child, SIGNAL(logMessage(QXmppLogger::MessageType,QString)), + this, SIGNAL(logMessage(QXmppLogger::MessageType,QString))); + } +} + +/// Logs a debugging message. +/// +/// \param message + +void QXmppLoggable::debug(const QString &message) +{ + emit logMessage(QXmppLogger::DebugMessage, message); +} + +/// Logs an informational message. +/// +/// \param message + +void QXmppLoggable::info(const QString &message) +{ + emit logMessage(QXmppLogger::InformationMessage, message); +} + +/// Logs a warning message. +/// +/// \param message + +void QXmppLoggable::warning(const QString &message) +{ + emit logMessage(QXmppLogger::WarningMessage, message); +} + /// Constructs a new QXmppLogger. /// /// \param parent diff --git a/src/QXmppLogger.h b/src/QXmppLogger.h index 17adccdd..1a90238a 100644 --- a/src/QXmppLogger.h +++ b/src/QXmppLogger.h @@ -91,5 +91,27 @@ private: QXmppLogger::MessageTypes m_messageTypes; }; +/// \brief The QXmppLoggable class represents a source of logging messages. +/// +/// \ingroup Core + +class QXmppLoggable : public QObject +{ + Q_OBJECT + +public: + QXmppLoggable(QObject *parent = 0); + +protected: + virtual void childEvent(QChildEvent *event); + void debug(const QString &msg); + void info(const QString &msg); + void warning(const QString &msg); + +signals: + /// This signal is emitted to send logging messages. + void logMessage(QXmppLogger::MessageType type, const QString &msg); +}; + Q_DECLARE_OPERATORS_FOR_FLAGS(QXmppLogger::MessageTypes) #endif // QXMPPLOGGER_H |
