From 562520dbab6643166261d06ba8f75d9da85d0238 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 20 Jul 2018 18:09:05 +0200 Subject: [PATCH] Simulator selector can be set and remembered --- .../components/dbownmodelscomponent.cpp | 3 ++- .../components/dbownmodelsetcomponent.cpp | 10 ++------ .../components/firstmodelsetcomponent.cpp | 4 ++-- src/blackgui/components/mappingcomponent.cpp | 2 +- .../settingssimulatorbasicscomponent.cpp | 4 ++-- src/blackgui/components/simulatorselector.cpp | 23 ++++++++++++++++--- src/blackgui/components/simulatorselector.h | 6 +++++ 7 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/blackgui/components/dbownmodelscomponent.cpp b/src/blackgui/components/dbownmodelscomponent.cpp index 2124a6c96..f09e64351 100644 --- a/src/blackgui/components/dbownmodelscomponent.cpp +++ b/src/blackgui/components/dbownmodelscomponent.cpp @@ -52,7 +52,8 @@ namespace BlackGui connect(ui->tvp_OwnAircraftModels, &CAircraftModelView::requestUpdate, this, &CDbOwnModelsComponent::requestOwnModelsUpdate); // Last selection isPinned -> no sync needed - const CSimulatorInfo simulator(m_simulatorSelection.get()); + ui->comp_SimulatorSelector->setRememberSelectionAndSetToLastSelection(); + const CSimulatorInfo simulator = ui->comp_SimulatorSelector->getValue(); if (simulator.isSingleSimulator()) { const bool success = this->initModelLoader(simulator); diff --git a/src/blackgui/components/dbownmodelsetcomponent.cpp b/src/blackgui/components/dbownmodelsetcomponent.cpp index 697839bb5..69a0334fd 100644 --- a/src/blackgui/components/dbownmodelsetcomponent.cpp +++ b/src/blackgui/components/dbownmodelsetcomponent.cpp @@ -89,14 +89,8 @@ namespace BlackGui const CSimulatorInfo simulator = m_modelSetLoader.getSimulator(); if (simulator.isSingleSimulator()) { - ui->comp_SimulatorSelector->setValue(simulator); - ui->le_Simulator->setText(simulator.toQString(true)); - const QPointer myself(this); - QTimer::singleShot(500, [ = ]() - { - if (myself.isNull() || !sApp || sApp->isShuttingDown()) { return; } - this->updateViewToCurrentModels(); - }); + this->setSimulator(simulator); + ui->comp_SimulatorSelector->setRememberSelection(true); } } diff --git a/src/blackgui/components/firstmodelsetcomponent.cpp b/src/blackgui/components/firstmodelsetcomponent.cpp index 62412365e..08cc6f2c9 100644 --- a/src/blackgui/components/firstmodelsetcomponent.cpp +++ b/src/blackgui/components/firstmodelsetcomponent.cpp @@ -42,9 +42,9 @@ namespace BlackGui ui(new Ui::CFirstModelSetComponent) { ui->setupUi(this); - ui->comp_SimulatorSelector->setMode(CSimulatorSelector::RadioButtons); - ui->comp_SimulatorSelector->setRememberSelection(true); ui->comp_Distributors->view()->setSelectionMode(QAbstractItemView::MultiSelection); + ui->comp_SimulatorSelector->setMode(CSimulatorSelector::RadioButtons); + ui->comp_SimulatorSelector->setRememberSelectionAndSetToLastSelection(); // we use the powerful component to access own models m_modelsDialog.reset(new CDbOwnModelsDialog(this)); diff --git a/src/blackgui/components/mappingcomponent.cpp b/src/blackgui/components/mappingcomponent.cpp index 573a5507a..5babbaa2b 100644 --- a/src/blackgui/components/mappingcomponent.cpp +++ b/src/blackgui/components/mappingcomponent.cpp @@ -124,7 +124,7 @@ namespace BlackGui this->settingsChanged(); // selector - ui->comp_SimulatorSelector->setRememberSelection(false); + ui->comp_SimulatorSelector->setRememberSelection(false); // pilot client UI ui->comp_SimulatorSelector->setMode(CSimulatorSelector::RadioButtons); this->setSimulatorSelector(); connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, this, &CMappingComponent::onModelSetSimulatorChanged); diff --git a/src/blackgui/components/settingssimulatorbasicscomponent.cpp b/src/blackgui/components/settingssimulatorbasicscomponent.cpp index 3473c5e80..057dc1353 100644 --- a/src/blackgui/components/settingssimulatorbasicscomponent.cpp +++ b/src/blackgui/components/settingssimulatorbasicscomponent.cpp @@ -40,8 +40,8 @@ namespace BlackGui ui->setupUi(this); this->setSmallLayout(true); // no disadvantage, so I always set it ui->comp_SimulatorSelector->setMode(CSimulatorSelector::RadioButtons); - ui->comp_SimulatorSelector->setRememberSelection(true); - ui->comp_SimulatorSelector->setToLastSelection(); + ui->comp_SimulatorSelector->setRememberSelectionAndSetToLastSelection(); + connect(ui->pb_ExcludeFileDialog, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::excludeFileDialog); connect(ui->pb_ModelFileDialog, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::modelFileDialog); connect(ui->pb_SimulatorFileDialog, &QPushButton::clicked, this, &CSettingsSimulatorBasicsComponent::simulatorFileDialog); diff --git a/src/blackgui/components/simulatorselector.cpp b/src/blackgui/components/simulatorselector.cpp index e067ff6b3..78b2bdf54 100644 --- a/src/blackgui/components/simulatorselector.cpp +++ b/src/blackgui/components/simulatorselector.cpp @@ -16,6 +16,7 @@ #include #include #include +#include using namespace BlackMisc::Simulation; @@ -175,6 +176,12 @@ namespace BlackGui ui->hl_CheckBoxes->setContentsMargins(m); } + void CSimulatorSelector::setRememberSelectionAndSetToLastSelection() + { + this->setRememberSelection(true); + this->setToLastSelection(); + } + void CSimulatorSelector::clear() { if (m_mode == CheckBoxes) @@ -225,21 +232,31 @@ namespace BlackGui void CSimulatorSelector::changedLastSelection() { // force decoupled update - QTimer::singleShot(100, this, &CSimulatorSelector::setToLastSelection); + this->triggerSetToLastSelection(); } void CSimulatorSelector::changedLastSelectionRb() { // force decoupled update if (m_mode != RadioButtons) { return; } - QTimer::singleShot(100, this, &CSimulatorSelector::setToLastSelection); + this->triggerSetToLastSelection(); } void CSimulatorSelector::changedLastSelectionCb() { // force decoupled update if (m_mode != CheckBoxes) { return; } - QTimer::singleShot(100, this, &CSimulatorSelector::setToLastSelection); + this->triggerSetToLastSelection(); + } + + void CSimulatorSelector::triggerSetToLastSelection() + { + QPointer myself(this); + QTimer::singleShot(100, this, [ = ] + { + if (!myself) { return; } + this->setToLastSelection(); + }); } } // ns } // ns diff --git a/src/blackgui/components/simulatorselector.h b/src/blackgui/components/simulatorselector.h index 14703ef67..3e7106c18 100644 --- a/src/blackgui/components/simulatorselector.h +++ b/src/blackgui/components/simulatorselector.h @@ -81,6 +81,9 @@ namespace BlackGui //! Remember selection void setRememberSelection(bool remember) { m_rememberSelection = remember; } + //! Remember selection + void setRememberSelectionAndSetToLastSelection(); + //! Is rembering selection? bool isRememberingSelection() const { return m_rememberSelection; } @@ -113,6 +116,9 @@ namespace BlackGui //! Last selection has been changed void changedLastSelectionCb(); + //! Trigger CSimulatorSelector::setToLastSelection + void triggerSetToLastSelection(); + QScopedPointer ui; Mode m_mode = CheckBoxes; bool m_noSelectionMeansAll = false; //!< for filters, no selection means all