[QGIS Commit] r14408 - trunk/qgis/src/app/legend

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Oct 18 18:23:03 EDT 2010


Author: jef
Date: 2010-10-18 15:23:03 -0700 (Mon, 18 Oct 2010)
New Revision: 14408

Modified:
   trunk/qgis/src/app/legend/qgslegendlayer.cpp
   trunk/qgis/src/app/legend/qgslegendlayer.h
Log:
don't show legend checkbox for geometryless layers

Modified: trunk/qgis/src/app/legend/qgslegendlayer.cpp
===================================================================
--- trunk/qgis/src/app/legend/qgslegendlayer.cpp	2010-10-18 21:29:56 UTC (rev 14407)
+++ trunk/qgis/src/app/legend/qgslegendlayer.cpp	2010-10-18 22:23:03 UTC (rev 14408)
@@ -57,8 +57,19 @@
     mLyr( layer )
 {
   mType = LEGEND_LAYER;
-  setFlags( Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable );
+
+  Qt::ItemFlags flags = Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemIsSelectable;
+
+  QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
+  if( !vlayer || vlayer->geometryType() != QGis::NoGeometry )
+  {
+    flags |= Qt::ItemIsUserCheckable;
+  }
+ 
+  setFlags( flags );
+
   setCheckState( 0, Qt::Checked );
+
   setText( 0, layer->name() );
   setupFont();
 
@@ -92,6 +103,14 @@
   mType = LEGEND_LAYER;
 }
 
+void QgsLegendLayer::setCheckState( int column, Qt::CheckState state )
+{
+  if( flags() & Qt::ItemIsUserCheckable )
+  {
+    QTreeWidgetItem::setCheckState( column, state );
+  }
+}
+
 void QgsLegendLayer::setupFont() //private method
 {
   QFont myFont = font( 0 );

Modified: trunk/qgis/src/app/legend/qgslegendlayer.h
===================================================================
--- trunk/qgis/src/app/legend/qgslegendlayer.h	2010-10-18 21:29:56 UTC (rev 14407)
+++ trunk/qgis/src/app/legend/qgslegendlayer.h	2010-10-18 22:23:03 UTC (rev 14408)
@@ -73,6 +73,9 @@
      the name can be passed to the constructor of QgsLegendLayer*/
     static QString nameFromLayer( QgsMapLayer* layer );
 
+    /** set check state, but only if user checkable */
+    void setCheckState( int column, Qt::CheckState state );
+
   public slots:
 
     /**Toggle show in overview*/



More information about the QGIS-commit mailing list