[QGIS Commit] r9020 - branches/advanced_printing_branch/src/app/composer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Thu Aug 7 06:10:17 EDT 2008


Author: mhugent
Date: 2008-08-07 06:10:17 -0400 (Thu, 07 Aug 2008)
New Revision: 9020

Modified:
   branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
   branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp
Log:
Display name of classification attribute in composer legend if option is set

Modified: branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp	2008-08-07 09:54:28 UTC (rev 9019)
+++ branches/advanced_printing_branch/src/app/composer/qgscomposerlegend.cpp	2008-08-07 10:10:17 UTC (rev 9020)
@@ -199,9 +199,9 @@
 	  if(!symbolIcon.isNull() && p)
 	    {
 	      symbolIcon.paint(p, currentXCoord, currentYCoord, mSymbolWidth, mSymbolHeight);
+	      currentXCoord += mSymbolWidth;
+	      currentXCoord += mIconLabelSpace;
 	    }
-	  currentXCoord += mSymbolWidth;
-	  currentXCoord += mIconLabelSpace;
 	}
       
       //finally draw text

Modified: branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp
===================================================================
--- branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp	2008-08-07 09:54:28 UTC (rev 9019)
+++ branches/advanced_printing_branch/src/app/composer/qgslegendmodel.cpp	2008-08-07 10:10:17 UTC (rev 9020)
@@ -16,14 +16,17 @@
  ***************************************************************************/
 
 #include "qgslegendmodel.h"
+#include "qgsfield.h"
 #include "qgsmaplayer.h"
 #include "qgsmaplayerregistry.h"
 #include "qgsrasterlayer.h"
 #include "qgsrenderer.h"
 #include "qgssymbol.h"
+#include "qgsvectordataprovider.h"
 #include "qgsvectorlayer.h"
 #include <QDomDocument>
 #include <QDomElement>
+#include <QSettings>
 
 QgsLegendModel::QgsLegendModel(): QStandardItemModel()
 {
@@ -96,6 +99,30 @@
       return 3;
     }
 
+  //text field that describes classification attribute?
+  QSettings settings;
+  if(settings.value("/qgis/showLegendClassifiers",false).toBool())
+    {
+      QgsVectorDataProvider* provider = vectorLayer->getDataProvider();
+      
+      if(provider)
+	{
+	  QgsFieldMap providerFields = provider->fields();
+	  QgsAttributeList attributes = vectorRenderer->classificationAttributes();
+	  QgsAttributeList::const_iterator att_it = attributes.constBegin();
+	  for(; att_it != attributes.constEnd(); ++att_it)
+	    {
+	      QgsFieldMap::const_iterator fieldIt = providerFields.find(*att_it);
+	      if(fieldIt != providerFields.constEnd())
+		{
+		  QString attributeName = fieldIt.value().name();
+		  QStandardItem* attributeItem = new QStandardItem(attributeName);
+		  layerItem->setChild(layerItem->rowCount(), 0, attributeItem);
+		}
+	    }
+	}
+    }
+
   const QList<QgsSymbol*> vectorSymbols = vectorRenderer->symbols();
   QList<QgsSymbol*>::const_iterator symbolIt = vectorSymbols.constBegin();
 
@@ -327,13 +354,14 @@
 	      textItemElem.setAttribute("text", currentClassificationItem->text());
 	      newLayerItem.appendChild(textItemElem);
 	    }
-	  
-	  //else it can only be a raster item
-	  QDomElement rasterClassElem = doc.createElement("RasterItem");
-	  rasterClassElem.setAttribute("text", currentClassificationItem->text());
-	  //storing the layer id also in the raster item makes parsing easier
-	  rasterClassElem.setAttribute("layerId", currentLayerItem->data().toString());
-	  newLayerItem.appendChild(rasterClassElem);
+	  else //else it can only be a raster item
+	    {
+	      QDomElement rasterClassElem = doc.createElement("RasterItem");
+	      rasterClassElem.setAttribute("text", currentClassificationItem->text());
+	      //storing the layer id also in the raster item makes parsing easier
+	      rasterClassElem.setAttribute("layerId", currentLayerItem->data().toString());
+	      newLayerItem.appendChild(rasterClassElem);
+	    }
 	}
 
       legendModelElem.appendChild(newLayerItem);



More information about the QGIS-commit mailing list