diff options
Diffstat (limited to 'sigscript/Config.cpp')
| -rw-r--r-- | sigscript/Config.cpp | 55 |
1 files changed, 22 insertions, 33 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp index 370f1b4a..f5924056 100644 --- a/sigscript/Config.cpp +++ b/sigscript/Config.cpp @@ -25,28 +25,26 @@ using namespace Sigscript; Config::Config(Config* parent) : QObject(parent), - m_lock(QReadWriteLock::Recursive), m_parent(parent) { } bool Config::addValue(const QString& name, const QVariant& value) { - if (!m_values.contains(name) || (m_values[name].second & Deleted)) + if (!m_values.contains(name) || (m_values.options(name) & Deleted)) return setValue(name, value); return false; } bool Config::setValue(const QString& name, const QVariant& value) { - if (m_values.contains(name) && (m_values[name].second & ReadOnly)) + if (m_values.contains(name) && (m_values.options(name) & ReadOnly)) return false; if (!m_values.contains(name)) emit(valueAdded(name, value)); - if (m_values[name].second & Deleted) + if (m_values.options(name) & Deleted) unsetOptions(name, Deleted); - QWriteLocker locker(&m_lock); - m_values[name] = Value(value, 0); + m_values.setValue(name, value); emit(valueChanged(name, value)); return true; } @@ -56,10 +54,7 @@ bool Config::removeValue(const QString& name, const bool shadow) if (shadow) setOptions(name, Deleted); else if (m_values.contains(name)) - { - QWriteLocker locker(&m_lock); - m_values.remove(name); - } + m_values.unsetValue(name); else return false; emit(valueRemoved(name)); @@ -68,12 +63,11 @@ bool Config::removeValue(const QString& name, const bool shadow) QVariant Config::value(const QString& name, const bool recursive) const { - QReadLocker locker(&m_lock); if (m_values.contains(name)) { - if (m_values[name].second & (Deleted | Hidden)) + if (m_values.options(name) & (Deleted | Hidden)) return QVariant(); - return m_values[name].first; + return m_values.value(name); } if (recursive && m_parent) return m_parent->value(name, true); @@ -82,9 +76,8 @@ QVariant Config::value(const QString& name, const bool recursive) const bool Config::hasValue(const QString& name, const bool recursive) const { - QReadLocker locker(&m_lock); if (m_values.contains(name)) - return !(m_values[name].second & (Deleted | Hidden)); + return !(m_values.options(name) & (Deleted | Hidden)); if (recursive && m_parent) return m_parent->hasValue(name, true); return false; @@ -92,48 +85,44 @@ bool Config::hasValue(const QString& name, const bool recursive) const QStringList Config::values(const bool recursive) const { - QReadLocker locker(&m_lock); QStringList values = m_values.keys(); if (recursive && m_parent) values += m_parent->values(true); const QStringList keys = m_values.keys(); foreach (const QString& key, keys) { - if (m_values[key].second & (Deleted | Hidden)) + if (m_values.options(key) & (Deleted | Hidden)) values.removeAll(key); } return values.toSet().toList(); } -bool Config::setOptions(const QString& name, const Options options) +bool Config::setOptions(const QString& name, const ConfigOptions options) { - if ((m_values.contains(name) && (~m_values[name].second & options)) || addValue(name, QVariant())) + if ((m_values.contains(name) && (~m_values.options(name) & options)) || addValue(name, QVariant())) { - QWriteLocker locker(&m_lock); - m_values[name].second |= options; + m_values.setOptions(name, options); emit(optionsChanged(name, options)); return true; } return false; } -bool Config::unsetOptions(const QString& name, const Options options) +bool Config::unsetOptions(const QString& name, const ConfigOptions options) { - if (m_values.contains(name) && (m_values[name].second & options)) + if (m_values.contains(name) && (m_values.options(name) & options)) { - QWriteLocker locker(&m_lock); - m_values[name].second &= ~options; + m_values.unsetOptions(name, options); emit(optionsChanged(name, options)); return true; } return false; } -Config::Options Config::options(const QString& name, const bool recursive) const +ConfigOptions Config::options(const QString& name, const bool recursive) const { - QReadLocker locker(&m_lock); if (m_values.contains(name)) - return m_values[name].second; + return m_values.options(name); if (recursive && m_parent) return m_parent->options(name, recursive); return 0; @@ -141,15 +130,15 @@ Config::Options Config::options(const QString& name, const bool recursive) const void Config::clean() { - for (QMutableMapIterator<QString, Value> i(m_values); i.hasNext(); i.next()) + QStringList values = m_values.keys(); + foreach (const QString& value, values) { - unsetOptions(i.key(), Hidden); - if (i.value().second & Temporary) - removeValue(i.key(), false); + unsetOptions(value, Hidden); + if (m_values.options(value) & Temporary) + removeValue(value, false); } } void Config::writeBack() { - QWriteLocker locker(&m_lock); } |
