1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QBARDATAPROXY_H
5#define QTGRAPHS_QBARDATAPROXY_H
6
7#include <QtCore/qlist.h>
8#include <QtCore/qstringlist.h>
9#include <QtGraphs/qabstractdataproxy.h>
10#include <QtGraphs/qbardataitem.h>
11
12Q_MOC_INCLUDE(<QtGraphs / qbar3dseries.h>)
13
14QT_BEGIN_NAMESPACE
15
16class QBarDataProxyPrivate;
17class QBar3DSeries;
18
19using QBarDataRow = QList<QBarDataItem>;
20using QBarDataArray = QList<QBarDataRow>;
21
22class Q_GRAPHS_EXPORT QBarDataProxy : public QAbstractDataProxy
23{
24 Q_OBJECT
25 Q_DECLARE_PRIVATE(QBarDataProxy)
26 Q_PROPERTY(qsizetype rowCount READ rowCount NOTIFY rowCountChanged FINAL)
27 Q_PROPERTY(qsizetype colCount READ colCount NOTIFY colCountChanged FINAL)
28 Q_PROPERTY(QBar3DSeries *series READ series NOTIFY seriesChanged FINAL)
29 QML_NAMED_ELEMENT(BarDataProxy)
30 QML_UNCREATABLE("")
31
32public:
33 explicit QBarDataProxy(QObject *parent = nullptr);
34 ~QBarDataProxy() override;
35
36 enum class RemoveLabels { No, Yes };
37 Q_ENUM(RemoveLabels)
38
39 QBar3DSeries *series() const;
40 qsizetype rowCount() const;
41 qsizetype colCount() const;
42
43 const QBarDataRow &rowAt(qsizetype rowIndex) const;
44 const QBarDataItem &itemAt(qsizetype rowIndex, qsizetype columnIndex) const;
45 const QBarDataItem &itemAt(QPoint position) const;
46
47 void resetArray();
48 void resetArray(QBarDataArray newArray);
49 void resetArray(QBarDataArray newArray, QStringList rowLabels, QStringList columnLabels);
50
51 void setRow(qsizetype rowIndex, QBarDataRow row);
52 void setRow(qsizetype rowIndex, QBarDataRow row, QString label);
53 void setRows(qsizetype rowIndex, QBarDataArray rows);
54 void setRows(qsizetype rowIndex, QBarDataArray rows, QStringList labels);
55
56 void setItem(qsizetype rowIndex, qsizetype columnIndex, QBarDataItem item);
57 void setItem(QPoint position, QBarDataItem item);
58
59 qsizetype addRow(QBarDataRow row);
60 qsizetype addRow(QBarDataRow row, QString label);
61 qsizetype addRows(QBarDataArray rows);
62 qsizetype addRows(QBarDataArray rows, QStringList labels);
63
64 void insertRow(qsizetype rowIndex, QBarDataRow row);
65 void insertRow(qsizetype rowIndex, QBarDataRow row, QString label);
66 void insertRows(qsizetype rowIndex, QBarDataArray rows);
67 void insertRows(qsizetype rowIndex, QBarDataArray rows, QStringList labels);
68
69 void removeRows(qsizetype rowIndex,
70 qsizetype removeCount,
71 RemoveLabels removeLabels = RemoveLabels::No);
72
73Q_SIGNALS:
74 void arrayReset();
75 void rowsAdded(qsizetype startIndex, qsizetype count);
76 void rowsChanged(qsizetype startIndex, qsizetype count);
77 void rowsRemoved(qsizetype startIndex, qsizetype count);
78 void rowsInserted(qsizetype startIndex, qsizetype count);
79 void itemChanged(qsizetype rowIndex, qsizetype columnIndex);
80
81 void rowCountChanged(qsizetype count);
82 void colCountChanged(qsizetype count);
83 void seriesChanged(QBar3DSeries *series);
84
85protected:
86 explicit QBarDataProxy(QBarDataProxyPrivate &d, QObject *parent = nullptr);
87
88private:
89 Q_DISABLE_COPY(QBarDataProxy)
90
91 friend class QQuickGraphsBars;
92};
93
94QT_END_NAMESPACE
95
96#endif
97

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