diff --git a/src/blackgui/components/settingssimulatorcomponent.cpp b/src/blackgui/components/settingssimulatorcomponent.cpp
index 609417db2..60ec9d590 100644
--- a/src/blackgui/components/settingssimulatorcomponent.cpp
+++ b/src/blackgui/components/settingssimulatorcomponent.cpp
@@ -148,6 +148,7 @@ namespace BlackGui
ui->pb_DisableRendering->setEnabled(m_pluginLoaded);
ui->pb_Check->setEnabled(!m_pluginLoaded);
ui->pb_ApplyCGSource->setEnabled(m_pluginLoaded);
+ ui->pb_Reload->setEnabled(m_pluginLoaded);
if (m_pluginLoaded)
{
diff --git a/src/blackgui/components/settingssimulatorcomponent.ui b/src/blackgui/components/settingssimulatorcomponent.ui
index cd7f368cc..240715691 100644
--- a/src/blackgui/components/settingssimulatorcomponent.ui
+++ b/src/blackgui/components/settingssimulatorcomponent.ui
@@ -65,15 +65,7 @@
true
-
-
- 0
- 0
- 427
- 328
-
-
-
+
4
@@ -102,6 +94,12 @@
-
+
+
+ 125
+ 0
+
+
apply
@@ -109,6 +107,12 @@
-
+
+
+ 125
+ 0
+
+
apply
@@ -192,6 +196,12 @@
-
+
+
+ 125
+ 0
+
+
apply
@@ -199,6 +209,12 @@
-
+
+
+ 125
+ 0
+
+
clear
@@ -213,6 +229,12 @@
-
+
+
+ 125
+ 0
+
+
apply
@@ -220,6 +242,12 @@
-
+
+
+ 125
+ 0
+
+
disable all rendering
@@ -264,6 +292,12 @@
-
+
+
+ 125
+ 0
+
+
apply
@@ -391,6 +425,12 @@
-
+
+
+ 125
+ 0
+
+
apply
@@ -408,6 +448,12 @@
-
+
+
+ 125
+ 0
+
+
reload
diff --git a/src/blackmisc/simulation/fscommon/fscommonutil.cpp b/src/blackmisc/simulation/fscommon/fscommonutil.cpp
index 6c9ccc2bb..2bf3755f9 100644
--- a/src/blackmisc/simulation/fscommon/fscommonutil.cpp
+++ b/src/blackmisc/simulation/fscommon/fscommonutil.cpp
@@ -243,7 +243,7 @@ namespace BlackMisc
{
// finding the user settings only works on P3D machine
QStringList allPaths = CFsCommonUtil::allP3dAddOnXmlSimObjectPaths(versionHint).values();
- const QString sod = CFileUtils::normalizeFilePathToQtStandard(simObjectsDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : simObjectsDir);
+ const QString sod = CFileUtils::normalizeFilePathToQtStandard(simObjectsDir.isEmpty() ? CFsCommonUtil::p3dSimObjectsDir() : simObjectsDir);
if (!sod.isEmpty() && !allPaths.contains(sod, Qt::CaseInsensitive))
{
// case insensitive is important here
@@ -256,6 +256,18 @@ namespace BlackMisc
return allPaths;
}
+ QString CFsCommonUtil::guessP3DVersion(const QString &candidate)
+ {
+ if (candidate.isEmpty()) { return "v4"; }
+ if (candidate.contains("v5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
+ if (candidate.contains("v4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
+
+ if (candidate.contains("5", Qt::CaseInsensitive)) { return QStringLiteral("v5"); }
+ if (candidate.contains("4", Qt::CaseInsensitive)) { return QStringLiteral("v4"); }
+
+ return "v5"; // that is the future (in 2020)
+ }
+
QString CFsCommonUtil::p3dSimObjectsDirFromSimDir(const QString &simDir)
{
if (simDir.isEmpty()) { return {}; }
diff --git a/src/blackmisc/simulation/fscommon/fscommonutil.h b/src/blackmisc/simulation/fscommon/fscommonutil.h
index 89466d685..b0aba64e3 100644
--- a/src/blackmisc/simulation/fscommon/fscommonutil.h
+++ b/src/blackmisc/simulation/fscommon/fscommonutil.h
@@ -57,7 +57,10 @@ namespace BlackMisc
static QStringList fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir = "");
//! P3D's simObject dir and the add on dirs
- static QStringList p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir = "", const QString &versionHint = "v4");
+ static QStringList p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(const QString &simObjectsDir, const QString &versionHint);
+
+ //! Guess the P3D version such as v4, v5
+ static QString guessP3DVersion(const QString &candidate);
//! P3D directory obtained from registry
static const QString &p3dDirFromRegistry();
diff --git a/src/blackmisc/simulation/settings/simulatorsettings.cpp b/src/blackmisc/simulation/settings/simulatorsettings.cpp
index ef9f992e6..0e20aa9c5 100644
--- a/src/blackmisc/simulation/settings/simulatorsettings.cpp
+++ b/src/blackmisc/simulation/settings/simulatorsettings.cpp
@@ -588,12 +588,15 @@ namespace BlackMisc
switch (m_simulator.getSimulator())
{
case CSimulatorInfo::FG: dirs = QStringList(CFlightgearUtil::modelDirectoriesFromSimDir(s)); break;
- case CSimulatorInfo::FS9: dirs = QStringList({CFsCommonUtil::fs9AircraftDirFromSimDir(s)}); break;
+ case CSimulatorInfo::FS9: dirs = QStringList({ CFsCommonUtil::fs9AircraftDirFromSimDir(s) }); break;
case CSimulatorInfo::FSX:
dirs = CFsCommonUtil::fsxSimObjectsDirPlusAddOnXmlSimObjectsPaths(CFsCommonUtil::fsxSimObjectsDirFromSimDir(s));
break;
case CSimulatorInfo::P3D:
- dirs = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(CFsCommonUtil::p3dSimObjectsDirFromSimDir(s));
+ {
+ const QString versionHint = CFsCommonUtil::guessP3DVersion(s);
+ dirs = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(CFsCommonUtil::p3dSimObjectsDirFromSimDir(s), versionHint);
+ }
break;
case CSimulatorInfo::XPLANE: dirs = QStringList({CXPlaneUtil::modelDirectoriesFromSimDir(s)}); break;
default: break;
@@ -678,8 +681,10 @@ namespace BlackMisc
}
case CSimulatorInfo::P3D:
{
- if (CFsCommonUtil::p3dSimObjectsDir().isEmpty()) { return e; }
- static const QStringList md = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths();
+ static const QString p3d = CFsCommonUtil::p3dSimObjectsDir();
+ if (p3d.isEmpty()) { return e; }
+ static const QString versionHint = CFsCommonUtil::guessP3DVersion(p3d);
+ static const QStringList md = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(p3d, versionHint);
return md;
}
case CSimulatorInfo::XPLANE:
diff --git a/src/blackmisc/simulation/settings/simulatorsettings.h b/src/blackmisc/simulation/settings/simulatorsettings.h
index 6291a3cb2..c9fb3295a 100644
--- a/src/blackmisc/simulation/settings/simulatorsettings.h
+++ b/src/blackmisc/simulation/settings/simulatorsettings.h
@@ -279,7 +279,7 @@ namespace BlackMisc
protected:
CSimulatorSettings m_genericSettings; //!< the generic settings
- CSimulatorInfo m_simulator; //!< represented simulator
+ CSimulatorInfo m_simulator; //!< represented simulator
};
//! XPlane specific settings
diff --git a/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.cpp b/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.cpp
index 3bb5015be..6ab679d8e 100644
--- a/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.cpp
+++ b/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.cpp
@@ -39,13 +39,13 @@ namespace BlackSimPlugin
{
ui->setupUi(this);
- connect(ui->pb_OpenSwiftSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::openSwiftSimConnectCfgFile);
+ connect(ui->pb_OpenSwiftSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::openSwiftSimConnectCfgFile);
connect(ui->pb_DeleteSwiftSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::deleteSwiftSimConnectCfgFile);
- connect(ui->pb_ExistsSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::checkSwiftSimConnectCfgFile);
- connect(ui->pb_SaveSwiftSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::saveSimConnectCfgFile);
- connect(ui->pb_OpenUserCfgFile, &QPushButton::clicked, this, &CSimConnectSettingsComponent::openUserSimConnectCfgFile);
- connect(ui->pb_TestConnection, &QPushButton::clicked, this, &CSimConnectSettingsComponent::testSwiftSimConnectConnection);
- connect(ui->pb_SaveAsSimConnectIni, &QPushButton::clicked, this, &CSimConnectSettingsComponent::saveSimConnectIniFileDialog);
+ connect(ui->pb_ExistsSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::checkSwiftSimConnectCfgFile);
+ connect(ui->pb_SaveSwiftSimConnectCfg, &QPushButton::clicked, this, &CSimConnectSettingsComponent::saveSimConnectCfgFile);
+ connect(ui->pb_OpenUserCfgFile, &QPushButton::clicked, this, &CSimConnectSettingsComponent::openUserSimConnectCfgFile);
+ connect(ui->pb_TestConnection, &QPushButton::clicked, this, &CSimConnectSettingsComponent::testSwiftSimConnectConnection);
+ connect(ui->pb_SaveAsSimConnectIni, &QPushButton::clicked, this, &CSimConnectSettingsComponent::saveSimConnectIniFileDialog);
this->setSimConnectInfo();
if (m_p3d64bit)
@@ -252,7 +252,7 @@ namespace BlackSimPlugin
ui->cb_P3DVersion->setCurrentText(found ? v : "");
}
- void BlackSimPlugin::FsxCommon::CSimConnectSettingsComponent::onP3DVersionChanged(const QString &version)
+ void CSimConnectSettingsComponent::onP3DVersionChanged(const QString &version)
{
if (m_p3dVersion.get() == version) { return; }
const CStatusMessage saveMsg = m_p3dVersion.setAndSave(version);
diff --git a/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.ui b/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.ui
index 254d8ae7d..589a2525a 100644
--- a/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.ui
+++ b/src/plugins/simulator/fsxcommon/simconnectsettingscomponent.ui
@@ -7,7 +7,7 @@
0
0
410
- 466
+ 481
@@ -156,11 +156,31 @@ console=1
-
- 4.5 64bit
+ 6.0 64bit
0
+
-
+
+ 6.0 64bit
+
+
+ -
+
+ 5.2 64bit
+
+
+ -
+
+ 5.1 64bit
+
+
+ -
+
+ 5.0 64bit
+
+
-
4.5 64bit
diff --git a/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp b/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp
index 1065515e7..fd8dc80c5 100644
--- a/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp
+++ b/src/plugins/simulator/fsxcommon/simconnectsymbols.cpp
@@ -191,6 +191,11 @@ P3DSimConnectVersion stringToP3DVersion(const QString &p3d)
if (p.contains("43")) { return P3DSimConnectv43; }
if (p.contains("44")) { return P3DSimConnectv44; }
if (p.contains("45")) { return P3DSimConnectv45; }
+
+ if (p.contains("50")) { return P3DSimConnectv45; }
+ if (p.contains("51")) { return P3DSimConnectv45; }
+ if (p.contains("52")) { return P3DSimConnectv45; }
+
}
return P3DSimConnectv44; // default
}
diff --git a/src/plugins/simulator/p3d/simulatorp3d.cpp b/src/plugins/simulator/p3d/simulatorp3d.cpp
index cbbdd30ff..61027ab1b 100644
--- a/src/plugins/simulator/p3d/simulatorp3d.cpp
+++ b/src/plugins/simulator/p3d/simulatorp3d.cpp
@@ -31,10 +31,10 @@ namespace BlackSimPlugin
namespace P3D
{
CSimulatorP3D::CSimulatorP3D(const CSimulatorPluginInfo &info,
- IOwnAircraftProvider *ownAircraftProvider,
+ IOwnAircraftProvider *ownAircraftProvider,
IRemoteAircraftProvider *remoteAircraftProvider,
- IWeatherGridProvider *weatherGridProvider,
- IClientProvider *clientProvider,
+ IWeatherGridProvider *weatherGridProvider,
+ IClientProvider *clientProvider,
QObject *parent) :
CSimulatorFsxCommon(info, ownAircraftProvider, remoteAircraftProvider, weatherGridProvider, clientProvider, parent)
{
@@ -104,9 +104,9 @@ namespace BlackSimPlugin
// P3D version with new P3D simconnect functions
bool CSimulatorP3D::requestElevation(const ICoordinateGeodetic &reference, const CCallsign &callsign)
{
- if (reference.isNull()) { return false; }
+ if (reference.isNull()) { return false; }
if (this->isShuttingDown()) { return false; }
- if (!this->isConnected()) { return false; }
+ if (!this->isConnected()) { return false; }
Q_ASSERT_X(CThreadUtils::isCurrentThreadObjectThread(this), Q_FUNC_INFO, "thread");
const bool hasHeight = reference.hasMSLGeodeticHeight();
diff --git a/src/plugins/simulator/p3d/simulatorp3d.h b/src/plugins/simulator/p3d/simulatorp3d.h
index 6192ecde7..28c098762 100644
--- a/src/plugins/simulator/p3d/simulatorp3d.h
+++ b/src/plugins/simulator/p3d/simulatorp3d.h
@@ -37,10 +37,10 @@ namespace BlackSimPlugin
public:
//! Constructor, parameters as in \sa BlackCore::ISimulatorFactory::create
CSimulatorP3D(const BlackMisc::Simulation::CSimulatorPluginInfo &info,
- BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
+ BlackMisc::Simulation::IOwnAircraftProvider *ownAircraftProvider,
BlackMisc::Simulation::IRemoteAircraftProvider *remoteAircraftProvider,
- BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
- BlackMisc::Network::IClientProvider *clientProvider,
+ BlackMisc::Weather::IWeatherGridProvider *weatherGridProvider,
+ BlackMisc::Network::IClientProvider *clientProvider,
QObject *parent = nullptr);
//! \name ISimulator implementations
diff --git a/src/swiftlauncher/swiftlauncher.cpp b/src/swiftlauncher/swiftlauncher.cpp
index 627131b77..04aee4870 100644
--- a/src/swiftlauncher/swiftlauncher.cpp
+++ b/src/swiftlauncher/swiftlauncher.cpp
@@ -664,9 +664,10 @@ void CSwiftLauncher::showSimulatorConfigDirs()
if (s == ui->pb_P3DConfigDirs)
{
- dirs = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths();
simDir = CFsCommonUtil::p3dDir();
simObjDir = CFsCommonUtil::p3dSimObjectsDir();
+ const QString versionHint = CFsCommonUtil::guessP3DVersion(simDir);
+ dirs = CFsCommonUtil::p3dSimObjectsDirPlusAddOnXmlSimObjectsPaths(simObjDir, versionHint);
}
else if (s == ui->pb_FSXConfigDirs)
{