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:
Klaus Basan
2015-09-23 23:56:17 +02:00
committed by Mathew Sutcliffe
parent f9048de1e6
commit 2c91b3ada0
41 changed files with 1375 additions and 123 deletions

View File

@@ -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