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