diff options
author | Tero Ahola <tero.ahola@digia.com> | 2012-11-27 10:18:38 +0200 |
---|---|---|
committer | Tero Ahola <tero.ahola@digia.com> | 2012-11-27 10:18:38 +0200 |
commit | 6bd1dc9d15e0c9109240d54afda81698c132fbad (patch) | |
tree | 2ef9007e546245a82c9a1ae17e6e1868f6918000 /plugins | |
parent | 8468c10170a2fb9d07a0ccb668e3359a1929fc16 (diff) |
Added axisXTop and axisYRight properties to QML series APIs
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/declarative/declarative.pro | 6 | ||||
-rw-r--r-- | plugins/declarative/declarativeareaseries.cpp | 7 | ||||
-rw-r--r-- | plugins/declarative/declarativeareaseries.h | 22 | ||||
-rw-r--r-- | plugins/declarative/declarativeaxes.cpp | 61 | ||||
-rw-r--r-- | plugins/declarative/declarativeaxes.h | 72 | ||||
-rw-r--r-- | plugins/declarative/declarativebarseries.cpp | 47 | ||||
-rw-r--r-- | plugins/declarative/declarativebarseries.h | 127 | ||||
-rw-r--r-- | plugins/declarative/declarativechart.cpp | 303 | ||||
-rw-r--r-- | plugins/declarative/declarativechart.h | 18 | ||||
-rw-r--r-- | plugins/declarative/declarativelineseries.cpp | 7 | ||||
-rw-r--r-- | plugins/declarative/declarativelineseries.h | 22 | ||||
-rw-r--r-- | plugins/declarative/declarativescatterseries.cpp | 7 | ||||
-rw-r--r-- | plugins/declarative/declarativescatterseries.h | 22 | ||||
-rw-r--r-- | plugins/declarative/declarativesplineseries.cpp | 7 | ||||
-rw-r--r-- | plugins/declarative/declarativesplineseries.h | 20 | ||||
-rw-r--r-- | plugins/declarative/plugin.cpp | 15 |
16 files changed, 537 insertions, 226 deletions
diff --git a/plugins/declarative/declarative.pro b/plugins/declarative/declarative.pro index 68fd278b..7641b2b5 100644 --- a/plugins/declarative/declarative.pro +++ b/plugins/declarative/declarative.pro @@ -24,7 +24,8 @@ SOURCES += \ declarativepieseries.cpp \ declarativebarseries.cpp \ declarativecategoryaxis.cpp \ - declarativemargins.cpp + declarativemargins.cpp \ + declarativeaxes.cpp HEADERS += \ declarativechart.h \ @@ -37,7 +38,8 @@ HEADERS += \ declarativepieseries.h \ declarativebarseries.h \ declarativecategoryaxis.h \ - declarativemargins.h + declarativemargins.h \ + declarativeaxes.h TARGETPATH = QtCommercial/Chart target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH diff --git a/plugins/declarative/declarativeareaseries.cpp b/plugins/declarative/declarativeareaseries.cpp index 1ffdb61b..d5831912 100644 --- a/plugins/declarative/declarativeareaseries.cpp +++ b/plugins/declarative/declarativeareaseries.cpp @@ -25,9 +25,12 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE DeclarativeAreaSeries::DeclarativeAreaSeries(QObject *parent) : QAreaSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(new DeclarativeAxes(this)) { + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativeAreaSeries::setUpperSeries(DeclarativeLineSeries *series) diff --git a/plugins/declarative/declarativeareaseries.h b/plugins/declarative/declarativeareaseries.h index 79fc755a..f75ae04e 100644 --- a/plugins/declarative/declarativeareaseries.h +++ b/plugins/declarative/declarativeareaseries.h @@ -22,6 +22,7 @@ #define DECLARATIVEAREASERIES_H #include "qareaseries.h" +#include "declarativeaxes.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE class DeclarativeLineSeries; @@ -33,6 +34,8 @@ class DeclarativeAreaSeries : public QAreaSeries Q_PROPERTY(DeclarativeLineSeries *lowerSeries READ lowerSeries WRITE setLowerSeries) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(qreal borderWidth READ borderWidth WRITE setBorderWidth NOTIFY borderWidthChanged REVISION 1) public: @@ -41,10 +44,14 @@ public: DeclarativeLineSeries *upperSeries() const; void setLowerSeries(DeclarativeLineSeries *series); DeclarativeLineSeries *lowerSeries() const; - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } qreal borderWidth() const; void setBorderWidth(qreal borderWidth); @@ -52,10 +59,11 @@ Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); Q_REVISION(1) void borderWidthChanged(qreal width); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/declarativeaxes.cpp b/plugins/declarative/declarativeaxes.cpp new file mode 100644 index 00000000..dd2b47a6 --- /dev/null +++ b/plugins/declarative/declarativeaxes.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** 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 "declarativeaxes.h" +#include "qabstractaxis.h" + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +DeclarativeAxes::DeclarativeAxes(QObject *parent) : + QObject(parent), + m_axisX(0), + m_axisY(0), + m_axisXTop(0), + m_axisYRight(0) +{ +} + +void DeclarativeAxes::setAxisX(QAbstractAxis *axis) +{ + m_axisX = axis; + emit axisXChanged(axis); +} + +void DeclarativeAxes::setAxisY(QAbstractAxis *axis) +{ + m_axisY = axis; + emit axisYChanged(axis); +} + +void DeclarativeAxes::setAxisXTop(QAbstractAxis *axis) +{ + m_axisXTop = axis; + emit axisXTopChanged(axis); +} + +void DeclarativeAxes::setAxisYRight(QAbstractAxis *axis) +{ + m_axisYRight = axis; + emit axisYRightChanged(axis); +} + +#include "moc_declarativeaxes.cpp" + +QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/declarativeaxes.h b/plugins/declarative/declarativeaxes.h new file mode 100644 index 00000000..f3fc5585 --- /dev/null +++ b/plugins/declarative/declarativeaxes.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** 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 DECLARATIVEAXES_H +#define DECLARATIVEAXES_H + +#include "qchartglobal.h" +#include <QObject> + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +class QAbstractAxis; + +class DeclarativeAxes : public QObject +{ + Q_OBJECT + Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged) + Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged) + +public: + explicit DeclarativeAxes(QObject *parent = 0); + + QAbstractAxis *axisX() { return m_axisX; } + void setAxisX(QAbstractAxis *axis); + QAbstractAxis *axisY() { return m_axisY; } + void setAxisY(QAbstractAxis *axis); + QAbstractAxis *axisXTop() { return m_axisXTop; } + void setAxisXTop(QAbstractAxis *axis); + QAbstractAxis *axisYRight() { return m_axisYRight; } + void setAxisYRight(QAbstractAxis *axis); + +public: + void emitAxisXChanged() { emit axisXChanged(m_axisX); } + void emitAxisYChanged() { emit axisYChanged(m_axisY); } + void emitAxisXTopChanged() { emit axisXTopChanged(m_axisXTop); } + void emitAxisYRightChanged() { emit axisYRightChanged(m_axisYRight); } + +signals: + void axisXChanged(QAbstractAxis *axis); + void axisYChanged(QAbstractAxis *axis); + void axisXTopChanged(QAbstractAxis *axis); + void axisYRightChanged(QAbstractAxis *axis); + +private: + QAbstractAxis *m_axisX; + QAbstractAxis *m_axisY; + QAbstractAxis *m_axisXTop; + QAbstractAxis *m_axisYRight; +}; + +QTCOMMERCIALCHART_END_NAMESPACE + +#endif // DECLARATIVEAXES_H diff --git a/plugins/declarative/declarativebarseries.cpp b/plugins/declarative/declarativebarseries.cpp index e3072797..ef4e67f3 100644 --- a/plugins/declarative/declarativebarseries.cpp +++ b/plugins/declarative/declarativebarseries.cpp @@ -76,9 +76,12 @@ void DeclarativeBarSet::setValues(QVariantList values) // Declarative bar series ====================================================================================== DeclarativeBarSeries::DeclarativeBarSeries(QDeclarativeItem *parent) : QBarSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(new DeclarativeAxes(this)) { + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativeBarSeries::classBegin() @@ -135,9 +138,13 @@ DeclarativeBarSet *DeclarativeBarSeries::insert(int index, QString label, QVaria // Declarative stacked bar series ============================================================================== DeclarativeStackedBarSeries::DeclarativeStackedBarSeries(QDeclarativeItem *parent) : QStackedBarSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(0) { + m_axes = new DeclarativeAxes(this); + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativeStackedBarSeries::classBegin() @@ -195,9 +202,13 @@ DeclarativeBarSet *DeclarativeStackedBarSeries::insert(int index, QString label, // Declarative percent bar series ============================================================================== DeclarativePercentBarSeries::DeclarativePercentBarSeries(QDeclarativeItem *parent) : QPercentBarSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(0) { + m_axes = new DeclarativeAxes(this); + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativePercentBarSeries::classBegin() @@ -254,9 +265,13 @@ DeclarativeBarSet *DeclarativePercentBarSeries::insert(int index, QString label, // Declarative horizontal bar series =========================================================================== DeclarativeHorizontalBarSeries::DeclarativeHorizontalBarSeries(QDeclarativeItem *parent) : QHorizontalBarSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(0) { + m_axes = new DeclarativeAxes(this); + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativeHorizontalBarSeries::classBegin() @@ -313,9 +328,13 @@ DeclarativeBarSet *DeclarativeHorizontalBarSeries::insert(int index, QString lab // Declarative horizontal stacked bar series =================================================================== DeclarativeHorizontalStackedBarSeries::DeclarativeHorizontalStackedBarSeries(QDeclarativeItem *parent) : QHorizontalStackedBarSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(0) { + m_axes = new DeclarativeAxes(this); + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativeHorizontalStackedBarSeries::classBegin() @@ -372,9 +391,13 @@ DeclarativeBarSet *DeclarativeHorizontalStackedBarSeries::insert(int index, QStr // Declarative horizontal percent bar series =================================================================== DeclarativeHorizontalPercentBarSeries::DeclarativeHorizontalPercentBarSeries(QDeclarativeItem *parent) : QHorizontalPercentBarSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(0) { + m_axes = new DeclarativeAxes(this); + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); } void DeclarativeHorizontalPercentBarSeries::classBegin() diff --git a/plugins/declarative/declarativebarseries.h b/plugins/declarative/declarativebarseries.h index 5274233c..4fdac8ec 100644 --- a/plugins/declarative/declarativebarseries.h +++ b/plugins/declarative/declarativebarseries.h @@ -28,6 +28,7 @@ #include "qhorizontalstackedbarseries.h" #include "qhorizontalpercentbarseries.h" #include "qbarset.h" +#include "declarativeaxes.h" #include <QtDeclarative/QDeclarativeItem> #include <QtDeclarative/QDeclarativeParserStatus> @@ -69,15 +70,21 @@ class DeclarativeBarSeries : public QBarSeries, public QDeclarativeParserStatus Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren) Q_CLASSINFO("DefaultProperty", "seriesChildren") public: explicit DeclarativeBarSeries(QDeclarativeItem *parent = 0); - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } QDeclarativeListProperty<QObject> seriesChildren(); public: @@ -94,13 +101,14 @@ public: // from QDeclarativeParserStatus Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; class DeclarativeStackedBarSeries : public QStackedBarSeries, public QDeclarativeParserStatus @@ -109,15 +117,21 @@ class DeclarativeStackedBarSeries : public QStackedBarSeries, public QDeclarativ Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren) Q_CLASSINFO("DefaultProperty", "seriesChildren") public: explicit DeclarativeStackedBarSeries(QDeclarativeItem *parent = 0); - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } QDeclarativeListProperty<QObject> seriesChildren(); public: @@ -134,13 +148,14 @@ public: // from QDeclarativeParserStatus Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; class DeclarativePercentBarSeries : public QPercentBarSeries, public QDeclarativeParserStatus @@ -149,15 +164,21 @@ class DeclarativePercentBarSeries : public QPercentBarSeries, public QDeclarativ Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren) Q_CLASSINFO("DefaultProperty", "seriesChildren") public: explicit DeclarativePercentBarSeries(QDeclarativeItem *parent = 0); - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } QDeclarativeListProperty<QObject> seriesChildren(); public: @@ -174,13 +195,14 @@ public: // from QDeclarativeParserStatus Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; class DeclarativeHorizontalBarSeries : public QHorizontalBarSeries, public QDeclarativeParserStatus @@ -189,15 +211,21 @@ class DeclarativeHorizontalBarSeries : public QHorizontalBarSeries, public QDecl Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren) Q_CLASSINFO("DefaultProperty", "seriesChildren") public: explicit DeclarativeHorizontalBarSeries(QDeclarativeItem *parent = 0); - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } QDeclarativeListProperty<QObject> seriesChildren(); public: @@ -214,13 +242,14 @@ public: // from QDeclarativeParserStatus Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; class DeclarativeHorizontalStackedBarSeries : public QHorizontalStackedBarSeries, public QDeclarativeParserStatus @@ -229,15 +258,21 @@ class DeclarativeHorizontalStackedBarSeries : public QHorizontalStackedBarSeries Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren) Q_CLASSINFO("DefaultProperty", "seriesChildren") public: explicit DeclarativeHorizontalStackedBarSeries(QDeclarativeItem *parent = 0); - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } QDeclarativeListProperty<QObject> seriesChildren(); public: @@ -254,13 +289,14 @@ public: // from QDeclarativeParserStatus Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; class DeclarativeHorizontalPercentBarSeries : public QHorizontalPercentBarSeries, public QDeclarativeParserStatus @@ -269,15 +305,21 @@ class DeclarativeHorizontalPercentBarSeries : public QHorizontalPercentBarSeries Q_INTERFACES(QDeclarativeParserStatus) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(QDeclarativeListProperty<QObject> seriesChildren READ seriesChildren) Q_CLASSINFO("DefaultProperty", "seriesChildren") public: explicit DeclarativeHorizontalPercentBarSeries(QDeclarativeItem *parent = 0); - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } QDeclarativeListProperty<QObject> seriesChildren(); public: @@ -294,13 +336,14 @@ public: // from QDeclarativeParserStatus Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendSeriesChildren(QDeclarativeListProperty<QObject> *list, QObject *element); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/declarativechart.cpp b/plugins/declarative/declarativechart.cpp index 93d81586..e4635386 100644 --- a/plugins/declarative/declarativechart.cpp +++ b/plugins/declarative/declarativechart.cpp @@ -33,6 +33,7 @@ #include "qabstractseries_p.h" #include "declarativemargins.h" #include "chartdataset_p.h" +#include "declarativeaxes.h" #include "qchart_p.h" #ifndef QT_ON_ARM @@ -286,94 +287,71 @@ void DeclarativeChart::componentComplete() QAbstractSeries *series = qobject_cast<QAbstractSeries *>(child); m_chart->addSeries(series); - // Set optional user defined axes for the series and connect axis related signals - if (qobject_cast<DeclarativeLineSeries *>(child)) { - DeclarativeLineSeries *s = qobject_cast<DeclarativeLineSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeSplineSeries *>(child)) { - DeclarativeSplineSeries *s = qobject_cast<DeclarativeSplineSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeScatterSeries *>(child)) { - DeclarativeScatterSeries *s = qobject_cast<DeclarativeScatterSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeAreaSeries *>(child)) { - DeclarativeAreaSeries *s = qobject_cast<DeclarativeAreaSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeBarSeries *>(child)) { - DeclarativeBarSeries *s = qobject_cast<DeclarativeBarSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeStackedBarSeries *>(child)) { - DeclarativeStackedBarSeries *s = qobject_cast<DeclarativeStackedBarSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativePercentBarSeries *>(child)) { - DeclarativePercentBarSeries *s = qobject_cast<DeclarativePercentBarSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeHorizontalBarSeries *>(child)) { - DeclarativeHorizontalBarSeries *s = qobject_cast<DeclarativeHorizontalBarSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeHorizontalStackedBarSeries *>(child)) { - DeclarativeHorizontalStackedBarSeries *s = qobject_cast<DeclarativeHorizontalStackedBarSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); - } else if (qobject_cast<DeclarativeHorizontalPercentBarSeries *>(child)) { - DeclarativeHorizontalPercentBarSeries *s = qobject_cast<DeclarativeHorizontalPercentBarSeries *>(child); - connect(s, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); - connect(s, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); - setAxisX(s->axisX(), s); - setAxisY(s->axisY(), s); + // Connect to axis changed signals (unless this is a pie series) + if (!qobject_cast<DeclarativePieSeries *>(series)) { + connect(series, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); + connect(series, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); + connect(series, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); + connect(series, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SLOT(handleAxisYRightSet(QAbstractAxis*))); } + + initializeAxes(series); } } - // Create the missing axes for the series that cannot be painted without axes - foreach (QAbstractSeries *chartSeries, m_chart->series()) - createDefaultAxes(chartSeries); - QDeclarativeItem::componentComplete(); } void DeclarativeChart::handleAxisXSet(QAbstractAxis *axis) { -// qDebug() << "DeclarativeChart::handleAxisXSet" << sender() << axis; - if (axis && qobject_cast<QAbstractSeries *>(sender())) - m_chart->setAxisX(axis, qobject_cast<QAbstractSeries *>(sender())); - else + QAbstractSeries *s = qobject_cast<QAbstractSeries *>(sender()); + if (axis && s) { + if (!m_chart->axes(Qt::Horizontal).contains(axis)) + m_chart->addAxis(axis, Qt::AlignBottom); + if (!s->attachedAxes().contains(axis)) + s->attachAxis(axis); + } else { qWarning() << "Trying to set axisX to null."; + } +} + +void DeclarativeChart::handleAxisXTopSet(QAbstractAxis *axis) +{ + QAbstractSeries *s = qobject_cast<QAbstractSeries *>(sender()); + if (axis && s) { + if (!m_chart->axes(Qt::Horizontal).contains(axis)) + m_chart->addAxis(axis, Qt::AlignTop); + if (!s->attachedAxes().contains(axis)) + s->attachAxis(axis); + } else { + qWarning() << "Trying to set axisXTop to null."; + } } void DeclarativeChart::handleAxisYSet(QAbstractAxis *axis) { -// qDebug() << "DeclarativeChart::handleAxisYSet" << sender() << axis; - if (axis && qobject_cast<QAbstractSeries *>(sender())) - m_chart->setAxisY(axis, qobject_cast<QAbstractSeries *>(sender())); - else + QAbstractSeries *s = qobject_cast<QAbstractSeries *>(sender()); + if (axis && s) { + if (!m_chart->axes(Qt::Vertical).contains(axis)) + m_chart->addAxis(axis, Qt::AlignLeft); + if (!s->attachedAxes().contains(axis)) + s->attachAxis(axis); + } else { qWarning() << "Trying to set axisY to null."; + } +} + +void DeclarativeChart::handleAxisYRightSet(QAbstractAxis *axis) +{ + QAbstractSeries *s = qobject_cast<QAbstractSeries *>(sender()); + if (axis && s) { + if (!m_chart->axes(Qt::Vertical).contains(axis)) + m_chart->addAxis(axis, Qt::AlignRight); + if (!s->attachedAxes().contains(axis)) + s->attachAxis(axis); + } else { + qWarning() << "Trying to set axisYRight to null."; + } } void DeclarativeChart::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) @@ -435,12 +413,18 @@ QString DeclarativeChart::title() QAbstractAxis *DeclarativeChart::axisX(QAbstractSeries *series) { - return m_chart->axisX(series); + QList<QAbstractAxis *> axes = m_chart->axes(Qt::Horizontal, series); + if (axes.count()) + return axes[0]; + return 0; } QAbstractAxis *DeclarativeChart::axisY(QAbstractSeries *series) { - return m_chart->axisY(series); + QList<QAbstractAxis *> axes = m_chart->axes(Qt::Vertical, series); + if (axes.count()) + return axes[0]; + return 0; } QLegend *DeclarativeChart::legend() @@ -557,6 +541,40 @@ void DeclarativeChart::scrollDown(qreal pixels) m_chart->scroll(0, -pixels); } +QDeclarativeListProperty<QAbstractAxis> DeclarativeChart::axes() +{ + return QDeclarativeListProperty<QAbstractAxis>(this, 0, + &DeclarativeChart::axesAppendFunc, + &DeclarativeChart::axesCountFunc, + &DeclarativeChart::axesAtFunc); +} + +void DeclarativeChart::axesAppendFunc(QDeclarativeListProperty<QAbstractAxis> *list, QAbstractAxis *element) +{ + // Empty implementation + Q_UNUSED(list); + Q_UNUSED(element); +} + +int DeclarativeChart::axesCountFunc(QDeclarativeListProperty<QAbstractAxis> *list) +{ + if (qobject_cast<DeclarativeChart *>(list->object)) { + DeclarativeChart *chart = qobject_cast<DeclarativeChart *>(list->object); + return chart->m_chart->axes(Qt::Horizontal | Qt::Vertical, chart->m_chart->series()[0]).count(); + } + return 0; +} + +QAbstractAxis *DeclarativeChart::axesAtFunc(QDeclarativeListProperty<QAbstractAxis> *list, int index) +{ + if (qobject_cast<DeclarativeChart *>(list->object)) { + DeclarativeChart *chart = qobject_cast<DeclarativeChart *>(list->object); + QList<QAbstractAxis *> axes = chart->m_chart->axes(Qt::Horizontal | Qt::Vertical, chart->m_chart->series()[0]); + return axes.at(index); + } + return 0; +} + QAbstractSeries *DeclarativeChart::series(int index) { if (index < m_chart->series().count()) { @@ -625,13 +643,24 @@ QAbstractSeries *DeclarativeChart::createSeries(DeclarativeChart::SeriesType typ } if (series) { + // Connect to axis changed signals (unless this is a pie series) + if (!qobject_cast<DeclarativePieSeries *>(series)) { + connect(series, SIGNAL(axisXChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); + connect(series, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SLOT(handleAxisXSet(QAbstractAxis*))); + connect(series, SIGNAL(axisYChanged(QAbstractAxis*)), this, SLOT(handleAxisYSet(QAbstractAxis*))); + connect(series, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SLOT(handleAxisYRightSet(QAbstractAxis*))); + } + series->setName(name); m_chart->addSeries(series); - // Set possible user defined axes - setAxisX(axisX, series); - setAxisY(axisY, series); - // Then create the missing axes - createDefaultAxes(series); + + if (axisX) + setAxisX(axisX, series); + if (axisY) + setAxisY(axisY, series); + + if (series->attachedAxes().count() < 2) + initializeAxes(series); } return series; @@ -662,67 +691,77 @@ void DeclarativeChart::createDefaultAxes() qWarning() << "ChartView.createDefaultAxes() is deprecated. Axes are created automatically."; } -void DeclarativeChart::createDefaultAxes(QAbstractSeries *series) +QAbstractAxis *DeclarativeChart::defaultAxis(Qt::Orientation orientation, QAbstractSeries *series) { - foreach (QAbstractSeries *s, m_chart->series()) { - // If there is already an x axis of the correct type, re-use it - if (!m_chart->axisX(series) && s != series && m_chart->axisX(s) - && m_chart->axisX(s)->type() == series->d_ptr->defaultAxisType(Qt::Horizontal)) - m_chart->setAxisX(m_chart->axisX(s), series); - - // If there is already a y axis of the correct type, re-use it - if (!m_chart->axisY(series) && s != series && m_chart->axisY(s) - && m_chart->axisY(s)->type() == series->d_ptr->defaultAxisType(Qt::Vertical)) - m_chart->setAxisY(m_chart->axisY(s), series); + if (!series) { + qWarning() << "No axis type defined for null series"; + return 0; } - // If no x axis of correct type was found, create a new x axis based of default axis type - if (!m_chart->axisX(series)) { - switch (series->d_ptr->defaultAxisType(Qt::Horizontal)) { - case QAbstractAxis::AxisTypeValue: - m_chart->setAxisX(new QValueAxis(this), series); - break; - case QAbstractAxis::AxisTypeBarCategory: - m_chart->setAxisX(new QBarCategoryAxis(this), series); - break; - case QAbstractAxis::AxisTypeCategory: - m_chart->setAxisX(new QCategoryAxis(this), series); - break; -#ifndef QT_ON_ARM - case QAbstractAxis::AxisTypeDateTime: - m_chart->setAxisX(new QDateTimeAxis(this), series); - break; -#endif - default: - // Do nothing, assume AxisTypeNoAxis - break; - } + foreach (QAbstractAxis *existingAxis, m_chart->axes(orientation)) { + if (existingAxis->type() == series->d_ptr->defaultAxisType(orientation)) + return existingAxis; } - // If no y axis of correct type was found, create a new y axis based of default axis type - if (!m_chart->axisY(series)) { - switch (series->d_ptr->defaultAxisType(Qt::Vertical)) { - case QAbstractAxis::AxisTypeValue: - m_chart->setAxisY(new QValueAxis(this), series); - break; - case QAbstractAxis::AxisTypeBarCategory: - m_chart->setAxisY(new QBarCategoryAxis(this), series); - break; - case QAbstractAxis::AxisTypeCategory: - m_chart->setAxisY(new QCategoryAxis(this), series); - break; + switch (series->d_ptr->defaultAxisType(orientation)) { + case QAbstractAxis::AxisTypeValue: + return new QValueAxis(this); + case QAbstractAxis::AxisTypeBarCategory: + return new QBarCategoryAxis(this); + case QAbstractAxis::AxisTypeCategory: + return new QCategoryAxis(this); #ifndef QT_ON_ARM - case QAbstractAxis::AxisTypeDateTime: - m_chart->setAxisY(new QDateTimeAxis(this), series); - break; + case QAbstractAxis::AxisTypeDateTime: + return new QDateTimeAxis(this); #endif - default: - // Do nothing, assume AxisTypeNoAxis - break; - } + default: + // assume AxisTypeNoAxis + return 0; } +} - //qDebug() << "axis for series" << series << "x:" << m_chart->axisX(series) << "y:" << m_chart->axisY(series); +void DeclarativeChart::initializeAxes(QAbstractSeries *series) +{ + if (qobject_cast<DeclarativeLineSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeLineSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeScatterSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeScatterSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeSplineSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeSplineSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeAreaSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeAreaSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeBarSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeBarSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeStackedBarSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeStackedBarSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativePercentBarSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativePercentBarSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeHorizontalBarSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeHorizontalBarSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeHorizontalStackedBarSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeHorizontalStackedBarSeries *>(series)->m_axes); + else if (qobject_cast<DeclarativeHorizontalPercentBarSeries *>(series)) + doInitializeAxes(series, qobject_cast<DeclarativeHorizontalPercentBarSeries *>(series)->m_axes); + // else: do nothing +} + +void DeclarativeChart::doInitializeAxes(QAbstractSeries *series, DeclarativeAxes *axes) +{ + // Initialize axis X + if (axes->axisX()) + axes->emitAxisXChanged(); + else if (axes->axisXTop()) + axes->emitAxisXTopChanged(); + else + axes->setAxisX(defaultAxis(Qt::Horizontal, series)); + + // Initialize axis Y + if (axes->axisY()) + axes->emitAxisYChanged(); + else if (axes->axisYRight()) + axes->emitAxisYRightChanged(); + else + axes->setAxisY(defaultAxis(Qt::Vertical, series)); } #include "moc_declarativechart.cpp" diff --git a/plugins/declarative/declarativechart.h b/plugins/declarative/declarativechart.h index 8c2aa300..52ba2eff 100644 --- a/plugins/declarative/declarativechart.h +++ b/plugins/declarative/declarativechart.h @@ -29,7 +29,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE class DeclarativeMargins; -class AbstractDomain; +class Domain; +class DeclarativeAxes; class DeclarativeChart : public QDeclarativeItem { @@ -50,6 +51,7 @@ class DeclarativeChart : public QDeclarativeItem Q_PROPERTY(DeclarativeMargins *minimumMargins READ minimumMargins NOTIFY minimumMarginsChanged REVISION 1) Q_PROPERTY(DeclarativeMargins *margins READ margins NOTIFY marginsChanged REVISION 2) Q_PROPERTY(QRectF plotArea READ plotArea NOTIFY plotAreaChanged REVISION 1) + Q_PROPERTY(QDeclarativeListProperty<QAbstractAxis> axes READ axes REVISION 2) Q_ENUMS(Animation) Q_ENUMS(Theme) Q_ENUMS(SeriesType) @@ -117,13 +119,21 @@ public: qreal bottomMargin(); qreal leftMargin(); qreal rightMargin(); - void createDefaultAxes(QAbstractSeries *series); + QAbstractAxis *defaultAxis(Qt::Orientation orientation, QAbstractSeries *series); + void initializeAxes(QAbstractSeries *series); + void doInitializeAxes(QAbstractSeries *series, DeclarativeAxes *axes); //TODO this is deprecated: DeclarativeMargins *minimumMargins() { return m_margins; } Q_REVISION(2) DeclarativeMargins *margins() { return m_margins; } QRectF plotArea() { return m_chart->plotArea(); } + // Axis list property methods + QDeclarativeListProperty<QAbstractAxis> axes(); + static void axesAppendFunc(QDeclarativeListProperty<QAbstractAxis> *list, QAbstractAxis *element); + static int axesCountFunc(QDeclarativeListProperty<QAbstractAxis> *list); + static QAbstractAxis *axesAtFunc(QDeclarativeListProperty<QAbstractAxis> *list, int index); + public: Q_INVOKABLE QAbstractSeries *series(int index); Q_INVOKABLE QAbstractSeries *series(QString seriesName); @@ -153,10 +163,12 @@ Q_SIGNALS: void seriesAdded(QAbstractSeries *series); void seriesRemoved(QAbstractSeries *series); -public Q_SLOTS: +private Q_SLOTS: void changeMinimumMargins(int top, int bottom, int left, int right); void handleAxisXSet(QAbstractAxis *axis); void handleAxisYSet(QAbstractAxis *axis); + void handleAxisXTopSet(QAbstractAxis *axis); + void handleAxisYRightSet(QAbstractAxis *axis); void handleSeriesAdded(QAbstractSeries *series); private: diff --git a/plugins/declarative/declarativelineseries.cpp b/plugins/declarative/declarativelineseries.cpp index 30f4ce13..95bedb92 100644 --- a/plugins/declarative/declarativelineseries.cpp +++ b/plugins/declarative/declarativelineseries.cpp @@ -24,9 +24,12 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE DeclarativeLineSeries::DeclarativeLineSeries(QObject *parent) : QLineSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(new DeclarativeAxes(this)) { + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); connect(this, SIGNAL(pointAdded(int)), this, SLOT(handleCountChanged(int))); connect(this, SIGNAL(pointRemoved(int)), this, SLOT(handleCountChanged(int))); } diff --git a/plugins/declarative/declarativelineseries.h b/plugins/declarative/declarativelineseries.h index 655d89df..cefa6b8b 100644 --- a/plugins/declarative/declarativelineseries.h +++ b/plugins/declarative/declarativelineseries.h @@ -23,6 +23,7 @@ #include "qlineseries.h" #include "declarativexyseries.h" +#include "declarativeaxes.h" #include <QtDeclarative/QDeclarativeListProperty> #include <QtDeclarative/QDeclarativeParserStatus> @@ -35,6 +36,8 @@ class DeclarativeLineSeries : public QLineSeries, public DeclarativeXySeries, pu Q_PROPERTY(int count READ count NOTIFY countChanged) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged REVISION 1) Q_PROPERTY(Qt::PenStyle style READ style WRITE setStyle NOTIFY styleChanged REVISION 1) Q_PROPERTY(Qt::PenCapStyle capStyle READ capStyle WRITE setCapStyle NOTIFY capStyleChanged REVISION 1) @@ -44,10 +47,14 @@ class DeclarativeLineSeries : public QLineSeries, public DeclarativeXySeries, pu public: explicit DeclarativeLineSeries(QObject *parent = 0); QXYSeries *xySeries() { return this; } - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } qreal width() const; void setWidth(qreal width); Qt::PenStyle style() const; @@ -72,6 +79,8 @@ Q_SIGNALS: void countChanged(int count); Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); Q_REVISION(1) void widthChanged(qreal width); Q_REVISION(1) void styleChanged(Qt::PenStyle style); Q_REVISION(1) void capStyleChanged(Qt::PenCapStyle capStyle); @@ -80,9 +89,8 @@ public Q_SLOTS: static void appendDeclarativeChildren(QDeclarativeListProperty<QObject> *list, QObject *element); void handleCountChanged(int index); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/declarativescatterseries.cpp b/plugins/declarative/declarativescatterseries.cpp index 254f1654..443f2c09 100644 --- a/plugins/declarative/declarativescatterseries.cpp +++ b/plugins/declarative/declarativescatterseries.cpp @@ -24,9 +24,12 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE DeclarativeScatterSeries::DeclarativeScatterSeries(QObject *parent) : QScatterSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(new DeclarativeAxes(this)) { + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); connect(this, SIGNAL(pointAdded(int)), this, SLOT(handleCountChanged(int))); connect(this, SIGNAL(pointRemoved(int)), this, SLOT(handleCountChanged(int))); } diff --git a/plugins/declarative/declarativescatterseries.h b/plugins/declarative/declarativescatterseries.h index 0159ed49..5d00d717 100644 --- a/plugins/declarative/declarativescatterseries.h +++ b/plugins/declarative/declarativescatterseries.h @@ -23,6 +23,7 @@ #include "qscatterseries.h" #include "declarativexyseries.h" +#include "declarativeaxes.h" #include <QtDeclarative/QDeclarativeListProperty> #include <QtDeclarative/QDeclarativeParserStatus> @@ -35,6 +36,8 @@ class DeclarativeScatterSeries : public QScatterSeries, public DeclarativeXySeri Q_PROPERTY(int count READ count NOTIFY countChanged) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(qreal borderWidth READ borderWidth WRITE setBorderWidth NOTIFY borderWidthChanged REVISION 1) Q_PROPERTY(QDeclarativeListProperty<QObject> declarativeChildren READ declarativeChildren) Q_CLASSINFO("DefaultProperty", "declarativeChildren") @@ -42,10 +45,14 @@ class DeclarativeScatterSeries : public QScatterSeries, public DeclarativeXySeri public: explicit DeclarativeScatterSeries(QObject *parent = 0); QXYSeries *xySeries() { return this; } - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } qreal borderWidth() const; void setBorderWidth(qreal borderWidth); QDeclarativeListProperty<QObject> declarativeChildren(); @@ -67,14 +74,15 @@ Q_SIGNALS: Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); Q_REVISION(1) void borderWidthChanged(qreal width); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); public Q_SLOTS: static void appendDeclarativeChildren(QDeclarativeListProperty<QObject> *list, QObject *element); void handleCountChanged(int index); -private: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; +public: + DeclarativeAxes *m_axes; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/declarativesplineseries.cpp b/plugins/declarative/declarativesplineseries.cpp index b910c0da..f8104b3c 100644 --- a/plugins/declarative/declarativesplineseries.cpp +++ b/plugins/declarative/declarativesplineseries.cpp @@ -24,9 +24,12 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE DeclarativeSplineSeries::DeclarativeSplineSeries(QObject *parent) : QSplineSeries(parent), - m_axisX(0), - m_axisY(0) + m_axes(new DeclarativeAxes(this)) { + connect(m_axes, SIGNAL(axisXChanged(QAbstractAxis*)), this, SIGNAL(axisXChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYChanged(QAbstractAxis*)), this, SIGNAL(axisYChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisXTopChanged(QAbstractAxis*)), this, SIGNAL(axisXTopChanged(QAbstractAxis*))); + connect(m_axes, SIGNAL(axisYRightChanged(QAbstractAxis*)), this, SIGNAL(axisYRightChanged(QAbstractAxis*))); connect(this, SIGNAL(pointAdded(int)), this, SLOT(handleCountChanged(int))); connect(this, SIGNAL(pointRemoved(int)), this, SLOT(handleCountChanged(int))); } diff --git a/plugins/declarative/declarativesplineseries.h b/plugins/declarative/declarativesplineseries.h index 4beb90b1..dd0d0425 100644 --- a/plugins/declarative/declarativesplineseries.h +++ b/plugins/declarative/declarativesplineseries.h @@ -23,6 +23,7 @@ #include "qsplineseries.h" #include "declarativexyseries.h" +#include "declarativeaxes.h" #include <QtDeclarative/QDeclarativeListProperty> #include <QtDeclarative/QDeclarativeParserStatus> @@ -35,6 +36,8 @@ class DeclarativeSplineSeries : public QSplineSeries, public DeclarativeXySeries Q_PROPERTY(int count READ count NOTIFY countChanged) Q_PROPERTY(QAbstractAxis *axisX READ axisX WRITE setAxisX NOTIFY axisXChanged REVISION 1) Q_PROPERTY(QAbstractAxis *axisY READ axisY WRITE setAxisY NOTIFY axisYChanged REVISION 1) + Q_PROPERTY(QAbstractAxis *axisXTop READ axisXTop WRITE setAxisXTop NOTIFY axisXTopChanged REVISION 2) + Q_PROPERTY(QAbstractAxis *axisYRight READ axisYRight WRITE setAxisYRight NOTIFY axisYRightChanged REVISION 2) Q_PROPERTY(qreal width READ width WRITE setWidth NOTIFY widthChanged REVISION 1) Q_PROPERTY(Qt::PenStyle style READ style WRITE setStyle NOTIFY styleChanged REVISION 1) Q_PROPERTY(Qt::PenCapStyle capStyle READ capStyle WRITE setCapStyle NOTIFY capStyleChanged REVISION 1) @@ -44,10 +47,14 @@ class DeclarativeSplineSeries : public QSplineSeries, public DeclarativeXySeries public: explicit DeclarativeSplineSeries(QObject *parent = 0); QXYSeries *xySeries() { return this; } - QAbstractAxis *axisX() { return m_axisX; } - void setAxisX(QAbstractAxis *axis) { m_axisX = axis; emit axisXChanged(axis); } - QAbstractAxis *axisY() { return m_axisY; } - void setAxisY(QAbstractAxis *axis) { m_axisY = axis; emit axisYChanged(axis); } + QAbstractAxis *axisX() { return m_axes->axisX(); } + void setAxisX(QAbstractAxis *axis) { m_axes->setAxisX(axis); } + QAbstractAxis *axisY() { return m_axes->axisY(); } + void setAxisY(QAbstractAxis *axis) { m_axes->setAxisY(axis); } + Q_REVISION(2) QAbstractAxis *axisXTop() { return m_axes->axisXTop(); } + Q_REVISION(2) void setAxisXTop(QAbstractAxis *axis) { m_axes->setAxisXTop(axis); } + Q_REVISION(2) QAbstractAxis *axisYRight() { return m_axes->axisYRight(); } + Q_REVISION(2) void setAxisYRight(QAbstractAxis *axis) { m_axes->setAxisYRight(axis); } qreal width() const; void setWidth(qreal width); Qt::PenStyle style() const; @@ -72,6 +79,8 @@ Q_SIGNALS: void countChanged(int count); Q_REVISION(1) void axisXChanged(QAbstractAxis *axis); Q_REVISION(1) void axisYChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisXTopChanged(QAbstractAxis *axis); + Q_REVISION(2) void axisYRightChanged(QAbstractAxis *axis); Q_REVISION(1) void widthChanged(qreal width); Q_REVISION(1) void styleChanged(Qt::PenStyle style); Q_REVISION(1) void capStyleChanged(Qt::PenCapStyle capStyle); @@ -81,8 +90,7 @@ public Q_SLOTS: void handleCountChanged(int index); public: - QAbstractAxis *m_axisX; - QAbstractAxis *m_axisY; + DeclarativeAxes *m_axes; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/plugins/declarative/plugin.cpp b/plugins/declarative/plugin.cpp index e8581ea4..750b1a85 100644 --- a/plugins/declarative/plugin.cpp +++ b/plugins/declarative/plugin.cpp @@ -31,6 +31,7 @@ #include "declarativescatterseries.h" #include "declarativebarseries.h" #include "declarativepieseries.h" +#include "declarativeaxes.h" #include "qvxymodelmapper.h" #include "qhxymodelmapper.h" #include "qhpiemodelmapper.h" @@ -53,6 +54,7 @@ QTCOMMERCIALCHART_USE_NAMESPACE Q_DECLARE_METATYPE(QList<QPieSlice *>) Q_DECLARE_METATYPE(QList<QBarSet *>) +Q_DECLARE_METATYPE(QList<QAbstractAxis *>) #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) @@ -127,6 +129,7 @@ public: qRegisterMetaType<QList<QPieSlice *> >(); qRegisterMetaType<QList<QBarSet *> >(); + qRegisterMetaType<QList<QAbstractAxis *> >(); #if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) qRegisterMetaType<DeclarativeChart::SeriesType>(); #endif @@ -174,6 +177,8 @@ public: QLatin1String("Trying to create uncreatable: BarsetBase.")); qmlRegisterUncreatableType<QPieSeries>(uri, 1, 0, "QPieSeries", QLatin1String("Trying to create uncreatable: QPieSeries. Use PieSeries instead.")); + qmlRegisterUncreatableType<DeclarativeAxes>(uri, 1, 0, "DeclarativeAxes", + QLatin1String("Trying to create uncreatable: DeclarativeAxes.")); // QtCommercial.Chart 1.1 qmlRegisterType<DeclarativeChart, 1>(uri, 1, 1, "ChartView"); @@ -201,6 +206,16 @@ public: // QtCommercial.Chart 1.2 qmlRegisterType<DeclarativeChart, 2>(uri, 1, 2, "ChartView"); + qmlRegisterType<DeclarativeScatterSeries, 2>(uri, 1, 2, "ScatterSeries"); + qmlRegisterType<DeclarativeLineSeries, 2>(uri, 1, 2, "LineSeries"); + qmlRegisterType<DeclarativeSplineSeries, 2>(uri, 1, 2, "SplineSeries"); + qmlRegisterType<DeclarativeAreaSeries, 2>(uri, 1, 2, "AreaSeries"); + qmlRegisterType<DeclarativeBarSeries, 2>(uri, 1, 2, "BarSeries"); + qmlRegisterType<DeclarativeStackedBarSeries, 2>(uri, 1, 2, "StackedBarSeries"); + qmlRegisterType<DeclarativePercentBarSeries, 2>(uri, 1, 2, "PercentBarSeries"); + qmlRegisterType<DeclarativeHorizontalBarSeries, 2>(uri, 1, 2, "HorizontalBarSeries"); + qmlRegisterType<DeclarativeHorizontalStackedBarSeries, 2>(uri, 1, 2, "HorizontalStackedBarSeries"); + qmlRegisterType<DeclarativeHorizontalPercentBarSeries, 2>(uri, 1, 2, "HorizontalPercentBarSeries"); } }; |