From 4dae61c17187b046b49011b863ddf1b4d34bc948 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 4 Dec 2018 19:33:29 +0100 Subject: [PATCH] Ref T442, ATC station list split per suffix --- src/blackmisc/aviation/atcstationlist.cpp | 20 ++++++++++++++++++++ src/blackmisc/aviation/atcstationlist.h | 5 +++++ 2 files changed, 25 insertions(+) diff --git a/src/blackmisc/aviation/atcstationlist.cpp b/src/blackmisc/aviation/atcstationlist.cpp index 87253879f..4d2741163 100644 --- a/src/blackmisc/aviation/atcstationlist.cpp +++ b/src/blackmisc/aviation/atcstationlist.cpp @@ -138,5 +138,25 @@ namespace BlackMisc stations.sortByAtcSuffixSortOrderAndDistance(); return stations; } + + QHash CAtcStationList::splitPerSuffix(bool sort) const + { + if (this->isEmpty()) { return QHash(); } + const CAtcStationList stations = sort ? this->sortedByAtcSuffixSortOrderAndDistance() : * this; + + QString suffix; + QHash split; + for (const CAtcStation &s : stations) + { + const QString currentSuffix = s.getCallsignSuffix(); + if (suffix != currentSuffix) + { + suffix = currentSuffix; + split[currentSuffix] = CAtcStationList(); + } + split[currentSuffix].push_back(s); + } + return split; + } } // namespace } // namespace diff --git a/src/blackmisc/aviation/atcstationlist.h b/src/blackmisc/aviation/atcstationlist.h index 8549c5241..76cb7c28e 100644 --- a/src/blackmisc/aviation/atcstationlist.h +++ b/src/blackmisc/aviation/atcstationlist.h @@ -24,6 +24,7 @@ #include "blackmisc/variant.h" #include +#include namespace BlackMisc { @@ -81,6 +82,10 @@ namespace BlackMisc //! Sorted by ATC suffix sort order and distance CAtcStationList sortedByAtcSuffixSortOrderAndDistance() const; + + //! Split per suffix + //! \remark sort can be disabled if already sorted + QHash splitPerSuffix(bool sort = true) const; }; } //namespace } // namespace