diff options
Diffstat (limited to 'sigscript/Config.cpp')
-rw-r--r-- | sigscript/Config.cpp | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp index f5924056..a30fa997 100644 --- a/sigscript/Config.cpp +++ b/sigscript/Config.cpp @@ -121,10 +121,40 @@ bool Config::unsetOptions(const QString& name, const ConfigOptions options) ConfigOptions Config::options(const QString& name, const bool recursive) const { + ConfigOptions options = 0; if (m_values.contains(name)) - return m_values.options(name); + options = m_values.options(name); if (recursive && m_parent) - return m_parent->options(name, recursive); + options |= m_parent->options(name, recursive) & ~overrides(name); + return options; +} + +bool Config::setOverrides(const QString& name, const ConfigOptions newOverrides) +{ + if ((~overrides(name) & newOverrides) || addValue(name, QVariant())) + { + m_values.setOverrides(name, newOverrides); + emit(overridesChanged(name, overrides(name))); + return true; + } + return false; +} + +bool Config::unsetOverrides(const QString& name, const ConfigOptions oldOverrides) +{ + if (overrides(name) & oldOverrides) + { + m_values.unsetOverrides(name, oldOverrides); + emit(overridesChanged(name, overrides(name))); + return true; + } + return false; +} + +ConfigOptions Config::overrides(const QString& name) const +{ + if (m_values.contains(name)) + return m_values.overrides(name); return 0; } |