16#ifndef QGSPROCESSINGAGGREGATEWIDGETS_H
17#define QGSPROCESSINGAGGREGATEWIDGETS_H
19#include <QAbstractTableModel>
20#include <QStyledItemDelegate>
30class QItemSelectionModel;
88 QObject *parent =
nullptr );
94 QList<QgsAggregateMappingModel::Aggregate> mapping()
const;
99 void setMapping(
const QList<QgsAggregateMappingModel::Aggregate> &mapping );
102 void appendField(
const QgsField &
field,
const QString &source = QString(),
const QString &aggregate = QString() );
105 bool removeField(
const QModelIndex &index );
108 bool moveUp(
const QModelIndex &index );
111 bool moveDown(
const QModelIndex &index );
114 void setSourceFields(
const QgsFields &sourceFields );
126 int rowCount(
const QModelIndex &parent = QModelIndex() )
const override;
127 int columnCount(
const QModelIndex &parent = QModelIndex() )
const override;
128 QVariant data(
const QModelIndex &index,
int role )
const override;
129 QVariant headerData(
int section, Qt::Orientation orientation,
int role )
const override;
130 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
131 bool setData(
const QModelIndex &index,
const QVariant &value,
int role )
override;
135 bool moveUpOrDown(
const QModelIndex &index,
bool up =
true );
137 QList<Aggregate> mMapping;
139 std::unique_ptr< QgsFieldMappingModel::ExpressionContextGenerator> mExpressionContextGenerator;
166 QList<QgsAggregateMappingModel::Aggregate> mapping()
const;
171 void setMapping(
const QList<QgsAggregateMappingModel::Aggregate> &mapping );
174 QItemSelectionModel *selectionModel();
177 void setSourceFields(
const QgsFields &sourceFields );
198 void scrollTo(
const QModelIndex &index )
const;
216 void appendField(
const QgsField &
field,
const QString &source = QString(),
const QString &aggregate = QString() );
219 bool removeSelectedFields( );
222 bool moveSelectedFieldsUp( );
225 bool moveSelectedFieldsDown( );
229 QTableView *mTableView =
nullptr;
230 QAbstractTableModel *mModel =
nullptr;
231 QPointer< QgsVectorLayer > mSourceLayer;
232 void updateColumns();
234 std::list<int> selectedRows( );
241class QgsAggregateMappingDelegate:
public QStyledItemDelegate
247 QgsAggregateMappingDelegate( QObject *parent =
nullptr );
250 QWidget *createEditor( QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
251 void setEditorData( QWidget *editor,
const QModelIndex &index )
const override;
252 void setModelData( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
const override;
256 static const QStringList aggregates();
The QgsAggregateMappingModel holds mapping information for defining sets of aggregates of fields from...
ColumnDataIndex
The ColumnDataIndex enum represents the column index for the view.
Abstract interface for generating an expression context.
Encapsulate a field in an attribute table or data source.
Container of fields for a vector layer.
Represents a vector layer which manages a vector based data sets.
The Aggregate struct holds information about an aggregate column.
QString source
The source expression used as the input for the aggregate calculation.
QString delimiter
Delimiter string.
QString aggregate
Aggregate name.
QgsField field
The field in its current status (it might have been renamed)