Cleaned up FG model loader

This commit is contained in:
Lars Toenning
2019-02-09 15:15:36 +01:00
committed by Mat Sutcliffe
parent 0fa989c2f1
commit a84eb1b156
2 changed files with 23 additions and 9 deletions

View File

@@ -18,12 +18,15 @@ namespace BlackMisc{
void AircraftModelLoaderFlightgear::updateInstalledModels(const CAircraftModelList &models) void AircraftModelLoaderFlightgear::updateInstalledModels(const CAircraftModelList &models)
{ {
this->setModelsForSimulator(models, CSimulatorInfo::fg()); this->setModelsForSimulator(models, CSimulatorInfo::fg());
const CStatusMessage m = CStatusMessage(this, CStatusMessage::SeverityInfo, u"XPlane updated '%1' models") << models.size(); const CStatusMessage m = CStatusMessage(this, CStatusMessage::SeverityInfo, u"Flightgear updated '%1' models") << models.size();
m_loadingMessages.push_back(m); m_loadingMessages.push_back(m);
} }
Simulation::CAircraftModelList AircraftModelLoaderFlightgear::parseFlyableAirplaces(const QString &rootDirectory) Simulation::CAircraftModelList AircraftModelLoaderFlightgear::parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories)
{ {
Q_UNUSED(excludeDirectories);
if (rootDirectory.isEmpty()) { return {}; }
Simulation::CAircraftModelList installedModels; Simulation::CAircraftModelList installedModels;
QDir searchPath(rootDirectory, fileFilterFlyable()); QDir searchPath(rootDirectory, fileFilterFlyable());
@@ -32,7 +35,8 @@ namespace BlackMisc{
while (aircraftIt.hasNext()) { while (aircraftIt.hasNext()) {
aircraftIt.next(); aircraftIt.next();
//TODO Add possibility of exclude dir if (CFileUtils::isExcludedDirectory(aircraftIt.fileInfo(), excludeDirectories, Qt::CaseInsensitive)) { continue; }
Simulation::CAircraftModel model; Simulation::CAircraftModel model;
model.setAircraftIcaoCode(QString::fromStdString("A320")); model.setAircraftIcaoCode(QString::fromStdString("A320"));
model.setDescription(QString::fromStdString("Description")); model.setDescription(QString::fromStdString("Description"));
@@ -40,15 +44,12 @@ namespace BlackMisc{
model.setModelType(CAircraftModel::TypeOwnSimulatorModel); model.setModelType(CAircraftModel::TypeOwnSimulatorModel);
model.setSimulator(CSimulatorInfo::fg()); model.setSimulator(CSimulatorInfo::fg());
model.setFileDetailsAndTimestamp(aircraftIt.fileInfo()); model.setFileDetailsAndTimestamp(aircraftIt.fileInfo());
model.setModelMode(CAircraftModel::Exclude); model.setModelMode(CAircraftModel::Include);
addUniqueModel(model,installedModels); addUniqueModel(model,installedModels);
} }
return installedModels; return installedModels;
} }
@@ -64,6 +65,18 @@ namespace BlackMisc{
models.push_back(model); models.push_back(model);
} }
CAircraftModelList AircraftModelLoaderFlightgear::performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories)
{
CAircraftModelList allModels;
for (const QString &rootDirectory : rootDirectories)
{
//allModels.push_back(parseCslPackages(rootDirectory, excludeDirectories));
allModels.push_back(parseFlyableAirplanes(rootDirectory, excludeDirectories));
}
return allModels;
}
void AircraftModelLoaderFlightgear::startLoadingFromDisk(IAircraftModelLoader::LoadMode mode, const IAircraftModelLoader::ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories) void AircraftModelLoaderFlightgear::startLoadingFromDisk(IAircraftModelLoader::LoadMode mode, const IAircraftModelLoader::ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories)
{ {
const CSimulatorInfo simulator = CSimulatorInfo::fg(); const CSimulatorInfo simulator = CSimulatorInfo::fg();
@@ -76,7 +89,7 @@ namespace BlackMisc{
m_parserWorker = CWorker::fromTask(this, "CAircraftModelLoaderFlightgear::performParsing", m_parserWorker = CWorker::fromTask(this, "CAircraftModelLoaderFlightgear::performParsing",
[this, modelDirs, excludedDirectoryPatterns, modelConsolidation]() [this, modelDirs, excludedDirectoryPatterns, modelConsolidation]()
{ {
auto models = this->parseFlyableAirplaces("X:/Flightsim/Flightgear/2018.3/data/Aircraft"); auto models = this->performParsing(modelDirs, excludedDirectoryPatterns);
if (modelConsolidation) { modelConsolidation(models, true); } if (modelConsolidation) { modelConsolidation(models, true); }
return models; return models;
}); });

View File

@@ -16,10 +16,11 @@ namespace BlackMisc{
void updateInstalledModels(const CAircraftModelList &models); void updateInstalledModels(const CAircraftModelList &models);
private: private:
Simulation::CAircraftModelList parseFlyableAirplaces(const QString &rootDirectory); Simulation::CAircraftModelList parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories);
static const QString &fileFilterFlyable(); static const QString &fileFilterFlyable();
void addUniqueModel(const CAircraftModel &model, CAircraftModelList &models); void addUniqueModel(const CAircraftModel &model, CAircraftModelList &models);
QPointer<CWorker> m_parserWorker; QPointer<CWorker> m_parserWorker;
CAircraftModelList performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories);
protected: protected:
void startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories); void startLoadingFromDisk(LoadMode mode, const ModelConsolidationCallback &modelConsolidation, const QStringList &modelDirectories);