From 6c50c77fd7b85a1db2c211b45acf394f5a55ca4e Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Tue, 16 Nov 2010 00:46:15 +0000 Subject: add QXmppLoggable, a base class for QObjects which need logging facility --- src/QXmppLogger.cpp | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'src/QXmppLogger.cpp') 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 +#include #include #include #include @@ -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(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(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 -- cgit v1.2.3