diff --git a/plugins/declarative/declarativecategoryaxis.cpp b/plugins/declarative/declarativecategoryaxis.cpp new file mode 100644 index 0000000..b898204 --- /dev/null +++ b/plugins/declarative/declarativecategoryaxis.cpp @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2012 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 Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial 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 + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +/*! + \qmlclass CategoryRange + \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() +{ + foreach(QObject *child, children()) { + if (qobject_cast(child)) { + DeclarativeCategoryRange *range = qobject_cast(child); + append(range->label(), range->endValue()); + } + } +} + +QDeclarativeListProperty DeclarativeCategoryAxis::axisChildren() +{ + return QDeclarativeListProperty(this, 0, &DeclarativeCategoryAxis::appendAxisChildren); +} + +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(QDeclarativeListProperty *list, QObject *element) +{ + // Empty implementation; the children are parsed in componentComplete instead + Q_UNUSED(list) + Q_UNUSED(element) +} + +#include "moc_declarativecategoryaxis.cpp" + +QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/declarativecategoryaxis.h b/plugins/declarative/declarativecategoryaxis.h new file mode 100644 index 0000000..732689d --- /dev/null +++ b/plugins/declarative/declarativecategoryaxis.h @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2012 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 Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial 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$ +** +****************************************************************************/ + +#ifndef DECLARATIVECATEGORYAXIS_H +#define DECLARATIVECATEGORYAXIS_H + +#include "qcategoryaxis.h" +#include +#include + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +class DeclarativeCategoryRange : public QObject +{ + Q_OBJECT + Q_PROPERTY(qreal endValue READ endValue WRITE setEndValue) + Q_PROPERTY(QString label READ label WRITE setLabel) + +public: + explicit DeclarativeCategoryRange(QObject *parent = 0); + qreal endValue() { return m_endValue; } + void setEndValue(qreal endValue) { m_endValue = endValue; } + QString label() { return m_label; } + void setLabel(QString label) { m_label = label; } + +private: + qreal m_endValue; + QString m_label; +}; + +class DeclarativeCategoryAxis : public QCategoryAxis, public QDeclarativeParserStatus +{ + Q_OBJECT + Q_PROPERTY(QDeclarativeListProperty axisChildren READ axisChildren) + Q_CLASSINFO("DefaultProperty", "axisChildren") + +public: + explicit DeclarativeCategoryAxis(QObject *parent = 0); + QDeclarativeListProperty axisChildren(); + +public: // from QDeclarativeParserStatus + void classBegin(); + void componentComplete(); + +public Q_SLOTS: + Q_INVOKABLE void append(const QString &label, qreal categoryEndValue); + Q_INVOKABLE void remove(const QString &label); + Q_INVOKABLE void replace(const QString& oldLabel, const QString& newLabel); + static void appendAxisChildren(QDeclarativeListProperty *list, QObject *element); +}; + +QTCOMMERCIALCHART_END_NAMESPACE + +#endif // DECLARATIVECATEGORYAXIS_H