1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QSCATTERDATAPROXY_H
5#define QTGRAPHS_QSCATTERDATAPROXY_H
6
7#include <QtGraphs/qabstractdataproxy.h>
8#include <QtGraphs/qscatterdataitem.h>
9
10Q_MOC_INCLUDE(<QtGraphs/qscatter3dseries.h>)
11
12QT_BEGIN_NAMESPACE
13
14class QScatterDataProxyPrivate;
15class QScatter3DSeries;
16
17using QScatterDataArray = QList<QScatterDataItem>;
18
19class Q_GRAPHS_EXPORT QScatterDataProxy : public QAbstractDataProxy
20{
21 Q_OBJECT
22 Q_DECLARE_PRIVATE(QScatterDataProxy)
23 Q_PROPERTY(qsizetype itemCount READ itemCount NOTIFY itemCountChanged FINAL)
24 Q_PROPERTY(QScatter3DSeries *series READ series NOTIFY seriesChanged FINAL)
25 QML_NAMED_ELEMENT(ScatterDataProxy)
26 QML_UNCREATABLE("")
27
28public:
29 explicit QScatterDataProxy(QObject *parent = nullptr);
30 ~QScatterDataProxy() override;
31
32 QScatter3DSeries *series() const;
33 qsizetype itemCount() const;
34 const QScatterDataItem &itemAt(qsizetype index) const;
35 QVector3D scaleAt(qsizetype index) const;
36
37 void resetArray();
38 void resetArray(QScatterDataArray newArray);
39 void resetScaleArray(QList<QVector3D> newArray);
40
41 void setItem(qsizetype index, QScatterDataItem item);
42 void setItems(qsizetype index, QScatterDataArray items);
43
44 qsizetype addItem(QScatterDataItem item);
45 qsizetype addItem(QScatterDataItem &&item);
46 qsizetype addItems(QScatterDataArray items);
47 qsizetype addItems(QScatterDataArray &&items);
48
49 void insertItem(qsizetype index, QScatterDataItem item);
50 void insertItems(qsizetype index, QScatterDataArray items);
51
52 void removeItems(qsizetype index, qsizetype removeCount);
53
54Q_SIGNALS:
55 void arrayReset();
56 void scaleArrayReset();
57 void itemsAdded(qsizetype startIndex, qsizetype count);
58 void itemsChanged(qsizetype startIndex, qsizetype count);
59 void itemsRemoved(qsizetype startIndex, qsizetype count);
60 void itemsInserted(qsizetype startIndex, qsizetype count);
61
62 void itemCountChanged(qsizetype count);
63 void seriesChanged(QScatter3DSeries *series);
64
65protected:
66 explicit QScatterDataProxy(QScatterDataProxyPrivate &d, QObject *parent = nullptr);
67
68private:
69 Q_DISABLE_COPY(QScatterDataProxy)
70
71 friend class QQuickGraphsScatter;
72};
73
74QT_END_NAMESPACE
75
76#endif
77

source code of qtgraphs/src/graphs3d/data/qscatterdataproxy.h