Ref T118, support multiple model directories

* this was recently discussed https://swift-project.slack.com/archives/C04J6J76N/p1508430536000065
* for config parser already implemented
* for XP the loading from multiple dirs still needs to be implemented (see todo)
This commit is contained in:
Klaus Basan
2017-10-20 00:23:18 +02:00
parent 24802b6f7f
commit 2f0253b3eb
7 changed files with 57 additions and 34 deletions

View File

@@ -11,6 +11,7 @@
#include "blackmisc/aviation/airlineicaocode.h"
#include "blackmisc/aviation/livery.h"
#include "blackmisc/fileutils.h"
#include "blackmisc/directoryutils.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/simulation/aircraftmodelutils.h"
@@ -122,17 +123,16 @@ namespace BlackMisc
if (m_parserWorker) { m_parserWorker->waitForFinished(); }
}
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory)
void CAircraftModelLoaderXPlane::startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QStringList &modelDirectories)
{
//! \todo KB/MS 2017-09 not high prio, but still needed: according to meeting XP needs to support multiple directories
const CSimulatorInfo simulator = this->getSimulator();
const QString modelDirectory(!directory.isEmpty() ? directory : this->getFirstModelDirectoryOrDefault()); // directory
const QStringList modelDirs = this->getInitializedModelDirectories(modelDirectories, simulator);
const QStringList excludedDirectoryPatterns(m_settings.getModelExcludeDirectoryPatternsOrDefault(simulator)); // copy
if (modelDirectory.isEmpty())
if (modelDirs.isEmpty())
{
this->clearCache();
emit loadingFinished(CStatusMessage(this, CStatusMessage::SeverityError, "Model directory '%1' is empty") << modelDirectory, simulator, ParsedData);
emit loadingFinished(CStatusMessage(this, CStatusMessage::SeverityError, "Model directories '%1' are empty") << modelDirectories.join(", "), simulator, ParsedData);
return;
}
@@ -140,8 +140,11 @@ namespace BlackMisc
{
if (m_parserWorker && !m_parserWorker->isFinished()) { return; }
m_parserWorker = BlackMisc::CWorker::fromTask(this, "CAircraftModelLoaderXPlane::performParsing",
[this, modelDirectory, excludedDirectoryPatterns, modelConsolidation]()
[this, modelDirs, excludedDirectoryPatterns, modelConsolidation]()
{
//! \todo KB/MS 2017-09 not high prio, but still needed: according to meeting 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 = performParsing(modelDirectory, excludedDirectoryPatterns);
if (modelConsolidation) { modelConsolidation(models, true); }
return models;

View File

@@ -61,7 +61,7 @@ namespace BlackMisc
protected:
//! \name Interface functions
//! @{
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QString &directory) override;
virtual void startLoadingFromDisk(LoadMode mode, const ModelConsolidation &modelConsolidation, const QStringList &modelDirectories) override;
//! @}
private: