From 58cfdd1bb9017b6dc9a8979ef82332f2329761a4 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 5 Jan 2019 12:18:14 +0100 Subject: [PATCH] Ref T492, alias in model lists and model Search for alias and modelstring in matching --- src/blackcore/aircraftmatcher.cpp | 2 +- .../context/contextsimulatorimpl.cpp | 2 +- src/blackcore/db/databaseutils.cpp | 6 +++--- .../models/aircraftmodellistmodel.cpp | 2 +- .../simulation/aircraftmodellist.cpp | 19 +++++++++++++++++++ src/blackmisc/simulation/aircraftmodellist.h | 6 ++++++ 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/blackcore/aircraftmatcher.cpp b/src/blackcore/aircraftmatcher.cpp index 2668c22ff..d37eb49a9 100644 --- a/src/blackcore/aircraftmatcher.cpp +++ b/src/blackcore/aircraftmatcher.cpp @@ -991,7 +991,7 @@ namespace BlackCore return CAircraftModel(); } - CAircraftModel model = models.findFirstByModelStringOrDefault(remoteAircraft.getModelString()); + CAircraftModel model = models.findFirstByModelStringAliasOrDefault(remoteAircraft.getModelString()); if (log) { if (model.hasModelString()) diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index 74fa1a272..a572d7f82 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -748,7 +748,7 @@ namespace BlackCore // load from file CStatusMessage msg; - const CAircraftModel model(this->getModelSet().findFirstByModelStringOrDefault(modelString)); + const CAircraftModel model(this->getModelSet().findFirstByModelStringAliasOrDefault(modelString)); const CPixmap pm(model.loadIcon(msg)); if (!msg.isEmpty()) { CLogMessage::preformatted(msg);} return pm; diff --git a/src/blackcore/db/databaseutils.cpp b/src/blackcore/db/databaseutils.cpp index 6729eb40f..039930c54 100644 --- a/src/blackcore/db/databaseutils.cpp +++ b/src/blackcore/db/databaseutils.cpp @@ -186,7 +186,7 @@ namespace BlackCore removedModelStrings.push_back(ms); continue; } - CAircraftModel consolidated = simulatorModels.findFirstByModelStringOrDefault(ms); + CAircraftModel consolidated = simulatorModels.findFirstByModelStringAliasOrDefault(ms); if (consolidated.hasModelString()) { CDatabaseUtils::consolidateModelWithDbData(consolidated, true); @@ -237,7 +237,7 @@ namespace BlackCore if (ms.isEmpty()) { continue; } if (!dbModelsModelStrings.contains(ms)) { continue; } bool modified = false; - const CAircraftModel consolidated = CDatabaseUtils::consolidateModelWithDbData(model, dbModels.findFirstByModelStringOrDefault(ms), force, &modified); + const CAircraftModel consolidated = CDatabaseUtils::consolidateModelWithDbData(model, dbModels.findFirstByModelStringAliasOrDefault(ms), force, &modified); if (!modified) { continue; } model = consolidated; c++; @@ -327,7 +327,7 @@ namespace BlackCore if (ownModel.matchesSimulatorFlag(CSimulatorInfo::XPLANE)) { continue; } // in DB - CAircraftModel dbModel = dbFsFamilyModels.findFirstByModelStringOrDefault(ownModel.getModelString()); + CAircraftModel dbModel = dbFsFamilyModels.findFirstByModelStringAliasOrDefault(ownModel.getModelString()); if (!dbModel.isLoadedFromDb()) { continue; } // update simulator and add diff --git a/src/blackgui/models/aircraftmodellistmodel.cpp b/src/blackgui/models/aircraftmodellistmodel.cpp index c140c6d8b..52cf26cef 100644 --- a/src/blackgui/models/aircraftmodellistmodel.cpp +++ b/src/blackgui/models/aircraftmodellistmodel.cpp @@ -112,7 +112,7 @@ namespace BlackGui case Database: m_columns.addColumn(CColumn::standardString("id", CAircraftModel::IndexDbIntegerKey, CDefaultFormatter::alignRightVCenter())); - m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString)); + m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexAllModelStrings)); m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter())); m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey})); diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index 775a4ab2a..31d2b43c6 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -114,6 +114,15 @@ namespace BlackMisc }); } + CAircraftModel CAircraftModelList::findFirstByModelStringAliasOrDefault(const QString &modelString, Qt::CaseSensitivity sensitivity) const + { + if (modelString.isEmpty()) { return CAircraftModel(); } + return this->findFirstByOrDefault([ & ](const CAircraftModel & model) + { + return model.matchesModelStringOrAlias(modelString, sensitivity); + }); + } + CAircraftModel CAircraftModelList::findFirstByCallsignOrDefault(const CCallsign &callsign) const { if (callsign.isEmpty()) { return CAircraftModel(); } @@ -817,6 +826,16 @@ namespace BlackMisc return this->getCombinedTypes().size(); } + int CAircraftModelList::countAliases() const + { + int count = 0; + for (const CAircraftModel &model : (*this)) + { + if (model.hasModelStringAlias()) { count++; } + } + return count; + } + void CAircraftModelList::updateDistributor(const CDistributor &distributor) { for (CAircraftModel &model : *this) diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index f14ccba5b..234a526a4 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -113,6 +113,9 @@ namespace BlackMisc //! Find first by model string CAircraftModel findFirstByModelStringOrDefault(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const; + //! Find first by model string + CAircraftModel findFirstByModelStringAliasOrDefault(const QString &modelString, Qt::CaseSensitivity sensitivity = Qt::CaseInsensitive) const; + //! Find first by callsign CAircraftModel findFirstByCallsignOrDefault(const Aviation::CCallsign &callsign) const; @@ -323,6 +326,9 @@ namespace BlackMisc //! Count different combined types int countCombinedTypes() const; + //! Models with aliases + int countAliases() const; + //! Update distributor, all models in list are set to given distributor void updateDistributor(const CDistributor &distributor);