chartdataset.cpp
162 lines
| 4.5 KiB
| text/x-c
|
CppLexer
/ src / chartdataset.cpp
Michal Klocek
|
r131 | #include "chartdataset_p.h" | ||
Michal Klocek
|
r139 | //series | ||
Michal Klocek
|
r145 | #include "qlinechartseries.h" | ||
Michal Klocek
|
r139 | #include "barchartseries.h" | ||
#include "stackedbarchartseries.h" | ||||
#include "percentbarchartseries.h" | ||||
Jani Honkonen
|
r146 | #include "qpieseries.h" | ||
Tero Ahola
|
r158 | #include "qscatterseries.h" | ||
Michal Klocek
|
r131 | |||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
ChartDataSet::ChartDataSet(QObject *parent):QObject(parent) | ||||
{ | ||||
Domain domain; | ||||
m_domains<<domain; | ||||
} | ||||
ChartDataSet::~ChartDataSet() | ||||
{ | ||||
// TODO Auto-generated destructor stub | ||||
} | ||||
const Domain& ChartDataSet::domain() const | ||||
{ | ||||
return m_domains[m_domainIndex]; | ||||
} | ||||
void ChartDataSet::addSeries(QChartSeries* series) | ||||
{ | ||||
Michal Klocek
|
r139 | // TODO: we should check the series not already added | ||
m_chartSeries << series; | ||||
m_domainIndex = 0; | ||||
m_domains.resize(1); | ||||
Domain& domain = m_domains[m_domainIndex]; | ||||
switch(series->type()) | ||||
{ | ||||
case QChartSeries::SeriesTypeLine: { | ||||
Michal Klocek
|
r145 | QLineChartSeries* xyseries = static_cast<QLineChartSeries*>(series); | ||
Michal Klocek
|
r139 | |||
for (int i = 0; i < xyseries->count(); i++) | ||||
{ | ||||
qreal x = xyseries->x(i); | ||||
qreal y = xyseries->y(i); | ||||
domain.m_minX = qMin(domain.m_minX,x); | ||||
domain.m_minY = qMin(domain.m_minY,y); | ||||
domain.m_maxX = qMax(domain.m_maxX,x); | ||||
domain.m_maxY = qMax(domain.m_maxY,y); | ||||
} | ||||
break; | ||||
} | ||||
case QChartSeries::SeriesTypeBar: { | ||||
sauimone
|
r173 | qDebug() << "QChartSeries::SeriesTypeBar"; | ||
Michal Klocek
|
r139 | BarChartSeries* barSeries = static_cast<BarChartSeries*>(series); | ||
sauimone
|
r172 | qreal x = barSeries->countCategories(); | ||
Michal Klocek
|
r139 | qreal y = barSeries->max(); | ||
domain.m_minX = qMin(domain.m_minX,x); | ||||
domain.m_minY = qMin(domain.m_minY,y); | ||||
domain.m_maxX = qMax(domain.m_maxX,x); | ||||
domain.m_maxY = qMax(domain.m_maxY,y); | ||||
sauimone
|
r167 | break; | ||
Michal Klocek
|
r139 | } | ||
case QChartSeries::SeriesTypeStackedBar: { | ||||
sauimone
|
r173 | qDebug() << "QChartSeries::SeriesTypeStackedBar"; | ||
Michal Klocek
|
r139 | |||
StackedBarChartSeries* stackedBarSeries = static_cast<StackedBarChartSeries*>(series); | ||||
sauimone
|
r172 | qreal x = stackedBarSeries->countCategories(); | ||
qreal y = stackedBarSeries->maxCategorySum(); | ||||
Michal Klocek
|
r139 | domain.m_minX = qMin(domain.m_minX,x); | ||
domain.m_minY = qMin(domain.m_minY,y); | ||||
domain.m_maxX = qMax(domain.m_maxX,x); | ||||
domain.m_maxY = qMax(domain.m_maxY,y); | ||||
break; | ||||
sauimone
|
r167 | } | ||
Michal Klocek
|
r139 | case QChartSeries::SeriesTypePercentBar: { | ||
sauimone
|
r173 | qDebug() << "QChartSeries::SeriesTypePercentBar"; | ||
Michal Klocek
|
r139 | |||
PercentBarChartSeries* percentBarSeries = static_cast<PercentBarChartSeries*>(series); | ||||
sauimone
|
r172 | qreal x = percentBarSeries->countCategories(); | ||
Michal Klocek
|
r139 | domain.m_minX = qMin(domain.m_minX,x); | ||
domain.m_minY = 0; | ||||
domain.m_maxX = qMax(domain.m_maxX,x); | ||||
domain.m_maxY = 100; | ||||
break; | ||||
sauimone
|
r167 | } | ||
Michal Klocek
|
r139 | |||
Jani Honkonen
|
r142 | case QChartSeries::SeriesTypePie: { | ||
QPieSeries *pieSeries = static_cast<QPieSeries *>(series); | ||||
// TODO: domain stuff | ||||
break; | ||||
} | ||||
Tero Ahola
|
r158 | case QChartSeries::SeriesTypeScatter: { | ||
QScatterSeries *scatterSeries = qobject_cast<QScatterSeries *>(series); | ||||
Q_ASSERT(scatterSeries); | ||||
foreach (QPointF point, scatterSeries->data()) { | ||||
domain.m_minX = qMin(domain.m_minX, point.x()); | ||||
domain.m_maxX = qMax(domain.m_maxX, point.x()); | ||||
domain.m_minY = qMin(domain.m_minY, point.y()); | ||||
domain.m_maxY = qMax(domain.m_maxY, point.y()); | ||||
} | ||||
break; | ||||
} | ||||
Michal Klocek
|
r139 | default: { | ||
qDebug()<<__FUNCTION__<<"type" << series->type()<<"not supported"; | ||||
return; | ||||
break; | ||||
} | ||||
} | ||||
emit seriesAdded(series); | ||||
emit domainChanged(domain); | ||||
} | ||||
bool ChartDataSet::nextDomain() | ||||
{ | ||||
if (m_domainIndex < m_domains.count() - 1) { | ||||
m_domainIndex++; | ||||
emit domainChanged(m_domains[m_domainIndex]); | ||||
return true; | ||||
} | ||||
else { | ||||
return false; | ||||
} | ||||
} | ||||
bool ChartDataSet::previousDomain() | ||||
{ | ||||
if (m_domainIndex > 0) { | ||||
m_domainIndex--; | ||||
emit domainChanged(m_domains[m_domainIndex]); | ||||
return true; | ||||
} | ||||
else { | ||||
return false; | ||||
} | ||||
} | ||||
void ChartDataSet::clearDomains() | ||||
{ | ||||
if (m_domainIndex > 0) { | ||||
m_domainIndex = 0; | ||||
emit domainChanged(m_domains[m_domainIndex]); | ||||
} | ||||
} | ||||
void ChartDataSet::addDomain(const Domain& domain) | ||||
{ | ||||
m_domains.resize(m_domainIndex + 1); | ||||
m_domains << domain; | ||||
m_domainIndex++; | ||||
emit domainChanged(domain); | ||||
Michal Klocek
|
r131 | } | ||
#include "moc_chartdataset_p.cpp" | ||||
QTCOMMERCIALCHART_END_NAMESPACE | ||||