summaryrefslogtreecommitdiffstats
path: root/src/qabstractseries.cpp
diff options
context:
space:
mode:
authorMichal Klocek <Michal.Klocek@digia.com>2012-11-16 13:21:46 +0200
committerMichal Klocek <Michal.Klocek@digia.com>2012-11-26 14:58:47 +0200
commit1c49aa901cb25b0bbdeb4922784fec273b97e781 (patch)
tree21469c4bf6070f109cb4dc12472f641c37644674 /src/qabstractseries.cpp
parentb1616762bd1e13608c1040c543e909698670b519 (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.cpp59
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"