diff --git a/interface/resources/qml/js/Utils.jsc b/interface/resources/qml/js/Utils.jsc index c4fe261851..d76f64b204 100644 Binary files a/interface/resources/qml/js/Utils.jsc and b/interface/resources/qml/js/Utils.jsc differ diff --git a/interface/src/ui/BaseLogDialog.cpp b/interface/src/ui/BaseLogDialog.cpp index 9f3edc4978..5762c0caa3 100644 --- a/interface/src/ui/BaseLogDialog.cpp +++ b/interface/src/ui/BaseLogDialog.cpp @@ -16,7 +16,6 @@ #include #include #include -#include #include @@ -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); diff --git a/interface/src/ui/BaseLogDialog.h b/interface/src/ui/BaseLogDialog.h index 899e99c0ab..9ffa563cd7 100644 --- a/interface/src/ui/BaseLogDialog.h +++ b/interface/src/ui/BaseLogDialog.h @@ -13,6 +13,7 @@ #define hifi_BaseLogDialog_h #include +#include const int ELEMENT_MARGIN = 7; const int ELEMENT_HEIGHT = 32; @@ -24,7 +25,21 @@ 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 @@ -34,7 +49,7 @@ public: ~BaseLogDialog(); public slots: - void appendLogLine(QString logLine); + virtual void appendLogLine(QString logLine); private slots: void updateSelection(); @@ -45,6 +60,9 @@ private slots: protected: int _leftPad { 0 }; + QString _searchTerm; + QPlainTextEdit* _logTextBox{ nullptr }; + Highlighter* _highlighter{ nullptr }; void resizeEvent(QResizeEvent* event) override; void showEvent(QShowEvent* event) override; @@ -53,11 +71,8 @@ protected: private: QPushButton* _searchButton { nullptr }; QLineEdit* _searchTextBox { nullptr }; - QPlainTextEdit* _logTextBox { nullptr }; QPushButton* _searchPrevButton { nullptr }; QPushButton* _searchNextButton { nullptr }; - QString _searchTerm; - Highlighter* _highlighter { nullptr }; void initControls(); void showLogData(); diff --git a/interface/src/ui/LogDialog.cpp b/interface/src/ui/LogDialog.cpp index c38ad4e1de..cb62002ce8 100644 --- a/interface/src/ui/LogDialog.cpp +++ b/interface/src/ui/LogDialog.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include @@ -22,6 +23,8 @@ const int DEBUG_CHECKBOX_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]"; LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLogDialog(parent) { _logger = logger; @@ -39,31 +42,31 @@ LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLog _debugPrintBox = new QCheckBox("DEBUG", this); _debugPrintBox->setGeometry(_leftPad, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, DEBUG_CHECKBOX_WIDTH, ELEMENT_HEIGHT); - /*if (_logger->extraDebugging()) { + if (_logger->debugPrint()) { _extraDebuggingBox->setCheckState(Qt::Checked); - }*/ + } _debugPrintBox->show(); - //connect(_extraDebuggingBox, SIGNAL(stateChanged(int)), SLOT(handleExtraDebuggingCheckbox(int))); + connect(_debugPrintBox, SIGNAL(stateChanged(int)), SLOT(handleDebugPrintBox(int))); _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); - /*if (_logger->extraDebugging()) { - _extraDebuggingBox->setCheckState(Qt::Checked); - }*/ + if (_logger->infoPrint()) { + _infoPrintBox->setCheckState(Qt::Checked); + } _infoPrintBox->show(); - //connect(_infoPrintBox, SIGNAL(stateChanged(int)), SLOT(handleExtraDebuggingCheckbox(int))); + connect(_infoPrintBox, SIGNAL(stateChanged(int)), SLOT(handleInfoPrintBox(int))); _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); - /*if (_logger->extraDebugging()) { - _extraDebuggingBox->setCheckState(Qt::Checked); - }*/ + if (_logger->criticalPrint()) { + _criticalPrintBox->setCheckState(Qt::Checked); + } _criticalPrintBox->show(); - //connect(_criticalPrintBox, SIGNAL(stateChanged(int)), SLOT(handleExtraDebuggingCheckbox(int))); + connect(_criticalPrintBox, SIGNAL(stateChanged(int)), SLOT(handleCriticalPrintBox(int))); _leftPad += CRITICAL_CHECKBOX_WIDTH + BUTTON_MARGIN; @@ -80,21 +83,23 @@ LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLog _filterDropdown = new QComboBox(this); _filterDropdown->setGeometry(_leftPad, ELEMENT_MARGIN + ELEMENT_MARGIN + ELEMENT_HEIGHT, COMBOBOX_WIDTH, ELEMENT_HEIGHT); _filterDropdown->addItem("Select filter..."); - _filterDropdown->addItem("hifi.scriptengine"); - _filterDropdown->addItem("hifi.scriptengine.module"); - _filterDropdown->addItem("hifi.shared"); - _filterDropdown->addItem("hifi.interface.deadlock"); - _filterDropdown->addItem("hifi.scriptengine.script"); + _filterDropdown->addItem("default"); _filterDropdown->addItem("hifi.audioclient"); + _filterDropdown->addItem("hifi.avatars"); + _filterDropdown->addItem("hifi.interface.deadlock"); + _filterDropdown->addItem("hifi.modelformat"); _filterDropdown->addItem("hifi.networking"); _filterDropdown->addItem("hifi.networking.resource"); - _filterDropdown->addItem("hifi.modelformat"); - _filterDropdown->addItem("default"); + _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"); _filterDropdown->addItem("hifi.ui"); _filterDropdown->addItem("hifi.avatars"); - + connect(_filterDropdown, SIGNAL(_filterDropdown->currentIndexChanged(int)),this, SLOT(handleFilterDropdownChanged(int))); } void LogDialog::resizeEvent(QResizeEvent* event) { @@ -115,8 +120,60 @@ void LogDialog::handleRevealButton() { void LogDialog::handleExtraDebuggingCheckbox(int state) { _logger->setExtraDebugging(state != 0); + +} + +void LogDialog::handleDebugPrintBox(int state) { + _logger->setDebugPrint(state != 0); + if (state != 0) { + _logTextBox->clear(); + } +} + +void LogDialog::handleInfoPrintBox(int state) { + _logger->setInfoPrint(state != 0); + if (state != 0) { + _logTextBox->clear(); + } +} + +void LogDialog::handleCriticalPrintBox(int state) { + _logger->setCriticalPrint(state != 0); + if (state != 0) { + _logTextBox->clear(); + } +} + +void LogDialog::handleFilterDropdownChanged(int selection) { + printf("%s\n", "Handle it!!!!!"); + if (selection != 0) { + _filterSelection = "[" + _filterDropdown->currentText + "]"; + printf("%s\n", selection); + } } 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, Qt::CaseSensitive)) { + if (_logger->debugPrint()) { + _logTextBox->appendPlainText(logLine.trimmed()); + } + } else if (logLine.contains(INFO, Qt::CaseSensitive)) { + if (_logger->infoPrint()) { + _logTextBox->appendPlainText(logLine.trimmed()); + } + } else { + if (_logger->criticalPrint()) { + _logTextBox->appendPlainText(logLine.trimmed()); + } + } + } +} diff --git a/interface/src/ui/LogDialog.h b/interface/src/ui/LogDialog.h index 59c7ee7bc9..d05cf519ff 100644 --- a/interface/src/ui/LogDialog.h +++ b/interface/src/ui/LogDialog.h @@ -26,9 +26,16 @@ class LogDialog : public BaseLogDialog { public: LogDialog(QWidget* parent, AbstractLoggerInterface* logger); - private slots: +public slots: + void appendLogLine(QString logLine) override; + +private slots: void handleRevealButton(); void handleExtraDebuggingCheckbox(int); + void handleDebugPrintBox(int); + void handleInfoPrintBox(int); + void handleCriticalPrintBox(int); + void handleFilterDropdownChanged(int); protected: void resizeEvent(QResizeEvent* event) override; @@ -41,6 +48,7 @@ private: QCheckBox* _infoPrintBox; QCheckBox* _criticalPrintBox; QComboBox* _filterDropdown; + QString _filterSelection; AbstractLoggerInterface* _logger; }; diff --git a/libraries/shared/src/shared/AbstractLoggerInterface.h b/libraries/shared/src/shared/AbstractLoggerInterface.h index 6a3c47a324..614aea9362 100644 --- a/libraries/shared/src/shared/AbstractLoggerInterface.h +++ b/libraries/shared/src/shared/AbstractLoggerInterface.h @@ -24,7 +24,13 @@ public: AbstractLoggerInterface(QObject* parent = NULL); ~AbstractLoggerInterface(); inline bool extraDebugging() { return _extraDebugging; } + 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; } virtual void addMessage(const QString&) = 0; virtual QString getLogData() = 0; @@ -36,6 +42,9 @@ signals: private: bool _extraDebugging{ false }; + bool _debugPrint{ false }; + bool _infoPrint{ false }; + bool _criticalPrint{ true }; }; #endif // hifi_AbstractLoggerInterface_h