summaryrefslogtreecommitdiff
path: root/seriesmodel.h
diff options
context:
space:
mode:
Diffstat (limited to 'seriesmodel.h')
-rw-r--r--seriesmodel.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/seriesmodel.h b/seriesmodel.h
new file mode 100644
index 0000000..5aca1f4
--- /dev/null
+++ b/seriesmodel.h
@@ -0,0 +1,48 @@
+#pragma once
+
+// qt
+#include <QAbstractTableModel>
+#include <QMutex>
+#include <QVector2D>
+
+// goodies
+#include "g_property.h"
+
+class SeriesModel : public QAbstractTableModel
+{
+ Q_OBJECT
+
+ G_PROPERTY(float, minX);
+ G_PROPERTY(float, maxX);
+ G_PROPERTY(float, minY);
+ G_PROPERTY(float, maxY);
+
+public:
+ Q_INVOKABLE SeriesModel(QObject* parent = nullptr);
+ Q_INVOKABLE SeriesModel(const SeriesModel& other);
+ Q_INVOKABLE ~SeriesModel() Q_DECL_OVERRIDE = default;
+
+public:
+ Q_INVOKABLE int rowCount(
+ const QModelIndex& parent = QModelIndex()
+ ) const Q_DECL_OVERRIDE;
+ Q_INVOKABLE int columnCount(
+ const QModelIndex& parent = QModelIndex()
+ ) const Q_DECL_OVERRIDE;
+ Q_INVOKABLE QVariant data(
+ const QModelIndex& modelIndex,
+ int role = Qt::DisplayRole
+ ) const Q_DECL_OVERRIDE;
+
+public slots:
+ void append(const QVector<QVector2D> points);
+ void replace(const QVector<QVector2D> points);
+ void clear();
+ void recalcLimits();
+
+protected:
+ QVector<QVector2D> m_points;
+ QMutex m_mtx;
+};
+
+Q_DECLARE_METATYPE(SeriesModel);