From cbcafe202165300d653817914fbe6b030ab03c2d Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 20 Jan 2018 17:11:25 +0100 Subject: [PATCH] Use CStatusMessagesDetail in log component --- src/blackgui/components/logcomponent.cpp | 81 ++++++------------------ src/blackgui/components/logcomponent.h | 55 +++++----------- src/blackgui/components/logcomponent.ui | 57 +---------------- 3 files changed, 39 insertions(+), 154 deletions(-) diff --git a/src/blackgui/components/logcomponent.cpp b/src/blackgui/components/logcomponent.cpp index b4ba8e194..4a0cbb796 100644 --- a/src/blackgui/components/logcomponent.cpp +++ b/src/blackgui/components/logcomponent.cpp @@ -33,13 +33,13 @@ namespace BlackGui { CConsoleTextEdit::CConsoleTextEdit(QWidget *parent) : QPlainTextEdit(parent) { - bool c = connect(this, &CConsoleTextEdit::customContextMenuRequested, this, &CConsoleTextEdit::ps_customMenuRequested); + bool c = connect(this, &CConsoleTextEdit::customContextMenuRequested, this, &CConsoleTextEdit::customMenuRequested); Q_ASSERT_X(c, Q_FUNC_INFO, "Custom menu"); Q_UNUSED(c); this->setContextMenuPolicy(Qt::CustomContextMenu); } - void CConsoleTextEdit::ps_customMenuRequested(const QPoint &pos) + void CConsoleTextEdit::customMenuRequested(const QPoint &pos) { QMenu *menu = QPlainTextEdit::createStandardContextMenu(); menu->addAction(CIcons::delete16(), "Clear console", this, SLOT(clear())); @@ -50,12 +50,7 @@ namespace BlackGui QFrame(parent), ui(new Ui::CLogComponent) { ui->setupUi(this); - connect(ui->tvp_StatusMessages, &CStatusMessageView::objectSelected, ui->form_StatusMessage, &CStatusMessageForm::setVariant); - connect(ui->tvp_StatusMessages, &CStatusMessageView::modelDataChangedDigest, this, &CLogComponent::onStatusMessageDataChanged); - ui->tvp_StatusMessages->setAutoResizeFrequency(3); - ui->tvp_StatusMessages->setCustomMenu(new CLogMenu(this)); - ui->tvp_StatusMessages->menuAddItems(CStatusMessageView::MenuSave); - this->showFilterBar(); // default + connect(ui->comp_StatusMessages, &CStatusMessagesDetail::modelDataChangedDigest, this, &CLogComponent::onStatusMessageDataChanged); } CLogComponent::~CLogComponent() @@ -64,47 +59,44 @@ namespace BlackGui void CLogComponent::displayLog(bool attention) { ui->tw_StatusPage->setCurrentIndex(0); - if (attention) { emit requestAttention(); } + if (attention) { emit this->requestAttention(); } } void CLogComponent::displayConsole(bool attention) { ui->tw_StatusPage->setCurrentIndex(1); - if (attention) { emit requestAttention(); } + if (attention) { emit this->requestAttention(); } } - void CLogComponent::showDetails(bool details) + void CLogComponent::filterUseRadioButtonDescriptiveIcons(bool oneLetterText) { - ui->form_StatusMessage->setVisible(details); + ui->comp_StatusMessages->filterUseRadioButtonDescriptiveIcons(oneLetterText); } void CLogComponent::showFilterDialog() { - ui->tvp_StatusMessages->addFilterDialog(); - ui->filter_LogMessages->hide(); + ui->comp_StatusMessages->showFilterDialog(); } void CLogComponent::showFilterBar() { - ui->tvp_StatusMessages->setFilterWidget(ui->filter_LogMessages); - ui->filter_LogMessages->show(); + ui->comp_StatusMessages->showFilterBar(); } - void CLogComponent::filterUseRadioButtonDescriptiveIcons(bool oneCharacterText) + void CLogComponent::showDetails(bool details) { - ui->filter_LogMessages->useRadioButtonDescriptiveIcons(oneCharacterText); + ui->comp_StatusMessages->showDetails(details); + } + + void CLogComponent::setMaxLogMessages(int max) + { + ui->comp_StatusMessages->setMaxLogMessages(max); } void CLogComponent::clear() { - ui->tvp_StatusMessages->clear(); - ui->form_StatusMessage->clear(); ui->tep_StatusPageConsole->clear(); - } - - int CLogComponent::rowCount() const - { - return ui->tvp_StatusMessages->rowCount(); + ui->comp_StatusMessages->clear(); } void CLogComponent::appendStatusMessageToConsole(const CStatusMessage &statusMessage) @@ -120,16 +112,12 @@ namespace BlackGui void CLogComponent::appendStatusMessageToList(const CStatusMessage &statusMessage) { - if (statusMessage.isEmpty()) { return; } - ui->tvp_StatusMessages->insert(statusMessage); - this->removeOldest(); + ui->comp_StatusMessages->appendStatusMessageToList(statusMessage); } void CLogComponent::appendStatusMessagesToList(const CStatusMessageList &statusMessages) { - if (statusMessages.isEmpty()) { return; } - ui->tvp_StatusMessages->insert(statusMessages); - this->removeOldest(); + ui->comp_StatusMessages->appendStatusMessagesToList(statusMessages); } void CLogComponent::onStatusMessageDataChanged(int count, bool withFilter) @@ -138,36 +126,9 @@ namespace BlackGui Q_UNUSED(withFilter); const int i = ui->tw_StatusPage->indexOf(ui->pg_LogPage); QString o = ui->tw_StatusPage->tabText(i); - const QString f = ui->tvp_StatusMessages->hasFilter() ? "F" : ""; - o = CGuiUtility::replaceTabCountValue(o, ui->tvp_StatusMessages->rowCount()) + f; + const QString f = withFilter ? "F" : ""; + o = CGuiUtility::replaceTabCountValue(o, ui->comp_StatusMessages->rowCount()) + f; ui->tw_StatusPage->setTabText(i, o); } - - void CLogComponent::removeOldest() - { - // do not remove every time, but when a threshold is reached - if (m_maxLogMessages < 1) { return; } - if (m_maxLogMessages < 100 && ui->tvp_StatusMessages->rowCount() > (m_maxLogMessages + 10)) - { - ui->tvp_StatusMessages->keepLatest(m_maxLogMessages); - } - else if (ui->tvp_StatusMessages->rowCount() > (m_maxLogMessages * 1.1)) - { - ui->tvp_StatusMessages->keepLatest(m_maxLogMessages); - } - } - - void CLogComponent::CLogMenu::customMenu(CMenuActions &menuActions) - { - CLogComponent *logComp = qobject_cast(this->parent()); - Q_ASSERT_X(logComp, Q_FUNC_INFO, "Missing parent"); - - bool v = logComp->ui->form_StatusMessage->isVisible(); - QString formString(v ? "Hide log details" : "Show log details"); - this->m_action = menuActions.addAction(this->m_action, BlackMisc::CIcons::databaseTable16(), formString, - CMenuAction::pathLog(), { logComp->ui->form_StatusMessage, &CStatusMessageForm::toggleVisibility}); - this->m_action->setCheckable(true); - this->m_action->setChecked(v); - } } } // namespace diff --git a/src/blackgui/components/logcomponent.h b/src/blackgui/components/logcomponent.h index 43f42577c..333f0c82d 100644 --- a/src/blackgui/components/logcomponent.h +++ b/src/blackgui/components/logcomponent.h @@ -13,8 +13,6 @@ #define BLACKGUI_LOGCOMPONENT_H #include "blackgui/blackguiexport.h" -#include "blackgui/menus/menudelegate.h" -#include "blackmisc/statusmessage.h" #include "blackmisc/statusmessagelist.h" #include @@ -30,7 +28,6 @@ class QWidget; namespace Ui { class CLogComponent; } namespace BlackGui { - namespace Menus { class CMenuActions; } namespace Components { //! Text edit for our log component @@ -42,9 +39,9 @@ namespace BlackGui //! Constructor CConsoleTextEdit(QWidget *parent = nullptr); - protected slots: + protected: //! Custom menu - void ps_customMenuRequested(const QPoint &pos); + void customMenuRequested(const QPoint &pos); }; //! GUI displaying log and status messages @@ -65,32 +62,24 @@ namespace BlackGui //! Display console void displayConsole(bool attention = false); - //! Show log details - void showDetails(bool details); + //! \copydoc BlackGui::Components::CStatusMessagesDetail::filterUseRadioButtonDescriptiveIcons + void filterUseRadioButtonDescriptiveIcons(bool oneLetterText); - //! Show filter dialog and disable bar + //! \copydoc BlackGui::Components::CStatusMessagesDetail::showFilterDialog void showFilterDialog(); - //! Show a filter bar + //! \copydoc BlackGui::Components::CStatusMessagesDetail::showFilterBar void showFilterBar(); - //! Set descriptive icons - void filterUseRadioButtonDescriptiveIcons(bool oneLetterText); + //! \copydoc BlackGui::Components::CStatusMessagesDetail::showDetails + void showDetails(bool details); + + //! \copydoc BlackGui::Components::CStatusMessagesDetail::setMaxLogMessages + void setMaxLogMessages(int max); //! Clear void clear(); - //! Number of status messages in log view - int rowCount() const; - - //! Set max.log messages - void setMaxLogMessages(int desiredNumber) { m_maxLogMessages = desiredNumber; } - - signals: - //! Make me visible - void requestAttention(); - - public slots: //! Append status message to console void appendStatusMessageToConsole(const BlackMisc::CStatusMessage &statusMessage); @@ -103,29 +92,15 @@ namespace BlackGui //! Append status messages to list void appendStatusMessagesToList(const BlackMisc::CStatusMessageList &statusMessages); + signals: + //! Make me visible + void requestAttention(); + private: QScopedPointer ui; - int m_maxLogMessages = -1; //! Status messages changed void onStatusMessageDataChanged(int count, bool withFilter); - - //! Remove oldest messages - void removeOldest(); - - //! Custom menu for the log component - class CLogMenu : public BlackGui::Menus::IMenuDelegate - { - public: - //! Constructor - CLogMenu(CLogComponent *parent) : IMenuDelegate(parent) {} - - //! \copydoc IMenuDelegate::customMenu - virtual void customMenu(BlackGui::Menus::CMenuActions &menuActions) override; - - private: - QAction *m_action = nullptr; - }; }; } // ns } // ns diff --git a/src/blackgui/components/logcomponent.ui b/src/blackgui/components/logcomponent.ui index 27bbd2da6..98d4efe99 100644 --- a/src/blackgui/components/logcomponent.ui +++ b/src/blackgui/components/logcomponent.ui @@ -64,47 +64,7 @@ 0 - - - - - - Status message log view - - - Qt::ScrollBarAlwaysOn - - - QAbstractItemView::SingleSelection - - - QAbstractItemView::SelectRows - - - false - - - - - - - - 0 - 0 - - - - - 0 - 100 - - - - - 16777215 - 100 - - + QFrame::StyledPanel @@ -162,26 +122,15 @@ - - BlackGui::Views::CStatusMessageView - QTableView -
blackgui/views/statusmessageview.h
-
- - BlackGui::Components::CStatusMessageForm - QFrame -
blackgui/components/statusmessageform.h
- 1 -
BlackGui::Components::CConsoleTextEdit QPlainTextEdit
blackgui/components/logcomponent.h
- BlackGui::Filters::CStatusMessageFilterBar + BlackGui::Components::CStatusMessagesDetail QFrame -
blackgui/filters/statusmessagefilterbar.h
+
blackgui/components/statusmessagesdetail.h
1