From af483183c11a494394a3c61c47f9c46f805806bf Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Tue, 17 Mar 2009 20:43:33 -0400 Subject: Add override capabilities for Config values --- sigscript/Config.cpp | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'sigscript/Config.cpp') 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; } -- cgit