[QGIS Commit] r9439 - trunk/qgis/src/core

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Oct 6 13:35:47 EDT 2008


Author: timlinux
Date: 2008-10-06 13:35:46 -0400 (Mon, 06 Oct 2008)
New Revision: 9439

Modified:
   trunk/qgis/src/core/qgsprojectfiletransform.cpp
   trunk/qgis/src/core/qgsprojectfiletransform.h
Log:
update qml related changes in project file from 0.11 to 1.0

Modified: trunk/qgis/src/core/qgsprojectfiletransform.cpp
===================================================================
--- trunk/qgis/src/core/qgsprojectfiletransform.cpp	2008-10-06 13:33:45 UTC (rev 9438)
+++ trunk/qgis/src/core/qgsprojectfiletransform.cpp	2008-10-06 17:35:46 UTC (rev 9439)
@@ -20,6 +20,8 @@
 #include "qgsprojectfiletransform.h"
 #include "qgsprojectversion.h"
 #include "qgslogger.h"
+#include "qgsvectordataprovider.h"
+#include "qgsvectorlayer.h"
 #include <QTextStream>
 #include <QDomDocument>
 #include <QPrinter> //to find out screen resolution
@@ -35,7 +37,8 @@
   {PFV( 0, 9, 0 ), PFV( 0, 9, 1 ), &QgsProjectFileTransform::transformNull},
   {PFV( 0, 9, 1 ), PFV( 0, 10, 0 ), &QgsProjectFileTransform::transform091to0100},
   {PFV( 0, 9, 2 ), PFV( 0, 10, 0 ), &QgsProjectFileTransform::transformNull},
-  {PFV( 0, 10, 0 ), PFV( 0, 11, 0 ), &QgsProjectFileTransform::transform0100to0110}
+  {PFV( 0, 10, 0 ), PFV( 0, 11, 0 ), &QgsProjectFileTransform::transform0100to0110},
+  {PFV( 0, 11, 0 ), PFV( 1, 0, 0), &QgsProjectFileTransform::transform0110to1000}
 };
 
 bool QgsProjectFileTransform::updateRevision( QgsProjectVersion newVersion )
@@ -279,3 +282,67 @@
     }
   }
 }
+
+void QgsProjectFileTransform::transform0110to1000()
+{
+  if ( ! mDom.isNull() )
+  {
+    QDomNodeList layerList = mDom.elementsByTagName("maplayer");
+    for(int i = 0; i < layerList.size(); ++i)
+      {
+	QDomElement layerElem = layerList.at(i).toElement();
+	QString typeString = layerElem.attribute("type");
+	if(typeString != "vector")
+	  {
+	    continue;
+	  }
+	
+	//datasource 
+	QDomNode dataSourceNode = layerElem.namedItem("datasource");
+	if(dataSourceNode.isNull())
+	  {
+	    return;
+	  }
+	QString dataSource = dataSourceNode.toElement().text();
+
+	//provider key
+	QDomNode providerNode = layerElem.namedItem("provider");
+	if(providerNode.isNull())
+	  {
+	    return;
+	  }
+	QString providerKey = providerNode.toElement().text();
+
+	//create the layer to get the provider for int->fieldName conversion
+	QgsVectorLayer* theLayer = new QgsVectorLayer(dataSource, "", providerKey, false);
+	if(!theLayer->isValid())
+	  {
+	    delete theLayer;
+	    return;
+	  }
+
+	QgsVectorDataProvider* theProvider = theLayer->dataProvider();
+	if(!theProvider)
+	  {
+	    return;
+	  }
+	QgsFieldMap theFieldMap = theProvider->fields();
+
+	//read classificationfield
+	QDomNodeList classificationFieldList = layerElem.elementsByTagName("classificationfield");
+	for(int j = 0; j < classificationFieldList.size(); ++j)
+	  {
+	    QDomElement classificationFieldElem = classificationFieldList.at(j).toElement();
+	    int fieldNumber = classificationFieldElem.text().toInt();
+	    QgsFieldMap::const_iterator field_it = theFieldMap.find(fieldNumber);
+	    if(field_it != theFieldMap.constEnd())
+	      {
+		QDomText fieldName = mDom.createTextNode(field_it.value().name());
+		QDomNode nameNode = classificationFieldElem.firstChild();
+		classificationFieldElem.replaceChild(fieldName, nameNode);
+	      }
+	  }
+	
+      }
+  }
+}

Modified: trunk/qgis/src/core/qgsprojectfiletransform.h
===================================================================
--- trunk/qgis/src/core/qgsprojectfiletransform.h	2008-10-06 13:33:45 UTC (rev 9438)
+++ trunk/qgis/src/core/qgsprojectfiletransform.h	2008-10-06 17:35:46 UTC (rev 9439)
@@ -79,6 +79,7 @@
     void transform081to090();
     void transform091to0100();
     void transform0100to0110();
+    void transform0110to1000();
 };
 
 



More information about the QGIS-commit mailing list