refs #734, added NAVY/MARINES as 2 letter codes

* adjustement for 2 letter codes
* icons
This commit is contained in:
Klaus Basan
2016-08-25 19:18:43 +02:00
committed by Mathew Sutcliffe
parent e8aa873ea0
commit f91cf3bbf3
4 changed files with 12 additions and 2 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1022 B

View File

@@ -147,7 +147,7 @@ namespace BlackMisc
CIcon CAirlineIcaoCode::toIcon() const
{
if (this->m_designator.length() > 2)
if (hasValidDesignator())
{
// relative to images
return CIcon("airlines/" + m_designator.toLower() + ".png", this->convertToQString());
@@ -285,16 +285,23 @@ namespace BlackMisc
bool CAirlineIcaoCode::isValidAirlineDesignator(const QString &airline)
{
// allow 2 chars for IATA
if (airline.length() < 2 || airline.length() > 5) return false;
auto chars = makeRange(airline.begin(), airline.end());
if (chars.containsBy([](QChar c) { return !c.isUpper() && !c.isDigit(); })) { return false; }
return true;
}
QSet<QString> CAirlineIcaoCode::specialValidDesignators()
{
static const QSet<QString> valid({ "VV", "VM"});
return valid;
}
QString CAirlineIcaoCode::normalizeDesignator(const QString candidate)
{
QString n(candidate.trimmed().toUpper());
if (n.contains(' ')) { n = n.left(n.indexOf(' ')); } // cutoff as first space
if (n.contains(' ')) { n = n.left(n.indexOf(' ')); } // cutoff at first space
if (n.isEmpty()) { return n; }
static QThreadStorage<QRegularExpression> tsRegex;

View File

@@ -194,6 +194,9 @@ namespace BlackMisc
//! Valid designator?
static bool isValidAirlineDesignator(const QString &airline);
//! Some special valid designator which do not fit standard rule (e.g. 3-letter code)
static QSet<QString> specialValidDesignators();
//! Normalize string as airline designator
static QString normalizeDesignator(const QString candidate);