diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 20:43:33 -0400 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 20:43:33 -0400 |
commit | af483183c11a494394a3c61c47f9c46f805806bf (patch) | |
tree | 03e0677ee576274550dbb25e893bbad34d8b87dc /sigscript/Config.cpp | |
parent | 86d3207a4fc047d62cba109be7e8f40a43cc7d65 (diff) | |
download | sigen-af483183c11a494394a3c61c47f9c46f805806bf.tar.gz sigen-af483183c11a494394a3c61c47f9c46f805806bf.tar.xz sigen-af483183c11a494394a3c61c47f9c46f805806bf.zip |
Add override capabilities for Config values
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; } |