QgsLayerTreeLayer *QgsLayerTreeUtils::insertLayerBelow( QgsLayerTreeGroup *group, const QgsMapLayer *refLayer, QgsMapLayer *layerToInsert ) { // get the index of the reflayer QgsLayerTreeLayer *inTree = group->findLayer( refLayer->id() ); if ( !inTree ) return nullptr; int idx = 0; const auto constChildren = inTree->parent()->children(); for ( QgsLayerTreeNode *vl : constChildren ) { if ( vl->nodeType() == QgsLayerTreeNode::NodeLayer && static_cast<QgsLayerTreeLayer *>( vl )->layer() == refLayer ) { break; } idx++; } // insert the new layer QgsLayerTreeGroup *parent = static_cast<QgsLayerTreeGroup *>( inTree->parent() ) ? static_cast<QgsLayerTreeGroup *>( inTree->parent() ) : group; return parent->insertLayer( idx, layerToInsert ); }
QgsLayerTreeGroup* QgsLayerTreeView::currentGroupNode() const { QgsLayerTreeNode* node = currentNode(); if ( QgsLayerTree::isGroup( node ) ) return QgsLayerTree::toGroup( node ); else if ( QgsLayerTree::isLayer( node ) ) { QgsLayerTreeNode* parent = node->parent(); if ( QgsLayerTree::isGroup( parent ) ) return QgsLayerTree::toGroup( parent ); } if ( QgsLayerTreeModelLegendNode* legendNode = layerTreeModel()->index2legendNode( selectionModel()->currentIndex() ) ) { QgsLayerTreeLayer* parent = legendNode->layerNode(); if ( QgsLayerTree::isGroup( parent->parent() ) ) return QgsLayerTree::toGroup( parent->parent() ); } return 0; }