summaryrefslogtreecommitdiffstats
path: root/src/charts/candlestickchart/qcandlestickset.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/charts/candlestickchart/qcandlestickset.cpp')
-rw-r--r--src/charts/candlestickchart/qcandlestickset.cpp487
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