diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2008-10-31 17:52:15 +0000 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2008-10-31 17:52:15 +0000 |
commit | 518d85ab591723da2c5a1a0e01a04dcf0e75c5c4 (patch) | |
tree | 924a35f7ab7420f915f932db9bf11f81c8e057a5 /sigscript/Config.cpp | |
parent | 54fa12c1143185f7aa18945ccc6bb8d4b9ad630c (diff) | |
download | sigen-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.cpp | 60 |
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() |