Exemple #1
0
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);
               }
            }
         }
      }
   }
}