[QGIS Commit] r8737 - trunk/qgis/src/providers/memory

svn_qgis at osgeo.org svn_qgis at osgeo.org
Tue Jul 8 10:05:11 EDT 2008


Author: wonder
Date: 2008-07-08 10:05:11 -0400 (Tue, 08 Jul 2008)
New Revision: 8737

Modified:
   trunk/qgis/src/providers/memory/memoryprovider.cpp
Log:
added missing implementations for changeAttributeValues, changeGeometryValues


Modified: trunk/qgis/src/providers/memory/memoryprovider.cpp
===================================================================
--- trunk/qgis/src/providers/memory/memoryprovider.cpp	2008-07-08 14:03:09 UTC (rev 8736)
+++ trunk/qgis/src/providers/memory/memoryprovider.cpp	2008-07-08 14:05:11 UTC (rev 8737)
@@ -306,19 +306,41 @@
 
 bool QgsMemoryProvider::changeAttributeValues(const QgsChangedAttributesMap & attr_map)
 {
-  // TODO: change attribute values
-  return FALSE;
+  for (QgsChangedAttributesMap::const_iterator it = attr_map.begin(); it != attr_map.end(); ++it)
+  {
+    QgsFeatureMap::iterator fit = mFeatures.find(it.key());
+    if (fit == mFeatures.end())
+      continue;
+    
+    const QgsAttributeMap& attrs = it.value();
+    for (QgsAttributeMap::const_iterator it2 = attrs.begin(); it2 != attrs.end(); ++it2)
+      fit->changeAttribute(it2.key(), it2.value());
+  }
+  return TRUE;
 }
 
 bool QgsMemoryProvider::changeGeometryValues(QgsGeometryMap & geometry_map)
 {
-  // TODO: change geometries
+  for (QgsGeometryMap::const_iterator it = geometry_map.begin(); it != geometry_map.end(); ++it)
+  {
+    QgsFeatureMap::iterator fit = mFeatures.find(it.key());
+    if (fit == mFeatures.end())
+      continue;
+    
+    // update spatial index
+    if (mSpatialIndex)
+      mSpatialIndex->deleteFeature(*fit);
+    
+    fit->setGeometry(it.value());
+    
+    // update spatial index
+    if (mSpatialIndex)
+      mSpatialIndex->insertFeature(*fit);
+  }
   
-  // TODO: update spatial index
-  
   updateExtent();
   
-  return FALSE;
+  return TRUE;
 }
 
 bool QgsMemoryProvider::createSpatialIndex()



More information about the QGIS-commit mailing list