From 213ca4274dcea30db3189bced65649bfe135f68b Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 22 May 2019 00:47:21 +0200 Subject: [PATCH] Airline group functions --- .../simulation/aircraftmodellist.cpp | 24 +++++++++++++++++++ src/blackmisc/simulation/aircraftmodellist.h | 9 +++++++ src/blackmisc/stringutils.cpp | 8 +++++++ src/blackmisc/stringutils.h | 3 +++ 4 files changed, 44 insertions(+) diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index ae56b1a00..60e165c58 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -1131,6 +1131,30 @@ namespace BlackMisc return designators; } + CAirlineIcaoCodeList CAircraftModelList::getAirlineIcaoCodesForGroup(int groupId) const + { + if (groupId < 0) { return {}; } + CAirlineIcaoCodeList icaos; + for (const CAircraftModel &model : *this) + { + if (model.getAirlineIcaoCode().getGroupId() == groupId) + { + icaos.push_back(model.getAirlineIcaoCode()); + } + } + return icaos; + } + + QSet CAircraftModelList::getAirlineDesignatorsForGroup(int groupId) const + { + return this->getAirlineIcaoCodesForGroup(groupId).allDesignators(); + } + + QSet CAircraftModelList::getAirlineVDesignatorsForGroup(int groupId) const + { + return this->getAirlineIcaoCodesForGroup(groupId).allVDesignators(); + } + QSet CAircraftModelList::getCombinedTypes() const { QSet combinedCodes; diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index 5f7b6312b..a522e2747 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -418,6 +418,15 @@ namespace BlackMisc //! Airline virtual designators QSet getAirlineVDesignators() const; + //! Airline ICAO codes for given group, without duplicates + Aviation::CAirlineIcaoCodeList getAirlineIcaoCodesForGroup(int groupId) const; + + //! Airline designators + QSet getAirlineDesignatorsForGroup(int groupId) const; + + //! Airline virtual designators + QSet getAirlineVDesignatorsForGroup(int groupId) const; + //! All combined types QSet getCombinedTypes() const; diff --git a/src/blackmisc/stringutils.cpp b/src/blackmisc/stringutils.cpp index efc8de61a..098389234 100644 --- a/src/blackmisc/stringutils.cpp +++ b/src/blackmisc/stringutils.cpp @@ -392,6 +392,8 @@ namespace BlackMisc QString joinStringSet(const QSet &set, const QString &separator) { + if (set.isEmpty()) { return {}; } + if (set.size() == 1) { return *set.begin(); } return set.toList().join(separator); } @@ -446,6 +448,12 @@ namespace BlackMisc return copy; } + const QString &defaultIfEmpty(const QString &candidate, const QString &defaultIfEmpty) + { + if (candidate.isEmpty()) { return defaultIfEmpty; } + return candidate; + } + } // ns //! \endcond diff --git a/src/blackmisc/stringutils.h b/src/blackmisc/stringutils.h index 9713c68ed..3c4876839 100644 --- a/src/blackmisc/stringutils.h +++ b/src/blackmisc/stringutils.h @@ -292,6 +292,9 @@ namespace BlackMisc //! Remove comments such as /** **/ or // BLACKMISC_EXPORT QString removeComments(const QString &in, bool removeSlash, bool removeDoubleSlash); + //! Default string if string is empty + BLACKMISC_EXPORT const QString &defaultIfEmpty(const QString &candidate, const QString &defaultIfEmpty); + namespace Mixin { /*!