1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QITEMMODELSCATTERDATAPROXY_H
5#define QTGRAPHS_QITEMMODELSCATTERDATAPROXY_H
6
7#include <QtCore/qabstractitemmodel.h>
8#include <QtCore/qregularexpression.h>
9#include <QtCore/qstring.h>
10#include <QtGraphs/qscatterdataproxy.h>
11
12QT_BEGIN_NAMESPACE
13
14class QItemModelScatterDataProxyPrivate;
15
16class Q_GRAPHS_EXPORT QItemModelScatterDataProxy : public QScatterDataProxy
17{
18 Q_OBJECT
19 Q_DECLARE_PRIVATE(QItemModelScatterDataProxy)
20 Q_PROPERTY(QAbstractItemModel *itemModel READ itemModel WRITE setItemModel NOTIFY
21 itemModelChanged FINAL)
22 Q_PROPERTY(QString xPosRole READ xPosRole WRITE setXPosRole NOTIFY xPosRoleChanged FINAL)
23 Q_PROPERTY(QString yPosRole READ yPosRole WRITE setYPosRole NOTIFY yPosRoleChanged FINAL)
24 Q_PROPERTY(QString zPosRole READ zPosRole WRITE setZPosRole NOTIFY zPosRoleChanged FINAL)
25 Q_PROPERTY(QString rotationRole READ rotationRole WRITE setRotationRole NOTIFY
26 rotationRoleChanged FINAL)
27 Q_PROPERTY(QString scaleRole READ scaleRole WRITE setScaleRole NOTIFY
28 scaleRoleChanged FINAL REVISION(6, 10))
29 Q_PROPERTY(QRegularExpression xPosRolePattern READ xPosRolePattern WRITE setXPosRolePattern
30 NOTIFY xPosRolePatternChanged FINAL)
31 Q_PROPERTY(QRegularExpression yPosRolePattern READ yPosRolePattern WRITE setYPosRolePattern
32 NOTIFY yPosRolePatternChanged FINAL)
33 Q_PROPERTY(QRegularExpression zPosRolePattern READ zPosRolePattern WRITE setZPosRolePattern
34 NOTIFY zPosRolePatternChanged FINAL)
35 Q_PROPERTY(QRegularExpression rotationRolePattern READ rotationRolePattern WRITE
36 setRotationRolePattern NOTIFY rotationRolePatternChanged FINAL)
37 Q_PROPERTY(QRegularExpression scaleRolePattern READ scaleRolePattern WRITE
38 setScaleRolePattern NOTIFY scaleRolePatternChanged FINAL REVISION (6, 10))
39 Q_PROPERTY(QString xPosRoleReplace READ xPosRoleReplace WRITE setXPosRoleReplace NOTIFY
40 xPosRoleReplaceChanged FINAL)
41 Q_PROPERTY(QString yPosRoleReplace READ yPosRoleReplace WRITE setYPosRoleReplace NOTIFY
42 yPosRoleReplaceChanged FINAL)
43 Q_PROPERTY(QString zPosRoleReplace READ zPosRoleReplace WRITE setZPosRoleReplace NOTIFY
44 zPosRoleReplaceChanged FINAL)
45 Q_PROPERTY(QString rotationRoleReplace READ rotationRoleReplace WRITE setRotationRoleReplace
46 NOTIFY rotationRoleReplaceChanged FINAL)
47 Q_PROPERTY(QString scaleRoleReplace READ scaleRoleReplace WRITE setScaleRoleReplace
48 NOTIFY scaleRoleReplaceChanged FINAL REVISION (6, 10))
49 QML_NAMED_ELEMENT(ItemModelScatterDataProxy)
50
51public:
52 explicit QItemModelScatterDataProxy(QObject *parent = nullptr);
53 explicit QItemModelScatterDataProxy(QAbstractItemModel *itemModel, QObject *parent = nullptr);
54 explicit QItemModelScatterDataProxy(QAbstractItemModel *itemModel,
55 const QString &xPosRole,
56 const QString &yPosRole,
57 const QString &zPosRole,
58 QObject *parent = nullptr);
59 explicit QItemModelScatterDataProxy(QAbstractItemModel *itemModel,
60 const QString &xPosRole,
61 const QString &yPosRole,
62 const QString &zPosRole,
63 const QString &rotationRole,
64 QObject *parent = nullptr);
65
66 ~QItemModelScatterDataProxy() override;
67
68 void setItemModel(QAbstractItemModel *itemModel);
69 QAbstractItemModel *itemModel() const;
70
71 void setXPosRole(const QString &role);
72 QString xPosRole() const;
73 void setYPosRole(const QString &role);
74 QString yPosRole() const;
75 void setZPosRole(const QString &role);
76 QString zPosRole() const;
77 void setRotationRole(const QString &role);
78 QString rotationRole() const;
79 void setScaleRole(const QString &role);
80 QString scaleRole() const;
81
82 void remap(const QString &xPosRole,
83 const QString &yPosRole,
84 const QString &zPosRole,
85 const QString &rotationRole);
86
87 void remap(const QString &xPosRole,
88 const QString &yPosRole,
89 const QString &zPosRole,
90 const QString &rotationRole,
91 const QString &scaleRole);
92
93 void setXPosRolePattern(const QRegularExpression &pattern);
94 QRegularExpression xPosRolePattern() const;
95 void setYPosRolePattern(const QRegularExpression &pattern);
96 QRegularExpression yPosRolePattern() const;
97 void setZPosRolePattern(const QRegularExpression &pattern);
98 QRegularExpression zPosRolePattern() const;
99 void setRotationRolePattern(const QRegularExpression &pattern);
100 QRegularExpression rotationRolePattern() const;
101 void setScaleRolePattern(const QRegularExpression &pattern);
102 QRegularExpression scaleRolePattern() const;
103
104 void setXPosRoleReplace(const QString &replace);
105 QString xPosRoleReplace() const;
106 void setYPosRoleReplace(const QString &replace);
107 QString yPosRoleReplace() const;
108 void setZPosRoleReplace(const QString &replace);
109 QString zPosRoleReplace() const;
110 void setRotationRoleReplace(const QString &replace);
111 QString rotationRoleReplace() const;
112 void setScaleRoleReplace(const QString &replace);
113 QString scaleRoleReplace() const;
114
115Q_SIGNALS:
116 void itemModelChanged(const QAbstractItemModel *itemModel);
117 void xPosRoleChanged(const QString &role);
118 void yPosRoleChanged(const QString &role);
119 void zPosRoleChanged(const QString &role);
120 void rotationRoleChanged(const QString &role);
121 void scaleRoleChanged(const QString &role);
122 void xPosRolePatternChanged(const QRegularExpression &pattern);
123 void yPosRolePatternChanged(const QRegularExpression &pattern);
124 void zPosRolePatternChanged(const QRegularExpression &pattern);
125 void rotationRolePatternChanged(const QRegularExpression &pattern);
126 void scaleRolePatternChanged(const QRegularExpression &pattern);
127 void rotationRoleReplaceChanged(const QString &replace);
128 void xPosRoleReplaceChanged(const QString &replace);
129 void yPosRoleReplaceChanged(const QString &replace);
130 void zPosRoleReplaceChanged(const QString &replace);
131 void scaleRoleReplaceChanged(const QString &replace);
132
133private:
134 Q_DISABLE_COPY(QItemModelScatterDataProxy)
135};
136
137QT_END_NAMESPACE
138
139#endif
140

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