Ref T609, setting if COM is synced with simulator

This commit is contained in:
Klaus Basan
2019-04-19 23:22:28 +02:00
parent 927903ec53
commit 53fb28d70c
7 changed files with 79 additions and 11 deletions

View File

@@ -17,6 +17,7 @@
#include "blackcore/simulator.h"
#include "blackcore/blackcoreexport.h"
#include "blackmisc/weather/weathergrid.h"
#include "blackmisc/simulation/settings/simulatorsettings.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/aircraftmatchersetup.h"
#include "blackmisc/simulation/matchingstatistics.h"
@@ -148,6 +149,12 @@ namespace BlackCore
//! Return list of available simulator plugins
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const = 0;
//! Get the current simulator settings
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const = 0;
//! Set settings for give simulator
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulator) = 0;
//! Check all listeners enabled if simulator is connected
virtual int checkListeners() = 0;

View File

@@ -45,6 +45,22 @@ namespace BlackCore
return BlackMisc::Simulation::CSimulatorPluginInfoList();
}
//! \copydoc IContextSimulator::getSimulatorSettings
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const override
{
logEmptyContextWarning(Q_FUNC_INFO);
return BlackMisc::Simulation::Settings::CSimulatorSettings();
}
//! \copydoc IContextSimulator::setSimulatorSettings
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo) override
{
Q_UNUSED(settings);
Q_UNUSED(simulatorInfo);
logEmptyContextWarning(Q_FUNC_INFO);
return false;
}
//! \copydoc IContextSimulator::startSimulatorPlugin
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override
{

View File

@@ -143,6 +143,25 @@ namespace BlackCore
return m_plugins->getAvailableSimulatorPlugins();
}
CSimulatorSettings CContextSimulator::getSimulatorSettings() const
{
const CSimulatorPluginInfo p = this->getSimulatorPluginInfo();
if (!p.isValid()) { return {}; }
const CSimulatorInfo sim = p.getSimulatorInfo();
if (!sim.isSingleSimulator()) { return {}; }
return m_simulatorSettings.getSettings(sim);
}
bool CContextSimulator::setSimulatorSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator)
{
if (!simulator.isSingleSimulator()) { return false; }
CSimulatorSettings simSettings = m_simulatorSettings.getSettings(simulator);
if (simSettings == settings) { return false; }
const CStatusMessage msg = m_simulatorSettings.setSettings(settings, simulator);
CLogMessage::preformatted(msg);
return true;
}
bool CContextSimulator::startSimulatorPlugin(const CSimulatorPluginInfo &simulatorInfo)
{
return this->listenForSimulator(simulatorInfo);

View File

@@ -76,6 +76,8 @@ namespace BlackCore
//! @{
virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override;
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override;
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const override;
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulator) override;
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual int checkListeners() override;

View File

