Example #1
0
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;
}
Example #2
0
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 );
        }
    }