void ShapeFile::shapeModified(Subject& subject, const string& signal, const boost::any& v) { Feature* pFeature = dynamic_cast<Feature*>(&subject); if (pFeature != NULL) { vector<string> fieldNames = pFeature->getFieldNames(); for (vector<string>::iterator iter = fieldNames.begin(); iter != fieldNames.end(); ++iter) { string name = *iter; if (!name.empty()) { if (!hasField(name)) { string type = pFeature->getFieldType(name); addField(name, type); } } } } }
void ShapeFileOptionsWidget::updateFieldValues() { for (QMap<QTreeWidgetItem*, Feature*>::iterator iter = mFeatures.begin(); iter != mFeatures.end(); ++iter) { QTreeWidgetItem* pItem = iter.key(); Feature* pFeature = iter.value(); if ((pItem != NULL) && (pFeature != NULL)) { vector<string> fieldNames = pFeature->getFieldNames(); for (vector<string>::iterator fieldIter = fieldNames.begin(); fieldIter != fieldNames.end(); ++fieldIter) { string name = *fieldIter; if (!name.empty()) { string type = pFeature->getFieldType(name); QString strValue; const DataVariant &var = pFeature->getFieldValue(name); strValue = QString::fromStdString(var.toDisplayString()); int iColumn = getColumn(QString::fromLatin1(name.c_str())); if (iColumn == -1) { addField(QString::fromLatin1(name.c_str()), QString::fromLatin1(type.c_str())); iColumn = getColumn(QString::fromLatin1(name.c_str())); } if (iColumn != -1) { pItem->setText(iColumn, strValue); } } } } } }