diff --git a/src/blackmisc/sequence.h b/src/blackmisc/sequence.h index 35c47b94a..89b74ba16 100644 --- a/src/blackmisc/sequence.h +++ b/src/blackmisc/sequence.h @@ -155,6 +155,9 @@ namespace BlackMisc //! Avoid compiler warnings when using with int int sizeInt() const { return static_cast(this->size()); } + //! Convenience function + QString sizeString() const { return QString::number(m_impl.size()); } + //! Returns true if the sequence is empty. bool empty() const { return m_impl.isEmpty(); } @@ -412,7 +415,8 @@ namespace BlackMisc } //! Reversed order - CSequence reversed() const { + CSequence reversed() const + { CSequence result = *this; result.reverse(); return result; diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 5e5273256..f2cd143f7 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -525,6 +525,34 @@ namespace BlackMisc return icaos; } + QMap CAircraftModelList::countPerAirlineIcao() const + { + QMap icaos; + for (const CAircraftModel &model : *this) + { + if (!model.hasAirlineDesignator()) { continue; } + if (icaos.contains(model.getAirlineIcaoCode())) + { + icaos[model.getAirlineIcaoCode()]++; + } + else + { + icaos[model.getAirlineIcaoCode()] = 1; + } + } + return icaos; + } + + CAirlineIcaoCode CAircraftModelList::getAirlineWithMaxCount() const + { + const QMap ac = this->countPerAirlineIcao(); + if (ac.size() < 1) { return {}; } + if (ac.size() == 1) { return ac.firstKey(); } + const QList values = ac.values(); + const int max = *std::max_element(values.begin(), values.end()); + return ac.key(max); + } + QString CAircraftModelList::findModelIconPathByModelString(const QString &modelString) const { if (modelString.isEmpty()) { return {}; } diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index 13b1245a2..34e3cbba5 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -364,6 +364,12 @@ namespace BlackMisc //! Aircraft ICAO plus count QMap countPerAircraftIcao() const; + //! Airline ICAO plus count + QMap countPerAirlineIcao() const; + + //! The airline with the max count + Aviation::CAirlineIcaoCode getAirlineWithMaxCount() const; + //! Which simulator(s) have the most entries? CSimulatorInfo simulatorsWithMaxEntries() const;