From e3ab9d08c3ee1aa6ba58918fc7877f32ee72f170 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 1 Feb 2017 20:35:44 +0100 Subject: [PATCH] Do not show tiny airfields of FSX --- src/blackmisc/aviation/airporticaocode.cpp | 8 ++++++-- src/blackmisc/aviation/airporticaocode.h | 3 +++ src/plugins/simulator/fsx/simulatorfsxsimconnectproc.cpp | 3 ++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/aviation/airporticaocode.cpp b/src/blackmisc/aviation/airporticaocode.cpp index 106819003..556b3a19f 100644 --- a/src/blackmisc/aviation/airporticaocode.cpp +++ b/src/blackmisc/aviation/airporticaocode.cpp @@ -29,7 +29,7 @@ namespace BlackMisc QString CAirportIcaoCode::unifyAirportCode(const QString &icaoCode) { - QString code = icaoCode.trimmed().toUpper(); + const QString code = icaoCode.trimmed().toUpper(); if (code.length() != 4) return ""; if (containsChar(code, [](QChar c) { return !c.isLetterOrNumber(); })) { return ""; } return code; @@ -37,9 +37,13 @@ namespace BlackMisc bool CAirportIcaoCode::isValidIcaoDesignator(const QString &icaoCode) { - QString icao = unifyAirportCode(icaoCode); + const QString icao = unifyAirportCode(icaoCode); return icao.length() == 4; } + bool CAirportIcaoCode::containsNumbers(const QString &icaoCode) + { + return (containsChar(icaoCode, [](QChar c) { return c.isDigit(); })); + } } // namespace } // namespace diff --git a/src/blackmisc/aviation/airporticaocode.h b/src/blackmisc/aviation/airporticaocode.h index 9244aea01..39b5440e9 100644 --- a/src/blackmisc/aviation/airporticaocode.h +++ b/src/blackmisc/aviation/airporticaocode.h @@ -57,6 +57,9 @@ namespace BlackMisc //! Valid ICAO designator static bool isValidIcaoDesignator(const QString &icaoCode); + //! Containing numbers (normally indicator for small airfield/strip) + static bool containsNumbers(const QString &icaoCode); + //! \copydoc BlackMisc::Mixin::String::toQString() QString convertToQString(bool i18n = false) const; diff --git a/src/plugins/simulator/fsx/simulatorfsxsimconnectproc.cpp b/src/plugins/simulator/fsx/simulatorfsxsimconnectproc.cpp index d7d035a71..146cf88ec 100644 --- a/src/plugins/simulator/fsx/simulatorfsxsimconnectproc.cpp +++ b/src/plugins/simulator/fsx/simulatorfsxsimconnectproc.cpp @@ -267,7 +267,8 @@ namespace BlackSimPlugin if (!pFacilityAirport) { break; } const QString icao(pFacilityAirport->Icao); if (icao.isEmpty()) { continue; } // airfield without ICAO code - if (!CAirportIcaoCode::isValidIcaoDesignator(icao)) { continue; } // tiny airfields in simulator + if (!CAirportIcaoCode::isValidIcaoDesignator(icao)) { continue; } // tiny airfields/strips in simulator + if (CAirportIcaoCode::containsNumbers(icao)) { continue; } // tiny airfields/strips in simulator const CCoordinateGeodetic pos(pFacilityAirport->Latitude, pFacilityAirport->Longitude, pFacilityAirport->Altitude); CAirport airport(CAirportIcaoCode(icao), pos); const CLength d = airport.calculcateAndUpdateRelativeDistanceAndBearing(posAircraft);