16 #ifndef QGSPROCESSINGAGGREGATEWIDGETS_H
17 #define QGSPROCESSINGAGGREGATEWIDGETS_H
19 #include <QAbstractTableModel>
20 #include <QStyledItemDelegate>
30 class QItemSelectionModel;
62 Q_ENUM( ColumnDataIndex );
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( );
237 class AggregateDelegate:
public QStyledItemDelegate
242 AggregateDelegate( QObject *parent =
nullptr );
245 QWidget *createEditor( QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
246 void setEditorData( QWidget *editor,
const QModelIndex &index )
const override;
247 void setModelData( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
const override;
251 static const QStringList aggregates();
257 #endif // QGSPROCESSINGAGGREGATEWIDGETS_H