From fe6135aaad1db57dfcdaacf2ec3af6cb653b1b3e Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 16 Mar 2009 20:36:07 -0400 Subject: Smarter value handling when setting and deleting --- sigscript/Config.cpp | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'sigscript/Config.cpp') 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 -- cgit