diff options
Diffstat (limited to 'src/axis/datetimeaxis/qdatetimeaxis.cpp')
-rw-r--r-- | src/axis/datetimeaxis/qdatetimeaxis.cpp | 393 |
1 files changed, 0 insertions, 393 deletions
diff --git a/src/axis/datetimeaxis/qdatetimeaxis.cpp b/src/axis/datetimeaxis/qdatetimeaxis.cpp deleted file mode 100644 index 83c09fbb..00000000 --- a/src/axis/datetimeaxis/qdatetimeaxis.cpp +++ /dev/null @@ -1,393 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 Digia Plc -** All rights reserved. -** For any questions to Digia, please use contact form at http://qt.digia.com -** -** This file is part of the Qt Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** contact form at http://qt.digia.com -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qdatetimeaxis.h" -#include "qdatetimeaxis_p.h" -#include "chartdatetimeaxisx_p.h" -#include "chartdatetimeaxisy_p.h" -#include "polarchartdatetimeaxisangular_p.h" -#include "polarchartdatetimeaxisradial_p.h" -#include "abstractdomain_p.h" -#include "qchart.h" -#include <float.h> -#include <cmath> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE -/*! - \class QDateTimeAxis - \inmodule Qt Charts - \brief The QDateTimeAxis class is used for manipulating chart's axis. - \mainclass - - The labels can be configured by setting an appropriate DateTime format. - QDateTimeAxis works correctly with dates from 4714 BCE to 287396 CE. - There are also other limitiation related to QDateTime. Please refer to QDateTime documentation. - QDateTimeAxis can be setup to show axis line with tick marks, grid lines and shades. - - Note: QDateTimeAxis is disabled on ARM architecture. - - \image api_datatime_axis.png - - QDateTimeAxis can be used with any QXYSeries. - To add a data point to the series QDateTime::toMSecsSinceEpoch() is used. - \code - QLineSeries *series = new QLineSeries; - - QDateTime xValue; - xValue.setDate(QDate(2012, 1 , 18)); - xValue.setTime(QTime(9, 34)); - qreal yValue = 12; - series->append(xValue.toMSecsSinceEpoch(), yValue); - - xValue.setDate(QDate(2013, 5 , 11)); - xValue.setTime(QTime(11, 14)); - qreal yValue = 22; - series->append(xValue.toMSecsSinceEpoch(), yValue); - \endcode - - Adding the series to the chart and setting up the QDateTimeAxis. - \code - QChartView *chartView = new QChartView; - chartView->chart()->addSeries(series); - - // ... - QDateTimeAxis *axisX = new QDateTimeAxis; - axisX->setFormat("dd-MM-yyyy h:mm"); - chartView->chart()->setAxisX(axisX, series); - \endcode -*/ - -#ifdef QDOC_QT5 -/*! - \qmltype DateTimeAxis - \instantiates QDateTimeAxis - \inqmlmodule QtCommercial.Chart - - \include doc/src/datetimeaxis.qdocinc -*/ -#else -/*! - \qmlclass DateTimeAxis QDateTimeAxis - - \include ../doc/src/datetimeaxis.qdocinc -*/ -#endif - -/*! - \property QDateTimeAxis::min - Defines the minimum value on the axis. - When setting this property the max is adjusted if necessary, to ensure that the range remains valid. -*/ -/*! - \qmlproperty datetime DateTimeAxis::min - Defines the minimum value on the axis. - When setting this property the max is adjusted if necessary, to ensure that the range remains valid. -*/ - -/*! - \property QDateTimeAxis::max - Defines the maximum value on the axis. - When setting this property the min is adjusted if necessary, to ensure that the range remains valid. -*/ -/*! - \qmlproperty datetime DateTimeAxis::max - Defines the maximum value on the axis. - When setting this property the min is adjusted if necessary, to ensure that the range remains valid. -*/ - -/*! - \fn void QDateTimeAxis::minChanged(QDateTime min) - Axis emits signal when \a min of axis has changed. -*/ -/*! - \qmlsignal DateTimeAxis::onMinChanged(datetime min) - Axis emits signal when \a min of axis has changed. -*/ - -/*! - \fn void QDateTimeAxis::maxChanged(QDateTime max) - Axis emits signal when \a max of axis has changed. -*/ -/*! - \qmlsignal DateTimeAxis::onMaxChanged(datetime max) - Axis emits signal when \a max of axis has changed. -*/ - -/*! - \fn void QDateTimeAxis::rangeChanged(QDateTime min, QDateTime max) - Axis emits signal when \a min or \a max of axis has changed. -*/ - -/*! - \property QDateTimeAxis::tickCount - The number of tick marks for the axis. -*/ - -/*! - \qmlproperty int DateTimeAxis::tickCount - The number of tick marks for the axis. -*/ - -/*! - \property QDateTimeAxis::format - The format string that is used when creating label for the axis out of a QDateTime object. - Check QDateTime documentation for information on how the string should be defined. - - \sa QChart::locale -*/ -/*! - \qmlproperty string DateTimeAxis::format - The format string that is used when creating label for the axis out of a QDateTime object. - Check QDateTime documentation for information on how the string should be defined. -*/ - -/*! - \fn void QDateTimeAxis::tickCountChanged(int tickCount) - Axis emits signal when \a tickCount number on axis have changed. -*/ -/*! - \qmlsignal DateTimeAxis::tickCountChanged(int tickCount) - Axis emits signal when \a tickCount number on axis have changed. -*/ - -/*! - \fn void QDateTimeAxis::formatChanged(QString format) - Axis emits signal when \a format of the axis has changed. -*/ -/*! - \qmlsignal DateTimeAxis::onFormatChanged(string format) - Axis emits signal when \a format of the axis has changed. -*/ - -/*! - Constructs an axis object which is a child of \a parent. -*/ -QDateTimeAxis::QDateTimeAxis(QObject *parent) : - QAbstractAxis(*new QDateTimeAxisPrivate(this), parent) -{ - -} - -/*! - \internal -*/ -QDateTimeAxis::QDateTimeAxis(QDateTimeAxisPrivate &d, QObject *parent) : QAbstractAxis(d, parent) -{ - -} - -/*! - Destroys the object. -*/ -QDateTimeAxis::~QDateTimeAxis() -{ - Q_D(QDateTimeAxis); - if (d->m_chart) - d->m_chart->removeAxis(this); -} - -void QDateTimeAxis::setMin(QDateTime min) -{ - Q_D(QDateTimeAxis); - if (min.isValid()) - d->setRange(min.toMSecsSinceEpoch(), qMax(d->m_max, qreal(min.toMSecsSinceEpoch()))); -} - -QDateTime QDateTimeAxis::min() const -{ - Q_D(const QDateTimeAxis); - return QDateTime::fromMSecsSinceEpoch(d->m_min); -} - -void QDateTimeAxis::setMax(QDateTime max) -{ - Q_D(QDateTimeAxis); - if (max.isValid()) - d->setRange(qMin(d->m_min, qreal(max.toMSecsSinceEpoch())), max.toMSecsSinceEpoch()); -} - -QDateTime QDateTimeAxis::max() const -{ - Q_D(const QDateTimeAxis); - return QDateTime::fromMSecsSinceEpoch(d->m_max); -} - -/*! - Sets range from \a min to \a max on the axis. - If min is greater than max then this function returns without making any changes. -*/ -void QDateTimeAxis::setRange(QDateTime min, QDateTime max) -{ - Q_D(QDateTimeAxis); - if (!min.isValid() || !max.isValid() || min > max) - return; - - d->setRange(min.toMSecsSinceEpoch(),max.toMSecsSinceEpoch()); -} - -void QDateTimeAxis::setFormat(QString format) -{ - Q_D(QDateTimeAxis); - if (d->m_format != format) { - d->m_format = format; - emit formatChanged(format); - } -} - -QString QDateTimeAxis::format() const -{ - Q_D(const QDateTimeAxis); - return d->m_format; -} - -/*! - Sets \a count for ticks on the axis. -*/ -void QDateTimeAxis::setTickCount(int count) -{ - Q_D(QDateTimeAxis); - if (d->m_tickCount != count && count >= 2) { - d->m_tickCount = count; - emit tickCountChanged(count); - } -} - -/*! - \fn int QDateTimeAxis::tickCount() const - Return number of ticks on the axis. -*/ -int QDateTimeAxis::tickCount() const -{ - Q_D(const QDateTimeAxis); - return d->m_tickCount; -} - -/*! - Returns the type of the axis. -*/ -QAbstractAxis::AxisType QDateTimeAxis::type() const -{ - return AxisTypeDateTime; -} - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QDateTimeAxisPrivate::QDateTimeAxisPrivate(QDateTimeAxis *q) - : QAbstractAxisPrivate(q), - m_min(0), - m_max(0), - m_tickCount(5) -{ - m_format = "dd-MM-yyyy\nh:mm"; -} - -QDateTimeAxisPrivate::~QDateTimeAxisPrivate() -{ - -} - -void QDateTimeAxisPrivate::setRange(qreal min,qreal max) -{ - Q_Q(QDateTimeAxis); - - bool changed = false; - - if (m_min != min) { - m_min = min; - changed = true; - emit q->minChanged(QDateTime::fromMSecsSinceEpoch(min)); - } - - if (m_max != max) { - m_max = max; - changed = true; - emit q->maxChanged(QDateTime::fromMSecsSinceEpoch(max)); - } - - if (changed) { - emit q->rangeChanged(QDateTime::fromMSecsSinceEpoch(min), QDateTime::fromMSecsSinceEpoch(max)); - emit rangeChanged(m_min,m_max); - } -} - - -void QDateTimeAxisPrivate::setMin(const QVariant &min) -{ - Q_Q(QDateTimeAxis); - if (min.canConvert(QVariant::DateTime)) - q->setMin(min.toDateTime()); -} - -void QDateTimeAxisPrivate::setMax(const QVariant &max) -{ - - Q_Q(QDateTimeAxis); - if (max.canConvert(QVariant::DateTime)) - q->setMax(max.toDateTime()); -} - -void QDateTimeAxisPrivate::setRange(const QVariant &min, const QVariant &max) -{ - Q_Q(QDateTimeAxis); - if (min.canConvert(QVariant::DateTime) && max.canConvert(QVariant::DateTime)) - q->setRange(min.toDateTime(), max.toDateTime()); -} - -void QDateTimeAxisPrivate::initializeGraphics(QGraphicsItem* parent) -{ - Q_Q(QDateTimeAxis); - ChartAxisElement *axis(0); - if (m_chart->chartType() == QChart::ChartTypeCartesian) { - if (orientation() == Qt::Vertical) - axis = new ChartDateTimeAxisY(q,parent); - if (orientation() == Qt::Horizontal) - axis = new ChartDateTimeAxisX(q,parent); - } - - if (m_chart->chartType() == QChart::ChartTypePolar) { - if (orientation() == Qt::Vertical) - axis = new PolarChartDateTimeAxisRadial(q, parent); - if (orientation() == Qt::Horizontal) - axis = new PolarChartDateTimeAxisAngular(q, parent); - } - - m_item.reset(axis); - QAbstractAxisPrivate::initializeGraphics(parent); -} - -void QDateTimeAxisPrivate::initializeDomain(AbstractDomain *domain) -{ - if (m_max == m_min) { - if (orientation() == Qt::Vertical) - setRange(domain->minY(), domain->maxY()); - else - setRange(domain->minX(), domain->maxX()); - } else { - if (orientation() == Qt::Vertical) - domain->setRangeY(m_min, m_max); - else - domain->setRangeX(m_min, m_max); - } -} - -#include "moc_qdatetimeaxis.cpp" -#include "moc_qdatetimeaxis_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE |