1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#include <QtCharts/QVCandlestickModelMapper>
5#include <private/qcandlestickmodelmapper_p.h>
6
7QT_BEGIN_NAMESPACE
8
9/*!
10 \class QVCandlestickModelMapper
11 \since 5.8
12 \inmodule QtCharts
13 \brief The QVCandlestickModelMapper class is a vertical model mapper for a candlestick series.
14
15 Model mappers enable using a data model derived from the QAbstractItemModel class
16 as a data source for a chart. A vertical model mapper is used to create a connection
17 between a data model and QCandlestickSeries, so that each column in the data model defines a
18 candlestick item and each row maps to the open, high, low, close, and timestamp values
19 of the candlestick item.
20
21 Both model and candlestick series properties can be used to manipulate the data. The model
22 mapper keeps the candlestick series and the data model in sync.
23
24 The model mapper ensures that all the candlestick items in the candlestick series have equal
25 sizes. Therefore, adding or removing a value from a candlestick item causes the same change to
26 be made in all the candlestick items in the candlestick series.
27
28 \sa QCandlestickSeries, QCandlestickSet, QHCandlestickModelMapper
29*/
30
31/*!
32 \qmltype VCandlestickModelMapper
33 \since QtCharts 2.2
34 \instantiates QVCandlestickModelMapper
35 \inqmlmodule QtCharts
36 \brief Vertical model mapper for a candlestick series.
37
38 Model mappers enable using a data model derived from the QAbstractItemModel class
39 as a data source for a chart. A vertical model mapper is used to create a connection
40 between a data model and CandlestickSeries, so that each column in the data model defines a
41 candlestick item and each row maps to the open, high, low, close, and timestamp values
42 of the candlestick item.
43
44 Both model and candlestick series properties can be used to manipulate the data. The model
45 mapper keeps the candlestick series and the data model in sync.
46
47 The model mapper ensures that all the candlestick items in the candlestick series have equal
48 sizes. Therefore, adding or removing a value from a candlestick item causes the same change to
49 be made in all the candlestick items in the candlestick series.
50
51 The following QML example creates a candlestick series with three candlestick items (assuming
52 the model has at least four columns). Each candlestick item contains data defined by the
53 timestamp, open, high, low, and close rows. The name of an item is defined by the horizontal
54 header of the column.
55 \qml
56 CandlestickSeries {
57 VCandlestickModelMapper {
58 model: myCustomModel // QAbstractItemModel derived implementation
59 timestampRow: 1
60 openRow: 2
61 highRow: 3
62 lowRow: 4
63 closeRow: 5
64 firstSetColumn: 1
65 lastSetColumn: 3
66 }
67 }
68 \endqml
69
70 \sa CandlestickSeries, CandlestickSet, HCandlestickModelMapper
71*/
72
73/*!
74 \qmlproperty QAbstractItemModel VCandlestickModelMapper::model
75 The QAbstractItemModel-based model that is used by the mapper. The model must be
76 implemented and exposed to QML.
77
78 \note The model used must support adding and removing rows or columns and modifying the data of
79 the cells.
80*/
81
82/*!
83 \qmlproperty CandlestickSeries VCandlestickModelMapper::series
84 The CandlestickSeries based object that is used by the mapper.
85
86 All the data in the series is discarded when it is set to the mapper. When a new series is
87 specified, the old series is disconnected (but it preserves its data).
88*/
89
90/*!
91 \property QVCandlestickModelMapper::timestampRow
92 \brief The row of the model that contains the timestamp values of the
93 candlestick items in the series.
94
95 The default value is -1 (invalid mapping).
96*/
97
98/*!
99 \qmlproperty int VCandlestickModelMapper::timestampRow
100 The row of the model that contains the timestamp values of the
101 candlestick items in the series. The default value is -1
102 (invalid mapping).
103*/
104
105/*!
106 \property QVCandlestickModelMapper::openRow
107 \brief The row of the model that contains the open values of the
108 candlestick items in the series.
109
110 The default value is -1 (invalid mapping).
111*/
112
113/*!
114 \qmlproperty int VCandlestickModelMapper::openRow
115 The row of the model that contains the open values of the
116 candlestick items in the series. The default value is -1
117 (invalid mapping).
118*/
119
120/*!
121 \property QVCandlestickModelMapper::highRow
122 \brief The row of the model that contains the high values of the
123 candlestick items in the series.
124
125 The default value is -1 (invalid mapping).
126*/
127
128/*!
129 \qmlproperty int VCandlestickModelMapper::highRow
130 The row of the model that contains the high values of the
131 candlestick items in the series. The default value is -1
132 (invalid mapping).
133*/
134
135/*!
136 \property QVCandlestickModelMapper::lowRow
137 \brief The row of the model that contains the low values of the
138 candlestick items in the series.
139
140 The default value is -1 (invalid mapping).
141*/
142
143/*!
144 \qmlproperty int VCandlestickModelMapper::lowRow
145 The row of the model that contains the low values of the
146 candlestick items in the series. The default value is -1
147 (invalid mapping).
148*/
149
150/*!
151 \property QVCandlestickModelMapper::closeRow
152 \brief The row of the model that contains the close values of the
153 candlestick items in the series.
154
155 The default value is -1 (invalid mapping).
156*/
157
158/*!
159 \qmlproperty int VCandlestickModelMapper::closeRow
160 The row of the model that contains the close values of the
161 candlestick items in the series. The default value is -1
162 (invalid mapping).
163*/
164
165/*!
166 \property QVCandlestickModelMapper::firstSetColumn
167 \brief The column of the model that is used as the data source for the first item.
168
169 The default value is -1 (invalid mapping).
170*/
171
172/*!
173 \qmlproperty int VCandlestickModelMapper::firstSetColumn
174 The column of the model that is used as the data source for the first item.
175 The default value is -1 (invalid mapping).
176*/
177
178/*!
179 \property QVCandlestickModelMapper::lastSetColumn
180 \brief The column of the model that is used as the data source for the last item.
181
182 The default value is -1 (invalid mapping).
183*/
184
185/*!
186 \qmlproperty int VCandlestickModelMapper::lastSetColumn
187 The column of the model that is used as the data source for the last item.
188 The default value is -1 (invalid mapping).
189*/
190
191/*!
192 \fn void QVCandlestickModelMapper::timestampRowChanged()
193 \brief Emitted when the row of the model that contains timestamp values is changed.
194 \sa timestampRow
195*/
196
197/*!
198 \fn void QVCandlestickModelMapper::openRowChanged()
199 \brief Emitted when the row of the model that contains open values is changed.
200 \sa openRow
201*/
202
203/*!
204 \fn void QVCandlestickModelMapper::highRowChanged()
205 \brief Emitted when the row of the model that contains high values is changed.
206 \sa highRow
207*/
208
209/*!
210 \fn void QVCandlestickModelMapper::lowRowChanged()
211 \brief Emitted when the row of the model that contains low values is changed.
212 \sa lowRow
213*/
214
215/*!
216 \fn void QVCandlestickModelMapper::closeRowChanged()
217 \brief Emitted when the row of the model that contains close values is changed.
218 \sa closeRow
219*/
220
221/*!
222 \fn void QVCandlestickModelMapper::firstSetColumnChanged()
223 \brief Emitted when the column of the model that contains the data of the first item is changed.
224 \sa firstSetColumn
225*/
226
227/*!
228 \fn void QVCandlestickModelMapper::lastSetColumnChanged()
229 \brief Emitted when the column of the model that contains the data of the last item is changed.
230 \sa lastSetColumn
231*/
232
233/*!
234 Constructs a vertical model mapper object which is a child of \a parent.
235*/
236QVCandlestickModelMapper::QVCandlestickModelMapper(QObject *parent)
237 : QCandlestickModelMapper(parent)
238{
239 connect(sender: d_ptr, SIGNAL(timestampChanged()), receiver: this, SIGNAL(timestampRowChanged()));
240 connect(sender: d_ptr, SIGNAL(openChanged()), receiver: this, SIGNAL(openRowChanged()));
241 connect(sender: d_ptr, SIGNAL(highChanged()), receiver: this, SIGNAL(highRowChanged()));
242 connect(sender: d_ptr, SIGNAL(lowChanged()), receiver: this, SIGNAL(lowRowChanged()));
243 connect(sender: d_ptr, SIGNAL(closeChanged()), receiver: this, SIGNAL(closeRowChanged()));
244 connect(sender: d_ptr, SIGNAL(firstSetSectionChanged()), receiver: this, SIGNAL(firstSetColumnChanged()));
245 connect(sender: d_ptr, SIGNAL(lastSetSectionChanged()), receiver: this, SIGNAL(lastSetColumnChanged()));
246}
247
248/*!
249 Returns Qt::Vertical. This means that values of the item are read from columns.
250*/
251Qt::Orientation QVCandlestickModelMapper::orientation() const
252{
253 return Qt::Vertical;
254}
255
256void QVCandlestickModelMapper::setTimestampRow(int timestampRow)
257{
258 QCandlestickModelMapper::setTimestamp(timestampRow);
259}
260
261int QVCandlestickModelMapper::timestampRow() const
262{
263 return QCandlestickModelMapper::timestamp();
264}
265
266void QVCandlestickModelMapper::setOpenRow(int openRow)
267{
268 QCandlestickModelMapper::setOpen(openRow);
269}
270
271int QVCandlestickModelMapper::openRow() const
272{
273 return QCandlestickModelMapper::open();
274}
275
276void QVCandlestickModelMapper::setHighRow(int highRow)
277{
278 QCandlestickModelMapper::setHigh(highRow);
279}
280
281int QVCandlestickModelMapper::highRow() const
282{
283 return QCandlestickModelMapper::high();
284}
285
286void QVCandlestickModelMapper::setLowRow(int lowRow)
287{
288 QCandlestickModelMapper::setLow(lowRow);
289}
290
291int QVCandlestickModelMapper::lowRow() const
292{
293 return QCandlestickModelMapper::low();
294}
295
296void QVCandlestickModelMapper::setCloseRow(int closeRow)
297{
298 QCandlestickModelMapper::setClose(closeRow);
299}
300
301int QVCandlestickModelMapper::closeRow() const
302{
303 return QCandlestickModelMapper::close();
304}
305
306void QVCandlestickModelMapper::setFirstSetColumn(int firstSetColumn)
307{
308 QCandlestickModelMapper::setFirstSetSection(firstSetColumn);
309}
310
311int QVCandlestickModelMapper::firstSetColumn() const
312{
313 return QCandlestickModelMapper::firstSetSection();
314}
315
316void QVCandlestickModelMapper::setLastSetColumn(int lastSetColumn)
317{
318 QCandlestickModelMapper::setLastSetSection(lastSetColumn);
319}
320
321int QVCandlestickModelMapper::lastSetColumn() const
322{
323 return QCandlestickModelMapper::lastSetSection();
324}
325
326QT_END_NAMESPACE
327
328#include "moc_qvcandlestickmodelmapper.cpp"
329

source code of qtcharts/src/charts/candlestickchart/qvcandlestickmodelmapper.cpp