From 88a7b44ee1361ceeff3b3322b67d21a6f0b0ad83 2012-06-26 17:40:17 From: Michal Klocek Date: 2012-06-26 17:40:17 Subject: [PATCH] Refactors QAxis to QAbstractAxis * adds subclasses QValuesAxis , QCategoriesAxis * barchart examples does not work correcly * failing tst_qchart * disabled custmchart example , tst_dataset * setNiceNumbers moved to TODO in examples and demos --- diff --git a/demos/chartthemes/themewidget.cpp b/demos/chartthemes/themewidget.cpp index 4afa544..0fb8391 100644 --- a/demos/chartthemes/themewidget.cpp +++ b/demos/chartthemes/themewidget.cpp @@ -40,6 +40,7 @@ #include #include #include +#include ThemeWidget::ThemeWidget(QWidget* parent) : QWidget(parent), @@ -177,8 +178,8 @@ QComboBox* ThemeWidget::createLegendBox() const QChart* ThemeWidget::createAreaChart() const { QChart *chart = new QChart(); - chart->axisX()->setNiceNumbersEnabled(true); - chart->axisY()->setNiceNumbersEnabled(true); +// chart->axisX()->setNiceNumbersEnabled(true); +// chart->axisY()->setNiceNumbersEnabled(true); chart->setTitle("Area chart"); // The lower series initialized to zero values @@ -208,15 +209,16 @@ QChart* ThemeWidget::createAreaChart() const QChart* ThemeWidget::createBarChart(int valueCount) const { QChart* chart = new QChart(); - chart->axisX()->setNiceNumbersEnabled(true); - chart->axisY()->setNiceNumbersEnabled(true); + //TODO: chart->axisX()->setNiceNumbersEnabled(true); + //TODO: chart->axisY()->setNiceNumbersEnabled(true); chart->setTitle("Bar chart"); QStringList categories; for (int i(0); i < valueCount; i++) categories << QString::number(i); - chart->axisX()->categories()->insert(categories); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(categories); QStackedBarSeries* series = new QStackedBarSeries(chart); for (int i(0); i < m_dataTable.count(); i++) { @@ -226,6 +228,7 @@ QChart* ThemeWidget::createBarChart(int valueCount) const series->append(set); } chart->addSeries(series); + chart->setAxisX(series,axis); return chart; } @@ -233,8 +236,8 @@ QChart* ThemeWidget::createBarChart(int valueCount) const QChart* ThemeWidget::createLineChart() const { QChart* chart = new QChart(); - chart->axisX()->setNiceNumbersEnabled(true); - chart->axisY()->setNiceNumbersEnabled(true); + //TODO: chart->axisX()->setNiceNumbersEnabled(true); + //TODO: chart->axisY()->setNiceNumbersEnabled(true); chart->setTitle("Line chart"); QString name("Series "); @@ -279,8 +282,8 @@ QChart* ThemeWidget::createPieChart() const QChart* ThemeWidget::createSplineChart() const { // spine chart QChart* chart = new QChart(); - chart->axisX()->setNiceNumbersEnabled(true); - chart->axisY()->setNiceNumbersEnabled(true); + //TODO: chart->axisX()->setNiceNumbersEnabled(true); + //TODO: chart->axisY()->setNiceNumbersEnabled(true); chart->setTitle("Spline chart"); QString name("Series "); int nameIndex = 0; @@ -298,8 +301,8 @@ QChart* ThemeWidget::createSplineChart() const QChart* ThemeWidget::createScatterChart() const { // scatter chart QChart* chart = new QChart(); - chart->axisX()->setNiceNumbersEnabled(true); - chart->axisY()->setNiceNumbersEnabled(true); + //TODO: chart->axisX()->setNiceNumbersEnabled(true); + //TODO: chart->axisY()->setNiceNumbersEnabled(true); chart->setTitle("Scatter chart"); QString name("Series "); int nameIndex = 0; diff --git a/demos/dynamicspline/chart.cpp b/demos/dynamicspline/chart.cpp index 3cf045d..fc50c82 100644 --- a/demos/dynamicspline/chart.cpp +++ b/demos/dynamicspline/chart.cpp @@ -19,7 +19,7 @@ ****************************************************************************/ #include "chart.h" -#include +#include #include #include @@ -44,7 +44,7 @@ Chart::Chart(QGraphicsItem *parent, Qt::WindowFlags wFlags) axisY()->setRange(-5, 5); axisX()->setRange(-9, 1); - axisX()->setTicksCount(11); + //TODO:axisX()->setTicksCount(11); m_timer.start(); } diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp index 724d8ee..d0f60f1 100644 --- a/examples/barchart/main.cpp +++ b/examples/barchart/main.cpp @@ -61,7 +61,6 @@ int main(int argc, char *argv[]) //![4] chart->legend()->setVisible(true); chart->legend()->setAlignment(Qt::AlignBottom); - chart->axisY()->setNiceNumbersEnabled(true); //![4] //![5] diff --git a/examples/barmodelmapper/tablewidget.cpp b/examples/barmodelmapper/tablewidget.cpp index 6727710..3a30fea 100644 --- a/examples/barmodelmapper/tablewidget.cpp +++ b/examples/barmodelmapper/tablewidget.cpp @@ -30,6 +30,7 @@ #include #include #include +#include QTCOMMERCIALCHART_USE_NAMESPACE @@ -87,8 +88,9 @@ TableWidget::TableWidget(QWidget *parent) //! [6] QStringList categories; categories << "April" << "May" << "June" << "July" << "August"; - - chart->axisX()->categories()->insert(categories); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(categories); + chart->setAxisX(series,axis); //! [6] //! [7] diff --git a/examples/examples.pro b/examples/examples.pro index 5ceb93a..8a92c8c 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -7,7 +7,7 @@ TEMPLATE = subdirs SUBDIRS += \ areachart \ barchart \ - customchart \ + #customchart \ linechart \ percentbarchart \ piechart \ diff --git a/examples/groupedbarchart/main.cpp b/examples/groupedbarchart/main.cpp index a31e51c..264532e 100644 --- a/examples/groupedbarchart/main.cpp +++ b/examples/groupedbarchart/main.cpp @@ -24,6 +24,7 @@ #include #include #include +#include QTCOMMERCIALCHART_USE_NAMESPACE @@ -64,13 +65,14 @@ int main(int argc, char *argv[]) //![4] QStringList categories; categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; - chart->axisX()->categories()->insert(categories); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(categories); + chart->setAxisX(series,axis); //![4] //![5] chart->legend()->setVisible(true); chart->legend()->setAlignment(Qt::AlignBottom); - chart->axisY()->setNiceNumbersEnabled(true); //![5] //![6] diff --git a/examples/legend/mainwidget.cpp b/examples/legend/mainwidget.cpp index cb2ddb5..9e31f5b 100644 --- a/examples/legend/mainwidget.cpp +++ b/examples/legend/mainwidget.cpp @@ -131,7 +131,7 @@ void MainWidget::createSeries() m_chart->legend()->setAlignment(Qt::AlignBottom); //![1] - m_chart->axisY()->setNiceNumbersEnabled(true); + //TODO:m_chart->axisY()->setNiceNumbersEnabled(true); m_chartView->setRenderHint(QPainter::Antialiasing); } diff --git a/examples/percentbarchart/main.cpp b/examples/percentbarchart/main.cpp index b30d456..5d95c90 100644 --- a/examples/percentbarchart/main.cpp +++ b/examples/percentbarchart/main.cpp @@ -24,6 +24,7 @@ #include #include #include +#include QTCOMMERCIALCHART_USE_NAMESPACE @@ -63,7 +64,9 @@ int main(int argc, char *argv[]) //![4] QStringList categories; categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; - chart->axisX()->categories()->insert(categories); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(categories); + chart->setAxisX(series,axis); //![4] //![5] diff --git a/examples/presenterchart/main.cpp b/examples/presenterchart/main.cpp index 0d14f8b..024257f 100644 --- a/examples/presenterchart/main.cpp +++ b/examples/presenterchart/main.cpp @@ -27,8 +27,8 @@ int main(int argc, char *argv[]) QApplication a(argc, argv); QMainWindow window; QChart* chart = new QChart(); - chart->axisX()->setNiceNumbersEnabled(true); - chart->axisY()->setNiceNumbersEnabled(true); + //TODO: chart->axisX()->setNiceNumbersEnabled(true); + //TODO: chart->axisY()->setNiceNumbersEnabled(true); ChartView chartView(chart,&window); chartView.setRenderHint(QPainter::Antialiasing); chart->setAnimationOptions(QChart::SeriesAnimations); diff --git a/examples/stackedbarchart/main.cpp b/examples/stackedbarchart/main.cpp index 9cd8338..8f5b5a9 100644 --- a/examples/stackedbarchart/main.cpp +++ b/examples/stackedbarchart/main.cpp @@ -24,6 +24,7 @@ #include #include #include +#include QTCOMMERCIALCHART_USE_NAMESPACE @@ -63,13 +64,14 @@ int main(int argc, char *argv[]) //![4] QStringList categories; categories << "Jan" << "Feb" << "Mar" << "Apr" << "May" << "Jun"; - chart->axisX()->categories()->insert(categories); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(categories); + chart->setAxisX(series,axis); //![4] //![5] chart->legend()->setVisible(true); chart->legend()->setAlignment(Qt::AlignBottom); - chart->axisY()->setNiceNumbersEnabled(true); //![5] //![6] diff --git a/examples/stackedbarchartdrilldown/drilldownchart.cpp b/examples/stackedbarchartdrilldown/drilldownchart.cpp index 4f8838b..9fd61f0 100644 --- a/examples/stackedbarchartdrilldown/drilldownchart.cpp +++ b/examples/stackedbarchartdrilldown/drilldownchart.cpp @@ -19,7 +19,7 @@ ****************************************************************************/ #include "drilldownchart.h" -#include +#include QTCOMMERCIALCHART_USE_NAMESPACE @@ -39,11 +39,12 @@ void DrilldownChart::changeSeries(DrilldownBarSeries *series) // Reset axis axisX()->setRange(0,0); - axisY()->setNiceNumbersEnabled(true); - axisX()->categories()->clear(); - axisX()->categories()->insert(m_currentSeries->categories()); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(m_currentSeries->categories()); addSeries(series); + setAxisX(series,axis); + setTitle(series->name()); } diff --git a/examples/stackedbarchartdrilldown/main.cpp b/examples/stackedbarchartdrilldown/main.cpp index b116f8d..d05a157 100644 --- a/examples/stackedbarchartdrilldown/main.cpp +++ b/examples/stackedbarchartdrilldown/main.cpp @@ -100,7 +100,7 @@ int main(int argc, char *argv[]) //! [6] drilldownChart->axisX()->setGridLineVisible(false); - drilldownChart->axisY()->setNiceNumbersEnabled(true); + //TODO: drilldownChart->axisY()->setNiceNumbersEnabled(true); drilldownChart->legend()->setVisible(true); drilldownChart->legend()->setAlignment(Qt::AlignBottom); //! [6] diff --git a/plugins/declarative/declarativechart.cpp b/plugins/declarative/declarativechart.cpp index 9709595..4ee7706 100644 --- a/plugins/declarative/declarativechart.cpp +++ b/plugins/declarative/declarativechart.cpp @@ -26,6 +26,7 @@ #include "declarativepieseries.h" #include "declarativesplineseries.h" #include "declarativescatterseries.h" +#include "qcategoriesaxis.h" QTCOMMERCIALCHART_BEGIN_NAMESPACE @@ -320,12 +321,12 @@ QString DeclarativeChart::title() return m_chart->title(); } -QAxis *DeclarativeChart::axisX() +QAbstractAxis *DeclarativeChart::axisX() { return m_chart->axisX(); } -QAxis *DeclarativeChart::axisY(QAbstractSeries *series) +QAbstractAxis *DeclarativeChart::axisY(QAbstractSeries *series) { return m_chart->axisY(series); } @@ -338,26 +339,43 @@ QLegend *DeclarativeChart::legend() QVariantList DeclarativeChart::axisXLabels() { QVariantList labels; - foreach (qreal value, m_chart->axisX()->categories()->values()) { - labels.append(value); - labels.append(m_chart->axisX()->categories()->label(value)); + + + if(m_chart->axisX()->type()==QAbstractAxis::AxisTypeCategories) { + + QCategoriesAxis* axis = static_cast(m_chart->axisX()); + + for(int i=0;icount();i++){ + labels.append(i); + labels.append(axis->at(i)); + } + } return labels; + } void DeclarativeChart::setAxisXLabels(QVariantList list) { QVariant value(QVariant::Invalid); - foreach (QVariant element, list) { - if (value.isValid() && element.type() == QVariant::String) { - m_chart->axisX()->categories()->insert(value.toDouble(), element.toString()); - value = QVariant(QVariant::Invalid); - } else { - if (element.canConvert(QVariant::Double)) + + if(m_chart->axisX()->type()==QAbstractAxis::AxisTypeCategories) { + QCategoriesAxis* axis = static_cast(m_chart->axisX()); + + foreach (QVariant element, list) { + if (value.isValid() && element.type() == QVariant::String) { + axis->append(element.toString()); + value = QVariant(QVariant::Invalid); + } + else { + if (element.canConvert(QVariant::Double)) value = element; + } + } + emit axisLabelsChanged(); } - emit axisLabelsChanged(); + } void DeclarativeChart::setTitleColor(QColor color) diff --git a/plugins/declarative/declarativechart.h b/plugins/declarative/declarativechart.h index feeab72..6cbf8ad 100644 --- a/plugins/declarative/declarativechart.h +++ b/plugins/declarative/declarativechart.h @@ -24,7 +24,6 @@ #include #include #include -#include QTCOMMERCIALCHART_BEGIN_NAMESPACE @@ -39,8 +38,8 @@ class DeclarativeChart : public QDeclarativeItem Q_PROPERTY(QString title READ title WRITE setTitle) Q_PROPERTY(QFont titleFont READ titleFont WRITE setTitleFont) Q_PROPERTY(QColor titleColor READ titleColor WRITE setTitleColor NOTIFY titleColorChanged) - Q_PROPERTY(QAxis *axisX READ axisX) - Q_PROPERTY(QAxis *axisY READ axisY) + Q_PROPERTY(QAbstractAxis *axisX READ axisX) + Q_PROPERTY(QAbstractAxis *axisY READ axisY) Q_PROPERTY(QLegend *legend READ legend) // TODO: how to define axis labels? This is not very convenient Q_PROPERTY(QVariantList axisXLabels READ axisXLabels WRITE setAxisXLabels NOTIFY axisLabelsChanged) @@ -103,7 +102,7 @@ public: DeclarativeChart::Animation animationOptions(); void setTitle(QString title); QString title(); - QAxis *axisX(); + QAbstractAxis *axisX(); QLegend *legend(); QVariantList axisXLabels(); void setAxisXLabels(QVariantList list); @@ -125,7 +124,7 @@ public: Q_INVOKABLE QAbstractSeries *series(int index); Q_INVOKABLE QAbstractSeries *series(QString seriesName); Q_INVOKABLE QAbstractSeries *createSeries(DeclarativeChart::SeriesType type, QString name = ""); - Q_INVOKABLE QAxis *axisY(QAbstractSeries *series = 0); + Q_INVOKABLE QAbstractAxis *axisY(QAbstractSeries *series = 0); Q_INVOKABLE void zoom(qreal factor); Q_INVOKABLE void scrollLeft(qreal pixels); Q_INVOKABLE void scrollRight(qreal pixels); diff --git a/plugins/declarative/plugin.cpp b/plugins/declarative/plugin.cpp index 587ffbf..202f418 100644 --- a/plugins/declarative/plugin.cpp +++ b/plugins/declarative/plugin.cpp @@ -21,6 +21,7 @@ #include #include #include "qchart.h" +#include "qabstractaxis.h" #include "qaxiscategories.h" #include "declarativechart.h" #include "declarativexypoint.h" @@ -87,7 +88,7 @@ public: QLatin1String("Trying to create uncreatable: BarModelMapper.")); qmlRegisterUncreatableType(uri, 1, 0, "AbstractSeries", QLatin1String("Trying to create uncreatable: AbstractSeries.")); - qmlRegisterUncreatableType(uri, 1, 0, "Axis", + qmlRegisterUncreatableType(uri, 1, 0, "Axis", QLatin1String("Trying to create uncreatable: Axis.")); qmlRegisterUncreatableType(uri, 1, 0, "PieModelMapper", QLatin1String("Trying to create uncreatable: PieModelMapper.")); diff --git a/src/axis/axis.pri b/src/axis/axis.pri index a9bd496..9b57643 100644 --- a/src/axis/axis.pri +++ b/src/axis/axis.pri @@ -5,7 +5,6 @@ SOURCES += \ $$PWD/chartaxis.cpp \ $$PWD/chartaxisx.cpp \ $$PWD/chartaxisy.cpp \ - $$PWD/qaxis.cpp \ $$PWD/qaxiscategories.cpp \ $$PWD/qcategoriesaxis.cpp \ $$PWD/qvaluesaxis.cpp \ @@ -15,14 +14,12 @@ PRIVATE_HEADERS += \ $$PWD/chartaxis_p.h \ $$PWD/chartaxisx_p.h \ $$PWD/chartaxisy_p.h \ - $$PWD/qaxis_p.h \ $$PWD/qaxiscategories_p.h \ $$PWD/qcategoriesaxis_p.h \ $$PWD/qvaluesaxis_p.h \ $$PWD/qabstractaxis_p.h PUBLIC_HEADERS += \ - $$PWD/qaxis.h \ $$PWD/qaxiscategories.h \ $$PWD/qcategoriesaxis.h \ $$PWD/qvaluesaxis.h \ diff --git a/src/axis/chartaxis.cpp b/src/axis/chartaxis.cpp index c5c63ce..8502f50 100644 --- a/src/axis/chartaxis.cpp +++ b/src/axis/chartaxis.cpp @@ -19,8 +19,8 @@ ****************************************************************************/ #include "chartaxis_p.h" -#include "qaxis.h" -#include "qaxis_p.h" +#include "qabstractaxis.h" +#include "qabstractaxis_p.h" #include "qaxiscategories_p.h" #include "chartpresenter_p.h" #include "chartanimator_p.h" @@ -30,7 +30,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -ChartAxis::ChartAxis(QAxis *axis,ChartPresenter *presenter) : Chart(presenter), +ChartAxis::ChartAxis(QAbstractAxis *axis,ChartPresenter *presenter) : Chart(presenter), m_chartAxis(axis), m_labelsAngle(0), m_grid(new QGraphicsItemGroup(presenter->rootItem())), @@ -52,7 +52,6 @@ ChartAxis::ChartAxis(QAxis *axis,ChartPresenter *presenter) : Chart(presenter), m_grid->setZValue(ChartPresenter::GridZValue); QObject::connect(m_chartAxis->d_ptr.data(),SIGNAL(updated()),this,SLOT(handleAxisUpdated())); - QObject::connect(m_chartAxis->categories()->d_ptr.data(),SIGNAL(updated()),this,SLOT(handleAxisCategoriesUpdated())); QGraphicsSimpleTextItem item; m_font = item.font(); @@ -150,7 +149,8 @@ bool ChartAxis::createLabels(QStringList &labels,qreal min, qreal max,int ticks) Q_ASSERT(max>min); Q_ASSERT(ticks>1); - QAxisCategories* categories = m_chartAxis->categories(); + //TODO:: QAxisCategories* categories = m_chartAxis->categories(); + QAxisCategories* categories = new QAxisCategories(); bool category = categories->count()>0; diff --git a/src/axis/chartaxis_p.h b/src/axis/chartaxis_p.h index a971bc4..0fa31a5 100644 --- a/src/axis/chartaxis_p.h +++ b/src/axis/chartaxis_p.h @@ -38,7 +38,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -class QAxis; +class QAbstractAxis; class ChartPresenter; class ChartAxis : public Chart @@ -47,7 +47,7 @@ class ChartAxis : public Chart public: enum AxisType{ X_AXIS,Y_AXIS }; - ChartAxis(QAxis *axis, ChartPresenter *presenter); + ChartAxis(QAbstractAxis *axis, ChartPresenter *presenter); ~ChartAxis(); virtual AxisType axisType() const = 0; @@ -107,7 +107,7 @@ private: void axisSelected(); protected: - QAxis* m_chartAxis; + QAbstractAxis* m_chartAxis; QRectF m_rect; int m_labelsAngle; QScopedPointer m_grid; diff --git a/src/axis/chartaxisx.cpp b/src/axis/chartaxisx.cpp index 24b81f3..a33ac14 100644 --- a/src/axis/chartaxisx.cpp +++ b/src/axis/chartaxisx.cpp @@ -19,8 +19,7 @@ ****************************************************************************/ #include "chartaxisx_p.h" -#include "qaxis.h" -#include "qaxis_p.h" +#include "qabstractaxis.h" #include "qaxiscategories_p.h" #include "chartpresenter_p.h" #include "chartanimator_p.h" @@ -32,7 +31,7 @@ static int label_padding = 5; QTCOMMERCIALCHART_BEGIN_NAMESPACE -ChartAxisX::ChartAxisX(QAxis *axis,ChartPresenter *presenter) : ChartAxis(axis,presenter) +ChartAxisX::ChartAxisX(QAbstractAxis *axis,ChartPresenter *presenter) : ChartAxis(axis,presenter) { } diff --git a/src/axis/chartaxisx_p.h b/src/axis/chartaxisx_p.h index 63b666d..5e23ce4 100644 --- a/src/axis/chartaxisx_p.h +++ b/src/axis/chartaxisx_p.h @@ -34,13 +34,13 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -class QAxis; +class QAbstractAxis; class ChartPresenter; class ChartAxisX : public ChartAxis { public: - ChartAxisX(QAxis *axis, ChartPresenter *presenter); + ChartAxisX(QAbstractAxis *axis, ChartPresenter *presenter); ~ChartAxisX(); AxisType axisType() const { return X_AXIS;} diff --git a/src/axis/chartaxisy.cpp b/src/axis/chartaxisy.cpp index ae909a3..9020f46 100644 --- a/src/axis/chartaxisy.cpp +++ b/src/axis/chartaxisy.cpp @@ -19,8 +19,7 @@ ****************************************************************************/ #include "chartaxisy_p.h" -#include "qaxis.h" -#include "qaxis_p.h" +#include "qabstractaxis.h" #include "qaxiscategories_p.h" #include "chartpresenter_p.h" #include "chartanimator_p.h" @@ -32,7 +31,7 @@ static int label_padding = 5; QTCOMMERCIALCHART_BEGIN_NAMESPACE -ChartAxisY::ChartAxisY(QAxis *axis,ChartPresenter *presenter) : ChartAxis(axis,presenter) +ChartAxisY::ChartAxisY(QAbstractAxis *axis,ChartPresenter *presenter) : ChartAxis(axis,presenter) { } diff --git a/src/axis/chartaxisy_p.h b/src/axis/chartaxisy_p.h index d192fa8..342ede1 100644 --- a/src/axis/chartaxisy_p.h +++ b/src/axis/chartaxisy_p.h @@ -34,13 +34,13 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -class QAxis; +class QAbstractAxis; class ChartPresenter; class ChartAxisY : public ChartAxis { public: - ChartAxisY(QAxis *axis, ChartPresenter *presenter); + ChartAxisY(QAbstractAxis *axis, ChartPresenter *presenter); ~ChartAxisY(); AxisType axisType() const { return Y_AXIS;} diff --git a/src/axis/qabstractaxis.h b/src/axis/qabstractaxis.h index 0d7dcbc..a49c39d 100644 --- a/src/axis/qabstractaxis.h +++ b/src/axis/qabstractaxis.h @@ -24,6 +24,7 @@ #include #include #include +#include QTCOMMERCIALCHART_BEGIN_NAMESPACE @@ -101,7 +102,12 @@ public: void setShadesBorderColor(QColor color); QColor shadesBorderColor() const; - int ticksCount() const; + //range handling + virtual void setMin(QVariant min) = 0; + virtual void setMax(QVariant max) = 0 ; + virtual void setRange(QVariant min, QVariant max) = 0; + + virtual int ticksCount() const = 0; void show(); void hide(); @@ -110,18 +116,17 @@ Q_SIGNALS: void visibleChanged(bool visible); void labelsVisibleChanged(bool visible); void gridVisibleChanged(bool visible); - void rangeChanged(); void colorChanged(QColor color); void labelsColorChanged(QColor color); void shadesVisibleChanged(bool visible); void shadesColorChanged(QColor color); void shadesBorderColorChanged(QColor color); - void minChanged(); - void maxChanged(); protected: QScopedPointer d_ptr; - Q_DISABLE_COPY(QAbstractAxis) + Q_DISABLE_COPY(QAbstractAxis); + friend class ChartDataSet; + friend class ChartAxis; }; QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/axis/qaxis.cpp b/src/axis/qaxis.cpp deleted file mode 100644 index 517f1c0..0000000 --- a/src/axis/qaxis.cpp +++ /dev/null @@ -1,680 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc -** All rights reserved. -** For any questions to Digia, please use contact form at http://qt.digia.com -** -** This file is part of the Qt Commercial Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** contact form at http://qt.digia.com -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qaxis.h" -#include "qaxis_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QAxis - \brief The QAxis class is used for manipulating chart's axis - and for adding optional axes to the chart. - \mainclass - - There is only one x Axis, however there can be multiple y axes. - Each chart series can be bound to exactly one Y axis and the shared common X axis. - Axis can be setup to show axis line with tick marks, grid lines and shades. -*/ - -/*! - \qmlclass Axis QAxis - \brief The Axis element is used for manipulating chart's axes - - There is only one x Axis, however there can be multiple y axes on a ChartView. - Each chart series can be bound to exactly one Y axis and the shared common X axis. - Axis can be setup to show axis line with tick marks, grid lines and shades. - - To access Axes you can use ChartView API. For example: - \code - ChartView { - axisX.min: 0 - axisX.max: 3 - axisX.ticksCount: 4 - axisY.min: 0 - axisY.max: 4 - // Add a few series... - } - \endcode -*/ - -/*! - \property QAxis::labelsVisible - Defines if axis labels are visible. -*/ -/*! - \qmlproperty bool Axis::labelsVisible - Defines if axis labels are visible. -*/ - -/*! - \property QAxis::min - Defines the minimum value on the axis. -*/ -/*! - \qmlproperty real Axis::min - Defines the minimum value on the axis. -*/ - -/*! - \property QAxis::max - Defines the maximum value on the axis. -*/ -/*! - \qmlproperty real Axis::max - Defines the maximum value on the axis. -*/ - -/*! - \property QAxis::visible - The visibility of the axis. -*/ -/*! - \qmlproperty bool Axis::visible - The visibility of the axis. -*/ - -/*! - \property QAxis::gridVisible - The visibility of the grid lines. -*/ -/*! - \qmlproperty bool Axis::gridVisible - The visibility of the grid lines. -*/ - -/*! - \property QAxis::color - The color of the axis and ticks. -*/ -/*! - \qmlproperty color Axis::color - The color of the axis and ticks. -*/ - -/*! - \property QAxis::labelsFont - The font of the axis labels. -*/ -/*! - \qmlproperty Font Axis::labelsFont - The font of the axis labels. - - See the \l {Font} {QML Font Element} for detailed documentation. -*/ - -/*! - \property QAxis::labelsColor - The color of the axis labels. -*/ -/*! - \qmlproperty color Axis::labelsColor - The color of the axis labels. -*/ - -/*! - \property QAxis::labelsAngle - The angle of the axis labels in degrees. -*/ -/*! - \qmlproperty int Axis::labelsAngle - The angle of the axis labels in degrees. -*/ - -/*! - \property QAxis::shadesVisible - The visibility of the axis shades. -*/ -/*! - \qmlproperty bool Axis::shadesVisible - The visibility of the axis shades. -*/ - -/*! - \property QAxis::shadesColor - The fill (brush) color of the axis shades. -*/ -/*! - \qmlproperty color Axis::shadesColor - The fill (brush) color of the axis shades. -*/ - -/*! - \property QAxis::shadesBorderColor - The border (pen) color of the axis shades. -*/ -/*! - \qmlproperty color Axis::shadesBorderColor - The border (pen) color of the axis shades. -*/ - -/*! - \property QAxis::ticksCount - The number of tick marks for the axis. -*/ -/*! - \qmlproperty int Axis::ticksCount - The number of tick marks for the axis. -*/ - -/*! - \property QAxis::niceNumbersEnabled - Whether the nice numbers algorithm is enabled or not for the axis. -*/ -/*! - \qmlproperty bool Axis::niceNumbersEnabled - Whether the nice numbers algorithm is enabled or not for the axis. -*/ - -/*! - \fn void QAxis::visibleChanged(bool) - Visiblity of the axis has changed to \a visible. -*/ - -/*! - \fn void QAxis::labelsVisibleChanged(bool) - Visiblity of the labels of the axis has changed to \a visible. -*/ - -/*! - \fn void QAxis::gridVisibleChanged(bool) - Visiblity of the grid lines of the axis has changed to \a visible. -*/ - -/*! - \fn void QAxis::minChanged(qreal min) - Axis emits signal when \a min of axis has changed. -*/ -/*! - \qmlsignal Axis::onMinChanged(real min) - Axis emits signal when \a min of axis has changed. This may happen for example if you zoom, scroll or - enable nice numbers algorithm. -*/ - -/*! - \fn void QAxis::maxChanged(qreal max) - Axis emits signal when \a max of axis has changed. -*/ -/*! - \qmlsignal Axis::onMaxChanged(real max) - Axis emits signal when \a max of axis has changed. This may happen for example if you zoom, scroll or - enable nice numbers algorithm. -*/ - -/*! - \fn void QAxis::rangeChanged(qreal min, qreal max) - Axis emits signal when \a min or \a max of axis has changed. -*/ -/*! - \qmlsignal Axis::onRangeChanged(real min, real max) - Axis emits signal when \a min or \a max of axis has changed. This may happen for example if you zoom, scroll or - enable nice numbers algorithm. -*/ - -/*! - \fn QChartAxisCategories* QAxis::categories() - Returns pointer to the list of categories which correspond to the values on the axis. -*/ - -/*! - \fn void QAxis::colorChanged(QColor) - Emitted if the \a color of the axis is changed. -*/ - -/*! - \fn void QAxis::labelsColorChanged(QColor) - Emitted if the \a color of the axis labels is changed. -*/ - -/*! - \fn void QAxis::shadesVisibleChanged(bool) - Emitted if the visibility of the axis shades is changed to \a visible. -*/ - -/*! - \fn void QAxis::shadesColorChanged(QColor) - Emitted if the \a color of the axis shades is changed. -*/ - -/*! - \fn void QAxis::shadesBorderColorChanged(QColor) - Emitted if the border \a color of the axis shades is changed. -*/ - -/*! - Constructs new axis object which is a child of \a parent. Ownership is taken by - QChart when axis added. -*/ -QAxis::QAxis(QObject *parent) : QObject(parent), -d_ptr(new QAxisPrivate(this)) -{ - -} - -/*! - Destructor of the axis object. When axis is added to chart, chart object takes ownership. -*/ - -QAxis::~QAxis() -{ -} - -/*! - Sets \a pen used to draw axis line and ticks. - */ -void QAxis::setAxisPen(const QPen &pen) -{ - if (d_ptr->m_axisPen!=pen) { - d_ptr->m_axisPen = pen; - emit d_ptr->updated(); - } -} - -/*! - Returns pen used to draw axis and ticks. -*/ -QPen QAxis::axisPen() const -{ - return d_ptr->m_axisPen; -} - -void QAxis::setAxisPenColor(QColor color) -{ - QPen p = d_ptr->m_axisPen; - if (p.color() != color) { - p.setColor(color); - setAxisPen(p); - emit colorChanged(color); - } -} - -QColor QAxis::axisPenColor() const -{ - return d_ptr->m_axisPen.color(); -} - -/*! - Sets if axis and ticks are \a visible. - */ -void QAxis::setAxisVisible(bool visible) -{ - if (d_ptr->m_axisVisible != visible) { - d_ptr->m_axisVisible = visible; - emit d_ptr->updated(); - emit visibleChanged(visible); - } -} - -bool QAxis::isAxisVisible() const -{ - return d_ptr->m_axisVisible; -} - -void QAxis::setGridLineVisible(bool visible) -{ - if (d_ptr->m_gridLineVisible != visible) { - d_ptr->m_gridLineVisible = visible; - emit d_ptr->updated(); - emit gridVisibleChanged(visible); - } -} - -bool QAxis::isGridLineVisible() const -{ - return d_ptr->m_gridLineVisible; -} - -/*! - Sets \a pen used to draw grid line. -*/ -void QAxis::setGridLinePen(const QPen &pen) -{ - if (d_ptr->m_gridLinePen != pen) { - d_ptr->m_gridLinePen = pen; - emit d_ptr->updated(); - } -} - -/*! - Returns pen used to draw grid. -*/ -QPen QAxis::gridLinePen() const -{ - return d_ptr->m_gridLinePen; -} - -void QAxis::setLabelsVisible(bool visible) -{ - if (d_ptr->m_labelsVisible != visible) { - d_ptr->m_labelsVisible = visible; - emit d_ptr->updated(); - emit labelsVisibleChanged(visible); - } -} - -bool QAxis::labelsVisible() const -{ - return d_ptr->m_labelsVisible; -} - -/*! - Sets \a pen used to draw labels. -*/ -void QAxis::setLabelsPen(const QPen &pen) -{ - if (d_ptr->m_labelsPen != pen) { - d_ptr->m_labelsPen = pen; - emit d_ptr->updated(); - } -} - -/*! - Returns the pen used to labels. -*/ -QPen QAxis::labelsPen() const -{ - return d_ptr->m_labelsPen; -} - -/*! - Sets \a brush used to draw labels. - */ -void QAxis::setLabelsBrush(const QBrush &brush) -{ - if (d_ptr->m_labelsBrush != brush) { - d_ptr->m_labelsBrush = brush; - emit d_ptr->updated(); - } -} - -/*! - Returns brush used to draw labels. -*/ -QBrush QAxis::labelsBrush() const -{ - return d_ptr->m_labelsBrush; -} - -/*! - Sets \a font used to draw labels. -*/ -void QAxis::setLabelsFont(const QFont &font) -{ - if (d_ptr->m_labelsFont != font) { - d_ptr->m_labelsFont = font; - emit d_ptr->updated(); - } -} - -/*! - Returns font used to draw labels. -*/ -QFont QAxis::labelsFont() const -{ - return d_ptr->m_labelsFont; -} - -void QAxis::setLabelsAngle(int angle) -{ - if (d_ptr->m_labelsAngle != angle) { - d_ptr->m_labelsAngle = angle; - emit d_ptr->updated(); - } -} - -int QAxis::labelsAngle() const -{ - return d_ptr->m_labelsAngle; -} - -void QAxis::setLabelsColor(QColor color) -{ - QBrush b = d_ptr->m_labelsBrush; - if (b.color() != color) { - b.setColor(color); - setLabelsBrush(b); - emit labelsColorChanged(color); - } -} - -QColor QAxis::labelsColor() const -{ - return d_ptr->m_labelsBrush.color(); -} - -void QAxis::setShadesVisible(bool visible) -{ - if (d_ptr->m_shadesVisible != visible) { - d_ptr->m_shadesVisible = visible; - emit d_ptr->updated(); - emit shadesVisibleChanged(visible); - } -} - -bool QAxis::shadesVisible() const -{ - return d_ptr->m_shadesVisible; -} - -/*! - Sets \a pen used to draw shades. -*/ -void QAxis::setShadesPen(const QPen &pen) -{ - if (d_ptr->m_shadesPen != pen) { - d_ptr->m_shadesPen = pen; - emit d_ptr->updated(); - } -} - -/*! - Returns pen used to draw shades. -*/ -QPen QAxis::shadesPen() const -{ - return d_ptr->m_shadesPen; -} - -/*! - Sets \a brush used to draw shades. -*/ -void QAxis::setShadesBrush(const QBrush &brush) -{ - if (d_ptr->m_shadesBrush != brush) { - d_ptr->m_shadesBrush = brush; - emit d_ptr->updated(); - emit shadesColorChanged(brush.color()); - } -} - -/*! - \brief Returns brush used to draw shades. -*/ -QBrush QAxis::shadesBrush() const -{ - return d_ptr->m_shadesBrush; -} - -void QAxis::setShadesColor(QColor color) -{ - QBrush b = d_ptr->m_shadesBrush; - b.setColor(color); - setShadesBrush(b); -} - -QColor QAxis::shadesColor() const -{ - return d_ptr->m_shadesBrush.color(); -} - -void QAxis::setShadesBorderColor(QColor color) -{ - QPen p = d_ptr->m_shadesPen; - p.setColor(color); - setShadesPen(p); -} - -QColor QAxis::shadesBorderColor() const -{ - return d_ptr->m_shadesPen.color(); -} - -void QAxis::setMin(qreal min) -{ - setRange(min,d_ptr->m_max); -} - -qreal QAxis::min() const -{ - return d_ptr->m_min; -} - -void QAxis::setMax(qreal max) -{ - setRange(d_ptr->m_min,max); -} - -qreal QAxis::max() const -{ - return d_ptr->m_max; -} - -/*! - Sets range from \a min to \a max on the axis. -*/ -void QAxis::setRange(qreal min, qreal max) -{ - bool changed = false; - if (!qFuzzyIsNull(d_ptr->m_min - min)) { - d_ptr->m_min = min; - changed = true; - emit minChanged(min); - } - - if (!qFuzzyIsNull(d_ptr->m_max - max)) { - d_ptr->m_max = max; - changed = true; - emit maxChanged(max); - } - - if (changed) { - emit rangeChanged(d_ptr->m_min,d_ptr->m_max); - emit d_ptr->changed(d_ptr->m_min, d_ptr->m_max, d_ptr->m_ticksCount, d_ptr->m_niceNumbers); - } -} - -/*! - Sets \a count for ticks on the axis. -*/ -void QAxis::setTicksCount(int count) -{ - if (d_ptr->m_ticksCount != count) { - d_ptr->m_ticksCount = count; - emit d_ptr->changed(d_ptr->m_min, d_ptr->m_max, d_ptr->m_ticksCount, d_ptr->m_niceNumbers); - } -} - -/*! - \fn int QAxis::ticksCount() const - Return number of ticks on the axis -*/ -int QAxis::ticksCount() const -{ - return d_ptr->m_ticksCount; -} - -/*! - Sets axis, shades, labels and grid lines to be visible. -*/ -void QAxis::show() -{ - d_ptr->m_axisVisible=true; - d_ptr->m_gridLineVisible=true; - d_ptr->m_labelsVisible=true; - d_ptr->m_shadesVisible=true; - emit d_ptr->updated(); -} - -/*! - Sets axis, shades, labels and grid lines to not be visible. -*/ -void QAxis::hide() -{ - d_ptr->m_axisVisible = false; - d_ptr->m_gridLineVisible = false; - d_ptr->m_labelsVisible = false; - d_ptr->m_shadesVisible = false; - emit d_ptr->updated(); -} - -void QAxis::setNiceNumbersEnabled(bool enable) -{ - if (d_ptr->m_niceNumbers != enable){ - d_ptr->m_niceNumbers = enable; - emit d_ptr->changed(d_ptr->m_min, d_ptr->m_max, d_ptr->m_ticksCount, d_ptr->m_niceNumbers); - } -} - -bool QAxis::niceNumbersEnabled() const -{ - return d_ptr->m_niceNumbers; -} - -QAxisCategories* QAxis::categories() -{ - return &d_ptr->m_category; -} - -///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QAxisPrivate::QAxisPrivate(QAxis* q): - q_ptr(q), - m_axisVisible(true), - m_gridLineVisible(true), - m_labelsVisible(true), - m_labelsAngle(0), - m_shadesVisible(false), - m_shadesBrush(Qt::SolidPattern), - m_shadesOpacity(1.0), - m_min(0), - m_max(0), - m_ticksCount(5), - m_niceNumbers(false) -{ - -} - -QAxisPrivate::~QAxisPrivate() -{ - -} - -void QAxisPrivate::handleAxisRangeChanged(qreal min, qreal max,int count) -{ - q_ptr->setRange(min,max); - q_ptr->setTicksCount(count); -} - -QTCOMMERCIALCHART_END_NAMESPACE - -QTCOMMERCIALCHART_USE_NAMESPACE - -#include "moc_qaxis.cpp" -#include "moc_qaxis_p.cpp" diff --git a/src/axis/qaxis.h b/src/axis/qaxis.h deleted file mode 100644 index 0bbedbb..0000000 --- a/src/axis/qaxis.h +++ /dev/null @@ -1,136 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc -** All rights reserved. -** For any questions to Digia, please use contact form at http://qt.digia.com -** -** This file is part of the Qt Commercial Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** contact form at http://qt.digia.com -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QAXIS_H -#define QAXIS_H - -#include -#include -#include -#include - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QAxisPrivate; - -class QTCOMMERCIALCHART_EXPORT QAxis : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool visible READ isAxisVisible WRITE setAxisVisible NOTIFY visibleChanged) - Q_PROPERTY(QColor color READ axisPenColor WRITE setAxisPenColor NOTIFY colorChanged) - Q_PROPERTY(bool labelsVisible READ labelsVisible WRITE setLabelsVisible NOTIFY labelsVisibleChanged) - Q_PROPERTY(int labelsAngle READ labelsAngle WRITE setLabelsAngle) - Q_PROPERTY(QFont labelsFont READ labelsFont WRITE setLabelsFont) - Q_PROPERTY(QColor labelsColor READ labelsColor WRITE setLabelsColor NOTIFY labelsColorChanged) - Q_PROPERTY(bool gridVisible READ isGridLineVisible WRITE setGridLineVisible NOTIFY gridVisibleChanged) - Q_PROPERTY(bool shadesVisible READ shadesVisible WRITE setShadesVisible NOTIFY shadesVisibleChanged) - Q_PROPERTY(QColor shadesColor READ shadesColor WRITE setShadesColor NOTIFY shadesColorChanged) - Q_PROPERTY(QColor shadesBorderColor READ shadesBorderColor WRITE setShadesBorderColor NOTIFY shadesBorderColorChanged) - Q_PROPERTY(qreal min READ min WRITE setMin NOTIFY minChanged) - Q_PROPERTY(qreal max READ max WRITE setMax NOTIFY maxChanged) - Q_PROPERTY(int ticksCount READ ticksCount WRITE setTicksCount) - Q_PROPERTY(bool niceNumbersEnabled READ niceNumbersEnabled WRITE setNiceNumbersEnabled) - -public: - - QAxis(QObject *parent =0); - ~QAxis(); - - //axis handling - bool isAxisVisible() const; - void setAxisVisible(bool visible = true); - void setAxisPen(const QPen &pen); - QPen axisPen() const; - void setAxisPenColor(QColor color); - QColor axisPenColor() const; - - //grid handling - bool isGridLineVisible() const; - void setGridLineVisible(bool visible = true); - void setGridLinePen(const QPen &pen); - QPen gridLinePen() const; - - //labels handling - bool labelsVisible() const; - void setLabelsVisible(bool visible = true); - void setLabelsPen(const QPen &pen); - QPen labelsPen() const; - void setLabelsBrush(const QBrush &brush); - QBrush labelsBrush() const; - void setLabelsFont(const QFont &font); - QFont labelsFont() const; - void setLabelsAngle(int angle); - int labelsAngle() const; - void setLabelsColor(QColor color); - QColor labelsColor() const; - - //shades handling - bool shadesVisible() const; - void setShadesVisible(bool visible = true); - void setShadesPen(const QPen &pen); - QPen shadesPen() const; - void setShadesBrush(const QBrush &brush); - QBrush shadesBrush() const; - void setShadesColor(QColor color); - QColor shadesColor() const; - void setShadesBorderColor(QColor color); - QColor shadesBorderColor() const; - - //range handling - void setMin(qreal min); - qreal min() const; - void setMax(qreal max); - qreal max() const; - void setRange(qreal min, qreal max); - - //ticks handling - void setTicksCount(int count); - int ticksCount() const; - - void setNiceNumbersEnabled(bool enable = true); - bool niceNumbersEnabled() const; - - QAxisCategories* categories(); - - void show(); - void hide(); - -Q_SIGNALS: - void visibleChanged(bool visible); - void labelsVisibleChanged(bool visible); - void gridVisibleChanged(bool visible); - void rangeChanged(qreal min, qreal max); - void colorChanged(QColor color); - void labelsColorChanged(QColor color); - void shadesVisibleChanged(bool visible); - void shadesColorChanged(QColor color); - void shadesBorderColorChanged(QColor color); - void minChanged(qreal min); - void maxChanged(qreal max); - -private: - QScopedPointer d_ptr; - Q_DISABLE_COPY(QAxis) - friend class ChartDataSet; - friend class ChartAxis; -}; - -QTCOMMERCIALCHART_END_NAMESPACE -#endif /* QCHARTAXIS_H_ */ diff --git a/src/axis/qaxis_p.h b/src/axis/qaxis_p.h deleted file mode 100644 index df7869d..0000000 --- a/src/axis/qaxis_p.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc -** All rights reserved. -** For any questions to Digia, please use contact form at http://qt.digia.com -** -** This file is part of the Qt Commercial Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. -** -** If you have questions regarding the use of this file, please use -** contact form at http://qt.digia.com -** $QT_END_LICENSE$ -** -****************************************************************************/ - -// W A R N I N G -// ------------- -// -// This file is not part of the QtCommercial Chart API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. - -#ifndef QAXIS_P_H -#define QAXIS_P_H - -#include "qaxis.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QAxisPrivate : public QObject -{ - Q_OBJECT -public: - QAxisPrivate(QAxis *q); - ~QAxisPrivate(); - -Q_SIGNALS: - void updated(); - void changed(qreal min, qreal max, int tickCount,bool niceNumbers); - -public Q_SLOTS: - void handleAxisRangeChanged(qreal min, qreal max,int count); - -private: - QAxis *q_ptr; - - bool m_axisVisible; - QPen m_axisPen; - QBrush m_axisBrush; - - bool m_gridLineVisible; - QPen m_gridLinePen; - - bool m_labelsVisible; - QPen m_labelsPen; - QBrush m_labelsBrush; - QFont m_labelsFont; - int m_labelsAngle; - - bool m_shadesVisible; - QPen m_shadesPen; - QBrush m_shadesBrush; - qreal m_shadesOpacity; - - qreal m_min; - qreal m_max; - - int m_ticksCount; - QAxisCategories m_category; - - bool m_niceNumbers; - - friend class QAxis; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif diff --git a/src/axis/qcategoriesaxis.cpp b/src/axis/qcategoriesaxis.cpp index 12f3c30..e331638 100644 --- a/src/axis/qcategoriesaxis.cpp +++ b/src/axis/qcategoriesaxis.cpp @@ -42,7 +42,7 @@ QCategoriesAxis::QCategoriesAxis(QCategoriesAxisPrivate &d,QObject *parent):QAbs /*! Appends \a categories to axis */ -void QCategoriesAxis::append(QStringList &categories) +void QCategoriesAxis::append(const QStringList &categories) { Q_D(QCategoriesAxis); d->m_categories.append(categories); @@ -94,9 +94,9 @@ void QCategoriesAxis::clear() /*! Returns number of categories. */ -int QCategoriesAxis::count() +int QCategoriesAxis::count() const { - Q_D(QCategoriesAxis); + Q_D(const QCategoriesAxis); return d->m_categories.count(); } @@ -153,7 +153,25 @@ QAbstractAxis::AxisType QCategoriesAxis::type() const return AxisTypeCategories; } +void QCategoriesAxis::setMin(QVariant min) +{ + setMin(min.toString()); +} + +void QCategoriesAxis::setMax(QVariant max) +{ + setMax(max.toString()); +} + +void QCategoriesAxis::setRange(QVariant min, QVariant max) +{ + setRange(min.toString(),max.toString()); +} +int QCategoriesAxis::ticksCount() const +{ + return count(); +} ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QCategoriesAxisPrivate::QCategoriesAxisPrivate(QCategoriesAxis* q): diff --git a/src/axis/qcategoriesaxis.h b/src/axis/qcategoriesaxis.h index 9457597..9774e26 100644 --- a/src/axis/qcategoriesaxis.h +++ b/src/axis/qcategoriesaxis.h @@ -40,12 +40,12 @@ protected: public: AxisType type() const; - void append(QStringList &categories); + void append(const QStringList &categories); void append(const QString &category); void remove(const QString &category); void insert(int index, const QString &category); void clear(); - int count(); + int count() const; QString at(int index) const; @@ -54,6 +54,13 @@ public: void setMax(QString maxCategory); void setRange(QString minCategory, QString maxCategory); +private: + //range handling + void setMin(QVariant min); + void setMax(QVariant max); + void setRange(QVariant min, QVariant max); + int ticksCount() const; + Q_SIGNALS: void categoriesChanged(); diff --git a/src/axis/qvaluesaxis.cpp b/src/axis/qvaluesaxis.cpp index 17d233a..f39e63b 100644 --- a/src/axis/qvaluesaxis.cpp +++ b/src/axis/qvaluesaxis.cpp @@ -130,6 +130,30 @@ QAbstractAxis::AxisType QValuesAxis::type() const return AxisTypeValues; } +void QValuesAxis::setMin(QVariant min) +{ + bool ok; + qreal value = min.toReal(&ok); + if(ok) setMin(value); +} + +void QValuesAxis::setMax(QVariant max) +{ + bool ok; + qreal value = max.toReal(&ok); + if(ok) setMax(value); +} + +void QValuesAxis::setRange(QVariant min, QVariant max) +{ + bool ok1; + bool ok2; + qreal value1 = min.toReal(&ok1); + qreal value2 = max.toReal(&ok2); + if(ok1&&ok2) setRange(value1,value2); +} + + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QValuesAxisPrivate::QValuesAxisPrivate(QValuesAxis* q): diff --git a/src/axis/qvaluesaxis.h b/src/axis/qvaluesaxis.h index a1d1b64..da0dd4e 100644 --- a/src/axis/qvaluesaxis.h +++ b/src/axis/qvaluesaxis.h @@ -59,6 +59,12 @@ public: void setNiceNumbersEnabled(bool enable = true); bool niceNumbersEnabled() const; +private: + //range handling + void setMin(QVariant min); + void setMax(QVariant max); + void setRange(QVariant min, QVariant max); + Q_SIGNALS: void minChanged(qreal min); void maxChanged(qreal max); diff --git a/src/chartdataset.cpp b/src/chartdataset.cpp index ceda6c6..5ebed62 100644 --- a/src/chartdataset.cpp +++ b/src/chartdataset.cpp @@ -20,8 +20,8 @@ #include "chartdataset_p.h" #include "qchart.h" -#include "qaxis.h" -#include "qaxis_p.h" +#include "qvaluesaxis.h" +#include "qvaluesaxis_p.h" #include "qabstractseries_p.h" #include "qbarseries.h" #include "qstackedbarseries.h" @@ -31,8 +31,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE ChartDataSet::ChartDataSet(QChart *parent):QObject(parent), - m_axisX(new QAxis(this)), - m_axisY(new QAxis(this)), + m_axisX(new QValuesAxis(this)), + m_axisY(new QValuesAxis(this)), m_domainIndex(0), m_axisXInitialized(false), m_axisYInitialized(false) @@ -51,11 +51,12 @@ ChartDataSet::~ChartDataSet() removeAllSeries(); } -void ChartDataSet::addSeries(QAbstractSeries* series, QAxis *axisY) +void ChartDataSet::addSeries(QAbstractSeries* series) { - if(axisY==0) axisY = m_axisY; + //TODO: if(axisY==0) axisY = m_axisY; + QAbstractAxis* axisY = m_axisY; - QAxis* axis = m_seriesAxisMap.value(series); + QAbstractAxis* axis = m_seriesAxisMap.value(series); if(axis) { qWarning() << "Can not add series. Series already on the chart"; @@ -116,9 +117,9 @@ void ChartDataSet::addSeries(QAbstractSeries* series, QAxis *axisY) } -QAxis* ChartDataSet::removeSeries(QAbstractSeries* series) +QAbstractAxis* ChartDataSet::removeSeries(QAbstractSeries* series) { - QAxis* axis = m_seriesAxisMap.value(series); + QAbstractAxis* axis = m_seriesAxisMap.value(series); if(!axis){ qWarning()<<"Can not remove series. Series not found on the chart."; @@ -137,7 +138,7 @@ QAxis* ChartDataSet::removeSeries(QAbstractSeries* series) series->d_ptr->m_chart = 0; series->d_ptr->m_dataset = 0; - QList axes = m_seriesAxisMap.values(); + QList axes = m_seriesAxisMap.values(); int i = axes.indexOf(axis); @@ -165,9 +166,9 @@ QAxis* ChartDataSet::removeSeries(QAbstractSeries* series) void ChartDataSet::removeAllSeries() { QList series = m_seriesAxisMap.keys(); - QList axes; + QList axes; foreach(QAbstractSeries *s , series) { - QAxis* axis = removeSeries(s); + QAbstractAxis* axis = removeSeries(s); if(axis==axisY()) continue; int i = axes.indexOf(axis); if(i==-1){ @@ -184,7 +185,7 @@ void ChartDataSet::removeAllSeries() void ChartDataSet::zoomInDomain(const QRectF& rect, const QSizeF& size) { - QMapIterator i(m_axisDomainMap); + QMapIterator i(m_axisDomainMap); //main domain has to be the last one; Domain *domain = m_axisDomainMap.value(axisY()); Q_ASSERT(domain); @@ -198,7 +199,7 @@ void ChartDataSet::zoomInDomain(const QRectF& rect, const QSizeF& size) void ChartDataSet::zoomOutDomain(const QRectF& rect, const QSizeF& size) { - QMapIterator i(m_axisDomainMap); + QMapIterator i(m_axisDomainMap); //main domain has to be the last one; Domain *domain = m_axisDomainMap.value(axisY()); Q_ASSERT(domain); @@ -213,7 +214,7 @@ void ChartDataSet::zoomOutDomain(const QRectF& rect, const QSizeF& size) int ChartDataSet::seriesCount(QAbstractSeries::SeriesType type) { int count=0; - QMapIterator i(m_seriesAxisMap); + QMapIterator i(m_seriesAxisMap); while (i.hasNext()) { i.next(); if(i.key()->type()==type) count++; @@ -232,7 +233,7 @@ int ChartDataSet::seriesIndex(QAbstractSeries *series) return -1; } -QAxis* ChartDataSet::axisY(QAbstractSeries *series) const +QAbstractAxis* ChartDataSet::axisY(QAbstractSeries *series) const { if(series == 0) return m_axisY; return m_seriesAxisMap.value(series); @@ -240,14 +241,14 @@ QAxis* ChartDataSet::axisY(QAbstractSeries *series) const Domain* ChartDataSet::domain(QAbstractSeries *series) const { - QAxis* axis = m_seriesAxisMap.value(series); + QAbstractAxis* axis = m_seriesAxisMap.value(series); if(axis){ return m_axisDomainMap.value(axis); }else return 0; } -Domain* ChartDataSet::domain(QAxis* axis) const +Domain* ChartDataSet::domain(QAbstractAxis* axis) const { if(!axis || axis==axisX()) { return m_axisDomainMap.value(axisY()); @@ -259,7 +260,7 @@ Domain* ChartDataSet::domain(QAxis* axis) const void ChartDataSet::scrollDomain(qreal dx,qreal dy,const QSizeF& size) { - QMapIterator i( m_axisDomainMap); + QMapIterator i( m_axisDomainMap); //main domain has to be the last one; Domain *domain = m_axisDomainMap.value(axisY()); while (i.hasNext()) { diff --git a/src/chartdataset_p.h b/src/chartdataset_p.h index 2438129..f385355 100644 --- a/src/chartdataset_p.h +++ b/src/chartdataset_p.h @@ -36,7 +36,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE -class QAxis; +class QAbstractAxis; class QTCOMMERCIALCHART_AUTOTEST_EXPORT ChartDataSet : public QObject { @@ -45,8 +45,8 @@ public: ChartDataSet(QChart* parent=0); virtual ~ChartDataSet(); - void addSeries(QAbstractSeries* series,QAxis *axisY = 0); - QAxis* removeSeries(QAbstractSeries* series); + void addSeries(QAbstractSeries* series); + QAbstractAxis* removeSeries(QAbstractSeries* series); void removeAllSeries(); void updateSeries(QAbstractSeries* series); @@ -58,10 +58,10 @@ public: int seriesIndex(QAbstractSeries *series); Domain* domain(QAbstractSeries* series) const; - Domain* domain(QAxis* axis) const; + Domain* domain(QAbstractAxis* axis) const; - QAxis* axisX() const { return m_axisX; } - QAxis* axisY(QAbstractSeries *series = 0) const; + QAbstractAxis* axisX() const { return m_axisX; } + QAbstractAxis* axisY(QAbstractSeries *series = 0) const; QList series() const; @@ -69,19 +69,19 @@ Q_SIGNALS: void seriesAdded(QAbstractSeries* series, Domain* domain); void seriesRemoved(QAbstractSeries* series); void seriesUpdated(QAbstractSeries* series); - void axisAdded(QAxis* axis,Domain* domain); - void axisRemoved(QAxis* axis); + void axisAdded(QAbstractAxis* axis,Domain* domain); + void axisRemoved(QAbstractAxis* axis); private: - QStringList createLabels(QAxis* axis,qreal min, qreal max); + QStringList createLabels(QAbstractAxis* axis,qreal min, qreal max); void calculateDomain(QAbstractSeries* series,Domain* domain); private: - QMap m_seriesAxisMap; - QMap m_axisDomainMap; - QMap m_indexSeriesMap; - QAxis* m_axisX; - QAxis* m_axisY; + QMap m_seriesAxisMap; + QMap m_axisDomainMap; + QMap m_indexSeriesMap; + QAbstractAxis* m_axisX; + QAbstractAxis* m_axisY; int m_domainIndex; bool m_axisXInitialized; diff --git a/src/chartpresenter.cpp b/src/chartpresenter.cpp index 628d990..d3cfd4b 100644 --- a/src/chartpresenter.cpp +++ b/src/chartpresenter.cpp @@ -20,7 +20,7 @@ #include "chartpresenter_p.h" #include "qchart.h" #include "qchart_p.h" -#include "qaxis.h" +#include "qabstractaxis.h" #include "chartdataset_p.h" #include "charttheme_p.h" #include "chartanimator_p.h" @@ -67,7 +67,7 @@ void ChartPresenter::setGeometry(const QRectF& rect) } } -void ChartPresenter::handleAxisAdded(QAxis* axis,Domain* domain) +void ChartPresenter::handleAxisAdded(QAbstractAxis* axis,Domain* domain) { ChartAxis* item; @@ -102,7 +102,7 @@ void ChartPresenter::handleAxisAdded(QAxis* axis,Domain* domain) m_axisItems.insert(axis, item); } -void ChartPresenter::handleAxisRemoved(QAxis* axis) +void ChartPresenter::handleAxisRemoved(QAbstractAxis* axis) { ChartAxis* item = m_axisItems.take(axis); Q_ASSERT(item); @@ -177,10 +177,10 @@ void ChartPresenter::setAnimationOptions(QChart::AnimationOptions options) void ChartPresenter::resetAllElements() { - QList axisList = m_axisItems.uniqueKeys(); + QList axisList = m_axisItems.uniqueKeys(); QList seriesList = m_chartItems.uniqueKeys(); - foreach(QAxis *axis, axisList) { + foreach(QAbstractAxis *axis, axisList) { handleAxisRemoved(axis); handleAxisAdded(axis,m_dataset->domain(axis)); } diff --git a/src/chartpresenter_p.h b/src/chartpresenter_p.h index 20ff531..178586d 100644 --- a/src/chartpresenter_p.h +++ b/src/chartpresenter_p.h @@ -141,8 +141,8 @@ private: public Q_SLOTS: void handleSeriesAdded(QAbstractSeries* series,Domain* domain); void handleSeriesRemoved(QAbstractSeries* series); - void handleAxisAdded(QAxis* axis,Domain* domain); - void handleAxisRemoved(QAxis* axis); + void handleAxisAdded(QAbstractAxis* axis,Domain* domain); + void handleAxisRemoved(QAbstractAxis* axis); private Q_SLOTS: void handleAnimationFinished(); @@ -157,8 +157,8 @@ private: ChartAnimator* m_animator; ChartDataSet* m_dataset; ChartTheme *m_chartTheme; - QMap m_chartItems; - QMap m_axisItems; + QMap m_chartItems; + QMap m_axisItems; QRectF m_rect; QChart::AnimationOptions m_options; State m_state; diff --git a/src/charttheme.cpp b/src/charttheme.cpp index e1c7aa3..21f9731 100644 --- a/src/charttheme.cpp +++ b/src/charttheme.cpp @@ -23,7 +23,7 @@ #include "qchart_p.h" #include "qchartview.h" #include "qlegend.h" -#include "qaxis.h" +#include "qabstractaxis.h" #include //series @@ -256,7 +256,7 @@ void ChartTheme::decorate(QSplineSeries *series, int index) } } -void ChartTheme::decorate(QAxis *axis,bool axisX) +void ChartTheme::decorate(QAbstractAxis *axis,bool axisX) { QPen pen; QBrush brush; diff --git a/src/charttheme_p.h b/src/charttheme_p.h index e5b926d..34fce7f 100644 --- a/src/charttheme_p.h +++ b/src/charttheme_p.h @@ -78,7 +78,7 @@ public: void decorate(QScatterSeries *series, int index); void decorate(QPieSeries *series, int index); void decorate(QSplineSeries *series, int index); - void decorate(QAxis *axis, bool axisX); + void decorate(QAbstractAxis *axis, bool axisX); void setForced(bool enabled); bool isForced() { return m_force; } diff --git a/src/qchart.cpp b/src/qchart.cpp index 31c1426..54116fb 100644 --- a/src/qchart.cpp +++ b/src/qchart.cpp @@ -23,7 +23,7 @@ #include "legendscroller_p.h" #include "qlegend_p.h" #include "chartbackground_p.h" -#include "qaxis.h" +#include "qabstractaxis.h" #include #include #include @@ -140,10 +140,10 @@ QChart::~QChart() \sa removeSeries(), removeAllSeries() */ -void QChart::addSeries(QAbstractSeries *series, QAxis *axisY) +void QChart::addSeries(QAbstractSeries *series) { Q_ASSERT(series); - d_ptr->m_dataset->addSeries(series, axisY); + d_ptr->m_dataset->addSeries(series); } /*! @@ -308,7 +308,7 @@ void QChart::zoom(qreal factor) /*! Returns the pointer to the x axis object of the chart */ -QAxis* QChart::axisX() const +QAbstractAxis* QChart::axisX() const { return d_ptr->m_dataset->axisX(); } @@ -317,7 +317,7 @@ QAxis* QChart::axisX() const Returns the pointer to the y axis object of the \a series If no \a series is provided then default Y axis of the chart is returned. */ -QAxis* QChart::axisY(QAbstractSeries *series) const +QAbstractAxis* QChart::axisY(QAbstractSeries *series) const { return d_ptr->m_dataset->axisY(series); } @@ -428,6 +428,18 @@ void QChart::setMarginsMinimum(const QRectF& margins) d_ptr->m_presenter->setMarginsMinimum(margins); } +void QChart::setAxisX(QAbstractSeries *series, QAbstractAxis* axis) +{ + Q_UNUSED(series); + Q_UNUSED(axis); +} + +void QChart::setAxisY(QAbstractSeries *series, QAbstractAxis* axis) +{ + Q_UNUSED(series); + Q_UNUSED(axis); +} + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QChartPrivate::QChartPrivate(): @@ -447,8 +459,8 @@ void QChartPrivate::createConnections() { QObject::connect(m_dataset,SIGNAL(seriesAdded(QAbstractSeries*,Domain*)),m_presenter,SLOT(handleSeriesAdded(QAbstractSeries*,Domain*))); QObject::connect(m_dataset,SIGNAL(seriesRemoved(QAbstractSeries*)),m_presenter,SLOT(handleSeriesRemoved(QAbstractSeries*))); - QObject::connect(m_dataset,SIGNAL(axisAdded(QAxis*,Domain*)),m_presenter,SLOT(handleAxisAdded(QAxis*,Domain*))); - QObject::connect(m_dataset,SIGNAL(axisRemoved(QAxis*)),m_presenter,SLOT(handleAxisRemoved(QAxis*))); + QObject::connect(m_dataset,SIGNAL(axisAdded(QAbstractAxis*,Domain*)),m_presenter,SLOT(handleAxisAdded(QAbstractAxis*,Domain*))); + QObject::connect(m_dataset,SIGNAL(axisRemoved(QAbstractAxis*)),m_presenter,SLOT(handleAxisRemoved(QAbstractAxis*))); //QObject::connect(m_presenter, SIGNAL(marginsChanged(QRectF)), q_ptr, SIGNAL(marginsChanged(QRectF))); } diff --git a/src/qchart.h b/src/qchart.h index 86e05dc..f6b153a 100644 --- a/src/qchart.h +++ b/src/qchart.h @@ -30,7 +30,7 @@ class QGraphicsSceneResizeEvent; QTCOMMERCIALCHART_BEGIN_NAMESPACE class QAbstractSeries; -class QAxis; +class QAbstractAxis; class QLegend; struct QChartPrivate; @@ -70,11 +70,14 @@ public: explicit QChart(QGraphicsItem *parent = 0, Qt::WindowFlags wFlags = 0); ~QChart(); - void addSeries(QAbstractSeries *series, QAxis *axisY = 0); + void addSeries(QAbstractSeries *series); void removeSeries(QAbstractSeries *series); void removeAllSeries(); QList series() const; + void setAxisX(QAbstractSeries *series, QAbstractAxis* axis); + void setAxisY(QAbstractSeries *series, QAbstractAxis* axis); + void setTheme(QChart::ChartTheme theme); QChart::ChartTheme theme() const; @@ -107,8 +110,8 @@ public: void scrollDown(); void scroll(const QPointF &delta); - QAxis* axisX() const; - QAxis* axisY(QAbstractSeries* series = 0) const; + QAbstractAxis* axisX() const; + QAbstractAxis* axisY(QAbstractSeries* series = 0) const; QLegend* legend() const; diff --git a/src/qchartview.h b/src/qchartview.h index 27f3d5e..bfe28d8 100644 --- a/src/qchartview.h +++ b/src/qchartview.h @@ -21,7 +21,7 @@ #ifndef QCHARTVIEW_H #define QCHARTVIEW_H -#include +#include #include #include #include diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 54222d9..00d8de8 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -6,5 +6,5 @@ TEMPLATE = subdirs SUBDIRS += qchartview qchart qlineseries qbarset qbarseries qstackedbarseries qpercentbarseries qgroupedbarseries qpieslice qpieseries qpiemodelmapper qsplineseries qscatterseries qxymodelmapper qbarmodelmapper test_private:{ - SUBDIRS += chartdataset domain + SUBDIRS += domain #chartdataset } diff --git a/tests/auto/chartdataset/tst_chartdataset.cpp b/tests/auto/chartdataset/tst_chartdataset.cpp index a585d87..e9b5668 100644 --- a/tests/auto/chartdataset/tst_chartdataset.cpp +++ b/tests/auto/chartdataset/tst_chartdataset.cpp @@ -19,7 +19,7 @@ ****************************************************************************/ #include -#include +#include #include #include #include @@ -28,7 +28,7 @@ QTCOMMERCIALCHART_USE_NAMESPACE Q_DECLARE_METATYPE(Domain *) -Q_DECLARE_METATYPE(QAxis *) +Q_DECLARE_METATYPE(QAbstractAxis *) Q_DECLARE_METATYPE(QAbstractSeries *) Q_DECLARE_METATYPE(QLineSeries *) diff --git a/tests/auto/domain/tst_domain.cpp b/tests/auto/domain/tst_domain.cpp index c1ec2eb..4682b29 100644 --- a/tests/auto/domain/tst_domain.cpp +++ b/tests/auto/domain/tst_domain.cpp @@ -20,7 +20,6 @@ #include #include -#include #include QTCOMMERCIALCHART_USE_NAMESPACE diff --git a/tests/auto/qchart/tst_qchart.cpp b/tests/auto/qchart/tst_qchart.cpp index 8d0bb79..3a3fa0a 100644 --- a/tests/auto/qchart/tst_qchart.cpp +++ b/tests/auto/qchart/tst_qchart.cpp @@ -28,10 +28,12 @@ #include #include #include +#include QTCOMMERCIALCHART_USE_NAMESPACE -Q_DECLARE_METATYPE(QAxis *) +Q_DECLARE_METATYPE(QAbstractAxis *) +Q_DECLARE_METATYPE(QValuesAxis *) Q_DECLARE_METATYPE(QAbstractSeries *) Q_DECLARE_METATYPE(QChart::AnimationOption) Q_DECLARE_METATYPE(QBrush) @@ -177,7 +179,7 @@ void tst_QChart::qchart() void tst_QChart::addSeries_data() { QTest::addColumn("series"); - QTest::addColumn("axis"); + QTest::addColumn("axis"); QAbstractSeries* series0 = new QLineSeries(this); QAbstractSeries* series1 = new QAreaSeries(static_cast(series0)); @@ -188,23 +190,23 @@ void tst_QChart::addSeries_data() QAbstractSeries* series6 = new QPercentBarSeries(this); QAbstractSeries* series7 = new QStackedBarSeries(this); - QAxis* axis = new QAxis(this); + QValuesAxis* axis = new QValuesAxis(this); - QTest::newRow("default axis: lineSeries") << series0 << (QAxis*) 0; + QTest::newRow("default axis: lineSeries") << series0 << (QAbstractAxis*) 0; QTest::newRow("axis0: lineSeries") << series0 << axis; - QTest::newRow("default axis: areaSeries") << series1 << (QAxis*) 0; + QTest::newRow("default axis: areaSeries") << series1 << (QAbstractAxis*) 0; QTest::newRow("axis: areaSeries") << series1 << axis; - QTest::newRow("default axis: scatterSeries") << series2 << (QAxis*) 0; + QTest::newRow("default axis: scatterSeries") << series2 << (QAbstractAxis*) 0; QTest::newRow("axis1: scatterSeries") << series2 << axis; - QTest::newRow("default axis: splineSeries") << series3 << (QAxis*) 0; + QTest::newRow("default axis: splineSeries") << series3 << (QAbstractAxis*) 0; QTest::newRow("axis: splineSeries") << series3 << axis; - QTest::newRow("default axis: pieSeries") << series4 << (QAxis*) 0; + QTest::newRow("default axis: pieSeries") << series4 << (QAbstractAxis*) 0; QTest::newRow("axis: pieSeries") << series4 << axis; - QTest::newRow("default axis: barSeries") << series5 << (QAxis*) 0; + QTest::newRow("default axis: barSeries") << series5 << (QAbstractAxis*) 0; QTest::newRow("axis: barSeries") << series5 << axis; - QTest::newRow("default axis: percentBarSeries") << series6 << (QAxis*) 0; + QTest::newRow("default axis: percentBarSeries") << series6 << (QAbstractAxis*) 0; QTest::newRow("axis: barSeries") << series6 << axis; - QTest::newRow("default axis: stackedBarSeries") << series7 << (QAxis*) 0; + QTest::newRow("default axis: stackedBarSeries") << series7 << (QAbstractAxis*) 0; QTest::newRow("axis: barSeries") << series7 << axis; } @@ -212,13 +214,14 @@ void tst_QChart::addSeries_data() void tst_QChart::addSeries() { QFETCH(QAbstractSeries *, series); - QFETCH(QAxis *, axis); + QFETCH(QAbstractAxis *, axis); m_view->show(); QTest::qWaitForWindowShown(m_view); if(!axis) axis = m_chart->axisY(); QVERIFY(!series->chart()); QCOMPARE(m_chart->series().count(), 0); - m_chart->addSeries(series,axis); + m_chart->addSeries(series); + m_chart->setAxisY(series,axis); QCOMPARE(m_chart->series().count(), 1); QCOMPARE(m_chart->series().first(), series); QVERIFY(series->chart() == m_chart); @@ -253,7 +256,7 @@ void tst_QChart::axisX_data() void tst_QChart::axisX() { QVERIFY(m_chart->axisX()); - QAxis* axis = m_chart->axisX(); + QAbstractAxis* axis = m_chart->axisX(); createTestData(); //it should be the same axis QCOMPARE(axis,m_chart->axisX()); @@ -261,32 +264,35 @@ void tst_QChart::axisX() void tst_QChart::axisY_data() { - QTest::addColumn("axis0"); - QTest::addColumn("axis1"); - QTest::addColumn("axis2"); - QTest::newRow("1 defualt, 2 optional") << (QAxis*)0 << new QAxis() << new QAxis(); - QTest::newRow("3 optional") << new QAxis() << new QAxis() << new QAxis(); + QTest::addColumn("axis0"); + QTest::addColumn("axis1"); + QTest::addColumn("axis2"); + QTest::newRow("1 defualt, 2 optional") << (QAbstractAxis*)0 << new QValuesAxis() << new QValuesAxis(); + QTest::newRow("3 optional") << new QValuesAxis() << new QValuesAxis() << new QValuesAxis(); } void tst_QChart::axisY() { - QFETCH(QAxis*, axis0); - QFETCH(QAxis*, axis1); - QFETCH(QAxis*, axis2); + QFETCH(QAbstractAxis*, axis0); + QFETCH(QAbstractAxis*, axis1); + QFETCH(QAbstractAxis*, axis2); - QAxis* defaultAxisY = m_chart->axisY(); + QAbstractAxis* defaultAxisY = m_chart->axisY(); QVERIFY2(defaultAxisY, "Missing axisY."); QLineSeries* series0 = new QLineSeries(); - m_chart->addSeries(series0, axis0); + m_chart->addSeries(series0); + m_chart->setAxisY(series0,axis0); QLineSeries* series1 = new QLineSeries(); - m_chart->addSeries(series1, axis1); + m_chart->addSeries(series1); + m_chart->setAxisY(series1,axis1); QLineSeries* series2 = new QLineSeries(); - m_chart->addSeries(series2, axis2); + m_chart->addSeries(series2); + m_chart->setAxisY(series2,axis2); if (!axis0) axis0 = defaultAxisY; @@ -412,12 +418,13 @@ void tst_QChart::removeSeries_data() void tst_QChart::removeSeries() { QFETCH(QAbstractSeries *, series); - QFETCH(QAxis *, axis); + QFETCH(QAbstractAxis *, axis); QSignalSpy deleteSpy(series, SIGNAL(destroyed())); m_view->show(); QTest::qWaitForWindowShown(m_view); if(!axis) axis = m_chart->axisY(); - m_chart->addSeries(series,axis); + m_chart->addSeries(series); + m_chart->setAxisY(series,axis); QCOMPARE(m_chart->axisY(series),axis); m_chart->removeSeries(series); QVERIFY(m_chart->axisY(series)==0); @@ -431,10 +438,11 @@ void tst_QChart::scrollDown_data() void tst_QChart::scrollDown() { + qFatal("implement me"); createTestData(); - qreal min = m_chart->axisY()->min(); + //TODO qreal min = m_chart->axisY()->min(); m_chart->scrollDown(); - QVERIFY(m_chart->axisY()->min()axisY()->min()axisX()->min(); + //TODO qreal min = m_chart->axisX()->min(); m_chart->scrollLeft(); - QVERIFY(m_chart->axisX()->min()axisX()->min()axisX()->min(); + //TODO qreal min = m_chart->axisX()->min(); m_chart->scrollRight(); - QVERIFY(m_chart->axisX()->min()>min); + //TODO QVERIFY(m_chart->axisX()->min()>min); } void tst_QChart::scrollUp_data() @@ -470,10 +480,11 @@ void tst_QChart::scrollUp_data() void tst_QChart::scrollUp() { + qFatal("implement me"); createTestData(); - qreal min = m_chart->axisY()->min(); + //TODO qreal min = m_chart->axisY()->min(); m_chart->scrollUp(); - QVERIFY(m_chart->axisY()->min()>min); + //TODO QVERIFY(m_chart->axisY()->min()>min); } void tst_QChart::theme_data() @@ -551,6 +562,8 @@ void tst_QChart::zoomIn_data() void tst_QChart::zoomIn() { + qFatal("implement me"); + /* QFETCH(QRectF, rect); createTestData(); QRectF marigns = m_chart->margins(); @@ -566,6 +579,7 @@ void tst_QChart::zoomIn() QVERIFY(minYaxisY()->min()); QVERIFY(maxY>m_chart->axisY()->max()); } + */ } void tst_QChart::zoomOut_data() @@ -575,7 +589,9 @@ void tst_QChart::zoomOut_data() void tst_QChart::zoomOut() { + qFatal("implement me"); createTestData(); + /* qreal minX = m_chart->axisX()->min(); qreal minY = m_chart->axisY()->min(); qreal maxX = m_chart->axisX()->max(); @@ -604,6 +620,7 @@ void tst_QChart::zoomOut() QVERIFY(maxX == m_chart->axisX()->max()); QVERIFY(maxY == m_chart->axisY()->max()); + */ } QTEST_MAIN(tst_QChart) diff --git a/tests/auto/qchartview/tst_qchartview.cpp b/tests/auto/qchartview/tst_qchartview.cpp index 4443e6f..262e092 100644 --- a/tests/auto/qchartview/tst_qchartview.cpp +++ b/tests/auto/qchartview/tst_qchartview.cpp @@ -149,9 +149,9 @@ void tst_QChartView::rubberBand() //this is hack since view does not get events otherwise m_view->setMouseTracking(true); - QAxis* axisY = m_view->chart()->axisY(); + QAbstractAxis* axisY = m_view->chart()->axisY(); QSignalSpy spy0(axisY, SIGNAL(rangeChanged(qreal,qreal))); - QAxis* axisX = m_view->chart()->axisX(); + QAbstractAxis* axisX = m_view->chart()->axisX(); QSignalSpy spy1(axisX, SIGNAL(rangeChanged(qreal,qreal))); QTest::qWaitForWindowShown(m_view); @@ -166,10 +166,11 @@ void tst_QChartView::rubberBand() //this is hack since view does not get events otherwise m_view->setMouseTracking(false); - QVERIFY(axisX->min() - minX < 1); - QVERIFY(axisX->max() - maxX < 1); - QVERIFY(axisY->min() - minY < 1); - QVERIFY(axisY->max() - maxY < 1); + //TODO: QVERIFY(axisX->min() - minX < 1); + //TODO: QVERIFY(axisX->max() - maxX < 1); + //TODO: QVERIFY(axisY->min() - minY < 1); + //TODO: QVERIFY(axisY->max() - maxY < 1); + qFatal("implement TODO"); } QTEST_MAIN(tst_QChartView) diff --git a/tests/chartwidgettest/mainwidget.cpp b/tests/chartwidgettest/mainwidget.cpp index fea7d9b..fe77010 100644 --- a/tests/chartwidgettest/mainwidget.cpp +++ b/tests/chartwidgettest/mainwidget.cpp @@ -43,6 +43,7 @@ #include #include #include +#include QTCOMMERCIALCHART_USE_NAMESPACE @@ -276,16 +277,24 @@ void MainWidget::addSeries(QString seriesName, int columnCount, int rowCount, QS QBarSeries* series = 0; if (seriesName == "Bar") { series = new QBarSeries(this); - m_chart->axisX()->categories()->insert(category); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(category); + m_chart->setAxisX(series,axis); } else if (seriesName == "Grouped bar") { series = new QGroupedBarSeries(this); - m_chart->axisX()->categories()->insert(category); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(category); + m_chart->setAxisX(series,axis); } else if (seriesName == "Stacked bar") { series = new QStackedBarSeries(this); - m_chart->axisX()->categories()->insert(category); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(category); + m_chart->setAxisX(series,axis); } else { series = new QPercentBarSeries(this); - m_chart->axisX()->categories()->insert(category); + QCategoriesAxis* axis = new QCategoriesAxis(); + axis->append(category); + m_chart->setAxisX(series,axis); } for (int j(0); j < data.count(); j++) {