refs #568, specialized view class for DB objects

* CViewWithDbObjects
* new menu for views (delete key, remove)
* adjusted derived classes
This commit is contained in:
Klaus Basan
2016-01-08 00:33:51 +01:00
parent 1ddf470a1d
commit 46e7d42e8c
16 changed files with 281 additions and 75 deletions

View File

@@ -30,7 +30,7 @@ namespace BlackGui
{
namespace Views
{
CAircraftModelView::CAircraftModelView(QWidget *parent) : CViewBase(parent)
CAircraftModelView::CAircraftModelView(QWidget *parent) : CViewWithDbObjects(parent)
{
// default
this->standardInit(new CAircraftModelListModel(CAircraftModelListModel::OwnSimulatorModel, this));
@@ -50,26 +50,22 @@ namespace BlackGui
switch (mode)
{
case CAircraftModelListModel::StashModel:
this->m_menus = MenuClear;
this->setCustomMenu(new CHighlightDbModelsMenu(this, true));
this->m_menus = MenuClear | MenuHighlightDbData;
break;
case CAircraftModelListModel::Database:
this->m_menus = MenuBackend;
break;
case CAircraftModelListModel::VPilotRuleModel:
this->m_menus = MenuRefresh;
this->setCustomMenu(new CHighlightDbModelsMenu(this, true));
this->m_menus = MenuRefresh | MenuHighlightDbData;;
this->setCustomMenu(new CHighlightStashedModelsMenu(this, true));
break;
case CAircraftModelListModel::OwnSimulatorModelMapping:
this->m_menus = MenuDisplayAutomatically;
this->setCustomMenu(new CHighlightDbModelsMenu(this, true));
this->m_menus = MenuDisplayAutomatically | MenuHighlightDbData;
this->setCustomMenu(new CHighlightStashedModelsMenu(this, true));
break;
case CAircraftModelListModel::OwnSimulatorModel:
default:
this->m_menus = MenuDisplayAutomatically | MenuBackend | MenuRefresh;
this->setCustomMenu(new CHighlightDbModelsMenu(this, true));
this->m_menus = MenuDisplayAutomatically | MenuBackend | MenuRefresh | MenuHighlightDbData;
break;
}
}
@@ -95,7 +91,7 @@ namespace BlackGui
return c;
}
bool CAircraftModelView::hasModelsToStash() const
bool CAircraftModelView::hasSelectedModelsToStash() const
{
return m_allowStash && hasSelection();
}
@@ -117,6 +113,18 @@ namespace BlackGui
this->setFilterDialog(new CAircraftModelFilterDialog(this));
}
int CAircraftModelView::removeModelsWithModelString(const QStringList &modelStrings, Qt::CaseSensitivity sensitivity)
{
if (modelStrings.isEmpty()) { return 0; }
CAircraftModelList copy(this->container());
int delta = copy.removeModelsWithString(modelStrings, sensitivity);
if (delta > 0)
{
this->updateContainerMaybeAsync(copy);
}
return delta;
}
void CAircraftModelView::dropEvent(QDropEvent *event)
{
if (!isDropAllowed()) { return; }
@@ -207,12 +215,6 @@ namespace BlackGui
} // valid mime?
}
void CAircraftModelView::ps_toggleHighlightDbModels()
{
bool h = derivedModel()->highlightDbData();
derivedModel()->setHighlightDbData(!h);
}
void CAircraftModelView::ps_toggleHighlightStashedModels()
{
bool h = derivedModel()->highlightGivenModelStrings();
@@ -225,16 +227,6 @@ namespace BlackGui
emit requestStash();
}
void CAircraftModelView::CHighlightDbModelsMenu::customMenu(QMenu &menu) const
{
const CAircraftModelView *mv = qobject_cast<const CAircraftModelView *>(parent());
Q_ASSERT_X(mv, Q_FUNC_INFO, "no view");
QAction *a = menu.addAction(CIcons::database16(), "Highlight DB models", mv, SLOT(ps_toggleHighlightDbModels()));
a->setCheckable(true);
a->setChecked(mv->derivedModel()->highlightDbData());
this->nestedCustomMenu(menu);
}
void CAircraftModelView::CHighlightStashedModelsMenu::customMenu(QMenu &menu) const
{
const CAircraftModelView *mv = qobject_cast<const CAircraftModelView *>(parent());