Пример #1
0
QVariant QgsFeatureListModel::data( const QModelIndex &index, int role ) const
{
  if ( role == Qt::DisplayRole || role == Qt::EditRole )
  {
    QgsFeature feat;

    mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

    const QgsFields fields = mFilterModel->layer()->pendingFields();

    return mExpression->evaluate( &feat, fields );
  }

  if ( role == FeatureInfoRole )
  {
    FeatureInfo featInfo;

    QgsFeature feat;

    mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

    QgsVectorLayerEditBuffer* editBuffer = mFilterModel->layer()->editBuffer();

    if ( editBuffer )
    {
      const QList<QgsFeatureId> addedFeatures = editBuffer->addedFeatures().keys();
      const QList<QgsFeatureId> changedFeatures = editBuffer->changedAttributeValues().keys();

      if ( addedFeatures.contains( feat.id() ) )
      {
        featInfo.isNew = true;
      }
      if ( changedFeatures.contains( feat.id() ) )
      {
        featInfo.isEdited = true;
      }
    }

    return QVariant::fromValue( featInfo );
  }
  else if ( role == FeatureRole )
  {
    QgsFeature feat;

    mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

    return QVariant::fromValue( feat );
  }

  return sourceModel()->data( mapToSource( index ), role );
}
Пример #2
0
QVariant QgsFeatureListModel::data( const QModelIndex &index, int role ) const
{
    if ( mInjectNull && index.row() == 0 )
    {
        if ( role == Qt::DisplayRole )
        {
            return QgsApplication::nullRepresentation();
        }
        else if ( role == QgsAttributeTableModel::FeatureIdRole )
        {
            return QVariant( QVariant::Int );
        }
        else
        {
            return QVariant( QVariant::Invalid );
        }
    }

    if ( role == Qt::DisplayRole || role == Qt::EditRole )
    {
        QgsFeature feat;

        mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

        QgsExpressionContext context;
        context << QgsExpressionContextUtils::globalScope()
                << QgsExpressionContextUtils::projectScope()
                << QgsExpressionContextUtils::layerScope( mFilterModel->layer() );
        context.setFeature( feat );
        return mExpression->evaluate( &context );
    }

    if ( role == FeatureInfoRole )
    {
        FeatureInfo featInfo;

        QgsFeature feat;

        mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

        QgsVectorLayerEditBuffer* editBuffer = mFilterModel->layer()->editBuffer();

        if ( editBuffer )
        {
            if ( editBuffer->isFeatureAdded( feat.id() ) )
            {
                featInfo.isNew = true;
            }
            if ( editBuffer->isFeatureAttributesChanged( feat.id() ) )
            {
                featInfo.isEdited = true;
            }
        }

        return QVariant::fromValue( featInfo );
    }
    else if ( role == FeatureRole )
    {
        QgsFeature feat;

        mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

        return QVariant::fromValue( feat );
    }
    else if ( role == Qt::TextAlignmentRole )
    {
        return Qt::AlignLeft;
    }

    return sourceModel()->data( mapToSource( index ), role );
}
Пример #3
0
bool QgsFeatureListModel::featureByIndex( const QModelIndex &index, QgsFeature &feat )
{
    return mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );
}
Пример #4
0
QVariant QgsFeatureListModel::data( const QModelIndex &index, int role ) const
{
    if ( mInjectNull && index.row() == 0 )
    {
        if ( role == Qt::DisplayRole )
        {
            return QSettings().value( "qgis/nullValue", "NULL" ).toString();
        }
        else if ( role == QgsAttributeTableModel::FeatureIdRole )
        {
            return QVariant( QVariant::Int );
        }
        else
        {
            return QVariant( QVariant::Invalid );
        }
    }

    if ( role == Qt::DisplayRole || role == Qt::EditRole )
    {
        QgsFeature feat;

        mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

        QgsExpressionContext context;
        context << QgsExpressionContextUtils::globalScope()
                << QgsExpressionContextUtils::projectScope()
                << QgsExpressionContextUtils::layerScope( mFilterModel->layer() );
        context.setFeature( feat );
        return mExpression->evaluate( &context );
    }

    if ( role == FeatureInfoRole )
    {
        FeatureInfo featInfo;

        QgsFeature feat;

        mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

        QgsVectorLayerEditBuffer* editBuffer = mFilterModel->layer()->editBuffer();

        if ( editBuffer )
        {
            const QList<QgsFeatureId> addedFeatures = editBuffer->addedFeatures().keys();
            const QList<QgsFeatureId> changedFeatures = editBuffer->changedAttributeValues().keys();

            if ( addedFeatures.contains( feat.id() ) )
            {
                featInfo.isNew = true;
            }
            if ( changedFeatures.contains( feat.id() ) )
            {
                featInfo.isEdited = true;
            }
        }

        return QVariant::fromValue( featInfo );
    }
    else if ( role == FeatureRole )
    {
        QgsFeature feat;

        mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat );

        return QVariant::fromValue( feat );
    }

    return sourceModel()->data( mapToSource( index ), role );
}