diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-16 20:36:07 -0400 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-17 17:36:05 -0400 |
commit | fe6135aaad1db57dfcdaacf2ec3af6cb653b1b3e (patch) | |
tree | 5c06df763e1a506f7b28159cd0184977f2d7a7d3 /sigscript | |
parent | 7e7427be5254dcdf2ce471918015db604e25449d (diff) | |
download | sigen-fe6135aaad1db57dfcdaacf2ec3af6cb653b1b3e.tar.gz sigen-fe6135aaad1db57dfcdaacf2ec3af6cb653b1b3e.tar.xz sigen-fe6135aaad1db57dfcdaacf2ec3af6cb653b1b3e.zip |
Smarter value handling when setting and deleting
Diffstat (limited to 'sigscript')
-rw-r--r-- | sigscript/Config.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp index 9daff0a8..d776956d 100644 --- a/sigscript/Config.cpp +++ b/sigscript/Config.cpp @@ -32,18 +32,24 @@ Config::Config(Config* parent) : bool Config::addValue(const QString& name, const QVariant& value, const Options options) { - if (!m_values.contains(name)) - { - emit(valueAdded(name, value)); - setValue(name, value, options); - } + if (!m_values.contains(name) || (m_values[name].second & Deleted)) + return setValue(name, value, options); + return false; } bool Config::setValue(const QString& name, const QVariant& value, const Options options) { QWriteLocker locker(&m_lock); + if (m_values.contains(name) && (m_values[name].second & ReadOnly)) + return false; + if (!m_values.contains(name) || (m_values[name].second & Deleted)) + { + m_values[name].second &= ~Deleted; + emit(valueAdded(name, value)); + } m_values[name] = Value(value, options); emit(valueChanged(name, value)); + return true; } bool Config::removeValue(const QString& name, const bool shadow) @@ -51,9 +57,12 @@ bool Config::removeValue(const QString& name, const bool shadow) QWriteLocker locker(&m_lock); if (shadow) m_values[name].second |= Deleted; - else + else if (m_values.contains(name)) m_values.remove(name); + else + return false; emit(valueRemoved(name)); + return true; } QVariant Config::value(const QString& name, const bool recursive) const |