ObjectPtr StringDialog::createNewGeneratedString(){ Q_ASSERT(_document && _document->objectStore()); QString value = _stringTab->value(); // qDebug() << "Creating new string ===>" // << "\n\ttag:" << DataDialog::tagString() // << "\n\tvalue:" << value // << endl; StringPtr string = _document->objectStore()->createObject<String>(); string->setValue(value); string->setOrphan(true); string->setEditable(true); if (DataDialog::tagStringAuto()) { string->setDescriptiveName(QString()); } else { string->setDescriptiveName(DataDialog::tagString()); } string->writeLock(); string->registerChange(); string->unlock(); _dataObjectName = string->Name(); //UpdateServer::self()->requestUpdateSignal(); return static_cast<ObjectPtr>(string); }
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(); }