Ref T637, allow 3 letter ICAOs in FP

* strict or lenient airport check
* allow to enter 3 letter ICAO codes in FP
This commit is contained in:
Klaus Basan
2019-04-27 20:00:47 +02:00
parent 0eed0f0f00
commit c56775e815
9 changed files with 54 additions and 18 deletions

View File

@@ -123,7 +123,7 @@ namespace BlackGui
if (m_current.isNull())
{
const QString icao = this->getIcaoText();
if (CAirportIcaoCode::isValidIcaoDesignator(icao))
if (CAirportIcaoCode::isValidIcaoDesignator(icao, true))
{
const CAirport airport = sGui->getWebDataServices()->getAirportForIcaoDesignator(icao);
if (!airport.isNull()) { this->setAirport(airport); }

View File

@@ -115,7 +115,7 @@ namespace BlackGui
if (m_current.isNull())
{
const QString icao = this->getIcaoText();
if (CAirportIcaoCode::isValidIcaoDesignator(icao))
if (CAirportIcaoCode::isValidIcaoDesignator(icao, true))
{
const CAirport airport = sGui->getWebDataServices()->getAirportForIcaoDesignator(icao);
if (!airport.isNull()) { this->setAirport(airport); }

View File

@@ -266,7 +266,7 @@ namespace BlackGui
if (!this->canAccessContext()) { return; }
const CAirportIcaoCode icao(airportIcaoCode.isEmpty() ? ui->le_AtcStationsOnlineMetar->text().trimmed().toUpper() : airportIcaoCode.trimmed().toUpper());
ui->le_AtcStationsOnlineMetar->setText(icao.asString());
if (!icao.hasValidIcaoCode()) { return; }
if (!icao.hasValidIcaoCode(true)) { return; }
const CMetar metar(sGui->getIContextNetwork()->getMetarForAirport(icao));
if (metar.hasMessage())
{

View File

@@ -399,6 +399,14 @@ namespace BlackGui
else
{
flightPlan.setDestinationAirportIcao(v);
if (strict && !flightPlan.getDestinationAirportIcao().hasValidIcaoCode(true))
{
messages.push_back(CStatusMessage(this).validationError(u"Invalid destination ICAO code '%1'") << v);
}
else if (!flightPlan.getDestinationAirportIcao().hasValidIcaoCode(false))
{
messages.push_back(CStatusMessage(this).validationWarning(u"Wrong or missing '%1'") << ui->lbl_DestinationAirport->text());
}
}
// origin airport
@@ -411,6 +419,14 @@ namespace BlackGui
else
{
flightPlan.setOriginAirportIcao(v);
if (strict && !flightPlan.getOriginAirportIcao().hasValidIcaoCode(true))
{
messages.push_back(CStatusMessage(this).validationError(u"Invalid origin ICAO code '%1'") << v);
}
else if (!flightPlan.getOriginAirportIcao().hasValidIcaoCode(false))
{
messages.push_back(CStatusMessage(this).validationWarning(u"Wrong or missing '%1'") << ui->lbl_DestinationAirport->text());
}
}
// TAS