void QgsComposerAttributeTableV2::setDisplayAttributes( const QSet<int>& attr, bool refresh ) { QgsVectorLayer* source = sourceLayer(); if ( !source ) { return; } //rebuild columns list, taking only attributes with index in supplied QSet qDeleteAll( mColumns ); mColumns.clear(); const QgsFields& fields = source->pendingFields(); if ( !attr.empty() ) { QSet<int>::const_iterator attIt = attr.constBegin(); for ( ; attIt != attr.constEnd(); ++attIt ) { int attrIdx = ( *attIt ); if ( !fields.exists( attrIdx ) ) { continue; } QString currentAlias = source->attributeDisplayName( attrIdx ); QgsComposerTableColumn* col = new QgsComposerTableColumn; col->setAttribute( fields[attrIdx].name() ); col->setHeading( currentAlias ); mColumns.append( col ); } } else { //resetting, so add all attributes to columns for ( int idx = 0; idx < fields.count(); ++idx ) { QString currentAlias = source->attributeDisplayName( idx ); QgsComposerTableColumn* col = new QgsComposerTableColumn; col->setAttribute( fields[idx].name() ); col->setHeading( currentAlias ); mColumns.append( col ); } } if ( refresh ) { refreshAttributes(); } }
void QgsComposerAttributeTableV2::setDisplayedFields( const QStringList& fields, bool refresh ) { QgsVectorLayer* source = sourceLayer(); if ( !source ) { return; } //rebuild columns list, taking only fields contained in supplied list qDeleteAll( mColumns ); mColumns.clear(); QgsFields layerFields = source->fields(); if ( !fields.isEmpty() ) { Q_FOREACH ( const QString& field, fields ) { int attrIdx = layerFields.lookupField( field ); if ( attrIdx < 0 ) continue; QString currentAlias = source->attributeDisplayName( attrIdx ); QgsComposerTableColumn* col = new QgsComposerTableColumn; col->setAttribute( layerFields.at( attrIdx ).name() ); col->setHeading( currentAlias ); mColumns.append( col ); }
void QgsComposerAttributeTableV2::resetColumns() { QgsVectorLayer *source = sourceLayer(); if ( !source ) { return; } //remove existing columns qDeleteAll( mColumns ); mColumns.clear(); //rebuild columns list from vector layer fields int idx = 0; const QgsFields sourceFields = source->fields(); for ( const auto &field : sourceFields ) { QString currentAlias = source->attributeDisplayName( idx ); QgsComposerTableColumn *col = new QgsComposerTableColumn; col->setAttribute( field.name() ); col->setHeading( currentAlias ); mColumns.append( col ); idx++; } }
QgsComposerTableColumn *QgsComposerTableColumn::clone() { QgsComposerTableColumn *newColumn = new QgsComposerTableColumn; newColumn->setAttribute( mAttribute ); newColumn->setHeading( mHeading ); newColumn->setHAlignment( mHAlignment ); newColumn->setVAlignment( mVAlignment ); newColumn->setSortByRank( mSortByRank ); newColumn->setSortOrder( mSortOrder ); newColumn->setWidth( mWidth ); return newColumn; }
bool QgsComposerAttributeTableColumnModelV2::setData( const QModelIndex& index, const QVariant& value, int role ) { if ( !index.isValid() || role != Qt::EditRole || !mComposerTable ) { return false; } if ( index.row() >= mComposerTable->columns()->length() ) { return false; } //get column for index QgsComposerTableColumn* column = columnFromIndex( index ); if ( !column ) { return false; } switch ( index.column() ) { case 0: // also update column's heading, if it hasn't been customised if ( column->heading().isEmpty() || ( column->heading() == column->attribute() ) ) { column->setHeading( value.toString() ); emit dataChanged( createIndex( index.row(), 1, 0 ), createIndex( index.row(), 1, 0 ) ); } column->setAttribute( value.toString() ); emit dataChanged( index, index ); return true; case 1: column->setHeading( value.toString() ); emit dataChanged( index, index ); return true; case 2: column->setHAlignment(( Qt::AlignmentFlag )value.toInt() ); emit dataChanged( index, index ); return true; default: break; } return false; }
void QgsComposerAttributeTable::resetColumns() { if ( !mVectorLayer ) { return; } //remove existing columns qDeleteAll( mColumns ); mColumns.clear(); //rebuild columns list from vector layer fields const QgsFields& fields = mVectorLayer->fields(); for ( int idx = 0; idx < fields.count(); ++idx ) { QString currentAlias = mVectorLayer->attributeDisplayName( idx ); QgsComposerTableColumn* col = new QgsComposerTableColumn; col->setAttribute( fields[idx].name() ); col->setHeading( currentAlias ); mColumns.append( col ); } }