diff options
author | Titta Heikkala <titta.heikkala@digia.com> | 2013-09-23 12:12:31 +0300 |
---|---|---|
committer | Titta Heikkala <titta.heikkala@digia.com> | 2013-09-23 13:18:17 +0300 |
commit | c8086b11eeb52bd805ac8fb484df645d7199d819 (patch) | |
tree | ac219619245b072051138a857553d447a6cce48a /src | |
parent | 1a7a17f8e2cd9ff07852a402b74b47257192da74 (diff) |
Fix default axes creation
QAbstractAxis::AxisType enum values are currently sequential so it's not
possible to OR them correctly. Therefore createDefaultAxes() needs to
check whether there are series with different types present. For
multiple series types the QAbstractAxis::AxisTypeNoAxis type is used to
indicate the need for several axes.
The createDefaultAxis() methods have been corrected to return proper
values.
Task-number: QTRD-1999
Change-Id: I3408bd3043b147f9e2b7662fb4d9ca43e7a72da6
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/areachart/qareaseries.cpp | 2 | ||||
-rw-r--r-- | src/barchart/qabstractbarseries.cpp | 6 | ||||
-rw-r--r-- | src/boxplotchart/qboxplotseries.cpp | 7 | ||||
-rw-r--r-- | src/chartdataset.cpp | 18 | ||||
-rw-r--r-- | src/xychart/qxyseries.cpp | 2 |
5 files changed, 25 insertions, 10 deletions
diff --git a/src/areachart/qareaseries.cpp b/src/areachart/qareaseries.cpp index 38708933..e0be0449 100644 --- a/src/areachart/qareaseries.cpp +++ b/src/areachart/qareaseries.cpp @@ -438,7 +438,7 @@ QAbstractAxis::AxisType QAreaSeriesPrivate::defaultAxisType(Qt::Orientation orie QAbstractAxis* QAreaSeriesPrivate::createDefaultAxis(Qt::Orientation orientation) const { Q_UNUSED(orientation); - return 0; + return new QValueAxis; } void QAreaSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool forced) diff --git a/src/barchart/qabstractbarseries.cpp b/src/barchart/qabstractbarseries.cpp index c9723ad6..1e7a8a55 100644 --- a/src/barchart/qabstractbarseries.cpp +++ b/src/barchart/qabstractbarseries.cpp @@ -852,8 +852,10 @@ void QAbstractBarSeriesPrivate::populateCategories(QBarCategoryAxis *axis) QAbstractAxis* QAbstractBarSeriesPrivate::createDefaultAxis(Qt::Orientation orientation) const { - Q_UNUSED(orientation); - return 0; + if (defaultAxisType(orientation) == QAbstractAxis::AxisTypeBarCategory) + return new QBarCategoryAxis; + else + return new QValueAxis; } void QAbstractBarSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool forced) diff --git a/src/boxplotchart/qboxplotseries.cpp b/src/boxplotchart/qboxplotseries.cpp index 2d05f983..22a3eb75 100644 --- a/src/boxplotchart/qboxplotseries.cpp +++ b/src/boxplotchart/qboxplotseries.cpp @@ -394,9 +394,10 @@ QAbstractAxis::AxisType QBoxPlotSeriesPrivate::defaultAxisType(Qt::Orientation o QAbstractAxis* QBoxPlotSeriesPrivate::createDefaultAxis(Qt::Orientation orientation) const { - Q_UNUSED(orientation); - - return 0; + if (defaultAxisType(orientation) == QAbstractAxis::AxisTypeBarCategory) + return new QBarCategoryAxis; + else + return new QValueAxis; } void QBoxPlotSeriesPrivate::populateCategories(QBarCategoryAxis *axis) diff --git a/src/chartdataset.cpp b/src/chartdataset.cpp index f18012a2..fe0778ed 100644 --- a/src/chartdataset.cpp +++ b/src/chartdataset.cpp @@ -315,8 +315,20 @@ void ChartDataSet::createDefaultAxes() } // Create the axes of the types selected - createAxes(typeX, Qt::Horizontal); - createAxes(typeY, Qt::Vertical); + // As long as AxisType enum balues are sequential a check to see if there are series of + // different types is needed. In such cases AxisTypeNoAxis is used to create separate axes + // for the types. + if (typeX != QAbstractAxis::AxisTypeNoAxis) { + if (typeX != m_seriesList.first()->d_ptr->defaultAxisType(Qt::Horizontal)) + typeX = QAbstractAxis::AxisTypeNoAxis; + createAxes(typeX, Qt::Horizontal); + } + + if (typeY != QAbstractAxis::AxisTypeNoAxis) { + if (typeY != m_seriesList.first()->d_ptr->defaultAxisType(Qt::Vertical)) + typeY = QAbstractAxis::AxisTypeNoAxis; + createAxes(typeY, Qt::Vertical); + } } @@ -357,7 +369,7 @@ void ChartDataSet::createAxes(QAbstractAxis::AxisTypes type, Qt::Orientation ori } axis->setRange(min,max); } - else if (!type.testFlag(QAbstractAxis::AxisTypeNoAxis)) { + else if (type.testFlag(QAbstractAxis::AxisTypeNoAxis)) { //create separate axis foreach(QAbstractSeries *s, m_seriesList) { QAbstractAxis *axis = s->d_ptr->createDefaultAxis(orientation); diff --git a/src/xychart/qxyseries.cpp b/src/xychart/qxyseries.cpp index 5c2d89f2..88d18563 100644 --- a/src/xychart/qxyseries.cpp +++ b/src/xychart/qxyseries.cpp @@ -575,7 +575,7 @@ QAbstractAxis::AxisType QXYSeriesPrivate::defaultAxisType(Qt::Orientation orient QAbstractAxis* QXYSeriesPrivate::createDefaultAxis(Qt::Orientation orientation) const { Q_UNUSED(orientation); - return 0; + return new QValueAxis; } void QXYSeriesPrivate::initializeAnimations(QtCommercialChart::QChart::AnimationOptions options) |