Adds missing functions to qchart API

This commit is contained in:
Michal Klocek 2012-06-26 21:16:47 +03:00
parent 88a7b44ee1
commit 6d402eea84
8 changed files with 36 additions and 24 deletions

View File

@ -557,7 +557,8 @@ QAbstractAxisPrivate::QAbstractAxisPrivate(QAbstractAxis* q):
m_labelsAngle(0),
m_shadesVisible(false),
m_shadesBrush(Qt::SolidPattern),
m_shadesOpacity(1.0)
m_shadesOpacity(1.0),
m_orientation(Qt::Orientation(0))
{
}

View File

@ -65,6 +65,8 @@ protected:
QBrush m_shadesBrush;
qreal m_shadesOpacity;
Qt::Orientation m_orientation;
friend class QAbstractAxis;
};

View File

@ -53,9 +53,6 @@ ChartDataSet::~ChartDataSet()
void ChartDataSet::addSeries(QAbstractSeries* series)
{
//TODO: if(axisY==0) axisY = m_axisY;
QAbstractAxis* axisY = m_axisY;
QAbstractAxis* axis = m_seriesAxisMap.value(series);
if(axis) {
@ -63,15 +60,18 @@ void ChartDataSet::addSeries(QAbstractSeries* series)
return;
}
QAbstractAxis* axisX = m_axisX ; //series->d_ptr->createAxisX();
QAbstractAxis* axisY = m_axisY ; //series->d_ptr->createAxisY();
series->setParent(this); // take ownership
axisY->setParent(this); // take ownership
//axisY->setParent(this); // take ownership
Domain* domain = m_axisDomainMap.value(axisY);
if(!domain) {
domain = new Domain(axisY);
QObject::connect(axisY->d_ptr.data(),SIGNAL(changed(qreal,qreal,int,bool)),domain,SLOT(handleAxisYChanged(qreal,qreal,int,bool)));
QObject::connect(axisX()->d_ptr.data(),SIGNAL(changed(qreal,qreal,int,bool)),domain,SLOT(handleAxisXChanged(qreal,qreal,int)));
QObject::connect(axisX->d_ptr.data(),SIGNAL(changed(qreal,qreal,int,bool)),domain,SLOT(handleAxisXChanged(qreal,qreal,int)));
QObject::connect(domain,SIGNAL(rangeYChanged(qreal,qreal,int)),axisY->d_ptr.data(),SLOT(handleAxisRangeChanged(qreal,qreal,int)));
//initialize
m_axisDomainMap.insert(axisY,domain);
@ -91,8 +91,8 @@ void ChartDataSet::addSeries(QAbstractSeries* series)
series->d_ptr->scaleDomain(*domain);
if (series->type()== QAbstractSeries::SeriesTypePie && m_seriesAxisMap.count() == 0) {
axisX()->hide();
this->axisY()->hide();
axisX->hide();
axisY->hide();
}
m_seriesAxisMap.insert(series,axisY);
@ -157,7 +157,7 @@ QAbstractAxis* ChartDataSet::removeSeries(QAbstractSeries* series)
if(m_seriesAxisMap.values().size()==0)
{
m_axisXInitialized=false;
emit axisRemoved(axisX());
emit axisRemoved(m_axisX);
}
return axis;
@ -169,7 +169,7 @@ void ChartDataSet::removeAllSeries()
QList<QAbstractAxis*> axes;
foreach(QAbstractSeries *s , series) {
QAbstractAxis* axis = removeSeries(s);
if(axis==axisY()) continue;
if(axis==m_axisY) continue;
int i = axes.indexOf(axis);
if(i==-1){
axes<<axis;
@ -187,7 +187,7 @@ void ChartDataSet::zoomInDomain(const QRectF& rect, const QSizeF& size)
{
QMapIterator<QAbstractAxis*, Domain*> i(m_axisDomainMap);
//main domain has to be the last one;
Domain *domain = m_axisDomainMap.value(axisY());
Domain *domain = m_axisDomainMap.value(m_axisY);
Q_ASSERT(domain);
while (i.hasNext()) {
i.next();
@ -201,7 +201,7 @@ void ChartDataSet::zoomOutDomain(const QRectF& rect, const QSizeF& size)
{
QMapIterator<QAbstractAxis*, Domain*> i(m_axisDomainMap);
//main domain has to be the last one;
Domain *domain = m_axisDomainMap.value(axisY());
Domain *domain = m_axisDomainMap.value(m_axisY);
Q_ASSERT(domain);
while (i.hasNext()) {
i.next();
@ -239,6 +239,12 @@ QAbstractAxis* ChartDataSet::axisY(QAbstractSeries *series) const
return m_seriesAxisMap.value(series);
}
QAbstractAxis* ChartDataSet::axisX(QAbstractSeries *series) const
{
Q_UNUSED(series)
return m_axisX;
}
Domain* ChartDataSet::domain(QAbstractSeries *series) const
{
QAbstractAxis* axis = m_seriesAxisMap.value(series);
@ -250,8 +256,8 @@ Domain* ChartDataSet::domain(QAbstractSeries *series) const
Domain* ChartDataSet::domain(QAbstractAxis* axis) const
{
if(!axis || axis==axisX()) {
return m_axisDomainMap.value(axisY());
if(!axis || axis==m_axisX) {
return m_axisDomainMap.value(m_axisY);
}
else {
return m_axisDomainMap.value(axis);
@ -262,7 +268,7 @@ void ChartDataSet::scrollDomain(qreal dx,qreal dy,const QSizeF& size)
{
QMapIterator<QAbstractAxis*, Domain*> i( m_axisDomainMap);
//main domain has to be the last one;
Domain *domain = m_axisDomainMap.value(axisY());
Domain *domain = m_axisDomainMap.value(m_axisY);
while (i.hasNext()) {
i.next();
if(i.value()==domain) continue;

View File

@ -60,8 +60,8 @@ public:
Domain* domain(QAbstractSeries* series) const;
Domain* domain(QAbstractAxis* axis) const;
QAbstractAxis* axisX() const { return m_axisX; }
QAbstractAxis* axisY(QAbstractSeries *series = 0) const;
QAbstractAxis* axisX(QAbstractSeries *series) const;
QAbstractAxis* axisY(QAbstractSeries *series) const;
QList<QAbstractSeries*> series() const;

View File

@ -71,7 +71,7 @@ void ChartPresenter::handleAxisAdded(QAbstractAxis* axis,Domain* domain)
{
ChartAxis* item;
if(axis == m_dataset->axisX()){
if(axis == m_dataset->axisX(0)){
item = new ChartAxisX(axis,this);
}else{
item = new ChartAxisY(axis,this);
@ -82,7 +82,7 @@ void ChartPresenter::handleAxisAdded(QAbstractAxis* axis,Domain* domain)
item->setAnimation(new AxisAnimation(item));
}
if(axis==m_dataset->axisX()){
if(axis==m_dataset->axisX(0)){
m_chartTheme->decorate(axis,true);
QObject::connect(domain,SIGNAL(rangeXChanged(qreal,qreal,int)),item,SLOT(handleRangeChanged(qreal,qreal,int)));
//initialize

View File

@ -40,6 +40,7 @@ class Chart;
class LegendMarker;
class QLegend;
class ChartDataSet;
class QAbstractAxis;
class QAbstractSeriesPrivate : public QObject
{
@ -51,6 +52,8 @@ public:
virtual void scaleDomain(Domain& domain) = 0;
virtual Chart* createGraphics(ChartPresenter* presenter) = 0;
virtual QList<LegendMarker*> createLegendMarker(QLegend* legend) = 0;
virtual QAbstractAxis* createAxisX() { return 0; }
virtual QAbstractAxis* createAxisY() { return 0; }
protected:
QAbstractSeries *q_ptr;

View File

@ -308,9 +308,9 @@ void QChart::zoom(qreal factor)
/*!
Returns the pointer to the x axis object of the chart
*/
QAbstractAxis* QChart::axisX() const
QAbstractAxis* QChart::axisX(QAbstractSeries* series) const
{
return d_ptr->m_dataset->axisX();
return d_ptr->m_dataset->axisX(series);
}
/*!

View File

@ -78,6 +78,9 @@ public:
void setAxisX(QAbstractSeries *series, QAbstractAxis* axis);
void setAxisY(QAbstractSeries *series, QAbstractAxis* axis);
QAbstractAxis* axisX(QAbstractSeries* series = 0) const;
QAbstractAxis* axisY(QAbstractSeries* series = 0) const;
void setTheme(QChart::ChartTheme theme);
QChart::ChartTheme theme() const;
@ -110,9 +113,6 @@ public:
void scrollDown();
void scroll(const QPointF &delta);
QAbstractAxis* axisX() const;
QAbstractAxis* axisY(QAbstractSeries* series = 0) const;
QLegend* legend() const;
void setMarginsMinimum(const QRectF& margins);