diff options
Diffstat (limited to 'src/chartsqml2/declarativecategoryaxis.cpp')
-rw-r--r-- | src/chartsqml2/declarativecategoryaxis.cpp | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/chartsqml2/declarativecategoryaxis.cpp b/src/chartsqml2/declarativecategoryaxis.cpp new file mode 100644 index 00000000..423aab67 --- /dev/null +++ b/src/chartsqml2/declarativecategoryaxis.cpp @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** 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 "declarativecategoryaxis.h" +#include <QDebug> + +QT_CHARTS_BEGIN_NAMESPACE + +/*! + \qmltype CategoryRange + \inqmlmodule QtCharts + + \brief With CategoryRange you can define a range used by a CategoryAxis. + \sa CategoryAxis +*/ + +DeclarativeCategoryRange::DeclarativeCategoryRange(QObject *parent) : + QObject(parent), + m_endValue(0), + m_label(QString()) +{ +} + +DeclarativeCategoryAxis::DeclarativeCategoryAxis(QObject *parent) : + QCategoryAxis(parent) +{ +} + +void DeclarativeCategoryAxis::classBegin() +{ +} + +void DeclarativeCategoryAxis::componentComplete() +{ + QList<QPair<QString, qreal> > ranges; + foreach (QObject *child, children()) { + if (qobject_cast<DeclarativeCategoryRange *>(child)) { + DeclarativeCategoryRange *range = qobject_cast<DeclarativeCategoryRange *>(child); + ranges.append(QPair<QString, qreal>(range->label(), range->endValue())); + } + } + + // Sort and append the range objects according to end value + qSort(ranges.begin(), ranges.end(), endValueLessThan); + for (int i(0); i < ranges.count(); i++) + append(ranges.at(i).first, ranges.at(i).second); +} + +bool DeclarativeCategoryAxis::endValueLessThan(const QPair<QString, qreal> &value1, const QPair<QString, qreal> &value2) +{ + return value1.second < value2.second; +} + +QQmlListProperty<QObject> DeclarativeCategoryAxis::axisChildren() +{ + return QQmlListProperty<QObject>(this, 0, &DeclarativeCategoryAxis::appendAxisChildren ,0,0,0); +} + +void DeclarativeCategoryAxis::append(const QString &label, qreal categoryEndValue) +{ + QCategoryAxis::append(label, categoryEndValue); +} + +void DeclarativeCategoryAxis::remove(const QString &label) +{ + QCategoryAxis::remove(label); +} + +void DeclarativeCategoryAxis::replace(const QString &oldLabel, const QString &newLabel) +{ + QCategoryAxis::replaceLabel(oldLabel, newLabel); +} + +void DeclarativeCategoryAxis::appendAxisChildren(QQmlListProperty<QObject> *list, QObject *element) +{ + // Empty implementation; the children are parsed in componentComplete instead + Q_UNUSED(list) + Q_UNUSED(element) +} + +#include "moc_declarativecategoryaxis.cpp" + +QT_CHARTS_END_NAMESPACE |