Noelia c2bfc6b8f4 feat(SQ/Aggregator): Created utility Aggregator
- Abstract class created: `Aggregator`
- Derived abstract class created: `SingleRoleAggregator`
- Derived class created:  `SumAggregator`
- `Storybook` page created.
- Added unit tests.

Closes #12685
2023-12-01 18:57:01 +01:00

40 lines
834 B
C++

#pragma once
#include <QAbstractListModel>
#include <QObject>
#include <QVariant>
class QAbstractItemModel;
class Aggregator : public QObject {
Q_OBJECT
Q_PROPERTY(QAbstractItemModel* model READ model WRITE setModel NOTIFY modelChanged)
Q_PROPERTY(QVariant value READ value NOTIFY valueChanged)
public:
explicit Aggregator(QObject *parent = nullptr);
QAbstractItemModel* model() const;
void setModel(QAbstractItemModel* model);
QVariant value() const;
signals:
void modelChanged();
void valueChanged();
protected slots:
virtual QVariant calculateAggregation() = 0;
protected:
void recalculate();
virtual bool acceptRoles(const QVector<int>& roles) { return true; };
private:
QAbstractItemModel* m_model = nullptr;
QVariant m_value;
void connectToModel();
};