summaryrefslogtreecommitdiffstats
path: root/sigscript/Config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigscript/Config.cpp')
-rw-r--r--sigscript/Config.cpp34
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;
}