summaryrefslogtreecommitdiffstats
path: root/plugins
diff options
context:
space:
mode:
authorTero Ahola <tero.ahola@digia.com>2012-11-27 10:18:38 +0200
committerTero Ahola <tero.ahola@digia.com>2012-11-27 10:18:38 +0200
commit6bd1dc9d15e0c9109240d54afda81698c132fbad (patch)
tree2ef9007e546245a82c9a1ae17e6e1868f6918000 /plugins
parent8468c10170a2fb9d07a0ccb668e3359a1929fc16 (diff)
Added axisXTop and axisYRight properties to QML series APIs
Diffstat (limited to 'plugins')
-rw-r--r--plugins/declarative/declarative.pro6
-rw-r--r--plugins/declarative/declarativeareaseries.cpp7
-rw-r--r--plugins/declarative/declarativeareaseries.h22
-rw-r--r--plugins/declarative/declarativeaxes.cpp61
-rw-r--r--plugins/declarative/declarativeaxes.h72
-rw-r--r--plugins/declarative/declarativebarseries.cpp47
-rw-r--r--plugins/declarative/declarativebarseries.h127
-rw-r--r--plugins/declarative/declarativechart.cpp303
-rw-r--r--plugins/declarative/declarativechart.h18
-rw-r--r--plugins/declarative/declarativelineseries.cpp7
-rw-r--r--plugins/declarative/declarativelineseries.h22
-rw-r--r--plugins/declarative/declarativescatterseries.cpp7
-rw-r--r--plugins/declarative/declarativescatterseries.h22
-rw-r--r--plugins/declarative/declarativesplineseries.cpp7
-rw-r--r--plugins/declarative/declarativesplineseries.h20
-rw-r--r--plugins/declarative/plugin.cpp15
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");
}
};