From 6ea8d164601e51bb92dc5b9604a0486d42b3a823 Mon Sep 17 00:00:00 2001 From: Roland Rossgotterer Date: Thu, 31 Jan 2019 09:02:14 +0100 Subject: [PATCH] Fix CAircraftModelLoaderXPlane::performParsing to accept multiple dirs This implements an old todo from KB. --- .../xplane/aircraftmodelloaderxplane.cpp | 17 ++++++++--------- .../xplane/aircraftmodelloaderxplane.h | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp index 7ca9e59e4..a06549bad 100644 --- a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp +++ b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.cpp @@ -120,10 +120,7 @@ namespace BlackMisc m_parserWorker = CWorker::fromTask(this, "CAircraftModelLoaderXPlane::performParsing", [this, modelDirs, excludedDirectoryPatterns, modelConsolidation]() { - //! \todo KB/MS 2017-09 not high prio, but still needed: according to meet XP needs to support multiple directories - //! \todo KB with T118 now model directories are passed (changed signatures) but the code below needs to support multiple dirs - const QString modelDirectory = modelDirs.front(); - auto models = this->performParsing(modelDirectory, excludedDirectoryPatterns); + auto models = this->performParsing(modelDirs, excludedDirectoryPatterns); if (modelConsolidation) { modelConsolidation(models, true); } return models; }); @@ -136,7 +133,7 @@ namespace BlackMisc else if (mode.testFlag(LoadDirectly)) { emit this->diskLoadingStarted(simulator, mode); - CAircraftModelList models(this->performParsing(this->getFirstModelDirectoryOrDefault(), excludedDirectoryPatterns)); + CAircraftModelList models(this->performParsing(modelDirs, excludedDirectoryPatterns)); this->updateInstalledModels(models); } } @@ -161,12 +158,14 @@ namespace BlackMisc return std::move(modelName).trimmed(); } - CAircraftModelList CAircraftModelLoaderXPlane::performParsing(const QString &rootDirectory, const QStringList &excludeDirectories) + CAircraftModelList CAircraftModelLoaderXPlane::performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories) { CAircraftModelList allModels; - allModels.push_back(parseCslPackages(CXPlaneUtil::xswiftbusLegacyDir(rootDirectory), excludeDirectories)); - allModels.push_back(parseCslPackages(rootDirectory, excludeDirectories)); - allModels.push_back(parseFlyableAirplanes(rootDirectory, excludeDirectories)); + for (const QString &rootDirectory : rootDirectories) + { + allModels.push_back(parseCslPackages(rootDirectory, excludeDirectories)); + allModels.push_back(parseFlyableAirplanes(rootDirectory, excludeDirectories)); + } return allModels; } diff --git a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.h b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.h index 9c124df9b..3b44cf86e 100644 --- a/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.h +++ b/src/blackmisc/simulation/xplane/aircraftmodelloaderxplane.h @@ -98,7 +98,7 @@ namespace BlackMisc QVector planes; }; - CAircraftModelList performParsing(const QString &rootDirectory, const QStringList &excludeDirectories); + CAircraftModelList performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories); CAircraftModelList parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories); CAircraftModelList parseCslPackages(const QString &rootDirectory, const QStringList &excludeDirectories);