diff options
Diffstat (limited to 'src/charts/candlestickchart/qcandlestickset.cpp')
-rw-r--r-- | src/charts/candlestickchart/qcandlestickset.cpp | 487 |
1 files changed, 487 insertions, 0 deletions
diff --git a/src/charts/candlestickchart/qcandlestickset.cpp b/src/charts/candlestickchart/qcandlestickset.cpp new file mode 100644 index 00000000..99779ef7 --- /dev/null +++ b/src/charts/candlestickchart/qcandlestickset.cpp @@ -0,0 +1,487 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Charts module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtCharts/QCandlestickSet> +#include <private/qcandlestickset_p.h> + +QT_CHARTS_BEGIN_NAMESPACE + +/*! + \class QCandlestickSet + \since 5.8 + \inmodule Qt Charts + \brief Building block for a candlestick chart. + + QCandlestickSet represents a single candlestick item in a QCandlestickSeries. It takes five + values to create a graphical representation of a candlestick item: \e open, \e high, \e low, + \e close, and \e timestamp. These values can be either passed to a QCandlestickSet constructor, + or set by using setOpen(), setHigh(), setLow(), setClose(), and setTimestamp(). + + \sa QCandlestickSeries +*/ + +/*! + \qmltype CandlestickSet + \since 2.2 + \instantiates QCandlestickSet + \inqmlmodule QtCharts + \brief Building block for a candlestick chart. + + CandlestickSet represents a single candlestick item in a CandlestickSeries. It takes five + values to create a graphical representation of a candlestick item: \l open, \l high, \l low, + \l close, and \l timestamp. + + \sa CandlestickSeries +*/ + +/*! + \property QCandlestickSet::timestamp + \brief The timestamp value of the set. +*/ + +/*! + \qmlproperty qreal CandlestickSet::timestamp + \brief The timestamp value of the set. +*/ + +/*! + \property QCandlestickSet::open + \brief The open value of the set. +*/ + +/*! + \qmlproperty qreal CandlestickSet::open + \brief The open value of the set. +*/ + +/*! + \property QCandlestickSet::high + \brief The high value of the set. +*/ + +/*! + \qmlproperty qreal CandlestickSet::high + \brief The high value of the set. +*/ + +/*! + \property QCandlestickSet::low + \brief The low value of the set. +*/ + +/*! + \qmlproperty qreal CandlestickSet::low + \brief The low value of the set. +*/ + +/*! + \property QCandlestickSet::close + \brief The close value of the set. +*/ + +/*! + \qmlproperty qreal CandlestickSet::close + \brief The close value of the set. +*/ + +/*! + \property QCandlestickSet::brush + \brief The brush used for drawing the candlestick. +*/ + +/*! + \property QCandlestickSet::pen + \brief The pen used for drawing the candlestick. +*/ + +/*! + \qmlproperty QString CandlestickSet::brushFilename + \brief The name of the file used as a brush for the set. +*/ + +/*! + \fn void QCandlestickSet::clicked() + \brief Emitted when the candlestick item is clicked (pressed and released). +*/ + +/*! + \qmlsignal CandlestickSet::clicked() + \brief Emitted when the candlestick item is clicked (pressed and released). + + The corresponding signal handler is \c {onClicked}. +*/ + +/*! + \fn void QCandlestickSet::hovered(bool status) + \brief Emitted when there is change in hover \a status over a candlestick item. + + Parameter \a status indicates whether the mouse has entered (\c true) or left (\c false) the + area of the candlestick item. +*/ + +/*! + \qmlsignal CandlestickSet::hovered(bool status) + \brief Emitted when there is change in hover \a status over a candlestick item. + + Parameter \a status indicates whether the mouse has entered (\c true) or left (\c false) the + area of the candlestick item. + + The corresponding signal handler is \c {onHovered}. +*/ + +/*! + \fn void QCandlestickSet::pressed() + \brief Emitted when there is a press on a candlestick item. +*/ + +/*! + \qmlsignal CandlestickSet::pressed() + \brief Emitted when there is a press on a candlestick item. + + The corresponding signal handler is \c {onPressed}. +*/ + +/*! + \fn void QCandlestickSet::released() + \brief Emitted when there is a release on a candlestick item. +*/ + +/*! + \qmlsignal CandlestickSet::released() + \brief Emitted when there is a release on a candlestick item. + + The corresponding signal handler is \c {onReleased}. +*/ + +/*! + \fn void QCandlestickSet::doubleClicked() + \brief Emitted when there is a double-click on a candlestick item. +*/ + +/*! + \qmlsignal CandlestickSet::doubleClicked() + \brief Emitted when there is a double-click on a candlestick item. + + The corresponding signal handler is \c {onDoubleClicked}. +*/ + +/*! + \fn void QCandlestickSet::timestampChanged() + \brief Emitted when the candlestick item timestamp is changed. + \sa timestamp +*/ + +/*! + \qmlsignal CandlestickSet::timestampChanged() + \brief Emitted when the candlestick item timestamp is changed. + \sa timestamp + + The corresponding signal handler is \c {onTimestampChanged}. +*/ + +/*! + \fn void QCandlestickSet::openChanged() + \brief Emitted when the candlestick item open value is changed. + \sa open +*/ + +/*! + \qmlsignal CandlestickSet::openChanged() + \brief Emitted when the candlestick item open value is changed. + \sa open + + The corresponding signal handler is \c {onOpenChanged}. +*/ + +/*! + \fn void QCandlestickSet::highChanged() + \brief Emitted when the candlestick item high value is changed. + \sa high +*/ + +/*! + \qmlsignal CandlestickSet::highChanged() + \brief Emitted when the candlestick item high value is changed. + \sa high + + The corresponding signal handler is \c {onHighChanged}. +*/ + +/*! + \fn void QCandlestickSet::lowChanged() + \brief Emitted when the candlestick item low value is changed. + \sa low +*/ + +/*! + \qmlsignal CandlestickSet::lowChanged() + \brief Emitted when the candlestick item low value is changed. + \sa low + + The corresponding signal handler is \c {onLowChanged}. +*/ + +/*! + \fn void QCandlestickSet::closeChanged() + \brief Emitted when the candlestick item close value is changed. + \sa close +*/ + +/*! + \qmlsignal CandlestickSet::closeChanged() + \brief Emitted when the candlestick item close value is changed. + \sa close + + The corresponding signal handler is \c {onCloseChanged}. +*/ + +/*! + \fn void QCandlestickSet::brushChanged() + \brief Emitted when the candlestick item brush is changed. + \sa brush +*/ + +/*! + \fn void QCandlestickSet::penChanged() + \brief Emitted when the candlestick item pen is changed. + \sa pen +*/ + +/*! + Constructs a QCandlestickSet with an optional \a timestamp and a \a parent. +*/ +QCandlestickSet::QCandlestickSet(qreal timestamp, QObject *parent) + : QObject(parent), + d_ptr(new QCandlestickSetPrivate(timestamp, this)) +{ +} + +/*! + Constructs a QCandlestickSet with given ordered values. The values \a open, \a high, \a low + and \a close are mandatory. The values \a timestamp and \a parent are optional. +*/ +QCandlestickSet::QCandlestickSet(qreal open, qreal high, qreal low, qreal close, qreal timestamp, + QObject *parent) + : QObject(parent), + d_ptr(new QCandlestickSetPrivate(timestamp, this)) +{ + Q_D(QCandlestickSet); + + d->m_open = open; + d->m_high = high; + d->m_low = low; + d->m_close = close; + + emit d->updatedLayout(); +} + +/*! + Destroys the set. +*/ +QCandlestickSet::~QCandlestickSet() +{ +} + +void QCandlestickSet::setTimestamp(qreal timestamp) +{ + Q_D(QCandlestickSet); + + bool changed = d->setTimestamp(timestamp); + if (!changed) + return; + + emit d->updatedLayout(); + emit timestampChanged(); +} + +qreal QCandlestickSet::timestamp() const +{ + Q_D(const QCandlestickSet); + + return d->m_timestamp; +} + +void QCandlestickSet::setOpen(qreal open) +{ + Q_D(QCandlestickSet); + + if (d->m_open == open) + return; + + d->m_open = open; + + emit d->updatedLayout(); + emit openChanged(); +} + +qreal QCandlestickSet::open() const +{ + Q_D(const QCandlestickSet); + + return d->m_open; +} + +void QCandlestickSet::setHigh(qreal high) +{ + Q_D(QCandlestickSet); + + if (d->m_high == high) + return; + + d->m_high = high; + + emit d->updatedLayout(); + emit highChanged(); +} + +qreal QCandlestickSet::high() const +{ + Q_D(const QCandlestickSet); + + return d->m_high; +} + +void QCandlestickSet::setLow(qreal low) +{ + Q_D(QCandlestickSet); + + if (d->m_low == low) + return; + + d->m_low = low; + + emit d->updatedLayout(); + emit lowChanged(); +} + +qreal QCandlestickSet::low() const +{ + Q_D(const QCandlestickSet); + + return d->m_low; +} + +void QCandlestickSet::setClose(qreal close) +{ + Q_D(QCandlestickSet); + + if (d->m_close == close) + return; + + d->m_close = close; + + emit d->updatedLayout(); + emit closeChanged(); +} + +qreal QCandlestickSet::close() const +{ + Q_D(const QCandlestickSet); + + return d->m_close; +} + +void QCandlestickSet::setBrush(const QBrush &brush) +{ + Q_D(QCandlestickSet); + + if (d->m_brush == brush) + return; + + d->m_brush = brush; + + emit d->updatedCandlestick(); + emit brushChanged(); +} + +QBrush QCandlestickSet::brush() const +{ + Q_D(const QCandlestickSet); + + return d->m_brush; +} + +void QCandlestickSet::setPen(const QPen &pen) +{ + Q_D(QCandlestickSet); + + if (d->m_pen == pen) + return; + + d->m_pen = pen; + + emit d->updatedCandlestick(); + emit penChanged(); +} + +QPen QCandlestickSet::pen() const +{ + Q_D(const QCandlestickSet); + + return d->m_pen; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +QCandlestickSetPrivate::QCandlestickSetPrivate(qreal timestamp, QCandlestickSet *parent) + : QObject(parent), + q_ptr(parent), + m_timestamp(0.0), + m_open(0.0), + m_high(0.0), + m_low(0.0), + m_close(0.0), + m_brush(QBrush(Qt::NoBrush)), + m_pen(QPen(Qt::NoPen)), + m_series(nullptr) +{ + setTimestamp(timestamp); +} + +QCandlestickSetPrivate::~QCandlestickSetPrivate() +{ +} + +bool QCandlestickSetPrivate::setTimestamp(qreal timestamp) +{ + timestamp = qMax(timestamp, 0.0); + timestamp = qRound64(timestamp); + + if (m_timestamp == timestamp) + return false; + + m_timestamp = timestamp; + + return true; +} + +#include "moc_qcandlestickset.cpp" +#include "moc_qcandlestickset_p.cpp" + +QT_CHARTS_END_NAMESPACE |