From 0002752fa662754935664088c8ba1d6c1a9b8127 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 26 Nov 2018 06:19:19 +0100 Subject: [PATCH] Ref T441, find model string duplicates --- .../simulation/aircraftmodellist.cpp | 32 ++++++++++++++++++- src/blackmisc/simulation/aircraftmodellist.h | 7 ++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index b81c7c3ca..3b67833ed 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include using namespace BlackMisc::Network; @@ -349,6 +348,37 @@ namespace BlackMisc }); } + CAircraftModelList CAircraftModelList::findDuplicateModelStrings() const + { + const QMap modelStrings = this->countPerModelString(); + CAircraftModelList duplicates; + for (const QString &ms : modelStrings.keys()) + { + if (modelStrings[ms] > 1) + { + duplicates.push_back(this->findByModelString(ms, Qt::CaseInsensitive)); + } + } + return duplicates; + } + + QMap CAircraftModelList::countPerModelString() const + { + QMap modelStrings; + for (const CAircraftModel &model : *this) + { + if (modelStrings.contains(model.getModelString())) + { + modelStrings[model.getModelModeAsString()]++; + } + else + { + modelStrings[model.getModelModeAsString()] = 1; + } + } + return modelStrings; + } + 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 16f279914..6ffd5e09e 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -32,6 +32,7 @@ #include #include #include +#include namespace BlackMisc { @@ -205,6 +206,9 @@ namespace BlackMisc //! Find models where the filename is set and the file exists CAircraftModelList findModelsWithExistingFile() const; + //! Find duplicate model strings and return those models with at least 1 duplicate model string + CAircraftModelList findDuplicateModelStrings() const; + //! All models of the FS (FSX, P3D, FS9) family CAircraftModelList getAllFsFamilyModels() const; @@ -285,6 +289,9 @@ namespace BlackMisc //! Simulator counts CCountPerSimulator countPerSimulator() const; + //! Model strings plus count + QMap countPerModelString() const; + //! Which simulator(s) have the most entries? CSimulatorInfo simulatorsWithMaxEntries() const;