1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4// W A R N I N G
5// -------------
6//
7// This file is not part of the Qt Chart API. It exists purely as an
8// implementation detail. This header file may change from version to
9// version without notice, or even be removed.
10//
11// We mean it.
12
13#ifndef DECLARATIVEBARSERIES_H
14#define DECLARATIVEBARSERIES_H
15
16#include <QtQml/qqmlregistration.h>
17#include <QtCharts/QBarSeries>
18#include <QtCharts/QStackedBarSeries>
19#include <QtCharts/QPercentBarSeries>
20#include <QtCharts/QHorizontalBarSeries>
21#include <QtCharts/QHorizontalStackedBarSeries>
22#include <QtCharts/QHorizontalPercentBarSeries>
23#include <QtCharts/QBarSet>
24#include <private/declarativechartglobal_p.h>
25#include <private/declarativeaxes_p.h>
26
27#include <QtQuick/QQuickItem>
28#include <QtQml/QQmlParserStatus>
29
30QT_BEGIN_NAMESPACE
31
32class QChart;
33
34class Q_CHARTSQML_EXPORT DeclarativeBarSet : public QBarSet
35{
36 Q_OBJECT
37 Q_PROPERTY(QVariantList values READ values WRITE setValues)
38 Q_PROPERTY(qreal borderWidth READ borderWidth WRITE setBorderWidth NOTIFY borderWidthChanged REVISION(1, 1))
39 Q_PROPERTY(int count READ count NOTIFY countChanged)
40 Q_PROPERTY(QString brushFilename READ brushFilename WRITE setBrushFilename NOTIFY brushFilenameChanged REVISION(1, 4))
41 QML_NAMED_ELEMENT(BarSet)
42 QML_ADDED_IN_VERSION(1, 0)
43 QML_EXTRA_VERSION(2, 0)
44
45public:
46 explicit DeclarativeBarSet(QObject *parent = 0);
47 QVariantList values();
48 void setValues(QVariantList values);
49 qreal borderWidth() const;
50 void setBorderWidth(qreal borderWidth);
51 QString brushFilename() const;
52 void setBrushFilename(const QString &brushFilename);
53
54public: // From QBarSet
55 Q_INVOKABLE void append(qreal value) { QBarSet::append(value); }
56 Q_INVOKABLE void remove(const int index, const int count = 1) { QBarSet::remove(index, count); }
57 Q_INVOKABLE void replace(int index, qreal value) { QBarSet::replace(index, value); }
58 Q_INVOKABLE qreal at(int index) { return QBarSet::at(index); }
59
60Q_SIGNALS:
61 void countChanged(int count);
62 Q_REVISION(1, 1) void borderWidthChanged(qreal width);
63 Q_REVISION(1, 4) void brushFilenameChanged(const QString &brushFilename);
64
65private Q_SLOTS:
66 void handleCountChanged(int index, int count);
67 void handleBrushChanged();
68
69private:
70 QString m_brushFilename;
71 QImage m_brushImage;
72};
73
74class Q_CHARTSQML_EXPORT DeclarativeBarSeries : public QBarSeries, public QQmlParserStatus
75{
76 Q_OBJECT
77 Q_INTERFACES(QQmlParserStatus)
78 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(1, 1))
79 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(1, 1))
80 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION(1, 2))
81 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION(1, 2))
82 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
83 Q_CLASSINFO("DefaultProperty", "seriesChildren")
84 QML_NAMED_ELEMENT(BarSeries)
85 QML_ADDED_IN_VERSION(1, 0)
86 QML_EXTRA_VERSION(2, 0)
87
88public:
89 explicit DeclarativeBarSeries(QQuickItem *parent = 0);
90 QAbstractAxis *axisX() { return m_axes->axisX(); }
91 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
92 QAbstractAxis *axisY() { return m_axes->axisY(); }
93 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
94 QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
95 void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
96 QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
97 void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
98 QQmlListProperty<QObject> seriesChildren();
99
100public:
101 Q_INVOKABLE DeclarativeBarSet *at(int index);
102 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(index: count(), label, values); }
103 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
104 Q_INVOKABLE bool remove(QBarSet *barset) { return QBarSeries::remove(set: barset); }
105 Q_INVOKABLE void clear() { return QBarSeries::clear(); }
106
107public: // from QDeclarativeParserStatus
108 void classBegin() override;
109 void componentComplete() override;
110
111Q_SIGNALS:
112 Q_REVISION(1, 1) void axisXChanged(QAbstractAxis *axis);
113 Q_REVISION(1, 1) void axisYChanged(QAbstractAxis *axis);
114 Q_REVISION(1, 2) void axisXTopChanged(QAbstractAxis *axis);
115 Q_REVISION(1, 2) void axisYRightChanged(QAbstractAxis *axis);
116
117public:
118 // TODO: This method is used from classes that don't inherit DeclarativeBarSeries
119 // Its implementation is empty. None of this makes any sense.
120 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
121
122 DeclarativeAxes *m_axes;
123};
124
125class Q_CHARTSQML_EXPORT DeclarativeStackedBarSeries : public QStackedBarSeries, public QQmlParserStatus
126{
127 Q_OBJECT
128 Q_INTERFACES(QQmlParserStatus)
129 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(1, 1))
130 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(1, 1))
131 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION(1, 2))
132 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION(1, 2))
133 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
134 Q_CLASSINFO("DefaultProperty", "seriesChildren")
135 QML_NAMED_ELEMENT(StackedBarSeries)
136 QML_ADDED_IN_VERSION(1, 0)
137 QML_EXTRA_VERSION(2, 0)
138
139public:
140 explicit DeclarativeStackedBarSeries(QQuickItem *parent = 0);
141 QAbstractAxis *axisX() { return m_axes->axisX(); }
142 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
143 QAbstractAxis *axisY() { return m_axes->axisY(); }
144 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
145 QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
146 void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
147 QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
148 void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
149 QQmlListProperty<QObject> seriesChildren();
150
151public:
152 Q_INVOKABLE DeclarativeBarSet *at(int index);
153 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(index: count(), label, values); }
154 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
155 Q_INVOKABLE bool remove(QBarSet *barset) { return QStackedBarSeries::remove(set: barset); }
156 Q_INVOKABLE void clear() { return QStackedBarSeries::clear(); }
157
158public: // from QDeclarativeParserStatus
159 void classBegin() override;
160 void componentComplete() override;
161
162Q_SIGNALS:
163 Q_REVISION(1, 1) void axisXChanged(QAbstractAxis *axis);
164 Q_REVISION(1, 1) void axisYChanged(QAbstractAxis *axis);
165 Q_REVISION(1, 2) void axisXTopChanged(QAbstractAxis *axis);
166 Q_REVISION(1, 2) void axisYRightChanged(QAbstractAxis *axis);
167
168private:
169 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
170
171public:
172 DeclarativeAxes *m_axes;
173};
174
175class Q_CHARTSQML_EXPORT DeclarativePercentBarSeries : public QPercentBarSeries, public QQmlParserStatus
176{
177 Q_OBJECT
178 Q_INTERFACES(QQmlParserStatus)
179 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(1, 1))
180 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(1, 1))
181 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION(1, 2))
182 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION(1, 2))
183 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
184 Q_CLASSINFO("DefaultProperty", "seriesChildren")
185 QML_NAMED_ELEMENT(PercentBarSeries)
186 QML_ADDED_IN_VERSION(1, 0)
187 QML_EXTRA_VERSION(2, 0)
188
189public:
190 explicit DeclarativePercentBarSeries(QQuickItem *parent = 0);
191 QAbstractAxis *axisX() { return m_axes->axisX(); }
192 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
193 QAbstractAxis *axisY() { return m_axes->axisY(); }
194 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
195 QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
196 void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
197 QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
198 void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
199 QQmlListProperty<QObject> seriesChildren();
200
201public:
202 Q_INVOKABLE DeclarativeBarSet *at(int index);
203 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(index: count(), label, values); }
204 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
205 Q_INVOKABLE bool remove(QBarSet *barset) { return QPercentBarSeries::remove(set: barset); }
206 Q_INVOKABLE void clear() { return QPercentBarSeries::clear(); }
207
208public: // from QDeclarativeParserStatus
209 void classBegin() override;
210 void componentComplete() override;
211
212Q_SIGNALS:
213 Q_REVISION(1, 1) void axisXChanged(QAbstractAxis *axis);
214 Q_REVISION(1, 1) void axisYChanged(QAbstractAxis *axis);
215 Q_REVISION(1, 2) void axisXTopChanged(QAbstractAxis *axis);
216 Q_REVISION(1, 2) void axisYRightChanged(QAbstractAxis *axis);
217
218private:
219 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
220
221public:
222 DeclarativeAxes *m_axes;
223};
224
225class Q_CHARTSQML_EXPORT DeclarativeHorizontalBarSeries : public QHorizontalBarSeries, public QQmlParserStatus
226{
227 Q_OBJECT
228 Q_INTERFACES(QQmlParserStatus)
229 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(1, 1))
230 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(1, 1))
231 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION(1, 2))
232 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION(1, 2))
233 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
234 Q_CLASSINFO("DefaultProperty", "seriesChildren")
235 QML_NAMED_ELEMENT(HorizontalBarSeries)
236 QML_ADDED_IN_VERSION(1, 0)
237 QML_EXTRA_VERSION(2, 0)
238
239public:
240 explicit DeclarativeHorizontalBarSeries(QQuickItem *parent = 0);
241 QAbstractAxis *axisX() { return m_axes->axisX(); }
242 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
243 QAbstractAxis *axisY() { return m_axes->axisY(); }
244 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
245 QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
246 void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
247 QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
248 void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
249 QQmlListProperty<QObject> seriesChildren();
250
251public:
252 Q_INVOKABLE DeclarativeBarSet *at(int index);
253 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(index: count(), label, values); }
254 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
255 Q_INVOKABLE bool remove(QBarSet *barset) { return QHorizontalBarSeries::remove(set: barset); }
256 Q_INVOKABLE void clear() { return QHorizontalBarSeries::clear(); }
257
258public: // from QDeclarativeParserStatus
259 void classBegin() override;
260 void componentComplete() override;
261
262Q_SIGNALS:
263 Q_REVISION(1, 1) void axisXChanged(QAbstractAxis *axis);
264 Q_REVISION(1, 1) void axisYChanged(QAbstractAxis *axis);
265 Q_REVISION(1, 2) void axisXTopChanged(QAbstractAxis *axis);
266 Q_REVISION(1, 2) void axisYRightChanged(QAbstractAxis *axis);
267
268private:
269 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
270
271public:
272 DeclarativeAxes *m_axes;
273};
274
275class Q_CHARTSQML_EXPORT DeclarativeHorizontalStackedBarSeries : public QHorizontalStackedBarSeries, public QQmlParserStatus
276{
277 Q_OBJECT
278 Q_INTERFACES(QQmlParserStatus)
279 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(1, 1))
280 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(1, 1))
281 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION(1, 2))
282 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION(1, 2))
283 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
284 Q_CLASSINFO("DefaultProperty", "seriesChildren")
285 QML_NAMED_ELEMENT(HorizontalStackedBarSeries)
286 QML_ADDED_IN_VERSION(1, 0)
287 QML_EXTRA_VERSION(2, 0)
288
289public:
290 explicit DeclarativeHorizontalStackedBarSeries(QQuickItem *parent = 0);
291 QAbstractAxis *axisX() { return m_axes->axisX(); }
292 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
293 QAbstractAxis *axisY() { return m_axes->axisY(); }
294 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
295 QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
296 void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
297 QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
298 void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
299 QQmlListProperty<QObject> seriesChildren();
300
301public:
302 Q_INVOKABLE DeclarativeBarSet *at(int index);
303 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(index: count(), label, values); }
304 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
305 Q_INVOKABLE bool remove(QBarSet *barset) { return QHorizontalStackedBarSeries::remove(set: barset); }
306 Q_INVOKABLE void clear() { return QHorizontalStackedBarSeries::clear(); }
307
308public: // from QDeclarativeParserStatus
309 void classBegin() override;
310 void componentComplete() override;
311
312Q_SIGNALS:
313 Q_REVISION(1, 1) void axisXChanged(QAbstractAxis *axis);
314 Q_REVISION(1, 1) void axisYChanged(QAbstractAxis *axis);
315 Q_REVISION(1, 2) void axisXTopChanged(QAbstractAxis *axis);
316 Q_REVISION(1, 2) void axisYRightChanged(QAbstractAxis *axis);
317
318private:
319 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
320
321public:
322 DeclarativeAxes *m_axes;
323};
324
325class Q_CHARTSQML_EXPORT DeclarativeHorizontalPercentBarSeries : public QHorizontalPercentBarSeries, public QQmlParserStatus
326{
327 Q_OBJECT
328 Q_INTERFACES(QQmlParserStatus)
329 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(1, 1))
330 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(1, 1))
331 Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION(1, 2))
332 Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION(1, 2))
333 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren)
334 Q_CLASSINFO("DefaultProperty", "seriesChildren")
335 QML_NAMED_ELEMENT(HorizontalPercentBarSeries)
336 QML_ADDED_IN_VERSION(1, 0)
337 QML_EXTRA_VERSION(2, 0)
338
339public:
340 explicit DeclarativeHorizontalPercentBarSeries(QQuickItem *parent = 0);
341 QAbstractAxis *axisX() { return m_axes->axisX(); }
342 void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); }
343 QAbstractAxis *axisY() { return m_axes->axisY(); }
344 void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); }
345 QAbstractAxis *axisXTop() { return m_axes->axisXTop(); }
346 void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); }
347 QAbstractAxis *axisYRight() { return m_axes->axisYRight(); }
348 void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); }
349 QQmlListProperty<QObject> seriesChildren();
350
351public:
352 Q_INVOKABLE DeclarativeBarSet *at(int index);
353 Q_INVOKABLE DeclarativeBarSet *append(QString label, QVariantList values) { return insert(index: count(), label, values); }
354 Q_INVOKABLE DeclarativeBarSet *insert(int index, QString label, QVariantList values);
355 Q_INVOKABLE bool remove(QBarSet *barset) { return QHorizontalPercentBarSeries::remove(set: barset); }
356 Q_INVOKABLE void clear() { return QHorizontalPercentBarSeries::clear(); }
357
358public: // from QDeclarativeParserStatus
359 void classBegin() override;
360 void componentComplete() override;
361
362Q_SIGNALS:
363 Q_REVISION(1, 1) void axisXChanged(QAbstractAxis *axis);
364 Q_REVISION(1, 1) void axisYChanged(QAbstractAxis *axis);
365 Q_REVISION(1, 2) void axisXTopChanged(QAbstractAxis *axis);
366 Q_REVISION(1, 2) void axisYRightChanged(QAbstractAxis *axis);
367
368private:
369 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
370
371public:
372 DeclarativeAxes *m_axes;
373};
374
375QT_END_NAMESPACE
376
377#endif // DECLARATIVEBARSERIES_H
378

Provided by KDAB

Privacy Policy
Start learning QML with our Intro Training
Find out more

source code of qtcharts/src/chartsqml2/declarativebarseries_p.h