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 ); }
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 ); }
bool QgsFeatureListModel::featureByIndex( const QModelIndex &index, QgsFeature &feat ) { return mFilterModel->layerCache()->featureAtId( idxToFid( index ), feat ); }
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 ); }