Ref T246, simulator settings improvements

This commit is contained in:
Klaus Basan
2018-07-16 15:59:26 +02:00
parent 76334b75d1
commit 97da1c9a3c
2 changed files with 54 additions and 17 deletions

View File

@@ -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<QStringList>(); 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);

View File

@@ -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<Settings::TSimulatorFsx> m_simSettingsFsx { this, &CMultiSimulatorSettings::onFsxSettingsChanged }; //!< FSX settings
@@ -304,10 +319,15 @@ namespace BlackMisc
CSetting<Settings::TSimulatorP3D> m_simSettingsP3D { this, &CMultiSimulatorSettings::onP3DSettingsChanged }; //!< P3D settings
CSetting<Settings::TSimulatorXP> 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.