From 89138c9bd85acb06d848229a5a777d94f10d3f22 Mon Sep 17 00:00:00 2001 From: RebeccaStankus Date: Wed, 3 Jan 2018 11:35:46 -0800 Subject: [PATCH] More filter choices, search will clear --- interface/src/ui/BaseLogDialog.cpp | 25 ++- interface/src/ui/BaseLogDialog.h | 4 +- interface/src/ui/LogDialog.cpp | 161 +++++++++++++----- interface/src/ui/LogDialog.h | 13 +- .../src/shared/AbstractLoggerInterface.h | 20 ++- 5 files changed, 156 insertions(+), 67 deletions(-) diff --git a/interface/src/ui/BaseLogDialog.cpp b/interface/src/ui/BaseLogDialog.cpp index aacf93a2c1..f73b8b85f0 100644 --- a/interface/src/ui/BaseLogDialog.cpp +++ b/interface/src/ui/BaseLogDialog.cpp @@ -19,7 +19,7 @@ #include -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()); } } diff --git a/interface/src/ui/BaseLogDialog.h b/interface/src/ui/BaseLogDialog.h index cd097751c9..79c020a853 100644 --- a/interface/src/ui/BaseLogDialog.h +++ b/interface/src/ui/BaseLogDialog.h @@ -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); diff --git a/interface/src/ui/LogDialog.cpp b/interface/src/ui/LogDialog.cpp index 7659582624..da65480f8a 100644 --- a/interface/src/ui/LogDialog.cpp +++ b/interface/src/ui/LogDialog.cpp @@ -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(&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); diff --git a/interface/src/ui/LogDialog.h b/interface/src/ui/LogDialog.h index 1856c18f92..77bb593be9 100644 --- a/interface/src/ui/LogDialog.h +++ b/interface/src/ui/LogDialog.h @@ -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; }; diff --git a/libraries/shared/src/shared/AbstractLoggerInterface.h b/libraries/shared/src/shared/AbstractLoggerInterface.h index 614aea9362..c202496103 100644 --- a/libraries/shared/src/shared/AbstractLoggerInterface.h +++ b/libraries/shared/src/shared/AbstractLoggerInterface.h @@ -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