QgsLayerTreeLayer* QgsLayerTreeLayer::readXML( QDomElement& element ) { if ( element.tagName() != "layer-tree-layer" ) return 0; QString layerID = element.attribute( "id" ); QString layerName = element.attribute( "name" ); Qt::CheckState checked = QgsLayerTreeUtils::checkStateFromXml( element.attribute( "checked" ) ); bool isExpanded = ( element.attribute( "expanded", "1" ) == "1" ); QgsLayerTreeLayer* nodeLayer = 0; QgsMapLayer* layer = QgsMapLayerRegistry::instance()->mapLayer( layerID ); if ( layer ) nodeLayer = new QgsLayerTreeLayer( layer ); else nodeLayer = new QgsLayerTreeLayer( layerID, layerName ); nodeLayer->readCommonXML( element ); nodeLayer->setVisible( checked ); nodeLayer->setExpanded( isExpanded ); return nodeLayer; }
bool QgsLayerTreeModel::setData( const QModelIndex& index, const QVariant& value, int role ) { QgsLayerTreeModelLegendNode *sym = index2symnode( index ); if ( sym ) { if ( role == Qt::CheckStateRole && !testFlag( AllowSymbologyChangeState ) ) return false; bool res = sym->setData( value, role ); if ( res ) emit dataChanged( index, index ); return res; } QgsLayerTreeNode* node = index2node( index ); if ( !node ) return QgsLayerTreeModel::setData( index, value, role ); if ( role == Qt::CheckStateRole ) { if ( !testFlag( AllowNodeChangeVisibility ) ) return false; if ( QgsLayerTree::isLayer( node ) ) { QgsLayerTreeLayer* layer = QgsLayerTree::toLayer( node ); layer->setVisible(( Qt::CheckState )value.toInt() ); return true; } if ( QgsLayerTree::isGroup( node ) ) { QgsLayerTreeGroup* group = QgsLayerTree::toGroup( node ); group->setVisible(( Qt::CheckState )value.toInt() ); return true; } return true; } else if ( role == Qt::EditRole ) { if ( !testFlag( AllowNodeRename ) ) return false; if ( QgsLayerTree::isLayer( node ) ) { QgsLayerTreeLayer* layer = QgsLayerTree::toLayer( node ); layer->setLayerName( value.toString() ); emit dataChanged( index, index ); } else if ( QgsLayerTree::isGroup( node ) ) { QgsLayerTree::toGroup( node )->setName( value.toString() ); emit dataChanged( index, index ); } } return QAbstractItemModel::setData( index, value, role ); }
bool CustomLayerOrderModel::setData( const QModelIndex& index, const QVariant& value, int role ) { if ( role == Qt::CheckStateRole ) { QString id = mOrder.at( index.row() ); QgsLayerTreeLayer* nodeLayer = mBridge->rootGroup()->findLayer( id ); if ( nodeLayer ) { nodeLayer->setVisible( static_cast< Qt::CheckState >( value.toInt() ) ); return true; } } return false; }
void QgsLayerTreeRegistryBridge::layersAdded( const QList<QgsMapLayer*>& layers ) { if ( !mEnabled ) return; QList<QgsLayerTreeNode*> nodes; Q_FOREACH ( QgsMapLayer* layer, layers ) { QgsLayerTreeLayer* nodeLayer = new QgsLayerTreeLayer( layer ); nodeLayer->setVisible( mNewLayersVisible ? Qt::Checked : Qt::Unchecked ); nodes << nodeLayer; // check whether the layer is marked as embedded QString projectFile = QgsProject::instance()->layerIsEmbedded( nodeLayer->layerId() ); if ( !projectFile.isEmpty() ) { nodeLayer->setCustomProperty( "embedded", 1 ); nodeLayer->setCustomProperty( "embedded_project", projectFile ); } }
void QgsLayerTreeRegistryBridge::layersAdded( QList<QgsMapLayer*> layers ) { if ( !mEnabled ) return; int i = 0; foreach ( QgsMapLayer* layer, layers ) { QgsLayerTreeLayer* nodeLayer = new QgsLayerTreeLayer( layer ); nodeLayer->setVisible( mNewLayersVisible ? Qt::Checked : Qt::Unchecked ); // add new layer to the top mInsertionPointGroup->insertChildNode( mInsertionPointIndex + i++, nodeLayer ); // check whether the layer is marked as embedded QString projectFile = QgsProject::instance()->layerIsEmbedded( nodeLayer->layerId() ); if ( !projectFile.isEmpty() ) { nodeLayer->setCustomProperty( "embedded", 1 ); nodeLayer->setCustomProperty( "embedded_project", projectFile ); } }