summaryrefslogtreecommitdiffstats
path: root/plugins/declarative/declarativechart.cpp
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-04-18 13:30:07 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-04-23 09:24:32 +0300
commit5862599d088d072b4ac89ed556a645680f786d80 (patch)
tree838db883bea99b520ae90c634746f9f942fb6832 /plugins/declarative/declarativechart.cpp
parentb0caebd0eeccca1b5e901faa6e5df1a1f6301312 (diff)
Generate charts plugin for QtQuick2 as well as QtQuick1
Added quick2 versions of a couple of demos, too. Task-number: QTRD-1922 Change-Id: Ie3e2c1c40c38e06fc6d3afe27289eccc2f997f67 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'plugins/declarative/declarativechart.cpp')
-rw-r--r--plugins/declarative/declarativechart.cpp63
1 files changed, 51 insertions, 12 deletions
diff --git a/plugins/declarative/declarativechart.cpp b/plugins/declarative/declarativechart.cpp
index 344f5e62..c81bbdcc 100644
--- a/plugins/declarative/declarativechart.cpp
+++ b/plugins/declarative/declarativechart.cpp
@@ -20,7 +20,6 @@
#include "declarativechart.h"
#include <QPainter>
-#include <QDeclarativeEngine>
#include "declarativelineseries.h"
#include "declarativeareaseries.h"
#include "declarativebarseries.h"
@@ -235,26 +234,41 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
object after the signal handler has completed.
*/
-DeclarativeChart::DeclarativeChart(QDeclarativeItem *parent)
- : QDeclarativeItem(parent)
+DeclarativeChart::DeclarativeChart(QDECLARATIVE_ITEM *parent)
+ : QDECLARATIVE_PAINTED_ITEM(parent)
{
initChart(QChart::ChartTypeCartesian);
}
-DeclarativeChart::DeclarativeChart(QChart::ChartType type, QDeclarativeItem *parent)
- : QDeclarativeItem(parent)
+DeclarativeChart::DeclarativeChart(QChart::ChartType type, QDECLARATIVE_ITEM *parent)
+ : QDECLARATIVE_PAINTED_ITEM(parent)
{
initChart(type);
}
void DeclarativeChart::initChart(QChart::ChartType type)
{
+#ifdef CHARTS_FOR_QUICK2
+ if (type == QChart::ChartTypePolar)
+ m_chart = new QPolarChart();
+ else
+ m_chart = new QChart();
+
+ m_scene = new QGraphicsScene(this);
+ m_scene->addItem(m_chart);
+
+ setAntialiasing(QQuickItem::antialiasing());
+ connect(m_scene, SIGNAL(changed(QList<QRectF>)), this, SLOT(update()));
+ connect(this, SIGNAL(antialiasingChanged(bool)), this, SLOT(handleAntialiasingChanged(bool)));
+#else
if (type == QChart::ChartTypePolar)
m_chart = new QPolarChart(this);
else
m_chart = new QChart(this);
setFlag(QGraphicsItem::ItemHasNoContents, false);
+#endif
+
m_margins = new DeclarativeMargins(this);
m_margins->setTop(m_chart->margins().top());
m_margins->setLeft(m_chart->margins().left());
@@ -314,7 +328,7 @@ void DeclarativeChart::componentComplete()
}
}
- QDeclarativeItem::componentComplete();
+ QDECLARATIVE_ITEM::componentComplete();
}
void DeclarativeChart::handleAxisXSet(QAbstractAxis *axis)
@@ -377,7 +391,7 @@ void DeclarativeChart::geometryChanged(const QRectF &newGeometry, const QRectF &
m_chart->resize(newGeometry.width(), newGeometry.height());
}
}
- QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
+ QDECLARATIVE_ITEM::geometryChanged(newGeometry, oldGeometry);
// It would be better to trigger the plotAreaChanged signal from QChart::plotAreaChanged or
// similar. Since that kind of a signal is not clearly needed in the C++ API the work-around is
@@ -385,6 +399,19 @@ void DeclarativeChart::geometryChanged(const QRectF &newGeometry, const QRectF &
emit plotAreaChanged(m_chart->plotArea());
}
+#ifdef CHARTS_FOR_QUICK2
+void DeclarativeChart::paint(QPainter *painter)
+{
+ QRectF renderRect(QPointF(0, 0), m_chart->size());
+ m_scene->render(painter, renderRect, renderRect);
+}
+
+void DeclarativeChart::handleAntialiasingChanged(bool enable)
+{
+ setAntialiasing(enable);
+}
+#endif
+
void DeclarativeChart::setTheme(DeclarativeChart::Theme theme)
{
QChart::ChartTheme chartTheme = (QChart::ChartTheme) theme;
@@ -555,22 +582,27 @@ void DeclarativeChart::scrollDown(qreal pixels)
m_chart->scroll(0, -pixels);
}
-QDeclarativeListProperty<QAbstractAxis> DeclarativeChart::axes()
+QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> DeclarativeChart::axes()
{
- return QDeclarativeListProperty<QAbstractAxis>(this, 0,
+ return QDECLARATIVE_LIST_PROPERTY<QAbstractAxis>(this, 0,
&DeclarativeChart::axesAppendFunc,
&DeclarativeChart::axesCountFunc,
+#ifdef CHARTS_FOR_QUICK2
+ &DeclarativeChart::axesAtFunc,
+ &DeclarativeChart::axesClearFunc);
+#else
&DeclarativeChart::axesAtFunc);
+#endif
}
-void DeclarativeChart::axesAppendFunc(QDeclarativeListProperty<QAbstractAxis> *list, QAbstractAxis *element)
+void DeclarativeChart::axesAppendFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list, QAbstractAxis *element)
{
// Empty implementation
Q_UNUSED(list);
Q_UNUSED(element);
}
-int DeclarativeChart::axesCountFunc(QDeclarativeListProperty<QAbstractAxis> *list)
+int DeclarativeChart::axesCountFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list)
{
if (qobject_cast<DeclarativeChart *>(list->object)) {
DeclarativeChart *chart = qobject_cast<DeclarativeChart *>(list->object);
@@ -579,7 +611,7 @@ int DeclarativeChart::axesCountFunc(QDeclarativeListProperty<QAbstractAxis> *lis
return 0;
}
-QAbstractAxis *DeclarativeChart::axesAtFunc(QDeclarativeListProperty<QAbstractAxis> *list, int index)
+QAbstractAxis *DeclarativeChart::axesAtFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list, int index)
{
if (qobject_cast<DeclarativeChart *>(list->object)) {
DeclarativeChart *chart = qobject_cast<DeclarativeChart *>(list->object);
@@ -589,6 +621,13 @@ QAbstractAxis *DeclarativeChart::axesAtFunc(QDeclarativeListProperty<QAbstractAx
return 0;
}
+void DeclarativeChart::axesClearFunc(QDECLARATIVE_LIST_PROPERTY<QAbstractAxis> *list)
+{
+ // Empty implementation
+ Q_UNUSED(list);
+}
+
+
QAbstractSeries *DeclarativeChart::series(int index)
{
if (index < m_chart->series().count()) {