#include "glogwidget.h" #include "ui_glogwidget.h" #include "interfaces.h" const QString GLogWidget::BEGIN_HMTL = ""; const QString GLogWidget::END_HMTL = "
"; GLogWidget::GLogWidget(QWidget *parent) : QWidget(parent), ui(new Ui::GLogWidget) { ui->setupUi(this); m_colors.insert(LogInterface::trace, Qt::black); m_colors.insert(LogInterface::debug, Qt::darkGray); m_colors.insert(LogInterface::info, QColor(0, 162, 232)); m_colors.insert(LogInterface::warning, QColor(228, 160, 3)); m_colors.insert(LogInterface::error, Qt::red); ui->textEdit->setReadOnly(true); connect(this, SIGNAL(newMessageReceived()), this, SLOT(slotNewMessageReceived()), Qt::QueuedConnection); } GLogWidget::~GLogWidget() { delete ui; } void GLogWidget::addMessage(const int &severity, const int &type, const QString &s, const QString &filter) { Q_UNUSED(type) Q_UNUSED(filter) if (!ui->cb_disable->isChecked()) { m_mutex.lockForWrite(); m_messages.append(qMakePair(severity, s)); m_mutex.unlock(); if(isVisible()) emit newMessageReceived(); } } void GLogWidget::on_pushButtonClear_clicked() { ui->textEdit->clear(); } void GLogWidget::slotNewMessageReceived() { m_mutex.lockForRead(); QPair pair = m_messages.takeFirst(); QColor col = m_colors.value(pair.first, Qt::black); ui->textEdit->moveCursor(QTextCursor::EndOfBlock, QTextCursor::MoveAnchor); ui->textEdit->insertHtml(BEGIN_HMTL + "" + pair.second + "" + END_HMTL); ui->textEdit->moveCursor(QTextCursor::EndOfBlock, QTextCursor::MoveAnchor); m_mutex.unlock(); }