|
33 | 33 | QgsLayerTreeModel::QgsLayerTreeModel( QgsLayerTreeGroup* rootNode, QObject *parent ) |
34 | 34 | : QAbstractItemModel( parent ) |
35 | 35 | , mRootNode( rootNode ) |
36 | | - , mFlags( ShowSymbology ) |
| 36 | + , mFlags( ShowSymbology | AllowSymbologyChangeState ) |
37 | 37 | , mAutoCollapseSymNodesCount( -1 ) |
38 | 38 | { |
39 | 39 | Q_ASSERT( mRootNode ); |
@@ -166,6 +166,8 @@ QVariant QgsLayerTreeModel::data( const QModelIndex &index, int role ) const |
166 | 166 |
|
167 | 167 | if ( QgsLayerTreeModelLegendNode* sym = index2symnode( index ) ) |
168 | 168 | { |
| 169 | + if ( role == Qt::CheckStateRole && !testFlag( AllowSymbologyChangeState ) ) |
| 170 | + return QVariant(); |
169 | 171 | return sym->data( role ); |
170 | 172 | } |
171 | 173 |
|
@@ -289,7 +291,10 @@ Qt::ItemFlags QgsLayerTreeModel::flags( const QModelIndex& index ) const |
289 | 291 |
|
290 | 292 | if ( QgsLayerTreeModelLegendNode* symn = index2symnode( index ) ) |
291 | 293 | { |
292 | | - return symn->flags(); |
| 294 | + Qt::ItemFlags f = symn->flags(); |
| 295 | + if ( !testFlag( AllowSymbologyChangeState ) ) |
| 296 | + f &= ~Qt::ItemIsUserCheckable; |
| 297 | + return f; |
293 | 298 | } |
294 | 299 |
|
295 | 300 | Qt::ItemFlags f = Qt::ItemIsEnabled | Qt::ItemIsSelectable; |
@@ -321,6 +326,8 @@ bool QgsLayerTreeModel::setData( const QModelIndex& index, const QVariant& value |
321 | 326 | QgsLayerTreeModelLegendNode *sym = index2symnode( index ); |
322 | 327 | if ( sym ) |
323 | 328 | { |
| 329 | + if ( role == Qt::CheckStateRole && !testFlag( AllowSymbologyChangeState ) ) |
| 330 | + return false; |
324 | 331 | bool res = sym->setData( value, role ); |
325 | 332 | if ( res ) |
326 | 333 | emit dataChanged( index, index ); |
|
0 commit comments