mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 03:44:02 +02:00
Merge pull request #12079 from RebeccaStankus/log-filtering
Log filtering
This commit is contained in:
commit
a3245aec57
7 changed files with 377 additions and 56 deletions
BIN
interface/resources/styles/filter.png
Normal file
BIN
interface/resources/styles/filter.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 244 B |
|
@ -67,8 +67,22 @@ QPushButton#revealLogButton {
|
|||
font-size: 11px;
|
||||
}
|
||||
|
||||
QPushButton#showAllButton {
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
background-color: #333333;
|
||||
color: #BBBBBB;
|
||||
border-width: 0;
|
||||
border-radius: 9px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
QCheckBox {
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
text-align: center;
|
||||
color: #3d3d3d;
|
||||
border-width: 0;
|
||||
border-radius: 9px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
QCheckBox::indicator:unchecked {
|
||||
|
@ -77,4 +91,25 @@ QCheckBox::indicator:unchecked {
|
|||
|
||||
QCheckBox::indicator:checked {
|
||||
image: url(styles/checked.svg);
|
||||
}
|
||||
|
||||
QComboBox {
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
text-align: center;
|
||||
background-color: #CCCCCC;
|
||||
color: #3d3d3d;
|
||||
border-width: 0;
|
||||
border-radius: 9px;
|
||||
font-size: 11px;
|
||||
padding-left: 7px;
|
||||
}
|
||||
|
||||
QComboBox::drop-down {
|
||||
border-width: 0px;
|
||||
padding-right: 7px;
|
||||
}
|
||||
|
||||
QComboBox::down-arrow {
|
||||
image: url(styles/filter.png);
|
||||
border-width: 0px;
|
||||
}
|
|
@ -16,11 +16,10 @@
|
|||
#include <QPlainTextEdit>
|
||||
#include <QTextCursor>
|
||||
#include <QPushButton>
|
||||
#include <QSyntaxHighlighter>
|
||||
|
||||
#include <PathUtils.h>
|
||||
|
||||
const int TOP_BAR_HEIGHT = 46;
|
||||
const int TOP_BAR_HEIGHT = 124;
|
||||
const int INITIAL_WIDTH = 720;
|
||||
const int INITIAL_HEIGHT = 480;
|
||||
const int MINIMAL_WIDTH = 700;
|
||||
|
@ -34,21 +33,6 @@ const QColor HIGHLIGHT_COLOR = QColor("#3366CC");
|
|||
const QColor BOLD_COLOR = QColor("#445c8c");
|
||||
const QString BOLD_PATTERN = "\\[\\d*\\/.*:\\d*:\\d*\\]";
|
||||
|
||||
class Highlighter : public QSyntaxHighlighter {
|
||||
public:
|
||||
Highlighter(QTextDocument* parent = nullptr);
|
||||
void setBold(int indexToBold);
|
||||
QString keyword;
|
||||
|
||||
protected:
|
||||
void highlightBlock(const QString& text) override;
|
||||
|
||||
private:
|
||||
QTextCharFormat boldFormat;
|
||||
QTextCharFormat keywordFormat;
|
||||
|
||||
};
|
||||
|
||||
BaseLogDialog::BaseLogDialog(QWidget* parent) : QDialog(parent, Qt::Window) {
|
||||
setWindowTitle("Base Log");
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
@ -77,7 +61,7 @@ void BaseLogDialog::initControls() {
|
|||
_searchButton->setGeometry(_leftPad, ELEMENT_MARGIN, SEARCH_BUTTON_WIDTH, ELEMENT_HEIGHT);
|
||||
_leftPad += SEARCH_BUTTON_WIDTH;
|
||||
_searchButton->show();
|
||||
connect(_searchButton, SIGNAL(clicked()), SLOT(handleSearchButton()));
|
||||
connect(_searchButton, &QPushButton::clicked, this, &BaseLogDialog::handleSearchButton);
|
||||
|
||||
_searchTextBox = new QLineEdit(this);
|
||||
// disable blue outline in Mac
|
||||
|
@ -85,8 +69,8 @@ void BaseLogDialog::initControls() {
|
|||
_searchTextBox->setGeometry(_leftPad, ELEMENT_MARGIN, SEARCH_TEXT_WIDTH, ELEMENT_HEIGHT);
|
||||
_leftPad += SEARCH_TEXT_WIDTH + BUTTON_MARGIN;
|
||||
_searchTextBox->show();
|
||||
connect(_searchTextBox, SIGNAL(textChanged(QString)), SLOT(handleSearchTextChanged(QString)));
|
||||
connect(_searchTextBox, SIGNAL(returnPressed()), SLOT(toggleSearchNext()));
|
||||
connect(_searchTextBox, &QLineEdit::textChanged, this, &BaseLogDialog::handleSearchTextChanged);
|
||||
connect(_searchTextBox, &QLineEdit::returnPressed, this, &BaseLogDialog::toggleSearchNext);
|
||||
|
||||
_searchPrevButton = new QPushButton(this);
|
||||
_searchPrevButton->setObjectName("searchPrevButton");
|
||||
|
@ -94,7 +78,7 @@ void BaseLogDialog::initControls() {
|
|||
_searchPrevButton->setText("Prev");
|
||||
_leftPad += SEARCH_TOGGLE_BUTTON_WIDTH + BUTTON_MARGIN;
|
||||
_searchPrevButton->show();
|
||||
connect(_searchPrevButton, SIGNAL(clicked()), SLOT(toggleSearchPrev()));
|
||||
connect(_searchPrevButton, &QPushButton::clicked, this, &BaseLogDialog::toggleSearchPrev);
|
||||
|
||||
_searchNextButton = new QPushButton(this);
|
||||
_searchNextButton->setObjectName("searchNextButton");
|
||||
|
@ -102,16 +86,16 @@ void BaseLogDialog::initControls() {
|
|||
_searchNextButton->setText("Next");
|
||||
_leftPad += SEARCH_TOGGLE_BUTTON_WIDTH + CHECKBOX_MARGIN;
|
||||
_searchNextButton->show();
|
||||
connect(_searchNextButton, SIGNAL(clicked()), SLOT(toggleSearchNext()));
|
||||
connect(_searchNextButton, &QPushButton::clicked, this, &BaseLogDialog::toggleSearchNext);
|
||||
|
||||
_logTextBox = new QPlainTextEdit(this);
|
||||
_logTextBox->setReadOnly(true);
|
||||
_logTextBox->show();
|
||||
_highlighter = new Highlighter(_logTextBox->document());
|
||||
connect(_logTextBox, SIGNAL(selectionChanged()), SLOT(updateSelection()));
|
||||
connect(_logTextBox, &QPlainTextEdit::selectionChanged, this, &BaseLogDialog::updateSelection);
|
||||
}
|
||||
|
||||
void BaseLogDialog::showEvent(QShowEvent* event) {
|
||||
void BaseLogDialog::showEvent(QShowEvent* event) {
|
||||
showLogData();
|
||||
}
|
||||
|
||||
|
@ -132,15 +116,12 @@ void BaseLogDialog::handleSearchButton() {
|
|||
}
|
||||
|
||||
void BaseLogDialog::handleSearchTextChanged(QString searchText) {
|
||||
if (searchText.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
QTextCursor cursor = _logTextBox->textCursor();
|
||||
|
||||
if (cursor.hasSelection()) {
|
||||
QString selectedTerm = cursor.selectedText();
|
||||
if (selectedTerm == searchText) {
|
||||
return;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -158,6 +139,10 @@ void BaseLogDialog::handleSearchTextChanged(QString searchText) {
|
|||
_highlighter->rehighlight();
|
||||
}
|
||||
|
||||
void BaseLogDialog::clearSearch() {
|
||||
_searchTextBox->setText("");
|
||||
}
|
||||
|
||||
void BaseLogDialog::toggleSearchPrev() {
|
||||
QTextCursor searchCursor = _logTextBox->textCursor();
|
||||
if (searchCursor.hasSelection()) {
|
||||
|
|
|
@ -13,17 +13,33 @@
|
|||
#define hifi_BaseLogDialog_h
|
||||
|
||||
#include <QDialog>
|
||||
#include <QSyntaxHighlighter>
|
||||
|
||||
const int ELEMENT_MARGIN = 7;
|
||||
const int ELEMENT_HEIGHT = 32;
|
||||
const int CHECKBOX_MARGIN = 12;
|
||||
const int CHECKBOX_WIDTH = 140;
|
||||
const int CHECKBOX_WIDTH = 110;
|
||||
const int COMBOBOX_WIDTH = 160;
|
||||
const int BUTTON_MARGIN = 8;
|
||||
|
||||
class QPushButton;
|
||||
class QLineEdit;
|
||||
class QPlainTextEdit;
|
||||
class Highlighter;
|
||||
|
||||
class Highlighter : public QSyntaxHighlighter {
|
||||
public:
|
||||
Highlighter(QTextDocument* parent = nullptr);
|
||||
void setBold(int indexToBold);
|
||||
QString keyword;
|
||||
|
||||
protected:
|
||||
void highlightBlock(const QString& text) override;
|
||||
|
||||
private:
|
||||
QTextCharFormat boldFormat;
|
||||
QTextCharFormat keywordFormat;
|
||||
|
||||
};
|
||||
|
||||
class BaseLogDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
|
@ -33,7 +49,7 @@ public:
|
|||
~BaseLogDialog();
|
||||
|
||||
public slots:
|
||||
void appendLogLine(QString logLine);
|
||||
virtual void appendLogLine(QString logLine);
|
||||
|
||||
private slots:
|
||||
void updateSelection();
|
||||
|
@ -43,21 +59,22 @@ private slots:
|
|||
void toggleSearchNext();
|
||||
|
||||
protected:
|
||||
int _leftPad { 0 };
|
||||
int _leftPad{ 0 };
|
||||
QString _searchTerm;
|
||||
QPlainTextEdit* _logTextBox{ nullptr };
|
||||
Highlighter* _highlighter{ nullptr };
|
||||
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
void showEvent(QShowEvent* event) override;
|
||||
virtual QString getCurrentLog() = 0;
|
||||
void clearSearch();
|
||||
|
||||
private:
|
||||
QPushButton* _searchButton { nullptr };
|
||||
QLineEdit* _searchTextBox { nullptr };
|
||||
QPlainTextEdit* _logTextBox { nullptr };
|
||||
QPushButton* _searchPrevButton { nullptr };
|
||||
QPushButton* _searchNextButton { nullptr };
|
||||
QString _searchTerm;
|
||||
Highlighter* _highlighter { nullptr };
|
||||
|
||||
QPushButton* _searchButton{ nullptr };
|
||||
QLineEdit* _searchTextBox{ nullptr };
|
||||
QPushButton* _searchPrevButton{ nullptr };
|
||||
QPushButton* _searchNextButton{ nullptr };
|
||||
|
||||
void initControls();
|
||||
void showLogData();
|
||||
};
|
||||
|
|
|
@ -13,48 +13,287 @@
|
|||
|
||||
#include <QCheckBox>
|
||||
#include <QPushButton>
|
||||
#include <QComboBox>
|
||||
#include <QPlainTextEdit>
|
||||
|
||||
#include <shared/AbstractLoggerInterface.h>
|
||||
|
||||
const int REVEAL_BUTTON_WIDTH = 122;
|
||||
const int CLEAR_FILTER_BUTTON_WIDTH = 80;
|
||||
const int MARGIN_LEFT = 25;
|
||||
const int DEBUG_CHECKBOX_WIDTH = 70;
|
||||
const int INFO_CHECKBOX_WIDTH = 65;
|
||||
const int CRITICAL_CHECKBOX_WIDTH = 85;
|
||||
const int WARNING_CHECKBOX_WIDTH = 80;
|
||||
const int SUPPRESS_CHECKBOX_WIDTH = 87;
|
||||
const int FATAL_CHECKBOX_WIDTH = 70;
|
||||
const int UNKNOWN_CHECKBOX_WIDTH = 80;
|
||||
const int SECOND_ROW = ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT;
|
||||
const int THIRD_ROW = SECOND_ROW + ELEMENT_MARGIN + ELEMENT_HEIGHT;
|
||||
const QString DEBUG_TEXT = "[DEBUG]";
|
||||
const QString INFO_TEXT = "[INFO]";
|
||||
const QString CRITICAL_TEXT = "[CRITICAL]";
|
||||
const QString WARNING_TEXT = "[WARNING]";
|
||||
const QString FATAL_TEXT = "[FATAL]";
|
||||
const QString SUPPRESS_TEXT = "[SUPPRESS]";
|
||||
const QString UNKNOWN_TEXT = "[UNKNOWN]";
|
||||
|
||||
LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLogDialog(parent) {
|
||||
_logger = logger;
|
||||
setWindowTitle("Log");
|
||||
|
||||
_extraDebuggingBox = new QCheckBox("Extra debugging", this);
|
||||
_extraDebuggingBox->setGeometry(_leftPad, ELEMENT_MARGIN, CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->extraDebugging()) {
|
||||
_extraDebuggingBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_extraDebuggingBox->show();
|
||||
connect(_extraDebuggingBox, SIGNAL(stateChanged(int)), SLOT(handleExtraDebuggingCheckbox(int)));
|
||||
|
||||
_revealLogButton = new QPushButton("Reveal log file", this);
|
||||
// set object name for css styling
|
||||
_revealLogButton->setObjectName("revealLogButton");
|
||||
_revealLogButton->show();
|
||||
connect(_revealLogButton, SIGNAL(clicked()), SLOT(handleRevealButton()));
|
||||
connect(_revealLogButton, &QPushButton::clicked, this, &LogDialog::handleRevealButton);
|
||||
|
||||
connect(_logger, SIGNAL(logReceived(QString)), this, SLOT(appendLogLine(QString)), Qt::QueuedConnection);
|
||||
connect(_logger, &AbstractLoggerInterface::logReceived, this, &LogDialog::appendLogLine);
|
||||
|
||||
_leftPad = MARGIN_LEFT;
|
||||
_debugPrintBox = new QCheckBox("DEBUG", this);
|
||||
_debugPrintBox->setGeometry(_leftPad, SECOND_ROW, DEBUG_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->debugPrint()) {
|
||||
_debugPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_debugPrintBox->show();
|
||||
connect(_debugPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleDebugPrintBox);
|
||||
|
||||
_leftPad += DEBUG_CHECKBOX_WIDTH + BUTTON_MARGIN;
|
||||
_infoPrintBox = new QCheckBox("INFO", this);
|
||||
_infoPrintBox->setGeometry(_leftPad, SECOND_ROW, INFO_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->infoPrint()) {
|
||||
_infoPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_infoPrintBox->show();
|
||||
connect(_infoPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleInfoPrintBox);
|
||||
|
||||
_leftPad += INFO_CHECKBOX_WIDTH + BUTTON_MARGIN;
|
||||
_criticalPrintBox = new QCheckBox("CRITICAL", this);
|
||||
_criticalPrintBox->setGeometry(_leftPad, SECOND_ROW, CRITICAL_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->criticalPrint()) {
|
||||
_criticalPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_criticalPrintBox->show();
|
||||
connect(_criticalPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleCriticalPrintBox);
|
||||
|
||||
_leftPad += CRITICAL_CHECKBOX_WIDTH + BUTTON_MARGIN;
|
||||
_warningPrintBox = new QCheckBox("WARNING", this);
|
||||
_warningPrintBox->setGeometry(_leftPad, SECOND_ROW, WARNING_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->warningPrint()) {
|
||||
_warningPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_warningPrintBox->show();
|
||||
connect(_warningPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleWarningPrintBox);
|
||||
|
||||
_leftPad += WARNING_CHECKBOX_WIDTH + BUTTON_MARGIN;
|
||||
_suppressPrintBox = new QCheckBox("SUPPRESS", this);
|
||||
_suppressPrintBox->setGeometry(_leftPad, SECOND_ROW, SUPPRESS_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->suppressPrint()) {
|
||||
_suppressPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_suppressPrintBox->show();
|
||||
connect(_suppressPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleSuppressPrintBox);
|
||||
|
||||
_leftPad += SUPPRESS_CHECKBOX_WIDTH + BUTTON_MARGIN;
|
||||
_fatalPrintBox = new QCheckBox("FATAL", this);
|
||||
_fatalPrintBox->setGeometry(_leftPad, SECOND_ROW, FATAL_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->fatalPrint()) {
|
||||
_fatalPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_fatalPrintBox->show();
|
||||
connect(_fatalPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleFatalPrintBox);
|
||||
|
||||
_leftPad += FATAL_CHECKBOX_WIDTH + BUTTON_MARGIN;
|
||||
_unknownPrintBox = new QCheckBox("UNKNOWN", this);
|
||||
_unknownPrintBox->setGeometry(_leftPad, SECOND_ROW, UNKNOWN_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
if (_logger->unknownPrint()) {
|
||||
_unknownPrintBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_unknownPrintBox->show();
|
||||
connect(_unknownPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleUnknownPrintBox);
|
||||
|
||||
_leftPad = MARGIN_LEFT;
|
||||
_filterDropdown = new QComboBox(this);
|
||||
_filterDropdown->setGeometry(_leftPad, THIRD_ROW, COMBOBOX_WIDTH, ELEMENT_HEIGHT);
|
||||
_filterDropdown->addItem("No secondary filter...");
|
||||
_filterDropdown->addItem("default");
|
||||
_filterDropdown->addItem("hifi.audio");
|
||||
_filterDropdown->addItem("hifi.audioclient");
|
||||
_filterDropdown->addItem("hifi.animation");
|
||||
_filterDropdown->addItem("hifi.avatars");
|
||||
_filterDropdown->addItem("hifi.commerce");
|
||||
_filterDropdown->addItem("hifi.controllers");
|
||||
_filterDropdown->addItem("hifi.entities");
|
||||
_filterDropdown->addItem("hifi.gl");
|
||||
_filterDropdown->addItem("hifi.gpu.gl");
|
||||
_filterDropdown->addItem("hifi.interface");
|
||||
_filterDropdown->addItem("hifi.interface.deadlock");
|
||||
_filterDropdown->addItem("hifi.modelformat");
|
||||
_filterDropdown->addItem("hifi.networking");
|
||||
_filterDropdown->addItem("hifi.networking.resource");
|
||||
_filterDropdown->addItem("hifi.plugins");
|
||||
_filterDropdown->addItem("hifi.render");
|
||||
_filterDropdown->addItem("hifi.scriptengine");
|
||||
_filterDropdown->addItem("hifi.scriptengine.module");
|
||||
_filterDropdown->addItem("hifi.scriptengine.script");
|
||||
_filterDropdown->addItem("hifi.shared");
|
||||
_filterDropdown->addItem("hifi.ui");
|
||||
_filterDropdown->addItem("qml");
|
||||
connect(_filterDropdown, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &LogDialog::handleFilterDropdownChanged);
|
||||
|
||||
_extraDebuggingBox = new QCheckBox("Extra debugging", this);
|
||||
if (_logger->extraDebugging()) {
|
||||
_extraDebuggingBox->setCheckState(Qt::Checked);
|
||||
}
|
||||
_extraDebuggingBox->show();
|
||||
connect(_extraDebuggingBox, &QCheckBox::stateChanged, this, &LogDialog::handleExtraDebuggingCheckbox);
|
||||
|
||||
_clearFilterButton = new QPushButton("Clear Filters", this);
|
||||
// set object name for css styling
|
||||
_clearFilterButton->setObjectName("showAllButton");
|
||||
_clearFilterButton->show();
|
||||
connect(_clearFilterButton, &QPushButton::clicked, this, &LogDialog::handleClearFilterButton);
|
||||
handleClearFilterButton();
|
||||
}
|
||||
|
||||
void LogDialog::resizeEvent(QResizeEvent* event) {
|
||||
BaseLogDialog::resizeEvent(event);
|
||||
_revealLogButton->setGeometry(width() - ELEMENT_MARGIN - REVEAL_BUTTON_WIDTH,
|
||||
ELEMENT_MARGIN,
|
||||
REVEAL_BUTTON_WIDTH,
|
||||
ELEMENT_HEIGHT);
|
||||
ELEMENT_MARGIN,
|
||||
REVEAL_BUTTON_WIDTH,
|
||||
ELEMENT_HEIGHT);
|
||||
_clearFilterButton->setGeometry(width() - ELEMENT_MARGIN - CLEAR_FILTER_BUTTON_WIDTH,
|
||||
THIRD_ROW,
|
||||
CLEAR_FILTER_BUTTON_WIDTH,
|
||||
ELEMENT_HEIGHT);
|
||||
_extraDebuggingBox->setGeometry(width() - ELEMENT_MARGIN - COMBOBOX_WIDTH - ELEMENT_MARGIN - CLEAR_FILTER_BUTTON_WIDTH,
|
||||
THIRD_ROW,
|
||||
COMBOBOX_WIDTH,
|
||||
ELEMENT_HEIGHT);
|
||||
}
|
||||
|
||||
void LogDialog::handleRevealButton() {
|
||||
_logger->locateLog();
|
||||
}
|
||||
|
||||
void LogDialog::handleClearFilterButton() {
|
||||
_logger->setExtraDebugging(false);
|
||||
_extraDebuggingBox->setCheckState(Qt::Unchecked);
|
||||
_logger->setDebugPrint(false);
|
||||
_debugPrintBox->setCheckState(Qt::Unchecked);
|
||||
_logger->setInfoPrint(false);
|
||||
_infoPrintBox->setCheckState(Qt::Unchecked);
|
||||
_logger->setCriticalPrint(true);
|
||||
_criticalPrintBox->setCheckState(Qt::Checked);
|
||||
_logger->setWarningPrint(true);
|
||||
_warningPrintBox->setCheckState(Qt::Checked);
|
||||
_logger->setSuppressPrint(true);
|
||||
_suppressPrintBox->setCheckState(Qt::Checked);
|
||||
_logger->setFatalPrint(true);
|
||||
_fatalPrintBox->setCheckState(Qt::Checked);
|
||||
_logger->setUnknownPrint(true);
|
||||
_unknownPrintBox->setCheckState(Qt::Checked);
|
||||
clearSearch();
|
||||
_filterDropdown->setCurrentIndex(0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleExtraDebuggingCheckbox(int state) {
|
||||
_logger->setExtraDebugging(state != 0);
|
||||
}
|
||||
|
||||
void LogDialog::handleDebugPrintBox(int state) {
|
||||
_logger->setDebugPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleInfoPrintBox(int state) {
|
||||
_logger->setInfoPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleCriticalPrintBox(int state) {
|
||||
_logger->setCriticalPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleWarningPrintBox(int state) {
|
||||
_logger->setWarningPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleSuppressPrintBox(int state) {
|
||||
_logger->setSuppressPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleFatalPrintBox(int state) {
|
||||
_logger->setFatalPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleUnknownPrintBox(int state) {
|
||||
_logger->setUnknownPrint(state != 0);
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
void LogDialog::handleFilterDropdownChanged(int selection) {
|
||||
if (selection != 0) {
|
||||
_filterSelection = "[" + _filterDropdown->currentText() + "]";
|
||||
} else {
|
||||
_filterSelection = "";
|
||||
}
|
||||
printLogFile();
|
||||
}
|
||||
|
||||
QString LogDialog::getCurrentLog() {
|
||||
return _logger->getLogData();
|
||||
}
|
||||
|
||||
void LogDialog::appendLogLine(QString logLine) {
|
||||
if (logLine.contains(_searchTerm, Qt::CaseInsensitive) &&
|
||||
logLine.contains(_filterSelection, Qt::CaseSensitive)) {
|
||||
int indexToBold = _logTextBox->document()->characterCount();
|
||||
_highlighter->setBold(indexToBold);
|
||||
|
||||
if (logLine.contains(DEBUG_TEXT, Qt::CaseSensitive)) {
|
||||
if (_logger->debugPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
} else if (logLine.contains(INFO_TEXT, Qt::CaseSensitive)) {
|
||||
if (_logger->infoPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
} else if (logLine.contains(CRITICAL_TEXT, Qt::CaseSensitive)) {
|
||||
if (_logger->criticalPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
} else if (logLine.contains(WARNING_TEXT, Qt::CaseSensitive)) {
|
||||
if (_logger->warningPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
} else if (logLine.contains(SUPPRESS_TEXT, Qt::CaseSensitive)) {
|
||||
if (_logger->suppressPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
} else if (logLine.contains(FATAL_TEXT, Qt::CaseSensitive)) {
|
||||
if (_logger->fatalPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
} else {
|
||||
if (_logger->unknownPrint()) {
|
||||
_logTextBox->appendPlainText(logLine.trimmed());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LogDialog::printLogFile() {
|
||||
_logTextBox->clear();
|
||||
QString log = getCurrentLog();
|
||||
QStringList logList = log.split('\n');
|
||||
for (const auto& message : logList) {
|
||||
appendLogLine(message);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
class QCheckBox;
|
||||
class QPushButton;
|
||||
class QComboBox;
|
||||
class QResizeEvent;
|
||||
class AbstractLoggerInterface;
|
||||
|
||||
|
@ -25,17 +26,40 @@ class LogDialog : public BaseLogDialog {
|
|||
public:
|
||||
LogDialog(QWidget* parent, AbstractLoggerInterface* logger);
|
||||
|
||||
public slots:
|
||||
void appendLogLine(QString logLine) override;
|
||||
|
||||
private slots:
|
||||
void handleRevealButton();
|
||||
void handleExtraDebuggingCheckbox(int);
|
||||
void handleDebugPrintBox(int);
|
||||
void handleInfoPrintBox(int);
|
||||
void handleCriticalPrintBox(int);
|
||||
void handleWarningPrintBox(int);
|
||||
void handleSuppressPrintBox(int);
|
||||
void handleFatalPrintBox(int);
|
||||
void handleUnknownPrintBox(int);
|
||||
void handleFilterDropdownChanged(int);
|
||||
void handleClearFilterButton();
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
QString getCurrentLog() override;
|
||||
|
||||
void printLogFile();
|
||||
|
||||
private:
|
||||
QCheckBox* _extraDebuggingBox;
|
||||
QPushButton* _revealLogButton;
|
||||
QPushButton* _clearFilterButton;
|
||||
QCheckBox* _debugPrintBox;
|
||||
QCheckBox* _infoPrintBox;
|
||||
QCheckBox* _criticalPrintBox;
|
||||
QCheckBox* _warningPrintBox;
|
||||
QCheckBox* _suppressPrintBox;
|
||||
QCheckBox* _fatalPrintBox;
|
||||
QCheckBox* _unknownPrintBox;
|
||||
QComboBox* _filterDropdown;
|
||||
QString _filterSelection;
|
||||
|
||||
AbstractLoggerInterface* _logger;
|
||||
};
|
||||
|
|
|
@ -24,7 +24,21 @@ public:
|
|||
AbstractLoggerInterface(QObject* parent = NULL);
|
||||
~AbstractLoggerInterface();
|
||||
inline bool extraDebugging() { return _extraDebugging; }
|
||||
inline void setExtraDebugging(bool debugging) { _extraDebugging = debugging; }
|
||||
inline bool debugPrint() { return _debugPrint; }
|
||||
inline bool infoPrint() { return _infoPrint; }
|
||||
inline bool criticalPrint() { return _criticalPrint; }
|
||||
inline bool warningPrint() { return _warningPrint; }
|
||||
inline bool suppressPrint() { return _suppressPrint; }
|
||||
inline bool fatalPrint() { return _fatalPrint; }
|
||||
inline bool unknownPrint() { return _unknownPrint; }
|
||||
inline void setExtraDebugging(bool extraDebugging) { _extraDebugging = extraDebugging; }
|
||||
inline void setDebugPrint(bool debugPrint) { _debugPrint = debugPrint; }
|
||||
inline void setInfoPrint(bool infoPrint) { _infoPrint = infoPrint; }
|
||||
inline void setCriticalPrint(bool criticalPrint) { _criticalPrint = criticalPrint; }
|
||||
inline void setWarningPrint(bool warningPrint) { _warningPrint = warningPrint; }
|
||||
inline void setSuppressPrint(bool suppressPrint) { _suppressPrint = suppressPrint; }
|
||||
inline void setFatalPrint(bool fatalPrint) { _fatalPrint = fatalPrint; }
|
||||
inline void setUnknownPrint(bool unknownPrint) { _unknownPrint = unknownPrint; }
|
||||
|
||||
virtual void addMessage(const QString&) = 0;
|
||||
virtual QString getLogData() = 0;
|
||||
|
@ -36,6 +50,13 @@ signals:
|
|||
|
||||
private:
|
||||
bool _extraDebugging{ false };
|
||||
bool _debugPrint{ false };
|
||||
bool _infoPrint{ false };
|
||||
bool _criticalPrint{ true };
|
||||
bool _warningPrint{ true };
|
||||
bool _suppressPrint{ true };
|
||||
bool _fatalPrint{ true };
|
||||
bool _unknownPrint{ true };
|
||||
};
|
||||
|
||||
#endif // hifi_AbstractLoggerInterface_h
|
||||
|
|
Loading…
Reference in a new issue