summaryrefslogtreecommitdiffstats
path: root/sigscript/Config.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-10-31 17:52:15 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-10-31 17:52:15 +0000
commit518d85ab591723da2c5a1a0e01a04dcf0e75c5c4 (patch)
tree924a35f7ab7420f915f932db9bf11f81c8e057a5 /sigscript/Config.cpp
parent54fa12c1143185f7aa18945ccc6bb8d4b9ad630c (diff)
downloadsigen-518d85ab591723da2c5a1a0e01a04dcf0e75c5c4.tar.gz
sigen-518d85ab591723da2c5a1a0e01a04dcf0e75c5c4.tar.xz
sigen-518d85ab591723da2c5a1a0e01a04dcf0e75c5c4.zip
[FIX] Adding subdirectories is done smarter now (no hard dependencies just to build sigmod)
[FIX] Added kdegames dependency because it is going to be used in signet [FIX] Config values now have flags git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@286 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'sigscript/Config.cpp')
-rw-r--r--sigscript/Config.cpp60
1 files changed, 40 insertions, 20 deletions
diff --git a/sigscript/Config.cpp b/sigscript/Config.cpp
index 6460053c..0340d741 100644
--- a/sigscript/Config.cpp
+++ b/sigscript/Config.cpp
@@ -23,40 +23,53 @@ Sigscript::Config::Config(QObject* parent) :
{
}
-void Sigscript::Config::addValue(const QString& name, const QVariant& value, const bool temporary)
+void Sigscript::Config::addValue(const QString& name, const QVariant& value, const Options options)
{
if (!m_values.contains(name))
{
- setValue(name, value, temporary);
+ setValue(name, value, options);
emit(valueAdded(name, value));
}
}
-void Sigscript::Config::setValue(const QString& name, const QVariant& value, const bool temporary)
+void Sigscript::Config::setValue(const QString& name, const QVariant& value, const Options options)
{
- const QVariant& oldValue = m_values[name];
- m_values[name] = value;
- if (temporary)
- {
- if (m_temporaries.contains(name))
- m_temporaries.append(name);
- }
- else
- m_temporaries.removeAll(name);
+ QVariant oldValue = m_values[name].first;
+ m_values[name] = Value(value, options);
emit(valueChanged(name, oldValue, value));
}
-void Sigscript::Config::removeValue(const QString& name)
+void Sigscript::Config::setOptions(const QString& name, const Options options)
+{
+ const Options oldOptions = m_values[name].second;
+ m_values[name].second |= options;
+ emit(optionsChanged(name, oldOptions, options));
+}
+
+void Sigscript::Config::unsetOptions(const QString& name, const Options options)
+{
+ const Options oldOptions = m_values[name].second;
+ m_values[name].second |= ~options;
+ emit(optionsChanged(name, oldOptions, options));
+}
+
+void Sigscript::Config::removeValue(const QString& name, const bool shadow)
{
- m_values.remove(name);
- m_temporaries.removeAll(name);
+ if (shadow)
+ m_values[name].second |= Deleted;
+ else
+ m_values.remove(name);
emit(valueRemoved(name));
}
QVariant Sigscript::Config::value(const QString& name, const bool recursive) const
{
if (m_values.contains(name))
- return m_values[name];
+ {
+ if (m_values[name].second & (Deleted | Hidden))
+ return QVariant();
+ return m_values[name].first;
+ }
if (recursive)
{
QObject* par = parent();
@@ -73,16 +86,23 @@ QVariant Sigscript::Config::value(const QString& name, const bool recursive) con
bool Sigscript::Config::hasValue(const QString& name, const bool recursive) const
{
if (m_values.contains(name))
- return true;
+ return !(m_values[name].second & (Deleted | Hidden));
if (recursive && qobject_cast<Config*>(parent()))
return qobject_cast<Config*>(parent())->hasValue(name, true);
return false;
}
-void Sigscript::Config::clearTemporary()
+void Sigscript::Config::clean()
{
- while (m_temporaries.size())
- removeValue(m_temporaries[0]);
+ for (QMutableMapIterator<QString, Value> i(m_values); i.hasNext(); i.next())
+ {
+ if (i.value().second & Temporary)
+ {
+ i.remove();
+ continue;
+ }
+ i.value().second &= ~Hidden;
+ }
}
void Sigscript::Config::writeBack()