From 8082b4c7df8e2440dff846c43d36069cc129fd70 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 5 Jun 2019 20:08:23 +0200 Subject: [PATCH] Ref T660, P3D SimObjects folder validation preparations --- src/blackmisc/simulation/aircraftmodellist.cpp | 4 ++-- src/blackmisc/simulation/aircraftmodellist.h | 2 +- src/blackmisc/simulation/aircraftmodelutils.cpp | 5 ++++- src/blackmisc/simulation/fscommon/fscommonutil.cpp | 13 +++++++++---- src/blackmisc/simulation/fscommon/fscommonutil.h | 10 +++++++--- 5 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index bbf62fe75..de09e881d 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -1395,7 +1395,7 @@ namespace BlackMisc return msgs; } - CStatusMessageList CAircraftModelList::validateFiles(CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped, const QString &rootDirectory, bool alreadySortedByFn) const + CStatusMessageList CAircraftModelList::validateFiles(CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, bool &stopped, const QString &rootDirectory, bool alreadySortedByFn) const { invalidModels.clear(); validModels.clear(); @@ -1430,7 +1430,7 @@ namespace BlackMisc if (!model.hasFileName()) { - if (ignoreEmpty) { continue; } + if (ignoreEmptyFileNames) { continue; } msgs.push_back(CStatusMessage(this).validationError(u"'%1', no file name") << model.getModelStringAndDbKey()); break; } diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index 23e74ca16..aba41f4db 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -478,7 +478,7 @@ namespace BlackMisc CStatusMessageList validateDistributors(const CDistributorList &distributors, CAircraftModelList &validModels, CAircraftModelList &invalidModels) const; //! Validate files (file exists etc.) - CStatusMessageList validateFiles(CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped, const QString &rootDirectory, bool alreadySortedByFn = false) const; + CStatusMessageList validateFiles(CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, bool &stopped, const QString &rootDirectory, bool alreadySortedByFn = false) const; //! To compact JSON format QJsonObject toMemoizedJson() const; diff --git a/src/blackmisc/simulation/aircraftmodelutils.cpp b/src/blackmisc/simulation/aircraftmodelutils.cpp index ba4613f67..a95ce687a 100644 --- a/src/blackmisc/simulation/aircraftmodelutils.cpp +++ b/src/blackmisc/simulation/aircraftmodelutils.cpp @@ -166,7 +166,10 @@ namespace BlackMisc CStatusMessageList specificTests; if (models.isLikelyFsFamilyModelList()) { - specificTests = FsCommon::CFsCommonUtil::validateConfigFiles(models, validModels, invalidModels, ignoreEmpty, stopAtFailedFiles, stopped); + const CStatusMessageList specificTests1 = FsCommon::CFsCommonUtil::validateConfigFiles(models, validModels, invalidModels, ignoreEmpty, stopAtFailedFiles, stopped); + const CStatusMessageList specificTests2 = FsCommon::CFsCommonUtil::validateP3DSimObjectsPath(models, validModels, invalidModels, ignoreEmpty, stopAtFailedFiles, stopped); + specificTests.push_back(specificTests1); + specificTests.push_back(specificTests2); } else if (models.isLikelyXPlaneModelList()) { diff --git a/src/blackmisc/simulation/fscommon/fscommonutil.cpp b/src/blackmisc/simulation/fscommon/fscommonutil.cpp index 3eb5235ad..e9be63568 100644 --- a/src/blackmisc/simulation/fscommon/fscommonutil.cpp +++ b/src/blackmisc/simulation/fscommon/fscommonutil.cpp @@ -215,10 +215,10 @@ namespace BlackMisc return dir; } - QStringList CFsCommonUtil::p3dSimObjectsDirPlusAddOnSimObjectsDirs(const QString &simObjectsDir) + QStringList CFsCommonUtil::p3dSimObjectsDirPlusAddOnSimObjectsDirs(const QString &simObjectsDir, const QString &versionHint) { // finding the user settings only works on P3D machine - const QSet allP3dAddOnSimObjectPaths = CFsCommonUtil::allP3dAddOnSimObjectPaths("v4"); + const QSet allP3dAddOnSimObjectPaths = CFsCommonUtil::allP3dAddOnSimObjectPaths(versionHint); QStringList all(allP3dAddOnSimObjectPaths.toList()); all.push_front(simObjectsDir.isEmpty() ? p3dSimObjectsDir() : simObjectsDir); all.sort(Qt::CaseInsensitive); @@ -542,13 +542,13 @@ namespace BlackMisc return paths; } - CStatusMessageList CFsCommonUtil::validateConfigFiles(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped) + CStatusMessageList CFsCommonUtil::validateConfigFiles(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, bool &stopped) { CAircraftModelList sorted(models); CStatusMessage m; sorted.sortByFileName(); stopped = false; - CStatusMessageList msgs = sorted.validateFiles(validModels, invalidModels, ignoreEmpty, stopAtFailedFiles, stopped, "", true); + CStatusMessageList msgs = sorted.validateFiles(validModels, invalidModels, ignoreEmptyFileNames, stopAtFailedFiles, stopped, "", true); if (stopped || validModels.isEmpty()) { return msgs; } const CAircraftModelList nonFsModels = validModels.findNonFsFamilyModels(); @@ -603,6 +603,11 @@ namespace BlackMisc // finished return msgs; } + + CStatusMessageList CFsCommonUtil::validateP3DSimObjectsPath(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, bool &stopped) + { + return {}; + } } // namespace } // namespace } // namespace diff --git a/src/blackmisc/simulation/fscommon/fscommonutil.h b/src/blackmisc/simulation/fscommon/fscommonutil.h index 558f0a0c4..39a4a47b8 100644 --- a/src/blackmisc/simulation/fscommon/fscommonutil.h +++ b/src/blackmisc/simulation/fscommon/fscommonutil.h @@ -65,7 +65,7 @@ namespace BlackMisc static const QString &p3dSimObjectsDir(); //! P3D's simObject dir and the add on dirs - static QStringList p3dSimObjectsDirPlusAddOnSimObjectsDirs(const QString &simObjectsDir = ""); + static QStringList p3dSimObjectsDirPlusAddOnSimObjectsDirs(const QString &simObjectsDir = "", const QString &versionHint = "v4"); //! P3D aircraft dir, relative to simulator directory static QString p3dSimObjectsDirFromSimDir(const QString &simDir); @@ -101,7 +101,7 @@ namespace BlackMisc static int copyFsxTerrainProbeFiles(const QString &simObjectDir, CStatusMessageList &messages); //! Find the config files (add-ons.cfg) - //! \note C:/Users/Joe Doe/AppData/Roaming/Lockheed Martin/Prepar3D v4 + //! \note "C:/Users/Joe Doe/AppData/Roaming/Lockheed Martin/Prepar3D v4" //! \param versionHint like "v4" static QSet findP3dAddOnConfigFiles(const QString &versionHint = "v4"); @@ -128,7 +128,11 @@ namespace BlackMisc //! Validate aircraft.cfg entries //! \remark only for FSX/P3D/FS9 models - static CStatusMessageList validateConfigFiles(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped); + static CStatusMessageList validateConfigFiles(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, bool &stopped); + + //! Validate if known SimObjects path + //! \remark only for P3D + static CStatusMessageList validateP3DSimObjectsPath(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, bool &stopped); }; } // namespace } // namespace