refs #273, completed / fixed component

* order, first add items to combobox, then connect signal (->no signals during setup)
* renamed driver to plugin
* improved plugin finding
This commit is contained in:
Klaus Basan
2014-06-28 02:14:46 +02:00
parent 2a9f3d6039
commit 26b999e001
2 changed files with 32 additions and 7 deletions

View File

@@ -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

View File

@@ -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