diff --git a/src/blackgui/components/aircraftmodelvalidationcomponent.cpp b/src/blackgui/components/aircraftmodelvalidationcomponent.cpp
index 916d8db73..882eb2ba1 100644
--- a/src/blackgui/components/aircraftmodelvalidationcomponent.cpp
+++ b/src/blackgui/components/aircraftmodelvalidationcomponent.cpp
@@ -25,6 +25,8 @@ namespace BlackGui
ui(new Ui::CAircraftModelValidationComponent)
{
ui->setupUi(this);
+ const CAircraftMatcherSetup setup = m_matchingSettings.get();
+ ui->cb_EnableStartupCheck->setChecked(setup.doVerificationAtStartup());
connect(ui->cb_EnableStartupCheck, &QCheckBox::toggled, this, &CAircraftModelValidationComponent::onCheckAtStartupChanged);
connect(ui->pb_TempDisableInvalid, &QPushButton::released, this, &CAircraftModelValidationComponent::onButtonClicked);
}
diff --git a/src/blackgui/components/mappingcomponent.cpp b/src/blackgui/components/mappingcomponent.cpp
index c3ac5b7ba..f6d4e9628 100644
--- a/src/blackgui/components/mappingcomponent.cpp
+++ b/src/blackgui/components/mappingcomponent.cpp
@@ -102,6 +102,7 @@ namespace BlackGui
connect(ui->pb_ResetAircraft, &QPushButton::clicked, this, &CMappingComponent::onResetAircraft);
connect(ui->pb_LoadModels, &QPushButton::clicked, this, &CMappingComponent::onModelsUpdateRequested);
connect(ui->pb_DoMatchingAgain, &QPushButton::clicked, this, &CMappingComponent::doMatchingsAgain);
+ connect(ui->pb_ValidateModelSet, &QPushButton::clicked, this, &CMappingComponent::requestValidationDialog);
m_currentMappingsViewDelegate = new CCheckBoxDelegate(":/diagona/icons/diagona/icons/tick.png", ":/diagona/icons/diagona/icons/cross.png", this);
ui->tvp_RenderedAircraft->setItemDelegateForColumn(0, m_currentMappingsViewDelegate);
@@ -411,8 +412,15 @@ namespace BlackGui
void CMappingComponent::onModelsUpdateRequested()
{
- Q_ASSERT_X(sGui, Q_FUNC_INFO, "Need sGui");
- const CAircraftModelList modelSet(sGui->getIContextSimulator()->getModelSet());
+ if (!sGui || sGui->isShuttingDown() || !sGui->getIContextSimulator()) { return; }
+ CAircraftModelList modelSet(sGui->getIContextSimulator()->getModelSet());
+
+ const CAircraftModelList disabledModels = sGui->getIContextSimulator()->getDisabledModelsForMatching();
+ const bool hasDisabledModels = !disabledModels.isEmpty();
+
+ ui->tvp_AircraftModels->setHighlightColor(Qt::red);
+ ui->tvp_AircraftModels->setHighlight(hasDisabledModels);
+ ui->tvp_AircraftModels->setHighlightModels(disabledModels);
ui->tvp_AircraftModels->updateContainerMaybeAsync(modelSet);
ui->tw_SpecializedViews->setCurrentIndex(TabAircraftModels);
}
@@ -425,6 +433,7 @@ namespace BlackGui
sGui->getIContextSimulator()->disableModelsForMatching(models, true);
const CStatusMessage m = CLogMessage(this).info(u"Disabled %1 model(s): %2") << models.size() << models.getCallsignsAsString(", ", true);
this->showOverlayHTMLMessage(m, OverlayMessageMs);
+ this->onModelsUpdateRequested();
}
}
diff --git a/src/blackgui/components/mappingcomponent.h b/src/blackgui/components/mappingcomponent.h
index b5edb3a11..b7cae116c 100644
--- a/src/blackgui/components/mappingcomponent.h
+++ b/src/blackgui/components/mappingcomponent.h
@@ -90,6 +90,9 @@ namespace BlackGui
//! Request a text message
void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign);
+ //! Request the validation dialog
+ void requestValidationDialog();
+
private:
//! Aircraft models available
void onModelSetChanged(const BlackMisc::Simulation::CSimulatorInfo &dummy);
diff --git a/src/blackgui/components/mappingcomponent.ui b/src/blackgui/components/mappingcomponent.ui
index 3b5fe5c08..7fd79041d 100644
--- a/src/blackgui/components/mappingcomponent.ui
+++ b/src/blackgui/components/mappingcomponent.ui
@@ -157,7 +157,7 @@
80
-
+
3
@@ -170,7 +170,44 @@
3
- -
+
-
+
+
+ aircraft enabled
+
+
+ Enbl.
+
+
+
+ -
+
+
+ do all matchings again
+
+
+ re-match
+
+
+
+ -
+
+
+
+ 0
+ 20
+
+
+
+
+ -
+
+
+ Icon
+
+
+
+ -
reset model by callsign
@@ -184,110 +221,6 @@
- -
-
-
- do all matchings again
-
-
- re-match
-
-
-
- -
-
-
-
- 0
- 20
-
-
-
-
- -
-
-
- save selected model
-
-
- save
-
-
-
- -
-
-
- aircraft enabled
-
-
- Enbl.
-
-
-
- -
-
-
- callsign of aircraft
-
-
-
-
-
- 15
-
-
- true
-
-
- callsign
-
-
-
- -
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
-
-
-
- load model set
-
-
- load model set
-
-
-
-
-
-
- -
-
-
- aircraft enabled/disable
-
-
-
-
-
-
- -
-
-
- Icon
-
-
-
-
@@ -301,8 +234,68 @@
- -
-
+
-
+
+
+ save selected model
+
+
+ save
+
+
+
+ -
+
+
+ callsign of aircraft
+
+
+ 15
+
+
+ true
+
+
+ callsign
+
+
+
+ -
+
+
+ aircraft enabled/disable
+
+
+
+
+
+
+ -
+
+
+ load model set
+
+
+ load model set
+
+
+
+ -
+
+
+ validate
+
+
+
+ -
+
+
+
+ 50
+ 0
+
+
+
@@ -311,6 +304,11 @@
+
+ BlackGui::Views::CAircraftModelView
+ QTableView
+ blackgui/views/aircraftmodelview.h
+
BlackGui::Components::CSimulatorSelector
QFrame
@@ -322,11 +320,6 @@
QTableView
blackgui/views/simulatedaircraftview.h
-
- BlackGui::Views::CAircraftModelView
- QTableView
- blackgui/views/aircraftmodelview.h
-
BlackGui::Components::CModelMatcherLogComponent
QFrame
@@ -345,11 +338,17 @@
blackgui/components/matchingstatisticscomponent.h
1
+
+ BlackGui::CElidedPushButton
+ QPushButton
+ blackgui/elidedpushbutton.h
+
tw_SpecializedViews
tvp_RenderedAircraft
cb_AircraftIconDisplayed
+ pb_ValidateModelSet
pb_LoadModels
cb_AircraftEnabled
le_Callsign
diff --git a/src/swiftguistandard/swiftguistd.cpp b/src/swiftguistandard/swiftguistd.cpp
index 4a4ae8eab..7e008d0db 100644
--- a/src/swiftguistandard/swiftguistd.cpp
+++ b/src/swiftguistandard/swiftguistd.cpp
@@ -310,7 +310,7 @@ void SwiftGuiStd::setContextAvailability()
this->displayDBusReconnectDialog();
}
m_contextNetworkAvailable = m_coreAvailable && sGui->getIContextNetwork() && !sGui->getIContextNetwork()->isEmptyObject();
- m_contextAudioAvailable = m_coreAvailable && sGui->getIContextAudio() && !sGui->getIContextAudio()->isEmptyObject();
+ m_contextAudioAvailable = m_coreAvailable && sGui->getIContextAudio() && !sGui->getIContextAudio()->isEmptyObject();
// react to a change in core's availability
if (m_coreAvailable != corePreviouslyAvailable)
@@ -437,15 +437,23 @@ void SwiftGuiStd::verifyPrerequisites()
}
void SwiftGuiStd::onValidatedModelSet(const CSimulatorInfo &simulator, const CAircraftModelList &valid, const CAircraftModelList &invalid, bool stopped, const CStatusMessageList &msgs)
+{
+ this->displayValidationDialog();
+ m_validationDialog->validatedModelSet(simulator, valid, invalid, stopped, msgs);
+
+ // modal version
+ // const int r = m_validationDialog->exec();
+ // Q_UNUSED(r);
+}
+
+void SwiftGuiStd::displayValidationDialog()
{
if (!sGui || sGui->isShuttingDown()) { return; }
if (!m_validationDialog)
{
m_validationDialog.reset(new CAircraftModelSetValidationDialog(this));
}
- m_validationDialog->validatedModelSet(simulator, valid, invalid, stopped, msgs);
- const int r = m_validationDialog->exec();
- Q_UNUSED(r);
+ m_validationDialog->show();
}
void SwiftGuiStd::checkDbDataLoaded()
diff --git a/src/swiftguistandard/swiftguistd.h b/src/swiftguistandard/swiftguistd.h
index 8b52c3126..5daf5b27a 100644
--- a/src/swiftguistandard/swiftguistd.h
+++ b/src/swiftguistandard/swiftguistd.h
@@ -272,6 +272,9 @@ private:
//! Model set haas been verfied
void onValidatedModelSet(const BlackMisc::Simulation::CSimulatorInfo &simulator, const BlackMisc::Simulation::CAircraftModelList &valid, const BlackMisc::Simulation::CAircraftModelList &invalid, bool stopped, const BlackMisc::CStatusMessageList &msgs);
+ //! Display validation dialog
+ void displayValidationDialog();
+
//! Ckeck if the DB data have been loaded
void checkDbDataLoaded();
diff --git a/src/swiftguistandard/swiftguistdinit.cpp b/src/swiftguistandard/swiftguistdinit.cpp
index 4529148ad..4529640d2 100644
--- a/src/swiftguistandard/swiftguistdinit.cpp
+++ b/src/swiftguistandard/swiftguistdinit.cpp
@@ -235,10 +235,10 @@ void SwiftGuiStd::initGuiSignals()
connect(sGui, &CGuiApplication::styleSheetsChanged, this, &SwiftGuiStd::onStyleSheetsChanged, Qt::QueuedConnection);
// login
- connect(ui->comp_Login, &CLoginComponent::loginOrLogoffCancelled, this, &SwiftGuiStd::setMainPageToInfoArea);
+ connect(ui->comp_Login, &CLoginComponent::loginOrLogoffCancelled, this, &SwiftGuiStd::setMainPageToInfoArea);
connect(ui->comp_Login, &CLoginComponent::loginOrLogoffSuccessful, this, &SwiftGuiStd::setMainPageToInfoArea);
connect(ui->comp_Login, &CLoginComponent::loginOrLogoffSuccessful, ui->comp_MainInfoArea->getFlightPlanComponent(), &CFlightPlanComponent::loginDataSet);
- connect(ui->comp_Login, &CLoginComponent::loginDataChangedDigest, ui->comp_MainInfoArea->getFlightPlanComponent(), &CFlightPlanComponent::loginDataSet);
+ connect(ui->comp_Login, &CLoginComponent::loginDataChangedDigest, ui->comp_MainInfoArea->getFlightPlanComponent(), &CFlightPlanComponent::loginDataSet);
connect(ui->comp_Login, &CLoginComponent::requestNetworkSettings, [ this ]()
{
if (!sApp || sApp->isShuttingDown()) { return; }
@@ -258,7 +258,8 @@ void SwiftGuiStd::initGuiSignals()
connect(ui->comp_MainInfoArea->getAircraftComponent(), &CAircraftComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab);
connect(ui->comp_MainInfoArea->getUserComponent(), &CUserComponent::requestTextMessageWidget, ui->comp_MainInfoArea->getTextMessageComponent(), &CTextMessageComponent::showCorrespondingTab);
- // interpolation
+ // interpolation and validation
+ connect(ui->comp_MainInfoArea->getMappingComponent(), &CMappingComponent::requestValidationDialog, this, &SwiftGuiStd::displayValidationDialog);
connect(ui->comp_MainInfoArea->getInterpolationComponent(), &CInterpolationComponent::requestRenderingRestrictionsWidget, [ = ]
{
this->setSettingsPage(CSettingsComponent::SettingTabSimulator);