[QGIS Commit] r13543 - trunk/qgis/src/core/composer

svn_qgis at osgeo.org svn_qgis at osgeo.org
Fri May 21 02:32:09 EDT 2010


Author: mhugent
Date: 2010-05-21 02:32:06 -0400 (Fri, 21 May 2010)
New Revision: 13543

Modified:
   trunk/qgis/src/core/composer/qgslegendmodel.cpp
Log:
Fix for crash with composer legend during project file save

Modified: trunk/qgis/src/core/composer/qgslegendmodel.cpp
===================================================================
--- trunk/qgis/src/core/composer/qgslegendmodel.cpp	2010-05-20 23:11:17 UTC (rev 13542)
+++ trunk/qgis/src/core/composer/qgslegendmodel.cpp	2010-05-21 06:32:06 UTC (rev 13543)
@@ -108,40 +108,8 @@
   for ( ; idIter != mLayerIds.constEnd(); ++idIter )
   {
     currentLayer = QgsMapLayerRegistry::instance()->mapLayer( *idIter );
-
-    //addItem for layer
-    QgsComposerLayerItem* layerItem = new QgsComposerLayerItem( currentLayer->name() );
-    layerItem->setLayerID( currentLayer->getLayerID() );
-    layerItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
-
-    invisibleRootItem()->setChild( invisibleRootItem()->rowCount(), layerItem );
-
-    switch ( currentLayer->type() )
-    {
-      case QgsMapLayer::VectorLayer:
-      {
-        QgsVectorLayer* vl = dynamic_cast<QgsVectorLayer*>( currentLayer );
-        if ( vl )
-        {
-          if ( vl->isUsingRendererV2() )
-          {
-            addVectorLayerItemsV2( layerItem, vl );
-          }
-          else
-          {
-            addVectorLayerItems( layerItem, vl );
-          }
-        }
-        break;
-      }
-      case QgsMapLayer::RasterLayer:
-        addRasterLayerItem( layerItem, currentLayer );
-        break;
-      default:
-        break;
-    }
+    addLayer( currentLayer );
   }
-
 }
 
 QStandardItem* QgsLegendModel::addGroup( QString text, int position )
@@ -360,14 +328,12 @@
     return;
   }
 
-  //append new layer item
-  QStandardItem* layerItem = new QStandardItem( theMapLayer->name() );
-  layerItem->setData( QgsLegendModel::LayerItem, Qt::UserRole + 1 ); //first user data stores the item type
-  layerItem->setData( QVariant( theMapLayer->getLayerID() ), Qt::UserRole + 2 );
+  QgsComposerLayerItem* layerItem = new QgsComposerLayerItem( theMapLayer->name() );
+  layerItem->setLayerID( theMapLayer->getLayerID() );
   layerItem->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
+
   invisibleRootItem()->setChild( invisibleRootItem()->rowCount(), layerItem );
 
-  //and child items of layer
   switch ( theMapLayer->type() )
   {
     case QgsMapLayer::VectorLayer:
@@ -486,7 +452,7 @@
   {
     currentItem = invisibleRootItem()->child( i, 0 );
     currentLegendItem = dynamic_cast<QgsComposerLegendItem*>( currentItem );
-    if ( currentItem )
+    if ( currentLegendItem )
     {
       currentLegendItem->writeXML( legendModelElem, doc );
     }



More information about the QGIS-commit mailing list