More filter choices, search will clear

This commit is contained in:
RebeccaStankus 2018-01-03 11:35:46 -08:00
parent 9edb85efdc
commit 89138c9bd8
5 changed files with 156 additions and 67 deletions

View file

@ -19,7 +19,7 @@
#include <PathUtils.h>
const int TOP_BAR_HEIGHT = 85;
const int TOP_BAR_HEIGHT = 124;
const int INITIAL_WIDTH = 720;
const int INITIAL_HEIGHT = 480;
const int MINIMAL_WIDTH = 700;
@ -61,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
@ -69,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");
@ -78,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");
@ -86,13 +86,13 @@ 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) {
@ -116,10 +116,7 @@ void BaseLogDialog::handleSearchButton() {
}
void BaseLogDialog::handleSearchTextChanged(QString searchText) {
if (searchText.isEmpty()) {
return;
}
QTextCursor cursor = _logTextBox->textCursor();
if (cursor.hasSelection()) {
QString selectedTerm = cursor.selectedText();
@ -147,8 +144,7 @@ void BaseLogDialog::toggleSearchPrev() {
if (searchCursor.hasSelection()) {
QString selectedTerm = searchCursor.selectedText();
_logTextBox->find(selectedTerm, QTextDocument::FindBackward);
}
else {
} else {
handleSearchTextChanged(_searchTextBox->text());
}
}
@ -158,8 +154,7 @@ void BaseLogDialog::toggleSearchNext() {
if (searchCursor.hasSelection()) {
QString selectedTerm = searchCursor.selectedText();
_logTextBox->find(selectedTerm);
}
else {
} else {
handleSearchTextChanged(_searchTextBox->text());
}
}

View file

@ -48,10 +48,10 @@ public:
BaseLogDialog(QWidget* parent);
~BaseLogDialog();
public slots:
public slots:
virtual void appendLogLine(QString logLine);
private slots:
private slots:
void updateSelection();
void handleSearchButton();
void handleSearchTextChanged(QString text);

View file

@ -20,12 +20,23 @@
const int REVEAL_BUTTON_WIDTH = 122;
const int SHOW_ALL_BUTTON_WIDTH = 80;
const int DEBUG_CHECKBOX_LEFT = 25;
const int MARGIN_LEFT = 25;
const int DEBUG_CHECKBOX_WIDTH = 70;
const int INFO_CHECKBOX_WIDTH = 65;
const int CRITICAL_CHECKBOX_WIDTH = 85;
const QString DEBUG = "[DEBUG]";
const QString INFO = "[INFO]";
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;
@ -35,60 +46,76 @@ LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLog
// set object name for css styling
_revealLogButton->setObjectName("revealLogButton");
_revealLogButton->show();
connect(_revealLogButton, SIGNAL(clicked()), SLOT(handleRevealButton()));
connect(_revealLogButton, &QPushButton::clicked, this, &LogDialog::handleRevealButton);
_showAllButton = new QPushButton("Show All", this);
// set object name for css styling
_showAllButton->setObjectName("showAllButton");
_showAllButton->show();
connect(_showAllButton, SIGNAL(clicked()), SLOT(handleShowAllButton()));
connect(_logger, SIGNAL(logReceived(QString)), this, SLOT(appendLogLine(QString)), Qt::QueuedConnection);
_leftPad = DEBUG_CHECKBOX_LEFT;
connect(_logger, &AbstractLoggerInterface::logReceived, this, &LogDialog::appendLogLine);
_leftPad = MARGIN_LEFT;
_debugPrintBox = new QCheckBox("DEBUG", this);
_debugPrintBox->setGeometry(_leftPad, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, DEBUG_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
_debugPrintBox->setGeometry(_leftPad, SECOND_ROW, DEBUG_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
if (_logger->debugPrint()) {
_debugPrintBox->setCheckState(Qt::Checked);
}
_debugPrintBox->show();
connect(_debugPrintBox, SIGNAL(stateChanged(int)), SLOT(handleDebugPrintBox(int)));
connect(_debugPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleDebugPrintBox);
_leftPad += DEBUG_CHECKBOX_WIDTH + BUTTON_MARGIN;
_infoPrintBox = new QCheckBox("INFO", this);
_infoPrintBox->setGeometry(_leftPad, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, INFO_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
_infoPrintBox->setGeometry(_leftPad, SECOND_ROW, INFO_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
if (_logger->infoPrint()) {
_infoPrintBox->setCheckState(Qt::Checked);
}
_infoPrintBox->show();
connect(_infoPrintBox, SIGNAL(stateChanged(int)), SLOT(handleInfoPrintBox(int)));
connect(_infoPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleInfoPrintBox);
_leftPad += INFO_CHECKBOX_WIDTH + BUTTON_MARGIN;
_criticalPrintBox = new QCheckBox("CRITICAL", this);
_criticalPrintBox->setGeometry(_leftPad, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, CRITICAL_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
_criticalPrintBox->setGeometry(_leftPad, SECOND_ROW, CRITICAL_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
if (_logger->criticalPrint()) {
_criticalPrintBox->setCheckState(Qt::Checked);
}
_criticalPrintBox->show();
connect(_criticalPrintBox, SIGNAL(stateChanged(int)), SLOT(handleCriticalPrintBox(int)));
connect(_criticalPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleCriticalPrintBox);
_leftPad += CRITICAL_CHECKBOX_WIDTH + BUTTON_MARGIN;
_extraDebuggingBox = new QCheckBox("Extra debugging", this);
_extraDebuggingBox->setGeometry(_leftPad, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, CHECKBOX_WIDTH, ELEMENT_HEIGHT);
if (_logger->extraDebugging()) {
_extraDebuggingBox->setCheckState(Qt::Checked);
_warningPrintBox = new QCheckBox("WARNING", this);
_warningPrintBox->setGeometry(_leftPad, SECOND_ROW, WARNING_CHECKBOX_WIDTH, ELEMENT_HEIGHT);
if (_logger->warningPrint()) {
_warningPrintBox->setCheckState(Qt::Checked);
}
_extraDebuggingBox->show();
connect(_extraDebuggingBox, SIGNAL(stateChanged(int)), SLOT(handleExtraDebuggingCheckbox(int)));
_warningPrintBox->show();
connect(_warningPrintBox, &QCheckBox::stateChanged, this, &LogDialog::handleWarningPrintBox);
_leftPad += CHECKBOX_WIDTH + BUTTON_MARGIN;
_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, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, COMBOBOX_WIDTH, ELEMENT_HEIGHT);
_filterDropdown->setGeometry(_leftPad, THIRD_ROW, COMBOBOX_WIDTH, ELEMENT_HEIGHT);
_filterDropdown->addItem("No secondary filter...");
_filterDropdown->addItem("default");
_filterDropdown->addItem("hifi.audio");
@ -113,8 +140,22 @@ LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLog
_filterDropdown->addItem("hifi.shared");
_filterDropdown->addItem("hifi.ui");
_filterDropdown->addItem("qml");
connect(_filterDropdown, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &LogDialog::handleFilterDropdownChanged);
connect(_filterDropdown, SIGNAL(currentIndexChanged(int)), this, SLOT(handleFilterDropdownChanged(int)));
_extraDebuggingBox = new QCheckBox("Extra debugging", this);
if (_logger->extraDebugging()) {
_extraDebuggingBox->setCheckState(Qt::Checked);
}
_extraDebuggingBox->show();
connect(_extraDebuggingBox, &QCheckBox::stateChanged, this, &LogDialog::handleExtraDebuggingCheckbox);
_showAllButton = new QPushButton("Show All", this);
// set object name for css styling
_showAllButton->setObjectName("showAllButton");
_showAllButton->show();
connect(_showAllButton, &QPushButton::clicked, this, &LogDialog::handleShowAllButton);
}
void LogDialog::resizeEvent(QResizeEvent* event) {
@ -123,12 +164,12 @@ void LogDialog::resizeEvent(QResizeEvent* event) {
ELEMENT_MARGIN,
REVEAL_BUTTON_WIDTH,
ELEMENT_HEIGHT);
_showAllButton->setGeometry(width() - ELEMENT_MARGIN - REVEAL_BUTTON_WIDTH - ELEMENT_MARGIN - SHOW_ALL_BUTTON_WIDTH,
ELEMENT_MARGIN,
_showAllButton->setGeometry(width() - ELEMENT_MARGIN - SHOW_ALL_BUTTON_WIDTH,
THIRD_ROW,
SHOW_ALL_BUTTON_WIDTH,
ELEMENT_HEIGHT);
_filterDropdown->setGeometry(width() - ELEMENT_MARGIN - COMBOBOX_WIDTH,
ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT,
_extraDebuggingBox->setGeometry(width() - ELEMENT_MARGIN - COMBOBOX_WIDTH - ELEMENT_MARGIN - SHOW_ALL_BUTTON_WIDTH,
THIRD_ROW,
COMBOBOX_WIDTH,
ELEMENT_HEIGHT);
}
@ -139,7 +180,7 @@ void LogDialog::handleRevealButton() {
void LogDialog::handleShowAllButton() {
_logTextBox->clear();
log = getCurrentLog();
QString log = getCurrentLog();
_logTextBox->appendPlainText(log);
}
@ -162,6 +203,26 @@ void LogDialog::handleCriticalPrintBox(int state) {
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() + "]";
@ -181,27 +242,41 @@ void LogDialog::appendLogLine(QString logLine) {
int indexToBold = _logTextBox->document()->characterCount();
_highlighter->setBold(indexToBold);
if (logLine.contains(DEBUG, Qt::CaseSensitive)) {
if (logLine.contains(DEBUG_TEXT, Qt::CaseSensitive)) {
if (_logger->debugPrint()) {
_logTextBox->appendPlainText(logLine.trimmed());
}
}
else if (logLine.contains(INFO, Qt::CaseSensitive)) {
} else if (logLine.contains(INFO_TEXT, Qt::CaseSensitive)) {
if (_logger->infoPrint()) {
_logTextBox->appendPlainText(logLine.trimmed());
}
}
else {
}
} 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();
log = getCurrentLog();
QString log = getCurrentLog();
QStringList logList = log.split('\n');
for (const auto& message : logList) {
appendLogLine(message);

View file

@ -26,15 +26,19 @@ class LogDialog : public BaseLogDialog {
public:
LogDialog(QWidget* parent, AbstractLoggerInterface* logger);
public slots:
public slots:
void appendLogLine(QString logLine) override;
private slots:
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 handleShowAllButton();
@ -50,9 +54,12 @@ private:
QCheckBox* _debugPrintBox;
QCheckBox* _infoPrintBox;
QCheckBox* _criticalPrintBox;
QCheckBox* _warningPrintBox;
QCheckBox* _suppressPrintBox;
QCheckBox* _fatalPrintBox;
QCheckBox* _unknownPrintBox;
QComboBox* _filterDropdown;
QString _filterSelection;
QString log;
AbstractLoggerInterface* _logger;
};

View file

@ -27,10 +27,18 @@ public:
inline bool debugPrint() { return _debugPrint; }
inline bool infoPrint() { return _infoPrint; }
inline bool criticalPrint() { return _criticalPrint; }
inline void setExtraDebugging(bool debugging) { _extraDebugging = debugging; }
inline void setDebugPrint(bool debugging) { _debugPrint = debugging; }
inline void setInfoPrint(bool debugging) { _infoPrint = debugging; }
inline void setCriticalPrint(bool debugging) { _criticalPrint = debugging; }
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;
@ -45,6 +53,10 @@ private:
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