1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QABSTRACTSERIES_H
5#define QTGRAPHS_QABSTRACTSERIES_H
6
7#include <QtCore/qobject.h>
8#include <QtGraphs/qabstractaxis.h>
9#include <QtGraphs/qgraphsglobal.h>
10#include <QtGui/qpen.h>
11#include <QtQml/qqmllist.h>
12#include <QtQml/qqmlparserstatus.h>
13
14QT_BEGIN_NAMESPACE
15
16class QAbstractSeriesPrivate;
17class QGraphsView;
18
19struct Q_GRAPHS_EXPORT QLegendData
20{
21 Q_GADGET
22 QML_VALUE_TYPE(legendData)
23 QML_ADDED_IN_VERSION(6, 10) // formerly anonymous
24 Q_PROPERTY(QColor color MEMBER color FINAL)
25 Q_PROPERTY(QColor borderColor MEMBER borderColor FINAL)
26 Q_PROPERTY(QString label MEMBER label FINAL)
27
28public:
29 QColor color;
30 QColor borderColor;
31 QString label;
32};
33
34class Q_GRAPHS_EXPORT QAbstractSeries : public QObject, public QQmlParserStatus
35{
36 Q_OBJECT
37 Q_DECLARE_PRIVATE(QAbstractSeries)
38 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
39 Q_INTERFACES(QQmlParserStatus)
40 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged FINAL)
41 Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged FINAL)
42 Q_PROPERTY(bool selectable READ isSelectable WRITE setSelectable NOTIFY selectableChanged FINAL)
43 Q_PROPERTY(bool hoverable READ isHoverable WRITE setHoverable NOTIFY hoverableChanged FINAL)
44 Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity NOTIFY opacityChanged FINAL)
45 Q_PROPERTY(qreal valuesMultiplier READ valuesMultiplier WRITE setValuesMultiplier NOTIFY
46 valuesMultiplierChanged FINAL)
47 Q_PROPERTY(SeriesType type READ type CONSTANT FINAL)
48 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren CONSTANT FINAL)
49 Q_PROPERTY(QList<QLegendData> legendData READ legendData NOTIFY legendDataChanged FINAL)
50 Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged REVISION(6, 10))
51 Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION(6, 10))
52 Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION(6, 10))
53 Q_PROPERTY(int zValue READ zValue WRITE setZValue NOTIFY zValueChanged REVISION(6, 10))
54 Q_CLASSINFO("DefaultProperty", "seriesChildren")
55 QML_ANONYMOUS
56
57public:
58 enum class SeriesType {
59 Line,
60 Area,
61 Bar,
62 Pie,
63 Scatter,
64 Spline,
65 };
66 Q_ENUM(SeriesType)
67
68protected:
69 explicit QAbstractSeries(QAbstractSeriesPrivate &dd, QObject *parent = nullptr);
70
71 // from QDeclarativeParserStatus
72 void classBegin() override;
73 void componentComplete() override;
74
75public:
76 ~QAbstractSeries() override;
77 virtual SeriesType type() const = 0;
78
79 QString name() const;
80 void setName(const QString &name);
81
82 bool isVisible() const;
83 void setVisible(bool visible = true);
84
85 bool isSelectable() const;
86 void setSelectable(bool selectable);
87
88 qreal opacity() const;
89 void setOpacity(qreal opacity);
90
91 qreal valuesMultiplier() const;
92 void setValuesMultiplier(qreal valuesMultiplier);
93
94 QGraphsView *graph() const;
95 void setGraph(QGraphsView *graph);
96
97 const QList<QLegendData> legendData() const;
98
99 void show();
100 void hide();
101
102 QQmlListProperty<QObject> seriesChildren();
103
104 bool isHoverable() const;
105 void setHoverable(bool newHoverable);
106
107 bool hasLoaded() const;
108
109 bool isHovered() const;
110 void setHovered(bool enabled);
111
112 QAbstractAxis *axisX() const;
113 void setAxisX(QAbstractAxis *newAxisX);
114
115 QAbstractAxis *axisY() const;
116 void setAxisY(QAbstractAxis *newAxisY);
117
118 int zValue() const;
119 void setZValue(int newDrawOrder);
120
121Q_SIGNALS:
122 void update();
123 void nameChanged();
124 void visibleChanged();
125 void selectableChanged();
126 void hoverableChanged();
127 void opacityChanged();
128 void valuesMultiplierChanged();
129 void legendDataChanged();
130 void hoverEnter(const QString &seriesName, QPointF position, QPointF value);
131 void hoverExit(const QString &seriesName, QPointF position);
132 void hover(const QString &seriesName, QPointF position, QPointF value);
133 Q_REVISION(6, 10) void hoveredChanged(bool hovered);
134
135 Q_REVISION(6, 10) void axisXChanged(QAbstractAxis *newAxis);
136 Q_REVISION(6, 10) void axisYChanged(QAbstractAxis *newAxis);
137 Q_REVISION(6, 10) void zValueChanged(int z);
138
139protected:
140 friend class BarsRenderer;
141 friend class PointRenderer;
142 friend class PieRenderer;
143 friend class AreaRenderer;
144};
145
146QT_END_NAMESPACE
147
148Q_DECLARE_METATYPE(QLegendData)
149
150#endif // QTGRAPHS_QABSTRACTSERIES_H
151

source code of qtgraphs/src/graphs2d/qabstractseries.h