24   : QSortFilterProxyModel( parent )
 
   37   mCheckedLayers = layers;
 
   49   if ( idx.column() == 0 )
 
   51     return Qt::ItemIsEnabled | Qt::ItemIsUserCheckable;
 
   53   return Qt::NoItemFlags;
 
   58   QModelIndex newIndex = QSortFilterProxyModel::index( row, 0, 
parent );
 
   62   return createIndex( row, column, newIndex.internalId() );
 
   67   return QSortFilterProxyModel::parent( createIndex( child.row(), 0, child.internalId() ) );
 
   72   QModelIndex 
parent = idx.parent();
 
   79   if ( idx.column() == 0 )
 
   81     node = mLayerTreeModel->
index2node( mapToSource( idx ) );
 
   92   if ( filterText == mFilterText )
 
   95   mFilterText = filterText;
 
  101   return mLayerTreeModel;
 
  119   return nodeShown( node );
 
  124   return mCheckedLayers.contains( layer );
 
  131     mCheckedLayers << layer;
 
  135     mCheckedLayers.removeAll( layer );
 
  139 void QgsLayerTreeFilterProxyModel::setLayerCheckedPrivate( 
QgsMapLayer *layer, 
bool checked )
 
  147   QModelIndex 
index = mapFromSource( mLayerTreeModel->
node2index( node ) );
 
  154 bool QgsLayerTreeFilterProxyModel::layerShown( 
QgsMapLayer *layer )
 const 
  160 bool QgsLayerTreeFilterProxyModel::nodeShown( 
QgsLayerTreeNode *node )
 const 
  166     const auto constChildren = node->
children();
 
  169       if ( nodeShown( child ) )
 
  181     if ( !mFilterText.isEmpty() && !layer->
name().contains( mFilterText, Qt::CaseInsensitive ) )
 
  186     return layerShown( layer );
 
  192   if ( idx.column() == 0 )
 
  194     if ( role == Qt::CheckStateRole )
 
  205           return Qt::Unchecked;
 
  211         bool hasChecked = 
false, hasUnchecked = 
false;
 
  213         for ( n = 0; !hasChecked || !hasUnchecked; n++ )
 
  215           QVariant v = 
data( 
index( n, 0, idx ), role );
 
  221             case Qt::PartiallyChecked:
 
  223               return Qt::PartiallyChecked;
 
  237           return Qt::Unchecked;
 
  240         if ( hasChecked &&  hasUnchecked )
 
  241           return Qt::PartiallyChecked;
 
  246         Q_ASSERT( hasUnchecked );
 
  247         return Qt::Unchecked;
 
  252       return mLayerTreeModel->
data( mapToSource( idx ), role );
 
  260   if ( 
index.column() == 0 )
 
  262     if ( role == Qt::CheckStateRole )
 
  268         if ( !child.isValid() )
 
  281         if ( value.toInt() == Qt::Checked )
 
  282           setLayerCheckedPrivate( layer, 
true );
 
  283         else if ( value.toInt() == Qt::Unchecked )
 
  284           setLayerCheckedPrivate( layer, 
false );
 
  292     return mLayerTreeModel->
setData( mapToSource( 
index ), value, role );
 
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
virtual void setLayerChecked(QgsMapLayer *layer, bool checked)
This will set if the layer is checked or not.
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
virtual bool setData(const QModelIndex &index, const QVariant &value, int role) override
virtual int columnCount(const QModelIndex &parent) const override
QgsMapLayer * mapLayer(const QModelIndex &idx) const
Returns the map layer at a given index.
void setFilters(const QgsMapLayerProxyModel::Filters &filters)
Defines the type layers (vector, raster, etc) shown in the tree If the list is empty,...
void setLayerTreeModel(QgsLayerTreeModel *layerTreeModel)
Sets the layer tree model.
virtual bool isLayerChecked(QgsMapLayer *layer) const
Returns if the layer is checked or not.
virtual void setFilterText(const QString &filterText=QString())
Sets the filter text to search for a layer in the tree.
void setCheckedLayers(const QList< QgsMapLayer * > layers)
Initialize the list of checked layers.
QModelIndex sibling(int row, int column, const QModelIndex &idx) const override
QModelIndex parent(const QModelIndex &child) const override
virtual QVariant data(const QModelIndex &index, int role) const override
QgsLayerTreeFilterProxyModel(QObject *parent=nullptr)
Constructor.
virtual Qt::ItemFlags flags(const QModelIndex &idx) const override
QgsLayerTreeModel * layerTreeModel() const
Rerturns the layer tree model.
QgsLayerTreeLayer * findLayer(QgsMapLayer *layer) const
Find layer node representing the map layer.
QgsMapLayer * layer() const
Returns the map layer associated with this node.
The QgsLayerTreeModel class is model implementation for Qt item views framework.
QModelIndex node2index(QgsLayerTreeNode *node) const
Returns index for a given node. If the node does not belong to the layer tree, the result is undefine...
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QgsLayerTree * rootGroup() const
Returns pointer to the root node of the layer tree. Always a non nullptr value.
QgsLayerTreeNode * index2node(const QModelIndex &index) const
Returns layer tree node for given index.
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
This class is a base class for nodes in a layer tree.
@ NodeGroup
Container of other groups and layers.
NodeType nodeType() const
Find out about type of the node. It is usually shorter to use convenience functions from QgsLayerTree...
QList< QgsLayerTreeNode * > children()
Gets list of children of the node. Children are owned by the parent.
static bool isLayer(const QgsLayerTreeNode *node)
Check whether the node is a valid layer node.
static QgsLayerTreeLayer * toLayer(QgsLayerTreeNode *node)
Cast node to a layer.
static bool layerMatchesFilters(const QgsMapLayer *layer, const Filters &filters)
Returns if the layer matches the given filters.
Base class for all map layer types.
static QgsProject * instance()
Returns the QgsProject singleton instance.
void readProject(const QDomDocument &)
Emitted when a project is being read.