diff --git a/src/blackgui/settingssimulatorcomponent.cpp b/src/blackgui/settingssimulatorcomponent.cpp index 03914c13c..ce2d419bc 100644 --- a/src/blackgui/settingssimulatorcomponent.cpp +++ b/src/blackgui/settingssimulatorcomponent.cpp @@ -21,9 +21,6 @@ namespace BlackGui ui(new Ui::CSettingsSimulatorComponent) { ui->setupUi(this); - bool connected = this->connect(this->ui->cb_SimulatorDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(driverHasChanged(int))); - Q_ASSERT(connected); - Q_UNUSED(connected); } CSettingsSimulatorComponent::~CSettingsSimulatorComponent() @@ -36,16 +33,24 @@ namespace BlackGui Q_ASSERT(this->getIContextSimulator()); if (this->getIContextSimulator()) { - QStringList drivers = this->getIContextSimulator()->getAvailableSimulatorPlugins().toStringList(true); - this->ui->cb_SimulatorDriver->addItems(drivers); + QStringList plugins = this->getIContextSimulator()->getAvailableSimulatorPlugins().toStringList(true); + CSimulatorInfo currentDriver = this->getIContextSimulator()->getSimulatorInfo(); + this->ui->cb_SimulatorDriver->addItems(plugins); + this->setCurrentPlugin(currentDriver); + // disable / enable driver specific GUI parts bool fsxDriver = this->getIContextSimulator()->getAvailableSimulatorPlugins().supportsSimulator(CSimulatorInfo::FSX()); this->ui->comp_SettingsSimulatorFsx->setVisible(fsxDriver); + + // only with set GUI values + bool connected = this->connect(this->ui->cb_SimulatorDriver, SIGNAL(currentIndexChanged(int)), this, SLOT(pluginHasChanged(int))); + Q_ASSERT(connected); + Q_UNUSED(connected); } } - void CSettingsSimulatorComponent::driverHasChanged(int index) + void CSettingsSimulatorComponent::pluginHasChanged(int index) { Q_ASSERT(this->getIContextSimulator()); Q_ASSERT(this->getIContextSettings()); @@ -71,4 +76,20 @@ namespace BlackGui ); } + void CSettingsSimulatorComponent::setCurrentPlugin(const CSimulatorInfo &driver) + { + if (driver.isUnspecified()) return; + const QString searchFor = driver.getShortName(); + for (int i = 0; i < this->ui->cb_SimulatorDriver->count(); ++i) + { + const QString t = ui->cb_SimulatorDriver->itemText(i); + if (t.indexOf(searchFor, 0, Qt::CaseInsensitive) >= 0) + { + if (i == this->ui->cb_SimulatorDriver->currentIndex()) return; + this->ui->cb_SimulatorDriver->setCurrentIndex(i); + break; + } + } + } + } // namespace diff --git a/src/blackgui/settingssimulatorcomponent.h b/src/blackgui/settingssimulatorcomponent.h index 25ebe34b5..982bcb836 100644 --- a/src/blackgui/settingssimulatorcomponent.h +++ b/src/blackgui/settingssimulatorcomponent.h @@ -28,10 +28,14 @@ namespace BlackGui private slots: //! Driver changed - void driverHasChanged(int index); + void pluginHasChanged(int index); private: Ui::CSettingsSimulatorComponent *ui; //!< UI + + //! Smarter way to set current driver, avoids unnecessary signals and less formatting dependend + void setCurrentPlugin(const BlackSim::CSimulatorInfo &driver); + }; } // namespace