diff --git a/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.cpp b/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.cpp index becdc83a3..3685bcb54 100644 --- a/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.cpp +++ b/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.cpp @@ -39,7 +39,40 @@ namespace BlackMisc{ Simulation::CAircraftModel model; model.setAircraftIcaoCode(QString::fromStdString("A320")); - model.setDescription(QString::fromStdString("Description")); + model.setDescription(QString::fromStdString("Flyable")); + model.setName(QString::fromStdString("ModelName")); + model.setModelType(CAircraftModel::TypeOwnSimulatorModel); + model.setSimulator(CSimulatorInfo::fg()); + model.setFileDetailsAndTimestamp(aircraftIt.fileInfo()); + model.setModelMode(CAircraftModel::Include); + + addUniqueModel(model,installedModels); + + } + + return installedModels; + } + + CAircraftModelList AircraftModelLoaderFlightgear::parseAIAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories) + { + Q_UNUSED(excludeDirectories); + if (rootDirectory.isEmpty()) { return {}; } + + Simulation::CAircraftModelList installedModels; + + QDir searchPath(rootDirectory, fileFilterAI()); + QDirIterator aircraftIt(searchPath, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + + + while (aircraftIt.hasNext()) { + aircraftIt.next(); + if (CFileUtils::isExcludedDirectory(aircraftIt.fileInfo(), excludeDirectories, Qt::CaseInsensitive)) { continue; } + //QString base = "main"; + //if(base.compare(aircraftIt.fileName())){ continue;} + + Simulation::CAircraftModel model; + model.setAircraftIcaoCode(QString::fromStdString("A320")); + model.setDescription(QString::fromStdString("AI")); model.setName(QString::fromStdString("ModelName")); model.setModelType(CAircraftModel::TypeOwnSimulatorModel); model.setSimulator(CSimulatorInfo::fg()); @@ -59,6 +92,13 @@ namespace BlackMisc{ return f; } + const QString &AircraftModelLoaderFlightgear::fileFilterAI() + { + static const QString f("*.xml"); + return f; + + } + void AircraftModelLoaderFlightgear::addUniqueModel(const CAircraftModel &model, CAircraftModelList &models) { //TODO Add check @@ -70,8 +110,9 @@ namespace BlackMisc{ CAircraftModelList allModels; for (const QString &rootDirectory : rootDirectories) { - //allModels.push_back(parseCslPackages(rootDirectory, excludeDirectories)); - allModels.push_back(parseFlyableAirplanes(rootDirectory, excludeDirectories)); + //TODO Make paths variable + allModels.push_back(parseAIAirplanes("X:/Flightsim/Flightgear/2018.3/data/AI/Aircraft", excludeDirectories)); + allModels.push_back(parseFlyableAirplanes("X:/Flightsim/Flightgear/2018.3/data/Aircraft", excludeDirectories)); } return allModels; diff --git a/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.h b/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.h index 74c71f09e..c12d0abb3 100644 --- a/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.h +++ b/src/blackmisc/simulation/flightgear/aircraftmodelloaderflightgear.h @@ -17,7 +17,9 @@ namespace BlackMisc{ private: Simulation::CAircraftModelList parseFlyableAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories); + Simulation::CAircraftModelList parseAIAirplanes(const QString &rootDirectory, const QStringList &excludeDirectories); static const QString &fileFilterFlyable(); + static const QString &fileFilterAI(); void addUniqueModel(const CAircraftModel &model, CAircraftModelList &models); QPointer m_parserWorker; CAircraftModelList performParsing(const QStringList &rootDirectories, const QStringList &excludeDirectories);