#include "DeclarativeXySeries.h" #include "declarativechart.h" #include "qchart.h" #include "qxyseries.h" #include "qareaseries.h" #include "qsplineseries.h" #include "qscatterseries.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE DeclarativeXySeries::DeclarativeXySeries(QSeries::QSeriesType type, QDeclarativeItem *parent) : QDeclarativeItem(parent), m_seriesType(type), m_chart(0), m_series(0) { setFlag(QGraphicsItem::ItemHasNoContents, false); } DeclarativeXySeries::~DeclarativeXySeries() { } void DeclarativeXySeries::componentComplete() { Q_ASSERT(!m_series); DeclarativeChart *declarativeChart = qobject_cast(parent()); if (declarativeChart) { m_chart = qobject_cast(declarativeChart->m_chart); Q_ASSERT(m_chart); switch (m_seriesType) { case QSeries::SeriesTypeLine: qDebug() << "creating line series for chart: " << m_chart; m_series = new QLineSeries(); break; case QSeries::SeriesTypeArea: qDebug() << "TODO: creating area series for chart: " << m_chart; // m_series = new QAreaSeries(); break; case QSeries::SeriesTypeSpline: qDebug() << "creating spline series for chart: " << m_chart; m_series = new QSplineSeries(); break; case QSeries::SeriesTypeScatter: qDebug() << "creating scatter series for chart: " << m_chart; m_series = new QScatterSeries(); break; default: Q_ASSERT(false); } for (int i(0); i < m_points.count(); i++) { DeclarativeXyPoint *element = m_points.at(i); m_series->add(element->x(), element->y()); } m_chart->addSeries(m_series); } } QDeclarativeListProperty DeclarativeXySeries::points() { return QDeclarativeListProperty(this, 0, &DeclarativeXySeries::appendPoints); } void DeclarativeXySeries::appendPoints(QDeclarativeListProperty *list, DeclarativeXyPoint *element) { DeclarativeXySeries *series = qobject_cast(list->object); qDebug() << "appendPoints: " << series; qDebug() << "appendPoints: " << element; qDebug() << "appendPoints: " << element->x(); qDebug() << "appendPoints: " << element->y(); qDebug() << "appendPoints: " << series->m_series; if (series) { series->m_points.append(element); if (series->m_series) series->m_series->add(element->x(), element->y()); } } #include "moc_declarativexyseries.cpp" QTCOMMERCIALCHART_END_NAMESPACE