void DataMatrix::_resetFieldStrings() { const QMap<QString, QString> meta_strings = dataSource()->matrix().metaStrings(_field); QStringList fieldStringKeys = _fieldStrings.keys(); // remove field strings that no longer need to exist readLock(); for (int i=0; i<fieldStringKeys.count(); i++) { QString key = fieldStringKeys.at(i); if (!meta_strings.contains(key)) { StringPtr sp = _fieldStrings[key]; _fieldStrings.remove(key); sp = 0L; } } // find or insert strings, to set their value QMapIterator<QString, QString> it(meta_strings); while (it.hasNext()) { it.next(); QString key = it.key(); StringPtr sp; if (!_fieldStrings.contains(key)) { // insert a new one _fieldStrings.insert(key, sp = store()->createObject<String>()); sp->setProvider(this); sp->setSlaveName(key); } else { // find it sp = _fieldStrings[key]; } sp->setValue(it.value()); } unlock(); }
void BasicPlugin::setOutputString(const QString &type, const QString &name) { QString txt = !name.isEmpty() ? name : type; Q_ASSERT(store()); StringPtr s = store()->createObject<String>(); s->setProvider(this); s->setSlaveName(txt); s->setOrphan(false); _outputStrings.insert(type, s); }