refs #395, improved snapshot handling

* disabled sets distance and max.aircraft to 0
* fixed changed snapshot detection
* added rendering enabled to signal, only one function to decide (instead of duplicated logic)
This commit is contained in:
Klaus Basan
2015-05-28 04:04:28 +02:00
parent 718b10d9f6
commit d8d0eca3d8
13 changed files with 86 additions and 62 deletions

View File

@@ -98,13 +98,19 @@ namespace BlackGui
// time sync
this->ui->cb_TimeSync->setEnabled(m_pluginLoaded);
this->ui->le_TimeSyncOffset->setEnabled(m_pluginLoaded);
this->ui->sb_MaxDistance->setEnabled(m_pluginLoaded);
this->ui->sb_MaxAircraft->setEnabled(m_pluginLoaded);
this->ui->pb_ApplyTimeSync->setEnabled(m_pluginLoaded);
// led
this->ui->led_RestrictedRendering->setOn(m_pluginLoaded ? getIContextSimulator()->isRenderingRestricted() : false);
this->ui->lbl_RestrictionText->setText(m_pluginLoaded ? getIContextSimulator()->getRenderRestrictionText() : "");
this->ui->sb_MaxDistance->setEnabled(m_pluginLoaded);
this->ui->sb_MaxAircraft->setEnabled(m_pluginLoaded);
this->ui->pb_ApplyMaxAircraft->setEnabled(m_pluginLoaded);
this->ui->pb_ApplyMaxDistance->setEnabled(m_pluginLoaded);
this->ui->pb_ClearRestrictedRendering->setEnabled((m_pluginLoaded));
this->ui->pb_DisableRendering->setEnabled(m_pluginLoaded);
if (m_pluginLoaded)
{
bool timeSynced = this->getIContextSimulator()->isTimeSynchronized();
@@ -112,14 +118,15 @@ namespace BlackGui
CTime timeOffset = this->getIContextSimulator()->getTimeSynchronizationOffset();
this->ui->le_TimeSyncOffset->setText(timeOffset.formattedHrsMin());
int distanceBoundaryNM = getIContextSimulator()->getRenderedDistanceBoundary().valueInteger(CLengthUnit::NM());
this->ui->sb_MaxDistance->setMaximum(distanceBoundaryNM);
this->ui->sb_MaxAircraft->setValue(getIContextSimulator()->getMaxRenderedAircraft());
int maxAircraft = getIContextSimulator()->getMaxRenderedAircraft();
this->ui->sb_MaxAircraft->setValue(maxAircraft);
CLength distanceBoundary(getIContextSimulator()->getRenderedDistanceBoundary());
int distanceBoundaryNM = distanceBoundary.valueInteger(CLengthUnit::NM());
CLength maxDistance(getIContextSimulator()->getMaxRenderedDistance());
int distanceNM = maxDistance.isNull() ? distanceBoundaryNM : maxDistance.valueInteger(CLengthUnit::NM());
this->ui->sb_MaxDistance->setMaximum(distanceBoundaryNM);
this->ui->sb_MaxDistance->setValue(distanceNM);
this->ui->led_RenderingEnabled->setOn(getIContextSimulator()->isRenderingEnabled());
}
else
@@ -132,7 +139,7 @@ namespace BlackGui
{
Q_ASSERT(this->getIContextSimulator());
Q_ASSERT(this->getIContextSettings());
if (!this->getIContextSimulator() || !this->getIContextSettings()) return;
if (!this->getIContextSimulator() || !this->getIContextSettings()) { return; }
CSimulatorPluginInfoList simDrivers = this->getIContextSimulator()->getAvailableSimulatorPlugins();
simDrivers.insert(simDrivers.begin(), CSimulatorPluginInfo());
@@ -171,9 +178,13 @@ namespace BlackGui
// get initial aircraft to render
int noRequested = this->ui->sb_MaxAircraft->value();
int oldValue = this->getIContextSimulator()->getMaxRenderedAircraft();
if (oldValue == noRequested) { return; }
// set value
this->getIContextSimulator()->setMaxRenderedAircraft(noRequested);
// real value
// re-read real value
int noRendered = this->getIContextSimulator()->getMaxRenderedAircraft();
if (noRequested == noRendered)
{
@@ -189,14 +200,22 @@ namespace BlackGui
void CSettingsSimulatorComponent::ps_onApplyMaxRenderedDistance()
{
Q_ASSERT(getIContextSimulator());
Q_ASSERT_X(getIContextSimulator(), Q_FUNC_INFO, "missing context");
// get initial aircraft to render
int maxDistanceNM = this->ui->sb_MaxDistance->value();
CLength distance(maxDistanceNM, CLengthUnit::NM());
this->getIContextSimulator()->setMaxRenderedDistance(distance);
CLogMessage(this).info("Max.distance requested: %1") << distance.valueRoundedWithUnit(2, true);
this->setGuiValues();
CLength currentDistance(this->getIContextSimulator()->getMaxRenderedDistance());
if (maxDistanceNM == currentDistance.valueInteger(CLengthUnit::NM()))
{
return;
}
else
{
CLength distance(maxDistanceNM, CLengthUnit::NM());
CLogMessage(this).info("Max.distance requested: %1") << distance.valueRoundedWithUnit(2, true);
this->getIContextSimulator()->setMaxRenderedDistance(distance);
this->setGuiValues();
}
}
void CSettingsSimulatorComponent::ps_onApplyDisableRendering()
@@ -246,14 +265,13 @@ namespace BlackGui
m_pluginLoaded = true;
this->ui->comp_SettingsSimulatorFsx->setVisible(hasFsxDriver);
this->ui->lbl_PluginInfo->setText(info.getDescription());
this->setGuiValues();
}
else
{
m_pluginLoaded = false;
this->ui->lbl_PluginInfo->setText("No plugin loaded");
this->setGuiValues();
}
this->setGuiValues();
}
}