mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 16:56:53 +08:00
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:
@@ -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); }
|
||||
|
||||
@@ -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); }
|
||||
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -61,32 +61,38 @@ namespace BlackGui
|
||||
|
||||
// shortcuts
|
||||
QShortcut *filter = new QShortcut(CShortcut::keyDisplayFilter(), this);
|
||||
connect(filter, &QShortcut::activated, this, &CViewBaseNonTemplate::displayFilterDialog);
|
||||
bool s = connect(filter, &QShortcut::activated, this, &CViewBaseNonTemplate::displayFilterDialog);
|
||||
Q_ASSERT_X(s, Q_FUNC_INFO, "Shortcut");
|
||||
filter->setObjectName("Filter shortcut for " + this->objectName());
|
||||
filter->setContext(Qt::WidgetShortcut);
|
||||
|
||||
QShortcut *clearSelection = new QShortcut(CShortcut::keyClearSelection(), this);
|
||||
connect(clearSelection, &QShortcut::activated, this, &CViewBaseNonTemplate::clearSelection);
|
||||
s = connect(clearSelection, &QShortcut::activated, this, &CViewBaseNonTemplate::clearSelection);
|
||||
Q_ASSERT_X(s, Q_FUNC_INFO, "Shortcut");
|
||||
clearSelection->setObjectName("Clear selection shortcut for " + this->objectName());
|
||||
clearSelection->setContext(Qt::WidgetShortcut);
|
||||
|
||||
QShortcut *saveJson = new QShortcut(CShortcut::keySaveViews(), this);
|
||||
connect(saveJson, &QShortcut::activated, this, &CViewBaseNonTemplate::saveJsonAction);
|
||||
s = connect(saveJson, &QShortcut::activated, this, &CViewBaseNonTemplate::saveJsonAction);
|
||||
Q_ASSERT_X(s, Q_FUNC_INFO, "Shortcut");
|
||||
saveJson->setObjectName("Save JSON for " + this->objectName());
|
||||
saveJson->setContext(Qt::WidgetShortcut);
|
||||
|
||||
QShortcut *deleteRow = new QShortcut(CShortcut::keyDelete(), this);
|
||||
connect(deleteRow, &QShortcut::activated, this, &CViewBaseNonTemplate::removeSelectedRowsChecked);
|
||||
s = connect(deleteRow, &QShortcut::activated, this, &CViewBaseNonTemplate::removeSelectedRowsChecked);
|
||||
Q_ASSERT_X(s, Q_FUNC_INFO, "Shortcut");
|
||||
deleteRow->setObjectName("Remove selected rows for " + this->objectName());
|
||||
deleteRow->setContext(Qt::WidgetShortcut);
|
||||
|
||||
QShortcut *copy = new QShortcut(CShortcut::keyCopy(), this);
|
||||
connect(copy, &QShortcut::activated, this, &CViewBaseNonTemplate::copy);
|
||||
s = connect(copy, &QShortcut::activated, this, &CViewBaseNonTemplate::copy);
|
||||
Q_ASSERT_X(s, Q_FUNC_INFO, "Shortcut");
|
||||
copy->setObjectName("Copy selection shortcut for " + this->objectName());
|
||||
copy->setContext(Qt::WidgetShortcut);
|
||||
|
||||
QShortcut *resize = new QShortcut(CShortcut::keyResizeView(), this);
|
||||
connect(resize, &QShortcut::activated, this, &CViewBaseNonTemplate::resizeToContents);
|
||||
s = connect(resize, &QShortcut::activated, this, &CViewBaseNonTemplate::fullResizeToContents);
|
||||
Q_ASSERT_X(s, Q_FUNC_INFO, "Shortcut");
|
||||
resize->setObjectName("Resize view shortcut for " + this->objectName());
|
||||
resize->setContext(Qt::WidgetShortcut);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user