From a447c054ca012252d64af3990f94a72f5e285e3e Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 10 Jun 2019 02:39:55 +0200 Subject: [PATCH] Ref T681, settings for CG from DB --- .../simulation/registermetadatasimulation.cpp | 7 ++- .../simulation/settings/simulatorsettings.cpp | 55 +++++++++++++++++-- .../simulation/settings/simulatorsettings.h | 36 +++++++++++- 3 files changed, 89 insertions(+), 9 deletions(-) diff --git a/src/blackmisc/simulation/registermetadatasimulation.cpp b/src/blackmisc/simulation/registermetadatasimulation.cpp index dc8d35326..684524e00 100644 --- a/src/blackmisc/simulation/registermetadatasimulation.cpp +++ b/src/blackmisc/simulation/registermetadatasimulation.cpp @@ -50,25 +50,28 @@ namespace BlackMisc CVPilotModelRuleSet::registerMetadata(); CAircraftMatcherSetup::registerMetadata(); + qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); + qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); - qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); // the ones generate with Q_DECLARE_FLAGS and no streamin operator fail here + qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType(); + qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType(); - qDBusRegisterMetaType(); qDBusRegisterMetaType(); qDBusRegisterMetaType(); + qRegisterMetaTypeStreamOperators(); qRegisterMetaTypeStreamOperators(); qRegisterMetaTypeStreamOperators(); qRegisterMetaTypeStreamOperators(); diff --git a/src/blackmisc/simulation/settings/simulatorsettings.cpp b/src/blackmisc/simulation/settings/simulatorsettings.cpp index ad48239b5..32614aaff 100644 --- a/src/blackmisc/simulation/settings/simulatorsettings.cpp +++ b/src/blackmisc/simulation/settings/simulatorsettings.cpp @@ -27,6 +27,25 @@ namespace BlackMisc { namespace Settings { + const QString &CSimulatorSettings::cgSourceAsString(CSimulatorSettings::CGSource source) + { + static const QString sf("simulator 1st"); + static const QString dbf("DB 1st"); + static const QString so("simulator only"); + static const QString dbo("DB only"); + + switch (source) + { + case CGFromSimulatorFirst: return sf; + case CGFromDBFirst: return dbf; + case CGFromSimulatorOnly: return so; + case CGFromDBOnly: return dbo; + default: break; + } + static const QString u("unknown"); + return u; + } + CSimulatorSettings::CSimulatorSettings() { } @@ -84,6 +103,28 @@ namespace BlackMisc return m_excludeDirectoryPatterns; } + bool CSimulatorSettings::setComIntegrated(bool integrated) + { + if (integrated == m_comIntegration) { return false; } + m_comIntegration = integrated; + return true; + } + + bool CSimulatorSettings::setCGSource(CSimulatorSettings::CGSource source) + { + const int s = static_cast(source); + if (m_cgSource == s) { return false; } + m_cgSource = s; + return true; + } + + bool CSimulatorSettings::setRecordOwnAircraftGnd(bool record) + { + if (record == m_recordGnd) { return false; } + m_recordGnd = record; + return true; + } + void CSimulatorSettings::resetPaths() { m_excludeDirectoryPatterns.clear(); @@ -112,9 +153,12 @@ namespace BlackMisc const ColumnIndex i = index.frontCasted(); switch (i) { - case IndexSimulatorDirectory: return CVariant::fromValue(m_simulatorDirectory); - case IndexModelDirectories: return CVariant::fromValue(m_modelDirectories); + case IndexSimulatorDirectory: return CVariant::fromValue(m_simulatorDirectory); + case IndexModelDirectories: return CVariant::fromValue(m_modelDirectories); case IndexModelExcludeDirectoryPatterns: return CVariant::fromValue(m_excludeDirectoryPatterns); + case IndexComIntegration: return CVariant::fromValue(m_comIntegration); + case IndexRecordOwnAircraftGnd: return CVariant::fromValue(m_recordGnd); + case IndexCGSource: return CVariant::fromValue(m_cgSource); default: return CValueObject::propertyByIndex(index); } } @@ -125,9 +169,12 @@ namespace BlackMisc const ColumnIndex i = index.frontCasted(); switch (i) { - case IndexSimulatorDirectory: this->setSimulatorDirectory(variant.toQString()); break; - case IndexModelDirectories: this->setSimulatorDirectory(variant.toQString()); break; + case IndexSimulatorDirectory: this->setSimulatorDirectory(variant.toQString()); break; + case IndexModelDirectories: this->setSimulatorDirectory(variant.toQString()); break; case IndexModelExcludeDirectoryPatterns: m_excludeDirectoryPatterns = variant.value(); break; + case IndexComIntegration: this->setComIntegrated(variant.toBool()); break; + case IndexRecordOwnAircraftGnd: this->setRecordOwnAircraftGnd(variant.toBool()); break; + case IndexCGSource: m_cgSource = variant.toInt(); break; default: CValueObject::setPropertyByIndex(index, variant); break; } } diff --git a/src/blackmisc/simulation/settings/simulatorsettings.h b/src/blackmisc/simulation/settings/simulatorsettings.h index 6a66fbeff..40dfc37fd 100644 --- a/src/blackmisc/simulation/settings/simulatorsettings.h +++ b/src/blackmisc/simulation/settings/simulatorsettings.h @@ -40,9 +40,23 @@ namespace BlackMisc IndexSimulatorDirectory = CPropertyIndex::GlobalIndexCSimulatorSettings, IndexModelDirectories, IndexModelExcludeDirectoryPatterns, - IndexComIntegration //!< COM unit integration + IndexComIntegration, //!< COM unit integration + IndexRecordOwnAircraftGnd, + IndexCGSource }; + //! Where we get the CG (aka vertical offset) from + enum CGSource + { + CGFromSimulatorFirst, + CGFromDBFirst, + CGFromSimulatorOnly, + CGFromDBOnly + }; + + //! CG source as string + static const QString &cgSourceAsString(CGSource source); + //! Default constructor CSimulatorSettings(); @@ -89,7 +103,19 @@ namespace BlackMisc bool isComIntegrated() const { return m_comIntegration; } //! COM unit integration - void setComIntegrated(bool integrated) { m_comIntegration = integrated; } + bool setComIntegrated(bool integrated); + + //! CG source + CGSource getCGSource() const { return static_cast(m_cgSource); } + + //! CG source + bool setCGSource(CGSource source); + + //! Record GND values (of own aircraft) + bool isRecordOwnAircraftGnd() const { return m_recordGnd; } + + //! Record GND values (of own aircraft) + bool setRecordOwnAircraftGnd(bool record); //! Reset the paths void resetPaths(); @@ -111,13 +137,16 @@ namespace BlackMisc QStringList m_modelDirectories; //!< Model directory QStringList m_excludeDirectoryPatterns; //!< Exclude model directory bool m_comIntegration = false; //!< COM integration + bool m_recordGnd = false; //!< Record GND values (of own aircraft) + int m_cgSource = static_cast(CGFromSimulatorFirst); //!< CG source BLACK_METACLASS( CSimulatorSettings, BLACK_METAMEMBER(simulatorDirectory), BLACK_METAMEMBER(modelDirectories), BLACK_METAMEMBER(excludeDirectoryPatterns), - BLACK_METAMEMBER(comIntegration) + BLACK_METAMEMBER(comIntegration), + BLACK_METAMEMBER(cgSource) ); }; @@ -599,6 +628,7 @@ namespace BlackMisc } // ns Q_DECLARE_METATYPE(BlackMisc::Simulation::Settings::CSimulatorSettings) +Q_DECLARE_METATYPE(BlackMisc::Simulation::Settings::CSimulatorSettings::CGSource) Q_DECLARE_METATYPE(BlackMisc::Simulation::Settings::CFsxP3DSettings) Q_DECLARE_METATYPE(BlackMisc::CCollection) Q_DECLARE_METATYPE(BlackMisc::CSequence)