1 | // Copyright (C) 2023 The Qt Company Ltd. |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only |
3 | |
4 | #ifndef QBAR3DSERIES_H |
5 | #define QBAR3DSERIES_H |
6 | |
7 | #include <QtCore/qpoint.h> |
8 | #include <QtGraphs/qabstract3dseries.h> |
9 | #include <QtGraphs/qbardataproxy.h> |
10 | |
11 | QT_BEGIN_NAMESPACE |
12 | |
13 | class QBar3DSeriesPrivate; |
14 | |
15 | class Q_GRAPHS_EXPORT QBar3DSeries : public QAbstract3DSeries |
16 | { |
17 | Q_OBJECT |
18 | Q_DECLARE_PRIVATE(QBar3DSeries) |
19 | Q_PROPERTY( |
20 | QBarDataProxy *dataProxy READ dataProxy WRITE setDataProxy NOTIFY dataProxyChanged FINAL) |
21 | Q_PROPERTY(QPoint selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged) |
22 | Q_PROPERTY(float meshAngle READ meshAngle WRITE setMeshAngle NOTIFY meshAngleChanged FINAL) |
23 | Q_PROPERTY(QList<QColor> rowColors READ rowColors WRITE setRowColors NOTIFY rowColorsChanged) |
24 | Q_PROPERTY(QStringList rowLabels READ rowLabels WRITE setRowLabels NOTIFY rowLabelsChanged FINAL) |
25 | Q_PROPERTY(QStringList columnLabels READ columnLabels WRITE setColumnLabels NOTIFY |
26 | columnLabelsChanged FINAL) |
27 | Q_PROPERTY( |
28 | QBarDataArray dataArray READ dataArray WRITE setDataArray NOTIFY dataArrayChanged FINAL) |
29 | |
30 | public: |
31 | explicit QBar3DSeries(QObject *parent = nullptr); |
32 | explicit QBar3DSeries(QBarDataProxy *dataProxy, QObject *parent = nullptr); |
33 | ~QBar3DSeries() override; |
34 | |
35 | void setDataProxy(QBarDataProxy *proxy); |
36 | QBarDataProxy *dataProxy() const; |
37 | |
38 | void setSelectedBar(QPoint position); |
39 | QPoint selectedBar() const; |
40 | static QPoint invalidSelectionPosition(); |
41 | |
42 | void setMeshAngle(float angle); |
43 | float meshAngle() const; |
44 | |
45 | QList<QColor> rowColors() const; |
46 | void setRowColors(const QList<QColor> &colors); |
47 | |
48 | void setDataArray(const QBarDataArray &newDataArray); |
49 | void clearRow(qsizetype rowIndex); |
50 | void clearArray(); |
51 | const QBarDataArray &dataArray() const &; |
52 | QBarDataArray dataArray() &&; |
53 | QStringList rowLabels() const; |
54 | void setRowLabels(const QStringList &labels); |
55 | QStringList columnLabels() const; |
56 | void setColumnLabels(const QStringList &labels); |
57 | |
58 | Q_SIGNALS: |
59 | void dataProxyChanged(QBarDataProxy *proxy); |
60 | void selectedBarChanged(QPoint position); |
61 | void meshAngleChanged(float angle); |
62 | void rowColorsChanged(const QList<QColor> &rowcolors); |
63 | void rowLabelsChanged(); |
64 | void columnLabelsChanged(); |
65 | void dataArrayChanged(const QBarDataArray &array); |
66 | |
67 | private: |
68 | Q_DISABLE_COPY(QBar3DSeries) |
69 | |
70 | void connectSignals(); |
71 | void handleMeshRotationChanged(const QQuaternion &rotation); |
72 | |
73 | friend class QQuickGraphsBars; |
74 | }; |
75 | |
76 | QT_END_NAMESPACE |
77 | |
78 | #endif |
79 | |