From 91fc9e69ee334c291c64e19b3f36eeb623f76d30 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Tue, 6 Jan 2015 01:25:56 +0200 Subject: [PATCH] Make the GUI log listen to the logger class. --- src/executionlog.cpp | 71 +++++++++++++++++++++++++++++++------------- src/executionlog.h | 17 +++++++---- 2 files changed, 63 insertions(+), 25 deletions(-) diff --git a/src/executionlog.cpp b/src/executionlog.cpp index 5bb9e0a64..2acfcd686 100644 --- a/src/executionlog.cpp +++ b/src/executionlog.cpp @@ -30,50 +30,81 @@ #include #include +#include +#include +#include #include "executionlog.h" #include "ui_executionlog.h" -#include "qbtsession.h" +#include "logger.h" #include "iconprovider.h" #include "loglistwidget.h" ExecutionLog::ExecutionLog(QWidget *parent) : QWidget(parent), ui(new Ui::ExecutionLog), - m_logList(new LogListWidget(MAX_LOG_MESSAGES)), - m_banList(new LogListWidget(MAX_LOG_MESSAGES)) + m_msgList(new LogListWidget(MAX_LOG_MESSAGES)), + m_peerList(new LogListWidget(MAX_LOG_MESSAGES)) { ui->setupUi(this); ui->tabConsole->setTabIcon(0, IconProvider::instance()->getIcon("view-calendar-journal")); ui->tabConsole->setTabIcon(1, IconProvider::instance()->getIcon("view-filter")); - ui->tabGeneral->layout()->addWidget(m_logList); - ui->tabBan->layout()->addWidget(m_banList); + ui->tabGeneral->layout()->addWidget(m_msgList); + ui->tabBan->layout()->addWidget(m_peerList); - const QStringList log_msgs = QBtSession::instance()->getConsoleMessages(); - foreach (const QString& msg, log_msgs) + const Logger* const logger = Logger::instance(); + foreach (const Log::Msg& msg, logger->getMessages()) addLogMessage(msg); - const QStringList ban_msgs = QBtSession::instance()->getPeerBanMessages(); - foreach (const QString& msg, ban_msgs) - addBanMessage(msg); - connect(QBtSession::instance(), SIGNAL(newConsoleMessage(QString)), SLOT(addLogMessage(QString))); - connect(QBtSession::instance(), SIGNAL(newBanMessage(QString)), SLOT(addBanMessage(QString))); - connect(m_logList, SIGNAL(logCleared()), QBtSession::instance(), SLOT(clearConsoleMessages())); - connect(m_banList, SIGNAL(logCleared()), QBtSession::instance(), SLOT(clearPeerBanMessages())); + foreach (const Log::Peer& peer, logger->getPeers()) + addPeerMessage(peer); + connect(logger, SIGNAL(newLogMessage(const Log::Msg &)), SLOT(addLogMessage(const Logg:Msg &))); + connect(logger, SIGNAL(newLogPeer(const Log::Peer &)), SLOT(addPeerMessage(const Log::Peer &))); } ExecutionLog::~ExecutionLog() { - delete m_logList; - delete m_banList; + delete m_msgList; + delete m_peerList; delete ui; } -void ExecutionLog::addLogMessage(const QString &msg) +void ExecutionLog::addLogMessage(const Log::Msg &msg) { - m_logList->appendLine(msg); + QString text; + QDateTime time = QDateTime::fromMSecsSinceEpoch(msg.timestamp); + QColor color; + + switch (msg.type) { + case Log::INFO: + color.setNamedColor("blue"); + break; + case Log::WARNING: + color.setNamedColor("orange"); + break; + case Log::CRITICAL: + color.setNamedColor("red"); + break; + default: + color = QApplication::palette().color(QPalette::WindowText); + } + + text = "" + time.toString("dd/MM/yyyy hh:mm:ss") + " - " + msg.message + ""; + m_msgList->appendLine(text); } -void ExecutionLog::addBanMessage(const QString &msg) +void ExecutionLog::addPeerMessage(const Log::Peer& peer) { - m_banList->appendLine(msg); + QString text; + QDateTime time = QDateTime::fromMSecsSinceEpoch(peer.timestamp); + + if (peer.blocked) +#if LIBTORRENT_VERSION_NUM < 10000 + text = "" + time.toString("dd/MM/yyyy hh:mm:ss") + " - " + tr("%1 was blocked", "x.y.z.w was blocked").arg(peer.ip); +#else + text = "" + time.toString("dd/MM/yyyy hh:mm:ss") + " - " + tr("%1 was blocked %2", "x.y.z.w was blocked").arg(peer.ip).arg(peer.reason); +#endif + else + text = "" + time.toString("dd/MM/yyyy hh:mm:ss") + " - " + tr("%1 was banned", "x.y.z.w was banned").arg(peer.ip); + + m_peerList->appendLine(text); } diff --git a/src/executionlog.h b/src/executionlog.h index c9bf891b9..f0fd2cd2f 100644 --- a/src/executionlog.h +++ b/src/executionlog.h @@ -38,8 +38,15 @@ namespace Ui { class ExecutionLog; } QT_END_NAMESPACE +class Logger; class LogListWidget; +namespace Log +{ + struct Msg; + struct Peer; +} + class ExecutionLog : public QWidget { Q_OBJECT @@ -48,15 +55,15 @@ public: explicit ExecutionLog(QWidget *parent = 0); ~ExecutionLog(); -public slots: - void addLogMessage(const QString &msg); - void addBanMessage(const QString &msg); +private slots: + void addLogMessage(const Log::Msg &msg); + void addPeerMessage(const Log::Peer &peer); private: Ui::ExecutionLog *ui; - LogListWidget *m_logList; - LogListWidget *m_banList; + LogListWidget *m_msgList; + LogListWidget *m_peerList; }; #endif // EXECUTIONLOG_H