mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-14 00:25:35 +08:00
Ref T129, some more utility functions for aviation value objects
* removed static variables from SELCAL * more finder functions for airline ICAO list * check for IATA code * unify callsign now public
This commit is contained in:
committed by
Mathew Sutcliffe
parent
686cb03170
commit
3fb2f88032
@@ -36,13 +36,19 @@ namespace BlackMisc
|
||||
|
||||
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByIataCode(const QString &iata) const
|
||||
{
|
||||
if (iata.isEmpty()) { return CAirlineIcaoCodeList(); }
|
||||
if (!CAirlineIcaoCode::isValidIataCode(iata)) { return CAirlineIcaoCodeList(); }
|
||||
return this->findBy([&](const CAirlineIcaoCode & code)
|
||||
{
|
||||
return code.matchesIataCode(iata);
|
||||
});
|
||||
}
|
||||
|
||||
CAirlineIcaoCode CAirlineIcaoCodeList::findByUniqueIataCodeOrDefault(const QString &iata) const
|
||||
{
|
||||
const CAirlineIcaoCodeList codes = this->findByIataCode(iata);
|
||||
return codes.size() == 1 ? codes.front() : CAirlineIcaoCode();
|
||||
}
|
||||
|
||||
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByDesignatorOrIataCode(const QString &designatorOrIata) const
|
||||
{
|
||||
if (designatorOrIata.isEmpty()) { return CAirlineIcaoCodeList(); }
|
||||
@@ -61,6 +67,16 @@ namespace BlackMisc
|
||||
});
|
||||
}
|
||||
|
||||
CAirlineIcaoCode CAirlineIcaoCodeList::findByUniqueVDesignatorOrDefault(const QString &designator, bool preferOperatingAirlines) const
|
||||
{
|
||||
CAirlineIcaoCodeList codes = this->findByVDesignator(designator);
|
||||
if (codes.size() > 1 && preferOperatingAirlines)
|
||||
{
|
||||
codes.removeIf(&CAirlineIcaoCode::isOperating, false);
|
||||
}
|
||||
return codes.size() == 1 ? codes.front() : CAirlineIcaoCode();
|
||||
}
|
||||
|
||||
CAirlineIcaoCodeList CAirlineIcaoCodeList::findByVDesignatorOrIataCode(const QString &designatorOrIata) const
|
||||
{
|
||||
if (designatorOrIata.isEmpty()) { return CAirlineIcaoCodeList(); }
|
||||
@@ -262,5 +278,12 @@ namespace BlackMisc
|
||||
if (designator.isEmpty()) { return false; }
|
||||
return this->contains(&CAirlineIcaoCode::getDesignator, designator.toUpper());
|
||||
}
|
||||
|
||||
bool CAirlineIcaoCodeList::containsVDesignator(const QString &vDesignator) const
|
||||
{
|
||||
if (vDesignator.isEmpty()) { return false; }
|
||||
if (vDesignator.length() < 4) { return this->containsDesignator(vDesignator); }
|
||||
return this->contains(&CAirlineIcaoCode::getVDesignator, vDesignator.toUpper());
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
Reference in New Issue
Block a user