[P3D] Support for v5, wrong path used for validation

* guess version in validation
* changed some values to v5 as default
* search also for future versions of P3D (e.g. v5)
This commit is contained in:
Klaus Basan
2020-05-01 22:47:03 +02:00
committed by Mat Sutcliffe
parent 58524a63ea
commit 947e393b03
4 changed files with 30 additions and 24 deletions

View File

@@ -20,7 +20,9 @@ namespace BlackSample
{
void CSamplesP3D::samplesMisc(QTextStream &streamOut)
{
const QSet<QString> configFiles = CFsCommonUtil::findP3dAddOnConfigFiles("v4");
QSet<QString> configFiles = CFsCommonUtil::findP3dAddOnConfigFiles("v5");
if (configFiles.isEmpty()) { configFiles = CFsCommonUtil::findP3dAddOnConfigFiles("v4"); }
streamOut << BlackMisc::joinStringSet(configFiles, ", ") << Qt::endl;
const QSet<QString> addOnPaths = CFsCommonUtil::allConfigFilesPathValues(configFiles.values(), false, {});

View File

@@ -149,6 +149,9 @@ namespace BlackMisc
QString p3dPath;
FsRegistryPathPair p3dRegistryPathPairs =
{
// latest versions first
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v6"), QStringLiteral("AppPath") },
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v5"), QStringLiteral("AppPath") },
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v4"), QStringLiteral("AppPath") },
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v3"), QStringLiteral("AppPath") },
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v2"), QStringLiteral("AppPath") },
@@ -258,7 +261,7 @@ namespace BlackMisc
QString CFsCommonUtil::guessP3DVersion(const QString &candidate)
{
if (candidate.isEmpty()) { return "v4"; }
if (candidate.isEmpty()) { return "v5"; }
if (candidate.contains("v5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
if (candidate.contains("v4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
@@ -718,7 +721,7 @@ namespace BlackMisc
CStatusMessageList CFsCommonUtil::validateP3DSimObjectsPath(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmptyFileNames, int stopAtFailedFiles, std::atomic_bool &wasStopped, const QString &simulatorDir)
{
const QString simObjectsDir = simulatorDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : CFsCommonUtil::p3dSimObjectsDirFromSimDir(simulatorDir);
const QStringList simObjectPaths = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(simObjectsDir, "v4");
const QStringList simObjectPaths = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(simObjectsDir, guessP3DVersion(simObjectsDir));
return CFsCommonUtil::validateSimObjectsPath(QSet<QString>(simObjectPaths.begin(), simObjectPaths.end()), models, validModels, invalidModels, ignoreEmptyFileNames, stopAtFailedFiles, wasStopped);
}

View File

@@ -109,13 +109,13 @@ namespace BlackMisc
//! Find the config files (add-ons.cfg)
//! \note "C:/Users/Joe Doe/AppData/Roaming/Lockheed Martin/Prepar3D v4"
//! \param versionHint like "v4"
static QSet<QString> findP3dAddOnConfigFiles(const QString &versionHint = "v4");
//! \param versionHint like "v5"
static QSet<QString> findP3dAddOnConfigFiles(const QString &versionHint = "v5");
//! Find the config files (simobjects.cfg)
//! \note "C:/Users/Joe Doe/AppData/Roaming/Lockheed Martin/Prepar3D v4"
//! \param versionHint like "v4"
static QSet<QString> findP3dSimObjectsConfigFiles(const QString &versionHint = "v4");
//! \param versionHint like "v5"
static QSet<QString> findP3dSimObjectsConfigFiles(const QString &versionHint = "v5");
//! All PATH values from the config files
static QSet<QString> allConfigFilesPathValues(const QStringList &configFiles, bool checked, const QString &pathPrefix);
@@ -158,7 +158,7 @@ namespace BlackMisc
private:
//! Utility functions @{
static QSet<QString> findP3dConfigFiles(const QString &configFile, const QString &versionHint = "v4");
static QSet<QString> findP3dConfigFiles(const QString &configFile, const QString &versionHint = "v5");
//! @}
//! Validate if known SimObjects path are used

View File

@@ -781,7 +781,8 @@ namespace BlackMisc
bool TSimulatorXP::isValid(const CSimulatorSettings &value, QString &reason)
{
const QString simDir = value.hasSimulatorDirectory() ? value.getSimulatorDirectory()
const QString simDir = value.hasSimulatorDirectory()
? value.getSimulatorDirectory()
: CSpecializedSimulatorSettings::defaultSimulatorDirectory(CSimulatorInfo::XPLANE);
const CStatusMessageList msgs = CXPlaneUtil::validateModelDirectories(simDir, value.getModelDirectories());
if (msgs.isSuccess()) { return true; }