@@ -23,6 +23,7 @@ using namespace BlackMisc::Aviation;
using namespace BlackMisc::Network;
using namespace BlackMisc::Geo;
using namespace BlackMisc::Simulation;
using namespace BlackMisc::Simulation::Settings;
namespace BlackCore
{
@@ -46,6 +47,8 @@ namespace BlackCore
void CContextSimulatorProxy::relaySignals(const QString &serviceName, QDBusConnection &connection)
{
// the types here have to be fully qualifed
bool s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
"simulatorStatusChanged", this, SIGNAL(simulatorStatusChanged(int)));
Q_ASSERT(s);
@@ -107,6 +110,16 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<CSimulatorPluginInfoList>(QLatin1String("getAvailableSimulatorPlugins"));
}
CSimulatorSettings CContextSimulatorProxy::getSimulatorSettings() const
{
return m_dBusInterface->callDBusRet<CSimulatorSettings>(QLatin1String("getSimulatorSettings"));
}
bool CContextSimulatorProxy::setSimulatorSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulatorInfo)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("setSimulatorSettings"), settings, simulatorInfo);
}
int CContextSimulatorProxy::getSimulatorStatus() const
{
return m_dBusInterface->callDBusRet<int>(QLatin1String("getSimulatorStatus"));
@@ -114,17 +127,17 @@ namespace BlackCore
CAirportList CContextSimulatorProxy::getAirportsInRange(bool recalculatePosition) const
{
return m_dBusInterface->callDBusRet<BlackMisc::Aviation::CAirportList>(QLatin1String("getAirportsInRange"), recalculatePosition);
return m_dBusInterface->callDBusRet<CAirportList>(QLatin1String("getAirportsInRange"), recalculatePosition);
}
CAircraftModelList CContextSimulatorProxy::getModelSet() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1String("getModelSet"));
return m_dBusInterface->callDBusRet<CAircraftModelList>(QLatin1String("getModelSet"));
}
CSimulatorInfo CContextSimulatorProxy::simulatorsWithInitializedModelSet() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("simulatorsWithInitializedModelSet"));
return m_dBusInterface->callDBusRet<CSimulatorInfo>(QLatin1String("simulatorsWithInitializedModelSet"));
}
CStatusMessageList CContextSimulatorProxy::verifyPrerequisites() const
@@ -134,7 +147,7 @@ namespace BlackCore
CSimulatorInfo CContextSimulatorProxy::getModelSetLoaderSimulator() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator"));
return m_dBusInterface->callDBusRet<CSimulatorInfo>(QLatin1String("getModelSetLoaderSimulator"));
}
void CContextSimulatorProxy::setModelSetLoaderSimulator(const CSimulatorInfo &simulator)
@@ -159,7 +172,7 @@ namespace BlackCore
CAircraftModelList CContextSimulatorProxy::getModelSetModelsStartingWith(const QString &modelString) const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1String("getModelSetModelsStartingWith"), modelString);
return m_dBusInterface->callDBusRet<CAircraftModelList>(QLatin1String("getModelSetModelsStartingWith"), modelString);
}
int CContextSimulatorProxy::getModelSetCount() const
@@ -167,14 +180,14 @@ namespace BlackCore
return m_dBusInterface->callDBusRet<int>(QLatin1String("getModelSetCount"));
}
BlackMisc::Simulation::CSimulatorPluginInfo CContextSimulatorProxy::getSimulatorPluginInfo() const
CSimulatorPluginInfo CContextSimulatorProxy::getSimulatorPluginInfo() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorPluginInfo>(QLatin1String("getSimulatorPluginInfo"));
return m_dBusInterface->callDBusRet<CSimulatorPluginInfo>(QLatin1String("getSimulatorPluginInfo"));
}
CSimulatorInternals CContextSimulatorProxy::getSimulatorInternals() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CSimulatorInternals>(QLatin1String("getSimulatorInternals"));
return m_dBusInterface->callDBusRet<CSimulatorInternals>(QLatin1String("getSimulatorInternals"));
}
void CContextSimulatorProxy::disableModelsForMatching(const CAircraftModelList &removedModels, bool incremental)
@@ -184,7 +197,7 @@ namespace BlackCore
CAircraftModelList CContextSimulatorProxy::getDisabledModelsForMatching() const
{
return m_dBusInterface->callDBusRet<BlackMisc::Simulation::CAircraftModelList>(QLatin1String("getDisabledModelsForMatching"));
return m_dBusInterface->callDBusRet<CAircraftModelList>(QLatin1String("getDisabledModelsForMatching"));
}
bool CContextSimulatorProxy::triggerModelSetValidation(const CSimulatorInfo &simulator)

View File

@@ -59,6 +59,8 @@ namespace BlackCore
//! @{
virtual BlackMisc::Simulation::CSimulatorPluginInfo getSimulatorPluginInfo() const override;
virtual BlackMisc::Simulation::CSimulatorPluginInfoList getAvailableSimulatorPlugins() const override;
virtual BlackMisc::Simulation::Settings::CSimulatorSettings getSimulatorSettings() const override;
virtual bool setSimulatorSettings(const BlackMisc::Simulation::Settings::CSimulatorSettings &settings, const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo) override;
virtual bool startSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual void stopSimulatorPlugin(const BlackMisc::Simulation::CSimulatorPluginInfo &simulatorInfo) override;
virtual int checkListeners() override;

View File

@@ -39,7 +39,8 @@ namespace BlackMisc
{
IndexSimulatorDirectory = CPropertyIndex::GlobalIndexCSimulatorSettings,
IndexModelDirectories,
IndexModelExcludeDirectoryPatterns
IndexModelExcludeDirectoryPatterns,
IndexComIntegration //!< COM unit integration
};
//! Default constructor
@@ -84,6 +85,12 @@ namespace BlackMisc
//! Having model exclude directoy patterns?
bool hasModelExcludeDirectoryPatterns() const { return !this->getModelExcludeDirectoryPatterns().isEmpty(); }
//! COM unit integration
bool isComIntegrated() const { return m_comIntegration; }
//! COM unit integration
void setComIntegrated(bool integrated) { m_comIntegration = integrated; }
//! Reset the paths
void resetPaths();
@@ -103,12 +110,14 @@ namespace BlackMisc
QString m_simulatorDirectory; //!< Simulator directory
QStringList m_modelDirectories; //!< Model directory
QStringList m_excludeDirectoryPatterns; //!< Exclude model directory
bool m_comIntegration = false; //!< COM integration
BLACK_METACLASS(
CSimulatorSettings,
BLACK_METAMEMBER(simulatorDirectory),
BLACK_METAMEMBER(modelDirectories),
BLACK_METAMEMBER(excludeDirectoryPatterns)
BLACK_METAMEMBER(excludeDirectoryPatterns),
BLACK_METAMEMBER(comIntegration)
);
};