mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 14:55:36 +08:00
[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:
committed by
Mat Sutcliffe
parent
58524a63ea
commit
947e393b03
@@ -20,7 +20,9 @@ namespace BlackSample
|
|||||||
{
|
{
|
||||||
void CSamplesP3D::samplesMisc(QTextStream &streamOut)
|
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;
|
streamOut << BlackMisc::joinStringSet(configFiles, ", ") << Qt::endl;
|
||||||
|
|
||||||
const QSet<QString> addOnPaths = CFsCommonUtil::allConfigFilesPathValues(configFiles.values(), false, {});
|
const QSet<QString> addOnPaths = CFsCommonUtil::allConfigFilesPathValues(configFiles.values(), false, {});
|
||||||
|
|||||||
@@ -149,6 +149,9 @@ namespace BlackMisc
|
|||||||
QString p3dPath;
|
QString p3dPath;
|
||||||
FsRegistryPathPair p3dRegistryPathPairs =
|
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 v4"), QStringLiteral("AppPath") },
|
||||||
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v3"), QStringLiteral("AppPath") },
|
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v3"), QStringLiteral("AppPath") },
|
||||||
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v2"), QStringLiteral("AppPath") },
|
{ QStringLiteral("HKEY_CURRENT_USER\\Software\\Lockheed Martin\\Prepar3d v2"), QStringLiteral("AppPath") },
|
||||||
@@ -258,12 +261,12 @@ namespace BlackMisc
|
|||||||
|
|
||||||
QString CFsCommonUtil::guessP3DVersion(const QString &candidate)
|
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("v5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
|
||||||
if (candidate.contains("v4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
|
if (candidate.contains("v4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
|
||||||
|
|
||||||
if (candidate.contains("5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
|
if (candidate.contains("5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
|
||||||
if (candidate.contains("4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
|
if (candidate.contains("4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
|
||||||
|
|
||||||
return "v5"; // that is the future (in 2020)
|
return "v5"; // that is the future (in 2020)
|
||||||
}
|
}
|
||||||
@@ -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)
|
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 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);
|
return CFsCommonUtil::validateSimObjectsPath(QSet<QString>(simObjectPaths.begin(), simObjectPaths.end()), models, validModels, invalidModels, ignoreEmptyFileNames, stopAtFailedFiles, wasStopped);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -737,7 +740,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
CStatusMessageList CFsCommonUtil::validateSimObjectsPath(
|
CStatusMessageList CFsCommonUtil::validateSimObjectsPath(
|
||||||
const QSet<QString> &simObjectDirs, const CAircraftModelList &models,
|
const QSet<QString> &simObjectDirs, const CAircraftModelList &models,
|
||||||
CAircraftModelList &validModels, CAircraftModelList &invalidModels,
|
CAircraftModelList &validModels, CAircraftModelList &invalidModels,
|
||||||
bool ignoreEmptyFileNames, int stopAtFailedFiles, std::atomic_bool &stopped)
|
bool ignoreEmptyFileNames, int stopAtFailedFiles, std::atomic_bool &stopped)
|
||||||
{
|
{
|
||||||
CStatusMessageList msgs;
|
CStatusMessageList msgs;
|
||||||
|
|||||||
@@ -109,13 +109,13 @@ namespace BlackMisc
|
|||||||
|
|
||||||
//! Find the config files (add-ons.cfg)
|
//! 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"
|
//! \param versionHint like "v5"
|
||||||
static QSet<QString> findP3dAddOnConfigFiles(const QString &versionHint = "v4");
|
static QSet<QString> findP3dAddOnConfigFiles(const QString &versionHint = "v5");
|
||||||
|
|
||||||
//! Find the config files (simobjects.cfg)
|
//! Find the config files (simobjects.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"
|
//! \param versionHint like "v5"
|
||||||
static QSet<QString> findP3dSimObjectsConfigFiles(const QString &versionHint = "v4");
|
static QSet<QString> findP3dSimObjectsConfigFiles(const QString &versionHint = "v5");
|
||||||
|
|
||||||
//! All PATH values from the config files
|
//! All PATH values from the config files
|
||||||
static QSet<QString> allConfigFilesPathValues(const QStringList &configFiles, bool checked, const QString &pathPrefix);
|
static QSet<QString> allConfigFilesPathValues(const QStringList &configFiles, bool checked, const QString &pathPrefix);
|
||||||
@@ -158,7 +158,7 @@ namespace BlackMisc
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
//! Utility functions @{
|
//! 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
|
//! Validate if known SimObjects path are used
|
||||||
|
|||||||
@@ -671,21 +671,21 @@ namespace BlackMisc
|
|||||||
{
|
{
|
||||||
if (CFsCommonUtil::fs9AircraftDir().isEmpty()) { return e; }
|
if (CFsCommonUtil::fs9AircraftDir().isEmpty()) { return e; }
|
||||||
static const QStringList md({ CFsCommonUtil::fs9AircraftDir() });
|
static const QStringList md({ CFsCommonUtil::fs9AircraftDir() });
|
||||||
return md;
|
return md;
|
||||||
}
|
}
|
||||||
case CSimulatorInfo::FSX:
|
case CSimulatorInfo::FSX:
|
||||||
{
|
{
|
||||||
if (CFsCommonUtil::fsxSimObjectsDir().isEmpty()) { return e; }
|
if (CFsCommonUtil::fsxSimObjectsDir().isEmpty()) { return e; }
|
||||||
static const QStringList md = CFsCommonUtil::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths();
|
static const QStringList md = CFsCommonUtil::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths();
|
||||||
return md;
|
return md;
|
||||||
}
|
}
|
||||||
case CSimulatorInfo::P3D:
|
case CSimulatorInfo::P3D:
|
||||||
{
|
{
|
||||||
static const QString p3d = CFsCommonUtil::p3dSimObjectsDir();
|
static const QString p3d = CFsCommonUtil::p3dSimObjectsDir();
|
||||||
if (p3d.isEmpty()) { return e; }
|
if (p3d.isEmpty()) { return e; }
|
||||||
static const QString versionHint = CFsCommonUtil::guessP3DVersion(p3d);
|
static const QString versionHint = CFsCommonUtil::guessP3DVersion(p3d);
|
||||||
static const QStringList md = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(p3d, versionHint);
|
static const QStringList md = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(p3d, versionHint);
|
||||||
return md;
|
return md;
|
||||||
}
|
}
|
||||||
case CSimulatorInfo::XPLANE:
|
case CSimulatorInfo::XPLANE:
|
||||||
{
|
{
|
||||||
@@ -704,10 +704,10 @@ namespace BlackMisc
|
|||||||
static const QString empty;
|
static const QString empty;
|
||||||
switch (simulator.getSimulator())
|
switch (simulator.getSimulator())
|
||||||
{
|
{
|
||||||
case CSimulatorInfo::FG: return CFlightgearUtil::flightgearRootDir();
|
case CSimulatorInfo::FG: return CFlightgearUtil::flightgearRootDir();
|
||||||
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9Dir();
|
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9Dir();
|
||||||
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxDir();
|
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxDir();
|
||||||
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dDir();
|
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dDir();
|
||||||
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneRootDir();
|
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneRootDir();
|
||||||
default:
|
default:
|
||||||
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
||||||
@@ -722,10 +722,10 @@ namespace BlackMisc
|
|||||||
static const QStringList empty;
|
static const QStringList empty;
|
||||||
switch (simulator.getSimulator())
|
switch (simulator.getSimulator())
|
||||||
{
|
{
|
||||||
case CSimulatorInfo::FG: return CFlightgearUtil::flightgearModelExcludeDirectoryPatterns();
|
case CSimulatorInfo::FG: return CFlightgearUtil::flightgearModelExcludeDirectoryPatterns();
|
||||||
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9AircraftObjectsExcludeDirectoryPatterns();
|
case CSimulatorInfo::FS9: return CFsCommonUtil::fs9AircraftObjectsExcludeDirectoryPatterns();
|
||||||
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxSimObjectsExcludeDirectoryPatterns();
|
case CSimulatorInfo::FSX: return CFsCommonUtil::fsxSimObjectsExcludeDirectoryPatterns();
|
||||||
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dSimObjectsExcludeDirectoryPatterns();
|
case CSimulatorInfo::P3D: return CFsCommonUtil::p3dSimObjectsExcludeDirectoryPatterns();
|
||||||
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneModelExcludeDirectoryPatterns();
|
case CSimulatorInfo::XPLANE: return CXPlaneUtil::xplaneModelExcludeDirectoryPatterns();
|
||||||
default:
|
default:
|
||||||
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator");
|
||||||
@@ -781,7 +781,8 @@ namespace BlackMisc
|
|||||||
|
|
||||||
bool TSimulatorXP::isValid(const CSimulatorSettings &value, QString &reason)
|
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);
|
: CSpecializedSimulatorSettings::defaultSimulatorDirectory(CSimulatorInfo::XPLANE);
|
||||||
const CStatusMessageList msgs = CXPlaneUtil::validateModelDirectories(simDir, value.getModelDirectories());
|
const CStatusMessageList msgs = CXPlaneUtil::validateModelDirectories(simDir, value.getModelDirectories());
|
||||||
if (msgs.isSuccess()) { return true; }
|
if (msgs.isSuccess()) { return true; }
|
||||||
|
|||||||
Reference in New Issue
Block a user