diff --git a/src/blackmisc/simulation/settings/simulatorsettings.cpp b/src/blackmisc/simulation/settings/simulatorsettings.cpp index 568650ef7..b211b4515 100644 --- a/src/blackmisc/simulation/settings/simulatorsettings.cpp +++ b/src/blackmisc/simulation/settings/simulatorsettings.cpp @@ -46,6 +46,11 @@ namespace BlackMisc m_modelDirectories.removeDuplicates(); } + void CSimulatorSettings::clearModelDirectories() + { + m_modelDirectories.clear(); + } + void CSimulatorSettings::setModelDirectory(const QString &modelDirectory) { m_modelDirectories = QStringList({ modelDirectory }); @@ -107,7 +112,7 @@ namespace BlackMisc switch (i) { case IndexSimulatorDirectory: return CVariant::fromValue(m_simulatorDirectory); - case IndexModelDirectory: return CVariant::fromValue(m_modelDirectories); + case IndexModelDirectories: return CVariant::fromValue(m_modelDirectories); case IndexModelExcludeDirectoryPatterns: return CVariant::fromValue(m_excludeDirectoryPatterns); default: return CValueObject::propertyByIndex(index); } @@ -120,7 +125,7 @@ namespace BlackMisc switch (i) { case IndexSimulatorDirectory: this->setSimulatorDirectory(variant.toQString()); break; - case IndexModelDirectory: this->setSimulatorDirectory(variant.toQString()); break; + case IndexModelDirectories: this->setSimulatorDirectory(variant.toQString()); break; case IndexModelExcludeDirectoryPatterns: m_excludeDirectoryPatterns = variant.value(); break; default: CValueObject::setPropertyByIndex(index, variant); break; } @@ -178,6 +183,13 @@ namespace BlackMisc return this->setSettings(s, simulator); } + CStatusMessage CMultiSimulatorSettings::clearModelDirectories(const CSimulatorInfo &simulator) + { + CSimulatorSettings s = this->getSettings(simulator); + s.clearModelDirectories(); + return this->setSettings(s, simulator); + } + CStatusMessage CMultiSimulatorSettings::setAndSaveSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator) { Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator"); @@ -194,6 +206,11 @@ namespace BlackMisc return CStatusMessage({ CLogCategory::settings() }, CStatusMessage::SeverityError, "wrong simulator"); } + CStatusMessage CMultiSimulatorSettings::setAndSaveSettings(const CSpecializedSimulatorSettings &settings, const CSimulatorInfo &simulator) + { + return this->setAndSaveSettings(settings.getGenericSettings(), simulator); + } + CStatusMessage CMultiSimulatorSettings::saveSettings(const CSimulatorInfo &simulator) { Q_ASSERT_X(simulator.isSingleSimulator(), Q_FUNC_INFO, "No single simulator"); @@ -276,22 +293,27 @@ namespace BlackMisc void CMultiSimulatorSettings::onFsxSettingsChanged() { - emit this->simulatorSettingsChanged(CSimulatorInfo::fsx()); + this->emitSettingsChanged(CSimulatorInfo::fsx()); } void CMultiSimulatorSettings::onP3DSettingsChanged() { - emit this->simulatorSettingsChanged(CSimulatorInfo::p3d()); + this->emitSettingsChanged(CSimulatorInfo::p3d()); } void CMultiSimulatorSettings::onFs9SettingsChanged() { - emit this->simulatorSettingsChanged(CSimulatorInfo::fs9()); + this->emitSettingsChanged(CSimulatorInfo::fs9()); } void CMultiSimulatorSettings::onXPSettingsChanged() { - emit this->simulatorSettingsChanged(CSimulatorInfo::xplane()); + this->emitSettingsChanged(CSimulatorInfo::xplane()); + } + + void CMultiSimulatorSettings::emitSettingsChanged(const CSimulatorInfo &simInfo) + { + emit this->settingsChanged(simInfo); } void CSimulatorMessagesSettings::setTechnicalLogSeverity(CStatusMessage::StatusSeverity severity) @@ -439,11 +461,6 @@ namespace BlackMisc } } - void CSpecializedSimulatorSettings::setSimulatorDirectory(const QString &simDir) - { - m_genericSettings.setSimulatorDirectory(simDir); - } - const QString &CSpecializedSimulatorSettings::getDefaultSimulatorDirectory() const { return CSpecializedSimulatorSettings::defaultSimulatorDirectory(m_simulator); diff --git a/src/blackmisc/simulation/settings/simulatorsettings.h b/src/blackmisc/simulation/settings/simulatorsettings.h index 0eba3de97..af5614c66 100644 --- a/src/blackmisc/simulation/settings/simulatorsettings.h +++ b/src/blackmisc/simulation/settings/simulatorsettings.h @@ -39,7 +39,7 @@ namespace BlackMisc enum ColumnIndex { IndexSimulatorDirectory = CPropertyIndex::GlobalIndexCSimulatorSettings, - IndexModelDirectory, + IndexModelDirectories, IndexModelExcludeDirectoryPatterns }; @@ -61,6 +61,9 @@ namespace BlackMisc //! Set model directories void setModelDirectories(const QStringList &modelDirectories); + //! Clear the model directories + void clearModelDirectories(); + //! Set single model directory void setModelDirectory(const QString &modelDirectory); @@ -98,7 +101,7 @@ namespace BlackMisc void setPropertyByIndex(const CPropertyIndex &index, const CVariant &variant); private: - QString m_simulatorDirectory; //! Simulator directory + QString m_simulatorDirectory; //!< Simulator directory QStringList m_modelDirectories; //!< Model directory QStringList m_excludeDirectoryPatterns; //!< Exclude model directory @@ -123,9 +126,6 @@ namespace BlackMisc //! Ctor CSpecializedSimulatorSettings(const QString &simulatorDir, const CSimulatorInfo &simulator) : m_genericSettings(CSimulatorSettings(simulatorDir)), m_simulator(simulator) {} - //! Alter simulator directory - void setSimulatorDirectory(const QString &simDir); - //! Default simulator path per simulator const QString &getDefaultSimulatorDirectory() const; @@ -162,6 +162,15 @@ namespace BlackMisc //! Model exclude patterns or empty if default const QStringList &getModelExcludeDirectoryPatternsOrDefault() const; + //! \copydoc CSimulatorSettings::clearModelDirectories + void clearModelDirectories() { m_genericSettings.clearModelDirectories(); } + + //! \copydoc CSimulatorSettings::addModelDirectory + bool addModelDirectory(const QString &modelDirectory) { return m_genericSettings.addModelDirectory(modelDirectory); } + + //! \copydoc CSimulatorSettings::setSimulatorDirectory + void setSimulatorDirectory(const QString &simDir) { m_genericSettings.setSimulatorDirectory(simDir); } + //! Default model path per simulator static const QStringList &defaultModelDirectories(const CSimulatorInfo &simulator); @@ -253,9 +262,15 @@ namespace BlackMisc //! Set model directory per simulator CStatusMessage addModelDirectory(const QString &modelDirectory, const CSimulatorInfo &simulator); + //! Clear the model directory + CStatusMessage clearModelDirectories(const CSimulatorInfo &simulator); + //! Set settings per simulator CStatusMessage setAndSaveSettings(const CSimulatorSettings &settings, const CSimulatorInfo &simulator); + //! Set settings per simulator + CStatusMessage setAndSaveSettings(const CSpecializedSimulatorSettings &settings, const CSimulatorInfo &simulator); + //! Set settings per simulator CStatusMessage saveSettings(const CSimulatorInfo &simulator); @@ -296,7 +311,7 @@ namespace BlackMisc signals: //! Simulator settings have been changed - void simulatorSettingsChanged(const BlackMisc::Simulation::CSimulatorInfo &simulator); + void settingsChanged(const CSimulatorInfo &simulator); private: CSetting m_simSettingsFsx { this, &CMultiSimulatorSettings::onFsxSettingsChanged }; //!< FSX settings @@ -304,10 +319,15 @@ namespace BlackMisc CSetting m_simSettingsP3D { this, &CMultiSimulatorSettings::onP3DSettingsChanged }; //!< P3D settings CSetting m_simSettingsXP { this, &CMultiSimulatorSettings::onXPSettingsChanged }; //!< XP settings + //! Settings changed, this will only detect if settings are changed elsewhere @{ void onFsxSettingsChanged(); void onFs9SettingsChanged(); void onP3DSettingsChanged(); void onXPSettingsChanged(); + //! @} + + //! Emit the signal, allows breakpoint + void emitSettingsChanged(const CSimulatorInfo &simInfo); }; //! Settings regarding message handling.