diff options
author | Michal Klocek <Michal.Klocek@digia.com> | 2012-11-16 13:21:46 +0200 |
---|---|---|
committer | Michal Klocek <Michal.Klocek@digia.com> | 2012-11-26 14:58:47 +0200 |
commit | 1c49aa901cb25b0bbdeb4922784fec273b97e781 (patch) | |
tree | 21469c4bf6070f109cb4dc12472f641c37644674 /src/qabstractseries.cpp | |
parent | b1616762bd1e13608c1040c543e909698670b519 (diff) |
Refactors internals
* rewrite axisUpdated signal handling
* create handlers for each property of axis
* decouple chartdataset, presenter, theme
* adds theme manager
* adds axis add/remove/attach/detach handling
* refactors createGraphics
* add initializers (graphics,domain,theme,animations)
* refactor the way the charts are constructed (decouple form presenter)
* fix initialization issues with qchart
* refactor domain logic to handle also geometry size for charts
* delegate xyseries geometry calculation to domian
* fix lazy initialization of animations
* remove hadnleGeomoetryChanged
* add shared pointers to handle reference count for domain
* moves nice number algorithm to domain
* adds applyNiceNumbers(), depreciate setNiceNumbers
* refactor multiple charts handling
* domain is shared object
* each domain can have multiple axis for controlling
* multiple charts share now the same domain
Diffstat (limited to 'src/qabstractseries.cpp')
-rw-r--r-- | src/qabstractseries.cpp | 59 |
1 files changed, 57 insertions, 2 deletions
diff --git a/src/qabstractseries.cpp b/src/qabstractseries.cpp index e744f438..7d5be66e 100644 --- a/src/qabstractseries.cpp +++ b/src/qabstractseries.cpp @@ -21,6 +21,9 @@ #include "qabstractseries.h" #include "qabstractseries_p.h" #include "chartdataset_p.h" +#include "qchart.h" +#include "qchart_p.h" +#include "chartitem_p.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE @@ -137,7 +140,7 @@ QAbstractSeries::QAbstractSeries(QAbstractSeriesPrivate &d, QObject *parent) : */ QAbstractSeries::~QAbstractSeries() { - if (d_ptr->m_dataset) + if (d_ptr->m_chart) qFatal("Still binded series detected !"); } @@ -222,12 +225,39 @@ void QAbstractSeries::hide() setVisible(false); } +bool QAbstractSeries::attachAxis(QAbstractAxis* axis) +{ + if(d_ptr->m_chart) { + return d_ptr->m_chart->d_ptr->m_dataset->attachAxis(this,axis); + } else { + qWarning()<<"Series not in the chart. Please addSeries to chart first."; + return false; + } +} + +bool QAbstractSeries::detachAxis(QAbstractAxis* axis) +{ + if(d_ptr->m_chart) { + return d_ptr->m_chart->d_ptr->m_dataset->detachAxis(this,axis); + } + else { + qWarning()<<"Series not in the chart. Please addSeries to chart first."; + return false; + } +} + +QList<QAbstractAxis*> QAbstractSeries::attachedAxes() +{ + return d_ptr->m_axes; +} + /////////////////////////////////////////////////////////////////////////////////////////////////// QAbstractSeriesPrivate::QAbstractSeriesPrivate(QAbstractSeries *q) : q_ptr(q), m_chart(0), - m_dataset(0), + m_item(0), + m_domain(new Domain()), m_visible(true), m_opacity(1.0) { @@ -237,6 +267,31 @@ QAbstractSeriesPrivate::~QAbstractSeriesPrivate() { } +void QAbstractSeriesPrivate::setDomain(QSharedPointer<Domain> domain) +{ + Q_ASSERT(!domain.isNull()); + if(m_domain!=domain) { + if(!m_item.isNull()) QObject::disconnect(m_domain.data(), SIGNAL(updated()), m_item.data(), SLOT(handleDomainUpdated())); + m_domain = domain; + if(!m_item.isNull()) { + QObject::connect(m_domain.data(), SIGNAL(updated()),m_item.data(), SLOT(handleDomainUpdated())); + m_item->handleDomainUpdated(); + } + } +} + +void QAbstractSeriesPrivate::initializeGraphics(QGraphicsItem* parent) +{ + Q_ASSERT(!m_item.isNull()); + Q_UNUSED(parent); + QObject::connect(m_domain.data(), SIGNAL(updated()),m_item.data(), SLOT(handleDomainUpdated())); +} + +void QAbstractSeriesPrivate::initializeAnimations(QChart::AnimationOptions options) +{ + Q_UNUSED(options); +} + #include "moc_qabstractseries.cpp" #include "moc_qabstractseries_p.cpp" |