mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-06 10:26:03 +08:00
Ref T451, context menu in views (simulated aircraft/model) to disable model
This commit is contained in:
committed by
Mat Sutcliffe
parent
158ba34936
commit
93cf349a04
@@ -78,21 +78,25 @@ namespace BlackGui
|
|||||||
ui->tvp_AircraftModels->setAircraftModelMode(CAircraftModelListModel::OwnAircraftModelClient);
|
ui->tvp_AircraftModels->setAircraftModelMode(CAircraftModelListModel::OwnAircraftModelClient);
|
||||||
ui->tvp_AircraftModels->setResizeMode(CAircraftModelView::ResizingOff);
|
ui->tvp_AircraftModels->setResizeMode(CAircraftModelView::ResizingOff);
|
||||||
ui->tvp_AircraftModels->addFilterDialog();
|
ui->tvp_AircraftModels->addFilterDialog();
|
||||||
ui->tvp_AircraftModels->menuRemoveItems(CViewBaseNonTemplate::MenuBackend);
|
ui->tvp_AircraftModels->menuRemoveItems(CAircraftModelView::MenuBackend);
|
||||||
|
ui->tvp_AircraftModels->menuAddItems(CAircraftModelView::MenuDisableModelsTemp);
|
||||||
|
|
||||||
ui->tvp_RenderedAircraft->setAircraftMode(CSimulatedAircraftListModel::RenderedMode);
|
ui->tvp_RenderedAircraft->setAircraftMode(CSimulatedAircraftListModel::RenderedMode);
|
||||||
ui->tvp_RenderedAircraft->setResizeMode(CAircraftModelView::ResizingOnce);
|
ui->tvp_RenderedAircraft->setResizeMode(CAircraftModelView::ResizingOnce);
|
||||||
|
ui->tvp_RenderedAircraft->menuAddItems(CAircraftModelView::MenuDisableModelsTemp);
|
||||||
|
|
||||||
connect(sGui->getIContextNetwork(), &IContextNetwork::connectionStatusChanged, this, &CMappingComponent::onNetworkConnectionStatusChanged);
|
connect(sGui->getIContextNetwork(), &IContextNetwork::connectionStatusChanged, this, &CMappingComponent::onNetworkConnectionStatusChanged);
|
||||||
|
|
||||||
connect(ui->tvp_AircraftModels, &CAircraftModelView::requestUpdate, this, &CMappingComponent::onModelsUpdateRequested);
|
connect(ui->tvp_AircraftModels, &CAircraftModelView::requestUpdate, this, &CMappingComponent::onModelsUpdateRequested);
|
||||||
connect(ui->tvp_AircraftModels, &CAircraftModelView::modelDataChanged, this, &CMappingComponent::onRowCountChanged);
|
connect(ui->tvp_AircraftModels, &CAircraftModelView::modelDataChanged, this, &CMappingComponent::onRowCountChanged);
|
||||||
connect(ui->tvp_AircraftModels, &CAircraftModelView::clicked, this, &CMappingComponent::onModelSelectedInView);
|
connect(ui->tvp_AircraftModels, &CAircraftModelView::clicked, this, &CMappingComponent::onModelSelectedInView);
|
||||||
|
connect(ui->tvp_AircraftModels, &CAircraftModelView::requestTempDisableModelsForMatching, this, &CMappingComponent::onTempDisableModelsForMatchingRequested);
|
||||||
|
|
||||||
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::modelDataChanged, this, &CMappingComponent::onRowCountChanged);
|
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::modelDataChanged, this, &CMappingComponent::onRowCountChanged);
|
||||||
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::clicked, this, &CMappingComponent::onAircraftSelectedInView);
|
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::clicked, this, &CMappingComponent::onAircraftSelectedInView);
|
||||||
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::requestUpdate, this, &CMappingComponent::tokenBucketUpdate);
|
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::requestUpdate, this, &CMappingComponent::tokenBucketUpdate);
|
||||||
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::requestTextMessageWidget, this, &CMappingComponent::requestTextMessageWidget);
|
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::requestTextMessageWidget, this, &CMappingComponent::requestTextMessageWidget);
|
||||||
|
connect(ui->tvp_RenderedAircraft, &CSimulatedAircraftView::requestTempDisableModelsForMatching, this, &CMappingComponent::onTempDisableModelsForMatchingRequested);
|
||||||
|
|
||||||
connect(ui->pb_SaveAircraft, &QPushButton::clicked, this, &CMappingComponent::onSaveAircraft);
|
connect(ui->pb_SaveAircraft, &QPushButton::clicked, this, &CMappingComponent::onSaveAircraft);
|
||||||
connect(ui->pb_ResetAircraft, &QPushButton::clicked, this, &CMappingComponent::onResetAircraft);
|
connect(ui->pb_ResetAircraft, &QPushButton::clicked, this, &CMappingComponent::onResetAircraft);
|
||||||
@@ -413,6 +417,15 @@ namespace BlackGui
|
|||||||
ui->tw_SpecializedViews->setCurrentIndex(TabAircraftModels);
|
ui->tw_SpecializedViews->setCurrentIndex(TabAircraftModels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CMappingComponent::onTempDisableModelsForMatchingRequested(const CAircraftModelList &models)
|
||||||
|
{
|
||||||
|
if (models.isEmpty()) { return; }
|
||||||
|
if (sGui && sGui->getIContextSimulator())
|
||||||
|
{
|
||||||
|
sGui->getIContextSimulator()->disableModelsForMatching(models, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CMappingComponent::onRemoteAircraftModelChanged(const CSimulatedAircraft &aircraft, const CIdentifier &originator)
|
void CMappingComponent::onRemoteAircraftModelChanged(const CSimulatedAircraft &aircraft, const CIdentifier &originator)
|
||||||
{
|
{
|
||||||
if (CIdentifiable::isMyIdentifier(originator)) { return; }
|
if (CIdentifiable::isMyIdentifier(originator)) { return; }
|
||||||
|
|||||||
@@ -119,6 +119,9 @@ namespace BlackGui
|
|||||||
//! Request update for models from backend
|
//! Request update for models from backend
|
||||||
void onModelsUpdateRequested();
|
void onModelsUpdateRequested();
|
||||||
|
|
||||||
|
//! Request temp.disablng of models (for matching)
|
||||||
|
void onTempDisableModelsForMatchingRequested(const BlackMisc::Simulation::CAircraftModelList &models);
|
||||||
|
|
||||||
//! Rendered aircraft changed in backend
|
//! Rendered aircraft changed in backend
|
||||||
void onRemoteAircraftModelChanged(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
|
void onRemoteAircraftModelChanged(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
|
||||||
|
|
||||||
|
|||||||
@@ -169,6 +169,9 @@ namespace BlackGui
|
|||||||
//! Client simulation/display related
|
//! Client simulation/display related
|
||||||
static const QString &pathClientSimulationTransfer() { static const QString p("ClientSimulation.Transfer/Transfer"); return p; }
|
static const QString &pathClientSimulationTransfer() { static const QString p("ClientSimulation.Transfer/Transfer"); return p; }
|
||||||
|
|
||||||
|
//! Client model set related
|
||||||
|
static const QString &pathClientModelSet() { static const QString p("Client.Model set"); return p; }
|
||||||
|
|
||||||
// ---- standard view paths --------
|
// ---- standard view paths --------
|
||||||
|
|
||||||
//! Database
|
//! Database
|
||||||
|
|||||||
@@ -332,6 +332,19 @@ namespace BlackGui
|
|||||||
a->setChecked(this->derivedModel()->highlightModelStrings());
|
a->setChecked(this->derivedModel()->highlightModelStrings());
|
||||||
addStashMenu = true;
|
addStashMenu = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// client specific
|
||||||
|
if (m_menus.testFlag(MenuDisableModelsTemp) && this->hasSelection())
|
||||||
|
{
|
||||||
|
if (!m_menuFlagActions.contains(MenuDisableModelsTemp))
|
||||||
|
{
|
||||||
|
CMenuActions ma;
|
||||||
|
ma.addAction(CIcons::delete16(), "Temp.disable model", CMenuAction::pathModel(), { this, &CAircraftModelView::requestTempDisable });
|
||||||
|
m_menuFlagActions.insert(MenuDisableModelsTemp, ma);
|
||||||
|
}
|
||||||
|
menuActions.addActions(initMenuActions(CViewBaseNonTemplate::MenuDisableModelsTemp));
|
||||||
|
}
|
||||||
|
|
||||||
if (addStashMenu) { menuActions.addMenuStash(); }
|
if (addStashMenu) { menuActions.addMenuStash(); }
|
||||||
|
|
||||||
// base class menus
|
// base class menus
|
||||||
@@ -403,6 +416,15 @@ namespace BlackGui
|
|||||||
sGui->displayInStatusBar(CStatusMessage(CStatusMessage::SeverityInfo, "Stashed " + models.getModelStringList(true).join(" ")));
|
sGui->displayInStatusBar(CStatusMessage(CStatusMessage::SeverityInfo, "Stashed " + models.getModelStringList(true).join(" ")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CAircraftModelView::requestTempDisable()
|
||||||
|
{
|
||||||
|
if (!m_menus.testFlag(MenuCanStashModels)) { return; }
|
||||||
|
if (!this->hasSelection()) { return; }
|
||||||
|
const CAircraftModelList models(this->selectedObjects());
|
||||||
|
emit this->requestTempDisableModelsForMatching(models);
|
||||||
|
sGui->displayInStatusBar(CStatusMessage(CStatusMessage::SeverityInfo, "Temp.disabled " + models.getModelStringList(true).join(" ")));
|
||||||
|
}
|
||||||
|
|
||||||
void CAircraftModelView::displayModelStatisticsDialog()
|
void CAircraftModelView::displayModelStatisticsDialog()
|
||||||
{
|
{
|
||||||
if (!m_statisticsDialog)
|
if (!m_statisticsDialog)
|
||||||
|
|||||||
@@ -113,12 +113,15 @@ namespace BlackGui
|
|||||||
//! Request to stash if applicable
|
//! Request to stash if applicable
|
||||||
void requestStash(const BlackMisc::Simulation::CAircraftModelList &models);
|
void requestStash(const BlackMisc::Simulation::CAircraftModelList &models);
|
||||||
|
|
||||||
//! Highlight stashed models has been toggled
|
|
||||||
void toggledHighlightStashedModels();
|
|
||||||
|
|
||||||
//! Request further handling of drops I cannot handle on my own
|
//! Request further handling of drops I cannot handle on my own
|
||||||
void requestHandlingOfStashDrop(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
|
void requestHandlingOfStashDrop(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
|
||||||
|
|
||||||
|
//! Temp.disable model
|
||||||
|
void requestTempDisableModelsForMatching(const BlackMisc::Simulation::CAircraftModelList &models);
|
||||||
|
|
||||||
|
//! Highlight stashed models has been toggled
|
||||||
|
void toggledHighlightStashedModels();
|
||||||
|
|
||||||
//! Models for simulator loaded (JSON)
|
//! Models for simulator loaded (JSON)
|
||||||
void jsonModelsForSimulatorLoaded(const BlackMisc::Simulation::CSimulatorInfo &simulator);
|
void jsonModelsForSimulatorLoaded(const BlackMisc::Simulation::CSimulatorInfo &simulator);
|
||||||
|
|
||||||
@@ -148,6 +151,9 @@ namespace BlackGui
|
|||||||
//! Stash shortcut pressed
|
//! Stash shortcut pressed
|
||||||
void requestedStash();
|
void requestedStash();
|
||||||
|
|
||||||
|
//! Requested a temporary disabled model
|
||||||
|
void requestTempDisable();
|
||||||
|
|
||||||
//! Dialog about model statistics
|
//! Dialog about model statistics
|
||||||
void displayModelStatisticsDialog();
|
void displayModelStatisticsDialog();
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,10 @@ namespace BlackGui
|
|||||||
menuActions.addAction(CIcons::appAircraft16(), "Enable all aircraft", CMenuAction::pathClientSimulationDisplay(), { this, &CSimulatedAircraftView::enableAllDisabledAircraft });
|
menuActions.addAction(CIcons::appAircraft16(), "Enable all aircraft", CMenuAction::pathClientSimulationDisplay(), { this, &CSimulatedAircraftView::enableAllDisabledAircraft });
|
||||||
menuActions.addAction(CIcons::appAircraft16(), "Disable all aircraft", CMenuAction::pathClientSimulationDisplay(), { this, &CSimulatedAircraftView::disableAllEnabledAircraft });
|
menuActions.addAction(CIcons::appAircraft16(), "Disable all aircraft", CMenuAction::pathClientSimulationDisplay(), { this, &CSimulatedAircraftView::disableAllEnabledAircraft });
|
||||||
menuActions.addAction(CIcons::appAircraft16(), "Re-enable unrendered aircraft", CMenuAction::pathClientSimulationDisplay(), { this, &CSimulatedAircraftView::reEnableAllUnrenderedAircraft });
|
menuActions.addAction(CIcons::appAircraft16(), "Re-enable unrendered aircraft", CMenuAction::pathClientSimulationDisplay(), { this, &CSimulatedAircraftView::reEnableAllUnrenderedAircraft });
|
||||||
|
if (m_menus.testFlag(MenuDisableModelsTemp) && this->hasSelection())
|
||||||
|
{
|
||||||
|
menuActions.addAction(CIcons::delete16(), "Temp.disable model", CMenuAction::pathModel(), { this, &CSimulatedAircraftView::requestTempDisable });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->hasSelection())
|
if (this->hasSelection())
|
||||||
@@ -156,6 +160,15 @@ namespace BlackGui
|
|||||||
this->followAircraftInSimulator(aircraft);
|
this->followAircraftInSimulator(aircraft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSimulatedAircraftView::requestTempDisable()
|
||||||
|
{
|
||||||
|
if (!m_menus.testFlag(MenuCanStashModels)) { return; }
|
||||||
|
if (!this->hasSelection()) { return; }
|
||||||
|
const CAircraftModelList models(this->selectedObjects().getModels());
|
||||||
|
emit this->requestTempDisableModelsForMatching(models);
|
||||||
|
sGui->displayInStatusBar(CStatusMessage(CStatusMessage::SeverityInfo, "Temp.disabled " + models.getModelStringList(true).join(" ")));
|
||||||
|
}
|
||||||
|
|
||||||
void CSimulatedAircraftView::showPositionLogInSimulator()
|
void CSimulatedAircraftView::showPositionLogInSimulator()
|
||||||
{
|
{
|
||||||
IContextSimulator *simContext = simulatorContext();
|
IContextSimulator *simContext = simulatorContext();
|
||||||
|
|||||||
@@ -60,6 +60,9 @@ namespace BlackGui
|
|||||||
//! Request a text message
|
//! Request a text message
|
||||||
void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign);
|
void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign);
|
||||||
|
|
||||||
|
//! Disable for matching
|
||||||
|
void requestTempDisableModelsForMatching(const BlackMisc::Simulation::CAircraftModelList &models);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//! \copydoc CViewBase::customMenu
|
//! \copydoc CViewBase::customMenu
|
||||||
virtual void customMenu(Menus::CMenuActions &menuActions) override;
|
virtual void customMenu(Menus::CMenuActions &menuActions) override;
|
||||||
@@ -83,6 +86,9 @@ namespace BlackGui
|
|||||||
//! Follow in simulator
|
//! Follow in simulator
|
||||||
void requestFollowInSimulator();
|
void requestFollowInSimulator();
|
||||||
|
|
||||||
|
//! Request temp disabling of matching models
|
||||||
|
void requestTempDisable();
|
||||||
|
|
||||||
//! Show position log for selected aircraft
|
//! Show position log for selected aircraft
|
||||||
void showPositionLogInSimulator();
|
void showPositionLogInSimulator();
|
||||||
|
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ namespace BlackGui
|
|||||||
// maybe shifted in the future to elsewhere
|
// maybe shifted in the future to elsewhere
|
||||||
MenuHighlightStashed = 1 << 15, //!< highlight stashed models
|
MenuHighlightStashed = 1 << 15, //!< highlight stashed models
|
||||||
MenuCanStashModels = 1 << 16, //!< stash models
|
MenuCanStashModels = 1 << 16, //!< stash models
|
||||||
|
MenuDisableModelsTemp = 1 << 17, //!< temp. disable model
|
||||||
MenuStashing = MenuHighlightStashed | MenuCanStashModels,
|
MenuStashing = MenuHighlightStashed | MenuCanStashModels,
|
||||||
};
|
};
|
||||||
Q_DECLARE_FLAGS(Menu, MenuFlag)
|
Q_DECLARE_FLAGS(Menu, MenuFlag)
|
||||||
@@ -540,7 +541,7 @@ namespace BlackGui
|
|||||||
Menus::CFontMenu *m_fontMenu = nullptr; //!< font menu if applicable
|
Menus::CFontMenu *m_fontMenu = nullptr; //!< font menu if applicable
|
||||||
CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
|
CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
|
||||||
Components::CTextEditDialog *m_textEditDialog = nullptr; //!< text edit dialog
|
Components::CTextEditDialog *m_textEditDialog = nullptr; //!< text edit dialog
|
||||||
QMap<MenuFlag, Menus::CMenuActions> m_menuFlagActions; //!< initialized actions
|
QMap<MenuFlag, Menus::CMenuActions> m_menuFlagActions; //!< initialized actions for menu flag (enum)
|
||||||
QString m_saveFileName; //!< save file name (JSON)
|
QString m_saveFileName; //!< save file name (JSON)
|
||||||
BlackMisc::CDirectories::ColumnIndex m_dirSettingsIndex = BlackMisc::CDirectories::IndexDirLastViewJsonOrDefault; //!< allows to set more specialized directories //!< remember last JSON directory, having this member allows to have specific dir
|
BlackMisc::CDirectories::ColumnIndex m_dirSettingsIndex = BlackMisc::CDirectories::IndexDirLastViewJsonOrDefault; //!< allows to set more specialized directories //!< remember last JSON directory, having this member allows to have specific dir
|
||||||
BlackMisc::CSetting<BlackMisc::Settings::TDirectorySettings> m_dirSettings { this }; //!< directory for load/save
|
BlackMisc::CSetting<BlackMisc::Settings::TDirectorySettings> m_dirSettings { this }; //!< directory for load/save
|
||||||
|
|||||||
@@ -40,6 +40,11 @@ namespace BlackMisc
|
|||||||
return this->findBy(Predicates::MemberValid(&CSimulatedAircraft::getPilot)).transform(Predicates::MemberTransform(&CSimulatedAircraft::getPilot));
|
return this->findBy(Predicates::MemberValid(&CSimulatedAircraft::getPilot)).transform(Predicates::MemberTransform(&CSimulatedAircraft::getPilot));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CAircraftModelList CSimulatedAircraftList::getModels() const
|
||||||
|
{
|
||||||
|
return this->transform(Predicates::MemberTransform(&CSimulatedAircraft::getModel));
|
||||||
|
}
|
||||||
|
|
||||||
CSimulatedAircraftList CSimulatedAircraftList::findByEnabled(bool enabled) const
|
CSimulatedAircraftList CSimulatedAircraftList::findByEnabled(bool enabled) const
|
||||||
{
|
{
|
||||||
return this->findBy(&CSimulatedAircraft::isEnabled, enabled);
|
return this->findBy(&CSimulatedAircraft::isEnabled, enabled);
|
||||||
|
|||||||
@@ -56,6 +56,9 @@ namespace BlackMisc
|
|||||||
//! All pilots (with valid data)
|
//! All pilots (with valid data)
|
||||||
Network::CUserList getPilots() const;
|
Network::CUserList getPilots() const;
|
||||||
|
|
||||||
|
//! Get all models
|
||||||
|
CAircraftModelList getModels() const;
|
||||||
|
|
||||||
//! Enabled / disabled aircraft
|
//! Enabled / disabled aircraft
|
||||||
CSimulatedAircraftList findByEnabled(bool enabled) const;
|
CSimulatedAircraftList findByEnabled(bool enabled) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user