mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-06 10:15:38 +08:00
refs #506, using filters in view/logcomponet
This commit is contained in:
committed by
Mathew Sutcliffe
parent
67216876f1
commit
63dab2dd28
@@ -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<CLogComponent *>(this->parent());
|
||||
|
||||
@@ -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::CLogComponent> ui;
|
||||
|
||||
//! Status messages changed
|
||||
void onStatusMessageDataChanged(int count, bool withFilter);
|
||||
|
||||
//! Custom menu for the log component
|
||||
class CLogMenu : public BlackGui::Menus::IMenuDelegate
|
||||
{
|
||||
|
||||
@@ -9,11 +9,12 @@
|
||||
|
||||
#include "blackgui/models/statusmessagelistmodel.h"
|
||||
#include "blackgui/views/statusmessageview.h"
|
||||
|
||||
#include "blackgui/filters/statusmessagefilterdialog.h"
|
||||
#include <QFlags>
|
||||
|
||||
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<CStatusMessageFilterDialog *>(this->getFilterWidget());
|
||||
}
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user