refs #506, using filters in view/logcomponet

This commit is contained in:
Klaus Basan
2016-12-26 00:41:58 +01:00
committed by Mathew Sutcliffe
parent 67216876f1
commit 63dab2dd28
4 changed files with 37 additions and 5 deletions

View File

@@ -12,6 +12,7 @@
#include "blackgui/menus/menuaction.h" #include "blackgui/menus/menuaction.h"
#include "blackgui/views/statusmessageview.h" #include "blackgui/views/statusmessageview.h"
#include "blackgui/views/viewbase.h" #include "blackgui/views/viewbase.h"
#include "blackgui/guiutility.h"
#include "blackmisc/icons.h" #include "blackmisc/icons.h"
#include "ui_logcomponent.h" #include "ui_logcomponent.h"
@@ -49,8 +50,10 @@ namespace BlackGui
QFrame(parent), ui(new Ui::CLogComponent) QFrame(parent), ui(new Ui::CLogComponent)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->tvp_StatusMessages->setAutoResizeFrequency(3);
connect(ui->tvp_StatusMessages, &CStatusMessageView::objectSelected, ui->form_StatusMessage, &CStatusMessageForm::setVariant); 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->setCustomMenu(new CLogMenu(this));
ui->tvp_StatusMessages->menuAddItems(CStatusMessageView::MenuSave); ui->tvp_StatusMessages->menuAddItems(CStatusMessageView::MenuSave);
} }
@@ -105,6 +108,17 @@ namespace BlackGui
ui->tvp_StatusMessages->insert(statusMessages); 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) void CLogComponent::CLogMenu::customMenu(CMenuActions &menuActions)
{ {
CLogComponent *logComp = qobject_cast<CLogComponent *>(this->parent()); CLogComponent *logComp = qobject_cast<CLogComponent *>(this->parent());

View File

@@ -28,11 +28,9 @@ class QPoint;
class QWidget; class QWidget;
namespace Ui { class CLogComponent; } namespace Ui { class CLogComponent; }
namespace BlackGui namespace BlackGui
{ {
namespace Menus { class CMenuActions; } namespace Menus { class CMenuActions; }
namespace Components namespace Components
{ {
//! Text edit for our log component //! Text edit for our log component
@@ -60,7 +58,7 @@ namespace BlackGui
explicit CLogComponent(QWidget *parent = nullptr); explicit CLogComponent(QWidget *parent = nullptr);
//! Destructor //! Destructor
~CLogComponent(); virtual ~CLogComponent();
//! Display log //! Display log
void displayLog(bool attention = false); void displayLog(bool attention = false);
@@ -94,6 +92,9 @@ namespace BlackGui
private: private:
QScopedPointer<Ui::CLogComponent> ui; QScopedPointer<Ui::CLogComponent> ui;
//! Status messages changed
void onStatusMessageDataChanged(int count, bool withFilter);
//! Custom menu for the log component //! Custom menu for the log component
class CLogMenu : public BlackGui::Menus::IMenuDelegate class CLogMenu : public BlackGui::Menus::IMenuDelegate
{ {

View File

@@ -9,11 +9,12 @@
#include "blackgui/models/statusmessagelistmodel.h" #include "blackgui/models/statusmessagelistmodel.h"
#include "blackgui/views/statusmessageview.h" #include "blackgui/views/statusmessageview.h"
#include "blackgui/filters/statusmessagefilterdialog.h"
#include <QFlags> #include <QFlags>
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackGui::Models; using namespace BlackGui::Models;
using namespace BlackGui::Filters;
namespace BlackGui namespace BlackGui
{ {
@@ -32,5 +33,14 @@ namespace BlackGui
this->derivedModel()->setMode(mode); this->derivedModel()->setMode(mode);
} }
void CStatusMessageView::addFilterDialog()
{
this->setFilterDialog(new CStatusMessageFilterDialog(this));
}
CStatusMessageFilterDialog *CStatusMessageView::getFilterDialog() const
{
return qobject_cast<CStatusMessageFilterDialog *>(this->getFilterWidget());
}
} // namespace } // namespace
} // namespace } // namespace

View File

@@ -24,6 +24,7 @@ class QWidget;
namespace BlackGui namespace BlackGui
{ {
namespace Filters { class CStatusMessageFilterDialog; }
namespace Views namespace Views
{ {
//! Status message view //! Status message view
@@ -38,6 +39,12 @@ namespace BlackGui
//! Set mode //! Set mode
void setMode(BlackGui::Models::CStatusMessageListModel::Mode 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
} // ns } // ns