mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-03 15:45:46 +08:00
refs #452 models and views created
* for new value objects (e.g. distributor, ...) * new modes are required (e.g. CStatusMessageListModel::Simplified) * model filter allowing to filter models
This commit is contained in:
committed by
Mathew Sutcliffe
parent
f9048de1e6
commit
2c91b3ada0
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
#include "aircraftmodelview.h"
|
||||
#include "aircraftmodelfilterform.h"
|
||||
#include "blackgui/filters/aircraftmodelfilterdialog.h"
|
||||
#include <QHeaderView>
|
||||
#include <iostream>
|
||||
#include <memory>
|
||||
@@ -16,6 +16,7 @@
|
||||
using namespace BlackMisc;
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackGui::Models;
|
||||
using namespace BlackGui::Filters;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
@@ -23,18 +24,40 @@ namespace BlackGui
|
||||
{
|
||||
CAircraftModelView::CAircraftModelView(QWidget *parent) : CViewBase(parent)
|
||||
{
|
||||
this->m_withMenuItemClear = true;
|
||||
this->m_withMenuItemRefresh = true;
|
||||
this->standardInit(new CAircraftModelListModel(CAircraftModelListModel::ModelOnly, this));
|
||||
this->standardInit(new CAircraftModelListModel(CAircraftModelListModel::OwnSimulatorModel, this));
|
||||
|
||||
// filter
|
||||
QWidget *mainWindow = this->mainApplicationWindowWidget();
|
||||
Q_ASSERT_X(mainWindow, Q_FUNC_INFO, "no main window found");
|
||||
this->setFilterDialog(new CAircraftModelFilterForm(mainWindow));
|
||||
this->setFilterDialog(new CAircraftModelFilterDialog(mainWindow));
|
||||
}
|
||||
|
||||
void CAircraftModelView::setAircraftModelMode(CAircraftModelListModel::AircraftModelMode mode)
|
||||
{
|
||||
if (mode == CAircraftModelListModel::Database)
|
||||
{
|
||||
this->m_withMenuItemClear = false;
|
||||
this->m_withMenuItemRefresh = false;
|
||||
this->m_withMenuItemBackend = true;
|
||||
}
|
||||
else if (mode == CAircraftModelListModel::OwnSimulatorModel)
|
||||
{
|
||||
this->m_withMenuItemClear = false;
|
||||
this->m_withMenuItemRefresh = false;
|
||||
this->m_withMenuItemBackend = true;
|
||||
}
|
||||
else if (mode == CAircraftModelListModel::VPilotRuleModel)
|
||||
{
|
||||
this->m_withMenuItemClear = true;
|
||||
this->m_withMenuItemRefresh = false;
|
||||
this->m_withMenuItemBackend = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_withMenuItemClear = true;
|
||||
this->m_withMenuItemRefresh = true;
|
||||
this->m_withMenuItemBackend = true;
|
||||
}
|
||||
this->m_model->setAircraftModelMode(mode);
|
||||
}
|
||||
|
||||
@@ -43,22 +66,19 @@ namespace BlackGui
|
||||
return m_displayAutomatically;
|
||||
}
|
||||
|
||||
bool CAircraftModelView::ps_filterDialogFinished(int status)
|
||||
{
|
||||
if (CViewBase::ps_filterDialogFinished(status)) { return true; }
|
||||
if (!this->m_filterDialog) { this->derivedModel()->removeFilter(); return true; }
|
||||
std::unique_ptr<IModelFilter<CAircraftModelList>> filter(this->getFilterForm()->getFilter());
|
||||
this->derivedModel()->setFilter(filter);
|
||||
return true;
|
||||
}
|
||||
|
||||
void CAircraftModelView::customMenu(QMenu &menu) const
|
||||
{
|
||||
QAction *a = menu.addAction(CIcons::appMappings16(), "Automatically display", this, SLOT(ps_toggleAutoDisplay()));
|
||||
a->setCheckable(true);
|
||||
a->setChecked(m_displayAutomatically);
|
||||
menu.addAction(CIcons::refresh16(), "Reload model data", this, SIGNAL(requestModelReload()));
|
||||
menu.addSeparator();
|
||||
CAircraftModelListModel::AircraftModelMode mode = this->m_model->getModelMode();
|
||||
if (mode == CAircraftModelListModel::VPilotRuleModel || mode == CAircraftModelListModel::OwnSimulatorModel)
|
||||
{
|
||||
QAction *a = menu.addAction(CIcons::appMappings16(), "Automatically display", this, SLOT(ps_toggleAutoDisplay()));
|
||||
a->setCheckable(true);
|
||||
a->setChecked(m_displayAutomatically);
|
||||
menu.addSeparator();
|
||||
a = menu.addAction(CIcons::database16(), "Highlight DB items", this, SLOT(ps_toggleHighlightDbModels()));
|
||||
a->setCheckable(true);
|
||||
a->setChecked(derivedModel()->highlightDbData());
|
||||
}
|
||||
CViewBase::customMenu(menu);
|
||||
}
|
||||
|
||||
@@ -66,13 +86,14 @@ namespace BlackGui
|
||||
{
|
||||
QAction *a = qobject_cast<QAction *>(QObject::sender());
|
||||
if (!a) { return; }
|
||||
Q_ASSERT(a->isCheckable());
|
||||
Q_ASSERT_X(a->isCheckable(), Q_FUNC_INFO, "object not checkable");
|
||||
this->m_displayAutomatically = a->isChecked();
|
||||
}
|
||||
|
||||
CAircraftModelFilterForm *CAircraftModelView::getFilterForm() const
|
||||
void CAircraftModelView::ps_toggleHighlightDbModels()
|
||||
{
|
||||
return static_cast<CAircraftModelFilterForm *>(this->m_filterDialog.data());
|
||||
bool h = derivedModel()->highlightDbData();
|
||||
derivedModel()->setHighlightDbData(!h);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user