From 63dab2dd28a7cf93b4d0e577ad10077c9a05941a Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 26 Dec 2016 00:41:58 +0100 Subject: [PATCH] refs #506, using filters in view/logcomponet --- src/blackgui/components/logcomponent.cpp | 16 +++++++++++++++- src/blackgui/components/logcomponent.h | 7 ++++--- src/blackgui/views/statusmessageview.cpp | 12 +++++++++++- src/blackgui/views/statusmessageview.h | 7 +++++++ 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/blackgui/components/logcomponent.cpp b/src/blackgui/components/logcomponent.cpp index 561885cb6..83171d0c6 100644 --- a/src/blackgui/components/logcomponent.cpp +++ b/src/blackgui/components/logcomponent.cpp @@ -12,6 +12,7 @@ #include "blackgui/menus/menuaction.h" #include "blackgui/views/statusmessageview.h" #include "blackgui/views/viewbase.h" +#include "blackgui/guiutility.h" #include "blackmisc/icons.h" #include "ui_logcomponent.h" @@ -49,8 +50,10 @@ namespace BlackGui QFrame(parent), ui(new Ui::CLogComponent) { ui->setupUi(this); - ui->tvp_StatusMessages->setAutoResizeFrequency(3); 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->addFilterDialog(); ui->tvp_StatusMessages->setCustomMenu(new CLogMenu(this)); ui->tvp_StatusMessages->menuAddItems(CStatusMessageView::MenuSave); } @@ -105,6 +108,17 @@ namespace BlackGui ui->tvp_StatusMessages->insert(statusMessages); } + void CLogComponent::onStatusMessageDataChanged(int count, bool withFilter) + { + Q_UNUSED(count); + 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; + ui->tw_StatusPage->setTabText(i, o); + } + void CLogComponent::CLogMenu::customMenu(CMenuActions &menuActions) { CLogComponent *logComp = qobject_cast(this->parent()); diff --git a/src/blackgui/components/logcomponent.h b/src/blackgui/components/logcomponent.h index 5e1ef175e..b7e8c13bf 100644 --- a/src/blackgui/components/logcomponent.h +++ b/src/blackgui/components/logcomponent.h @@ -28,11 +28,9 @@ class QPoint; class QWidget; namespace Ui { class CLogComponent; } - namespace BlackGui { namespace Menus { class CMenuActions; } - namespace Components { //! Text edit for our log component @@ -60,7 +58,7 @@ namespace BlackGui explicit CLogComponent(QWidget *parent = nullptr); //! Destructor - ~CLogComponent(); + virtual ~CLogComponent(); //! Display log void displayLog(bool attention = false); @@ -94,6 +92,9 @@ namespace BlackGui private: QScopedPointer ui; + //! Status messages changed + void onStatusMessageDataChanged(int count, bool withFilter); + //! Custom menu for the log component class CLogMenu : public BlackGui::Menus::IMenuDelegate { diff --git a/src/blackgui/views/statusmessageview.cpp b/src/blackgui/views/statusmessageview.cpp index 4a27568de..1db14ff30 100644 --- a/src/blackgui/views/statusmessageview.cpp +++ b/src/blackgui/views/statusmessageview.cpp @@ -9,11 +9,12 @@ #include "blackgui/models/statusmessagelistmodel.h" #include "blackgui/views/statusmessageview.h" - +#include "blackgui/filters/statusmessagefilterdialog.h" #include using namespace BlackMisc; using namespace BlackGui::Models; +using namespace BlackGui::Filters; namespace BlackGui { @@ -32,5 +33,14 @@ namespace BlackGui this->derivedModel()->setMode(mode); } + void CStatusMessageView::addFilterDialog() + { + this->setFilterDialog(new CStatusMessageFilterDialog(this)); + } + + CStatusMessageFilterDialog *CStatusMessageView::getFilterDialog() const + { + return qobject_cast(this->getFilterWidget()); + } } // namespace } // namespace diff --git a/src/blackgui/views/statusmessageview.h b/src/blackgui/views/statusmessageview.h index 3d44681e6..c91254a1f 100644 --- a/src/blackgui/views/statusmessageview.h +++ b/src/blackgui/views/statusmessageview.h @@ -24,6 +24,7 @@ class QWidget; namespace BlackGui { + namespace Filters { class CStatusMessageFilterDialog; } namespace Views { //! Status message view @@ -38,6 +39,12 @@ namespace BlackGui //! Set mode void setMode(BlackGui::Models::CStatusMessageListModel::Mode mode); + + //! Add my own filter dialog + void addFilterDialog(); + + //! Filter dialog if any + BlackGui::Filters::CStatusMessageFilterDialog *getFilterDialog() const; }; } // ns } // ns