##// END OF EJS Templates
model prototyping for bar chart
model prototyping for bar chart

File last commit:

r158:dd283485728c
r159:e1dfbbf1ecba
Show More
chartdataset.cpp
160 lines | 4.3 KiB | text/x-c | CppLexer
/ src / chartdataset.cpp
Michal Klocek
Refactors qchart , adds line animation...
r131 #include "chartdataset_p.h"
Michal Klocek
Refactored for MVP...
r139 //series
Michal Klocek
Fix previous broken commit
r145 #include "qlinechartseries.h"
Michal Klocek
Refactored for MVP...
r139 #include "barchartseries.h"
#include "stackedbarchartseries.h"
#include "percentbarchartseries.h"
Jani Honkonen
Moved pie stuff to own .pri file and rename stuff
r146 #include "qpieseries.h"
Tero Ahola
Integrated scatter again. Missing functionality....
r158 #include "qscatterseries.h"
Michal Klocek
Refactors qchart , adds line animation...
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
Refactored for MVP...
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
Fix previous broken commit
r145 QLineChartSeries* xyseries = static_cast<QLineChartSeries*>(series);
Michal Klocek
Refactored for MVP...
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: {
BarChartSeries* barSeries = static_cast<BarChartSeries*>(series);
qreal x = barSeries->countColumns();
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);
}
break;
case QChartSeries::SeriesTypeStackedBar: {
StackedBarChartSeries* stackedBarSeries = static_cast<StackedBarChartSeries*>(series);
qreal x = stackedBarSeries->countColumns();
qreal y = stackedBarSeries->maxColumnSum();
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::SeriesTypePercentBar: {
PercentBarChartSeries* percentBarSeries = static_cast<PercentBarChartSeries*>(series);
qreal x = percentBarSeries->countColumns();
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;
Jani Honkonen
Pie chart refactoring
r142 case QChartSeries::SeriesTypePie: {
QPieSeries *pieSeries = static_cast<QPieSeries *>(series);
// TODO: domain stuff
break;
}
Tero Ahola
Integrated scatter again. Missing functionality....
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
Refactored for MVP...
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
Refactors qchart , adds line animation...
r131 }
#include "moc_chartdataset_p.cpp"
QTCOMMERCIALCHART_END_NAMESPACE