77 lines
2.0 KiB
C++
77 lines
2.0 KiB
C++
#include "devicelog.h"
|
|
|
|
#include "ui_devicelog.h"
|
|
|
|
#include <QScrollBar>
|
|
#include <QFileDialog>
|
|
#include <fstream>
|
|
|
|
using namespace std;
|
|
|
|
DeviceLog::DeviceLog(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::DeviceLog)
|
|
{
|
|
ui->setupUi(this);
|
|
connect(ui->bClear, &QPushButton::clicked, this, &DeviceLog::clear);
|
|
connect(ui->limitLines, &QCheckBox::toggled, [=](bool enabled){
|
|
if(enabled) {
|
|
ui->text->setMaximumBlockCount(ui->numLines->value());
|
|
ui->numLines->setEnabled(true);
|
|
} else {
|
|
ui->text->setMaximumBlockCount(0);
|
|
ui->numLines->setEnabled(false);
|
|
}
|
|
});
|
|
ui->text->setMaximumBlockCount(ui->numLines->value());
|
|
connect(ui->numLines, qOverload<int>(&QSpinBox::valueChanged), [=](int lines) {
|
|
ui->text->setMaximumBlockCount(lines);
|
|
});
|
|
}
|
|
|
|
DeviceLog::~DeviceLog()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void DeviceLog::addLine(QString line)
|
|
{
|
|
// Set color depending on log level
|
|
QColor color = Qt::black;
|
|
if(line.contains(",CRT]")) {
|
|
color = Qt::red;
|
|
} else if(line.contains(",ERR]")) {
|
|
color = QColor(255, 94, 0);
|
|
} else if(line.contains(",WRN]")) {
|
|
color = QColor(255, 174, 26);
|
|
} else if(line.contains(",DBG")) {
|
|
color = Qt::gray;
|
|
}
|
|
QTextCharFormat tf;
|
|
tf = ui->text->currentCharFormat();
|
|
tf.setForeground(QBrush(color));
|
|
ui->text->setCurrentCharFormat(tf);
|
|
ui->text->appendPlainText(line);
|
|
if(ui->cbAutoscroll->isChecked()) {
|
|
QScrollBar *sb = ui->text->verticalScrollBar();
|
|
sb->setValue(sb->maximum());
|
|
}
|
|
}
|
|
|
|
void DeviceLog::clear()
|
|
{
|
|
ui->text->clear();
|
|
}
|
|
|
|
void DeviceLog::on_bToFile_clicked()
|
|
{
|
|
auto filename = QFileDialog::getSaveFileName(this, "Select file for device log", "", "", nullptr, QFileDialog::DontUseNativeDialog);
|
|
if(filename.length() > 0) {
|
|
// create file
|
|
ofstream file;
|
|
file.open(filename.toStdString());
|
|
file << ui->text->toPlainText().toStdString();
|
|
file.close();
|
|
}
|
|
}
|