From f91cf3bbf3cbc1200099b1f646f08a10a61a96f6 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Thu, 25 Aug 2016 19:18:43 +0200 Subject: [PATCH] refs #734, added NAVY/MARINES as 2 letter codes * adjustement for 2 letter codes * icons --- resources/share/images/airlines/vm.png | Bin 0 -> 956 bytes resources/share/images/airlines/vv.png | Bin 0 -> 1022 bytes src/blackmisc/aviation/airlineicaocode.cpp | 11 +++++++++-- src/blackmisc/aviation/airlineicaocode.h | 3 +++ 4 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 resources/share/images/airlines/vm.png create mode 100644 resources/share/images/airlines/vv.png diff --git a/resources/share/images/airlines/vm.png b/resources/share/images/airlines/vm.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d9d48c88d16773e62221812b1ea8b362d38520 GIT binary patch literal 956 zcmV;t14I0YP)v26%NfN| zB7L)~to=XG%V9mcbg@V~BT(ql@!c>I6_K|eLL9Xb#0FRt^-MyoM$BprSSN>U(8 zHe))Tkld*Sp9h#$<&JZ_*eWKoWbJVcTPT?0S<`W^W>!q}jD;>D!pgwwaP9G{ZyW zYAQ_98 znm-ieBx^6D=5KX(cSobqp2V5`{fu0c`wHc_!F5aj9uMRIEH)o)vyFQ`d=Gad%U`8! zy%}&3YhfRL_pLjWL)jbTcct#}`PR#&A0`;)>$$_4u_MoYV=rMrtIiof|At18VF!Ig zSu$?dw=(Yq!VT6)K9ZZCibp2CUoQNZo0%T`CVN=bcT`}{r+dX0kCH-3xt@ou39)q! z>8HrbH2`%h^~B`eG=BP*1!?H$q%5N-yY9UjjG69M;x-BnCU{o4{>kRC37x-qM>zDk zfAkf7Zmdxx0KoR(*z1SR#ezf=%2!L)V$}sGKrjG!hXnVL0mQQU%(9v;H@ zNdU_T6Xdq|$8Z_VwgG;0m5Oj+j8l3-L<&r?rp98%2xZq4RV~ zJo&2osS(?#OCMjT7c%nYRcb?EG#>rnZ7%Uf{=%5h-&ntLMgBJX&$R6FD`;cbZ#e{N e7BICQxc>`Tt#cH&VkI>I0000g=g{>KhJW-i&ej2{#oED+T!qc5?>b0XN1} z8~{s!jgGS|j|Oa%;M9p@$XXJ~R){)1&g#k>*Tr=VLCkubbYzlDaFjz0eoF1T z_jOlr)4_aX#Yjdr;7Y4ljS@wb4Jex-0)xZ+I2uOZm}aK?Q!v@UWa6df$94tpTCV!4 z{UD5}-@lLIwWAa_(tG&|Mxeg2iE=r{y@6|Nh9zXX2Y||QH!!-l#B71VXrij_B;z;3 z-0iteYil9?ngnGQ1GZu}5#52Fn~yN&03d|ed*Z;j_4dMo8wGvFHiL zoR##2HH@1oS9*6|^FzUkNhhKGd9|rYeEHoq#{8!d;wfIMh~d0HNy>SU4Rx8KidrQ9 z3A)2M5Yl*ZevtXdUtUFdn}lQLZ48O>V;}zW@Z4KHEQIs$IAWx9iJ?H87i$Hoy^@e{ zQMR>=vslK~_yW~sIxBJ+<0*kJI>EPJ+(a>HRJkLRJ6Cz9?KYS1)?}BsvLwpD`3nHV zlSZ1~eS?di-{O_m17+ghYExQ&>!0iCx?RW6Z?0`%vD3FG1bp>gCyQY#UU!6hjCSE=ozyPT03RP~E_E&rPWvT>` z$q-t%kWPb9+G1tZLcT?#cesp5e0!m?PW<;#Oge`TEKuhO;Vp?`Q8cuaL~c%sm8gYz sHJ_hG_A@r;$i@yqOUG7L%11nZ0E9m_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 CAirlineIcaoCode::specialValidDesignators() + { + static const QSet 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 tsRegex; diff --git a/src/blackmisc/aviation/airlineicaocode.h b/src/blackmisc/aviation/airlineicaocode.h index 46f02dc95..775a8939c 100644 --- a/src/blackmisc/aviation/airlineicaocode.h +++ b/src/blackmisc/aviation/airlineicaocode.h @@ -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 specialValidDesignators(); + //! Normalize string as airline designator static QString normalizeDesignator(const QString candidate);