]> git.siccegge.de Git - frida/frida.git/blob - src/gui/widgets/LogDock.cxx
Add doc repo as submodule
[frida/frida.git] / src / gui / widgets / LogDock.cxx
1 #include "LogDock.hxx"
2 #include "FridaDock.hxx"
3 #include "LogDockAppender.hxx"
4
5 #include "log4cxx/basicconfigurator.h"
6
7 LogDock::LogDock(FridaDock* parent)
8 : QTableWidget(0, 3, parent) {
9 verticalHeader()->hide();
10 horizontalHeader()->hide();
11 horizontalHeader()->setStretchLastSection(true);
12 verticalHeader()->setDefaultSectionSize(18);
13 appender = new LogDockAppender;
14 connect(appender, &LogDockAppender::newLogEntry,
15 this, &LogDock::handleNewLogEntry);
16 log4cxx::BasicConfigurator::configure(appender);
17 }
18
19 LogDock::~LogDock() {
20 delete appender;
21 }
22
23 void LogDock::handleNewLogEntry(QColor color, QString timestamp, QString level, QString message) {
24 int rowcount = rowCount();
25 insertRow(rowcount);
26 setItem(rowcount, 0, new QTableWidgetItem(timestamp));
27 setItem(rowcount, 1, new QTableWidgetItem(level));
28 setItem(rowcount, 2, new QTableWidgetItem(message));
29 item(rowcount, 0)->setBackground(color);
30 item(rowcount, 1)->setBackground(color);
31 item(rowcount, 2)->setBackground(color);
32 resizeColumnsToContents();
33
34 QTimer *timer = new QTimer(this);
35 timer->setSingleShot(true);
36
37 QObject::connect(timer, &QTimer::timeout, [=]() {
38 scrollToItem(item(rowcount, 2), QAbstractItemView::PositionAtTop);
39 });
40 timer->start(2);
41 }