/* * Copyright 2008 Ben Boeckel * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ // Header include #include "Config.h" Pokescripting::Config::Config(QObject* parent) : QObject(parent) { } void Pokescripting::Config::addValue(const QString& name, const QVariant& value, const bool temporary) { if (!m_values.contains(name)) { setValue(name, value, temporary); emit(valueAdded(name, value)); } } void Pokescripting::Config::setValue(const QString& name, const QVariant& value, const bool temporary) { 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); emit(valueChanged(name, oldValue, value)); } void Pokescripting::Config::removeValue(const QString& name) { m_values.remove(name); m_temporaries.removeAll(name); emit(valueRemoved(name)); } QVariant Pokescripting::Config::value(const QString& name, const bool recursive) const { if (m_values.contains(name)) return m_values[name]; if (recursive) { QObject* par = parent(); while (par) { if (qobject_cast(par) && qobject_cast(par)->hasValue(name)) return qobject_cast(par)->value(name); par = par->parent(); } } return QVariant(); } bool Pokescripting::Config::hasValue(const QString& name, const bool recursive) const { if (m_values.contains(name)) return true; if (recursive && qobject_cast(parent())) return qobject_cast(parent())->hasValue(name, true); return false; } void Pokescripting::Config::clearTemporary() { while (m_temporaries.size()) removeValue(m_temporaries[0]); } void Pokescripting::Config::writeBack() { }