diff --git a/.gitignore b/.gitignore
index 4aa405b..d76d5c0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,7 +9,6 @@ examples/*/*/*[.]app
!examples/tutorials/*
!examples/tutorials/*/*
!examples/ja_JP/*/*
-demos/*/*
!demos/spectrum/*
demos/spectrum/bin
!demos/*/*[.]*
diff --git a/demos/chartthemes/themewidget.cpp b/demos/chartthemes/themewidget.cpp
index eb6d557..205fb14 100644
--- a/demos/chartthemes/themewidget.cpp
+++ b/demos/chartthemes/themewidget.cpp
@@ -216,7 +216,8 @@ QChart* ThemeWidget::createBarChart(int valueCount) const
for (int i(0); i < valueCount; i++)
categories << QString::number(i);
- QStackedBarSeries* series = new QStackedBarSeries(categories, chart);
+ QStackedBarSeries* series = new QStackedBarSeries(chart);
+ series->setCategories(categories);
for (int i(0); i < m_dataTable.count(); i++) {
QBarSet *set = new QBarSet("Bar set " + QString::number(i));
foreach (Data data, m_dataTable[i])
diff --git a/demos/qmlchart/qml/qmlchart/View1.qml b/demos/qmlchart/qml/qmlchart/View1.qml
index 1332bf6..b76d5c1 100644
--- a/demos/qmlchart/qml/qmlchart/View1.qml
+++ b/demos/qmlchart/qml/qmlchart/View1.qml
@@ -31,9 +31,9 @@ Rectangle {
legend: Chart.LegendBottom
PieSeries {
- horizontalPosition: 0.2
- verticalPosition: 0.3
- size: 0.4
+ horizontalPosition: 0.5
+ verticalPosition: 0.5
+ size: 0.7
slices: [
PieSlice { label: "Volkswagen"; value: 13.5 },
PieSlice { label: "Toyota"; value: 10.9 },
@@ -43,10 +43,5 @@ Rectangle {
PieSlice { label: "Others"; value: 52.0 }
]
}
-
- BarSeries {
- barCategories: [ "2008", "2009", "2010", "2011", "2012" ]
- // data implementation missing
- }
}
}
diff --git a/demos/qmlchart/qml/qmlchart/View3.qml b/demos/qmlchart/qml/qmlchart/View3.qml
index faa869c..97e2cf3 100644
--- a/demos/qmlchart/qml/qmlchart/View3.qml
+++ b/demos/qmlchart/qml/qmlchart/View3.qml
@@ -31,20 +31,20 @@ Rectangle {
legend: Chart.LegendTop
AreaSeries {
- name: "Finnish"
+ name: "Swedish"
points: [
- XyPoint { x: 0; y: 0 },
- XyPoint { x: 1; y: 0 },
- XyPoint { x: 2; y: 0 },
- XyPoint { x: 3; y: 0 },
- XyPoint { x: 4; y: 0 },
+ XyPoint { x: 0; y: 1 },
+ XyPoint { x: 1; y: 1 },
+ XyPoint { x: 2; y: 3 },
+ XyPoint { x: 3; y: 3 },
+ XyPoint { x: 4; y: 2 },
XyPoint { x: 5; y: 0 },
- XyPoint { x: 6; y: 1 },
- XyPoint { x: 7; y: 0 },
- XyPoint { x: 8; y: 0 },
- XyPoint { x: 9; y: 0 },
- XyPoint { x: 10; y: 0 },
- XyPoint { x: 11; y: 1 }
+ XyPoint { x: 6; y: 2 },
+ XyPoint { x: 7; y: 1 },
+ XyPoint { x: 8; y: 2 },
+ XyPoint { x: 9; y: 1 },
+ XyPoint { x: 10; y: 3 },
+ XyPoint { x: 11; y: 3 }
]
lowerPoints: [
XyPoint { x: 0; y: 0 },
@@ -95,20 +95,20 @@ Rectangle {
}
AreaSeries {
- name: "Swedish"
+ name: "Finnish"
points: [
- XyPoint { x: 0; y: 1 },
- XyPoint { x: 1; y: 1 },
- XyPoint { x: 2; y: 3 },
- XyPoint { x: 3; y: 3 },
- XyPoint { x: 4; y: 2 },
+ XyPoint { x: 0; y: 0 },
+ XyPoint { x: 1; y: 0 },
+ XyPoint { x: 2; y: 0 },
+ XyPoint { x: 3; y: 0 },
+ XyPoint { x: 4; y: 0 },
XyPoint { x: 5; y: 0 },
- XyPoint { x: 6; y: 2 },
- XyPoint { x: 7; y: 1 },
- XyPoint { x: 8; y: 2 },
- XyPoint { x: 9; y: 1 },
- XyPoint { x: 10; y: 3 },
- XyPoint { x: 11; y: 3 }
+ XyPoint { x: 6; y: 1 },
+ XyPoint { x: 7; y: 0 },
+ XyPoint { x: 8; y: 0 },
+ XyPoint { x: 9; y: 0 },
+ XyPoint { x: 10; y: 0 },
+ XyPoint { x: 11; y: 1 }
]
lowerPoints: [
XyPoint { x: 0; y: 0 },
diff --git a/demos/qmlchart/qml/qmlchart/View5.qml b/demos/qmlchart/qml/qmlchart/View5.qml
new file mode 100644
index 0000000..5c3f9ad
--- /dev/null
+++ b/demos/qmlchart/qml/qmlchart/View5.qml
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+import QtQuick 1.0
+import QtCommercial.Chart 1.0
+
+Rectangle {
+ anchors.fill: parent
+
+ Chart {
+ title: "Bar series"
+ anchors.fill: parent
+ theme: Chart.ChartThemeLight
+ legend: Chart.LegendBottom
+
+ BarSeries {
+ barCategories: [ "2008", "2009", "2010", "2011", "2012" ]
+ // data implementation missing
+ }
+ }
+}
diff --git a/demos/qmlchart/qml/qmlchart/main.qml b/demos/qmlchart/qml/qmlchart/main.qml
index 0db7f73..fe4efbe 100644
--- a/demos/qmlchart/qml/qmlchart/main.qml
+++ b/demos/qmlchart/qml/qmlchart/main.qml
@@ -40,7 +40,7 @@ Rectangle {
Loader {
id: loader
anchors.fill: parent
- source: "View" + (__viewNumber % 4 + 1) + ".qml";
+ source: "View" + (__viewNumber % 5 + 1) + ".qml";
}
MouseArea {
diff --git a/demos/qmlchart/resources.qrc b/demos/qmlchart/resources.qrc
index 82eb434..44c623e 100644
--- a/demos/qmlchart/resources.qrc
+++ b/demos/qmlchart/resources.qrc
@@ -6,5 +6,6 @@
qml/qmlchart/View2.qml
qml/qmlchart/View3.qml
qml/qmlchart/View4.qml
+ qml/qmlchart/View5.qml
diff --git a/examples/barchart/main.cpp b/examples/barchart/main.cpp
index f4e2624..a1013bb 100644
--- a/examples/barchart/main.cpp
+++ b/examples/barchart/main.cpp
@@ -51,7 +51,8 @@ int main(int argc, char *argv[])
//![2]
//![3]
- QBarSeries* series = new QBarSeries(categories);
+ QBarSeries* series = new QBarSeries();
+ series->setCategories(categories);
series->appendBarSet(set0);
series->appendBarSet(set1);
series->appendBarSet(set2);
diff --git a/examples/percentbarchart/main.cpp b/examples/percentbarchart/main.cpp
index 383bdda..c72e751 100644
--- a/examples/percentbarchart/main.cpp
+++ b/examples/percentbarchart/main.cpp
@@ -51,7 +51,8 @@ int main(int argc, char *argv[])
//![2]
//![3]
- QPercentBarSeries* series = new QPercentBarSeries(categories);
+ QPercentBarSeries* series = new QPercentBarSeries();
+ series->setCategories(categories);
series->appendBarSet(set0);
series->appendBarSet(set1);
series->appendBarSet(set2);
diff --git a/examples/stackedbarchart/main.cpp b/examples/stackedbarchart/main.cpp
index 987f2f9..289171a 100644
--- a/examples/stackedbarchart/main.cpp
+++ b/examples/stackedbarchart/main.cpp
@@ -51,7 +51,8 @@ int main(int argc, char *argv[])
//![2]
//![3]
- QStackedBarSeries* series = new QStackedBarSeries(categories);
+ QStackedBarSeries* series = new QStackedBarSeries();
+ series->setCategories(categories);
series->appendBarSet(set0);
series->appendBarSet(set1);
series->appendBarSet(set2);
diff --git a/examples/stackedbarchartdrilldown/drilldownseries.cpp b/examples/stackedbarchartdrilldown/drilldownseries.cpp
index 7d3b174..f23413e 100644
--- a/examples/stackedbarchartdrilldown/drilldownseries.cpp
+++ b/examples/stackedbarchartdrilldown/drilldownseries.cpp
@@ -23,8 +23,9 @@
QTCOMMERCIALCHART_USE_NAMESPACE
DrilldownBarSeries::DrilldownBarSeries(QStringList categories, QObject *parent)
- : QStackedBarSeries(categories, parent)
+ : QStackedBarSeries(parent)
{
+ setCategories(categories);
}
void DrilldownBarSeries::mapDrilldownSeries(QString category, DrilldownBarSeries* drilldownSeries)
diff --git a/qmlplugin/declarativeareaseries.cpp b/qmlplugin/declarativeareaseries.cpp
index 68edbcd..86ca0c3 100644
--- a/qmlplugin/declarativeareaseries.cpp
+++ b/qmlplugin/declarativeareaseries.cpp
@@ -30,11 +30,6 @@ DeclarativeAreaSeries::DeclarativeAreaSeries(QObject *parent) :
{
}
-QAbstractSeries *DeclarativeAreaSeries::series()
-{
- return this;
-}
-
QDeclarativeListProperty DeclarativeAreaSeries::points()
{
return QDeclarativeListProperty(this, 0, &DeclarativeAreaSeries::appendPoints);
diff --git a/qmlplugin/declarativeareaseries.h b/qmlplugin/declarativeareaseries.h
index a9428f4..f2a41ab 100644
--- a/qmlplugin/declarativeareaseries.h
+++ b/qmlplugin/declarativeareaseries.h
@@ -37,7 +37,6 @@ public:
explicit DeclarativeAreaSeries(QObject *parent = 0);
public:
- QAbstractSeries *series();
QDeclarativeListProperty points();
QDeclarativeListProperty lowerPoints();
diff --git a/qmlplugin/declarativebarseries.cpp b/qmlplugin/declarativebarseries.cpp
index b68adc9..31ecdd5 100644
--- a/qmlplugin/declarativebarseries.cpp
+++ b/qmlplugin/declarativebarseries.cpp
@@ -50,7 +50,9 @@ void DeclarativeBarSeries::setBarCategories(QStringList categories)
QChart *chart = qobject_cast(declarativeChart->m_chart);
Q_ASSERT(chart);
- m_series = new QBarSeries(m_categories);
+// m_series = new QBarSeries(m_categories);
+ m_series = new QBarSeries();
+ m_series->setCategories(m_categories);
// TODO: use data from model
QBarSet *set0 = new QBarSet("Bub");
diff --git a/qmlplugin/declarativechart.cpp b/qmlplugin/declarativechart.cpp
index c58a8ee..e5d5d9c 100644
--- a/qmlplugin/declarativechart.cpp
+++ b/qmlplugin/declarativechart.cpp
@@ -19,6 +19,7 @@
****************************************************************************/
#include "declarativechart.h"
+#include "declarativepieseries.h"
#include
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -36,6 +37,26 @@ DeclarativeChart::~DeclarativeChart()
delete m_chart;
}
+void DeclarativeChart::childEvent(QChildEvent *event)
+{
+ if (event->type() == QEvent::ChildAdded) {
+ if (qobject_cast(event->child())) {
+ m_chart->addSeries(qobject_cast(event->child()));
+ }
+ }
+}
+
+void DeclarativeChart::componentComplete()
+{
+ foreach(QObject *child, children()) {
+ if (qobject_cast(child)) {
+ m_chart->addSeries(qobject_cast(child));
+ }
+ }
+
+ QDeclarativeItem::componentComplete();
+}
+
void DeclarativeChart::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_UNUSED(oldGeometry)
diff --git a/qmlplugin/declarativechart.h b/qmlplugin/declarativechart.h
index 9229056..9e6b656 100644
--- a/qmlplugin/declarativechart.h
+++ b/qmlplugin/declarativechart.h
@@ -53,6 +53,8 @@ public:
~DeclarativeChart();
public: // From QDeclarativeItem/QGraphicsItem
+ void childEvent(QChildEvent *event);
+ void componentComplete();
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
diff --git a/qmlplugin/declarativelineseries.cpp b/qmlplugin/declarativelineseries.cpp
index 9c5934c..dd57245 100644
--- a/qmlplugin/declarativelineseries.cpp
+++ b/qmlplugin/declarativelineseries.cpp
@@ -30,11 +30,6 @@ DeclarativeLineSeries::DeclarativeLineSeries(QObject *parent) :
{
}
-QAbstractSeries *DeclarativeLineSeries::series()
-{
- return this;
-}
-
QDeclarativeListProperty DeclarativeLineSeries::points()
{
return QDeclarativeListProperty(this, 0, &DeclarativeXySeries::appendPoints);
diff --git a/qmlplugin/declarativelineseries.h b/qmlplugin/declarativelineseries.h
index 2b50631..2849c84 100644
--- a/qmlplugin/declarativelineseries.h
+++ b/qmlplugin/declarativelineseries.h
@@ -37,7 +37,6 @@ public:
explicit DeclarativeLineSeries(QObject *parent = 0);
public:
- QAbstractSeries *series();
QDeclarativeListProperty points();
};
diff --git a/qmlplugin/declarativepieseries.cpp b/qmlplugin/declarativepieseries.cpp
index 493b56e..f5f31bf 100644
--- a/qmlplugin/declarativepieseries.cpp
+++ b/qmlplugin/declarativepieseries.cpp
@@ -25,25 +25,10 @@
QTCOMMERCIALCHART_BEGIN_NAMESPACE
DeclarativePieSeries::DeclarativePieSeries(QObject *parent) :
- QPieSeries(parent),
- m_chart(0)
+ QPieSeries(parent)
{
}
-void DeclarativePieSeries::classBegin()
-{
-}
-
-void DeclarativePieSeries::componentComplete()
-{
- DeclarativeChart *declarativeChart = qobject_cast(parent());
- if (declarativeChart) {
- QChart *chart = qobject_cast(declarativeChart->m_chart);
- Q_ASSERT(chart);
- chart->addSeries(this);
- }
-}
-
QDeclarativeListProperty DeclarativePieSeries::slices()
{
return QDeclarativeListProperty(this, 0, &DeclarativePieSeries::appendSlice);
diff --git a/qmlplugin/declarativepieseries.h b/qmlplugin/declarativepieseries.h
index 131104a..bc13132 100644
--- a/qmlplugin/declarativepieseries.h
+++ b/qmlplugin/declarativepieseries.h
@@ -24,32 +24,24 @@
#include "qchartglobal.h"
#include "qpieslice.h"
#include "qpieseries.h"
-#include
+#include
QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QChart;
-class DeclarativePieSeries : public QPieSeries, public QDeclarativeParserStatus
+class DeclarativePieSeries : public QPieSeries
{
Q_OBJECT
- Q_INTERFACES(QDeclarativeParserStatus)
Q_PROPERTY(QDeclarativeListProperty slices READ slices)
public:
explicit DeclarativePieSeries(QObject *parent = 0);
QDeclarativeListProperty slices();
-public: // from QDeclarativeParserStatus
- void classBegin();
- void componentComplete();
-
public Q_SLOTS:
static void appendSlice(QDeclarativeListProperty *list,
QPieSlice *element);
-
-private:
- QChart *m_chart;
};
QTCOMMERCIALCHART_END_NAMESPACE
diff --git a/qmlplugin/declarativescatterseries.cpp b/qmlplugin/declarativescatterseries.cpp
index 0376631..936fa66 100644
--- a/qmlplugin/declarativescatterseries.cpp
+++ b/qmlplugin/declarativescatterseries.cpp
@@ -30,11 +30,6 @@ DeclarativeScatterSeries::DeclarativeScatterSeries(QObject *parent) :
{
}
-QAbstractSeries *DeclarativeScatterSeries::series()
-{
- return this;
-}
-
QDeclarativeListProperty DeclarativeScatterSeries::points()
{
return QDeclarativeListProperty(this, 0, &DeclarativeXySeries::appendPoints);
diff --git a/qmlplugin/declarativescatterseries.h b/qmlplugin/declarativescatterseries.h
index 7471052..ba6ffa7 100644
--- a/qmlplugin/declarativescatterseries.h
+++ b/qmlplugin/declarativescatterseries.h
@@ -37,7 +37,6 @@ public:
explicit DeclarativeScatterSeries(QObject *parent = 0);
public:
- QAbstractSeries *series();
QDeclarativeListProperty points();
};
diff --git a/qmlplugin/declarativesplineseries.cpp b/qmlplugin/declarativesplineseries.cpp
index 41648f2..c6753c0 100644
--- a/qmlplugin/declarativesplineseries.cpp
+++ b/qmlplugin/declarativesplineseries.cpp
@@ -29,11 +29,6 @@ DeclarativeSplineSeries::DeclarativeSplineSeries(QObject *parent) :
{
}
-QAbstractSeries *DeclarativeSplineSeries::series()
-{
- return this;
-}
-
QDeclarativeListProperty DeclarativeSplineSeries::points()
{
return QDeclarativeListProperty(this, 0, &DeclarativeXySeries::appendPoints);
diff --git a/qmlplugin/declarativesplineseries.h b/qmlplugin/declarativesplineseries.h
index 344ff27..a3bfc1a 100644
--- a/qmlplugin/declarativesplineseries.h
+++ b/qmlplugin/declarativesplineseries.h
@@ -37,7 +37,6 @@ public:
explicit DeclarativeSplineSeries(QObject *parent = 0);
public:
- QAbstractSeries *series();
QDeclarativeListProperty points();
};
diff --git a/qmlplugin/declarativexyseries.cpp b/qmlplugin/declarativexyseries.cpp
index 09651cd..f673102 100644
--- a/qmlplugin/declarativexyseries.cpp
+++ b/qmlplugin/declarativexyseries.cpp
@@ -33,22 +33,6 @@ DeclarativeXySeries::~DeclarativeXySeries()
{
}
-void DeclarativeXySeries::classBegin()
-{
-}
-
-void DeclarativeXySeries::componentComplete()
-{
- QAbstractSeries *thisObj = reinterpret_cast(series());
- DeclarativeChart *declarativeChart = qobject_cast(thisObj->parent());
-
- if (declarativeChart) {
- QChart *chart = qobject_cast(declarativeChart->m_chart);
- Q_ASSERT(chart);
- chart->addSeries(thisObj);
- }
-}
-
void DeclarativeXySeries::appendPoints(QDeclarativeListProperty *list,
DeclarativeXyPoint *element)
{
diff --git a/qmlplugin/declarativexyseries.h b/qmlplugin/declarativexyseries.h
index b9174e2..7372140 100644
--- a/qmlplugin/declarativexyseries.h
+++ b/qmlplugin/declarativexyseries.h
@@ -23,7 +23,6 @@
#include "qchartglobal.h"
#include "declarativexypoint.h"
-#include
#include
QTCOMMERCIALCHART_BEGIN_NAMESPACE
@@ -31,7 +30,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QChart;
class QAbstractSeries;
-class DeclarativeXySeries : public QDeclarativeParserStatus
+class DeclarativeXySeries
{
Q_INTERFACES(QDeclarativeParserStatus)
@@ -39,12 +38,7 @@ public:
explicit DeclarativeXySeries();
~DeclarativeXySeries();
-public: // from QDeclarativeParserStatus
- virtual void classBegin();
- virtual void componentComplete();
-
public:
- virtual QAbstractSeries *series() = 0;
virtual QDeclarativeListProperty points() = 0;
public Q_SLOTS:
diff --git a/src/barchart/qbarseries.cpp b/src/barchart/qbarseries.cpp
index 08aecbb..b5709ab 100644
--- a/src/barchart/qbarseries.cpp
+++ b/src/barchart/qbarseries.cpp
@@ -67,8 +67,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
Constructs empty QBarSeries. Parameter \a categories defines the categories for chart.
QBarSeries is QObject which is a child of a \a parent.
*/
-QBarSeries::QBarSeries(QBarCategories categories, QObject *parent) :
- QAbstractSeries(*new QBarSeriesPrivate(categories, this),parent)
+QBarSeries::QBarSeries(/*QBarCategories categories,*/ QObject *parent) :
+ QAbstractSeries(*new QBarSeriesPrivate(/*categories,*/ this),parent)
{
}
@@ -96,57 +96,90 @@ QAbstractSeries::SeriesType QBarSeries::type() const
return QAbstractSeries::SeriesTypeBar;
}
+void QBarSeries::setCategories(QBarCategories categories)
+{
+ Q_D(QBarSeries);
+ d->setCategories(categories);
+ emit d->categoriesUpdated();
+}
+
/*!
Adds a set of bars to series. Takes ownership of \a set.
*/
-void QBarSeries::appendBarSet(QBarSet *set)
+bool QBarSeries::appendBarSet(QBarSet *set)
{
Q_D(QBarSeries);
+ if ((d->m_barSets.contains(set)) || (set == 0)) {
+ // Fail if set is already in list or set is null.
+ return false;
+ }
d->m_barSets.append(set);
QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), d, SLOT(barsetChanged()));
emit d->restructuredBars();
+ return true;
}
/*!
Removes a set of bars from series. Releases ownership of \a set. Doesn't delete \a set.
*/
-void QBarSeries::removeBarSet(QBarSet *set)
+bool QBarSeries::removeBarSet(QBarSet *set)
{
Q_D(QBarSeries);
- if (d->m_barSets.contains(set)) {
- d->m_barSets.removeOne(set);
- QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedBars()), d, SLOT(barsetChanged()));
- emit d->restructuredBars();
+ if (!d->m_barSets.contains(set)) {
+ // Fail if set is not in list
+ return false;
}
+ d->m_barSets.removeOne(set);
+ QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedBars()), d, SLOT(barsetChanged()));
+ emit d->restructuredBars();
+ return true;
}
/*!
Adds a list of barsets to series. Takes ownership of \a sets.
*/
-void QBarSeries::appendBarSets(QList sets)
+bool QBarSeries::appendBarSets(QList sets)
{
Q_D(QBarSeries);
foreach (QBarSet* set, sets) {
+ if ((set == 0) || (d->m_barSets.contains(set))) {
+ // Fail if any of the sets is null or is already appended.
+ return false;
+ }
+ if (sets.count(set) != 1) {
+ // Also fail if same set is more than once in given list.
+ return false;
+ }
+ }
+
+ foreach (QBarSet* set, sets) {
d->m_barSets.append(set);
QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), d, SLOT(barsetChanged()));
}
emit d->restructuredBars();
+ return true;
}
/*!
Removes a list of barsets from series. Releases ownership of \a sets. Doesn't delete \a sets.
*/
-void QBarSeries::removeBarSets(QList sets)
+bool QBarSeries::removeBarSets(QList sets)
{
Q_D(QBarSeries);
+ bool setsRemoved = false;
foreach (QBarSet* set, sets) {
if (d->m_barSets.contains(set)) {
d->m_barSets.removeOne(set);
QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedBars()), d, SLOT(barsetChanged()));
+ setsRemoved = true;
}
}
- emit d->restructuredBars();
+
+ if (setsRemoved) {
+ emit d->restructuredBars();
+ }
+ return setsRemoved;
}
/*!
@@ -227,15 +260,21 @@ void QBarSeries::setLabelsVisible(bool visible)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-QBarSeriesPrivate::QBarSeriesPrivate(QBarCategories categories, QBarSeries *q) :
+QBarSeriesPrivate::QBarSeriesPrivate(/*QBarCategories categories,*/ QBarSeries *q) :
QAbstractSeriesPrivate(q),
- m_categories(categories),
+// m_categories(categories),
m_mapCategories(-1),
m_mapBarBottom(-1),
m_mapBarTop(-1)
{
}
+void QBarSeriesPrivate::setCategories(QBarCategories categories)
+{
+ m_categories = categories;
+}
+
+
QBarSet* QBarSeriesPrivate::barsetAt(int index)
{
return m_barSets.at(index);
diff --git a/src/barchart/qbarseries.h b/src/barchart/qbarseries.h
index 9d79229..2f7a6f1 100644
--- a/src/barchart/qbarseries.h
+++ b/src/barchart/qbarseries.h
@@ -39,15 +39,16 @@ class QTCOMMERCIALCHART_EXPORT QBarSeries : public QAbstractSeries
{
Q_OBJECT
public:
- explicit QBarSeries(QBarCategories categories, QObject *parent = 0);
+ explicit QBarSeries(/*QBarCategories categories,*/ QObject *parent = 0);
virtual ~QBarSeries();
QAbstractSeries::SeriesType type() const;
+ void setCategories(QBarCategories categories);
- void appendBarSet(QBarSet *set); // Takes ownership of set
- void removeBarSet(QBarSet *set); // Releases ownership, doesn't delete set
- void appendBarSets(QList sets);
- void removeBarSets(QList sets);
+ bool appendBarSet(QBarSet *set); // Takes ownership of set
+ bool removeBarSet(QBarSet *set); // Releases ownership, doesn't delete set
+ bool appendBarSets(QList sets);
+ bool removeBarSets(QList sets);
int barsetCount() const;
int categoryCount() const;
QList barSets() const;
diff --git a/src/barchart/qbarseries_p.h b/src/barchart/qbarseries_p.h
index 29e5574..ca75df8 100644
--- a/src/barchart/qbarseries_p.h
+++ b/src/barchart/qbarseries_p.h
@@ -15,7 +15,8 @@ class QBarSeriesPrivate : public QAbstractSeriesPrivate
{
Q_OBJECT
public:
- QBarSeriesPrivate(QBarCategories categories, QBarSeries *parent);
+ QBarSeriesPrivate(/*QBarCategories categories,*/ QBarSeries *parent);
+ void setCategories(QBarCategories categories);
void scaleDomain(Domain& domain);
Chart* createGraphics(ChartPresenter* presenter);
diff --git a/src/barchart/qpercentbarseries.cpp b/src/barchart/qpercentbarseries.cpp
index 9277f30..6889b2b 100644
--- a/src/barchart/qpercentbarseries.cpp
+++ b/src/barchart/qpercentbarseries.cpp
@@ -53,8 +53,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
Constructs empty QPercentBarSeries. Parameter \a categories defines the categories for chart.
QPercentBarSeries is QObject which is a child of a \a parent.
*/
-QPercentBarSeries::QPercentBarSeries(QBarCategories categories, QObject *parent)
- : QBarSeries(*new QPercentBarSeriesPrivate(categories,this), parent)
+QPercentBarSeries::QPercentBarSeries(/*QBarCategories categories,*/ QObject *parent)
+ : QBarSeries(*new QPercentBarSeriesPrivate(/*categories,*/this), parent)
{
}
@@ -65,7 +65,7 @@ QAbstractSeries::SeriesType QPercentBarSeries::type() const
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-QPercentBarSeriesPrivate::QPercentBarSeriesPrivate(QBarCategories categories, QPercentBarSeries *q) : QBarSeriesPrivate(categories,q)
+QPercentBarSeriesPrivate::QPercentBarSeriesPrivate(/*QBarCategories categories,*/ QPercentBarSeries *q) : QBarSeriesPrivate(/*categories,*/q)
{
}
diff --git a/src/barchart/qpercentbarseries.h b/src/barchart/qpercentbarseries.h
index e8141ec..ba12f97 100644
--- a/src/barchart/qpercentbarseries.h
+++ b/src/barchart/qpercentbarseries.h
@@ -32,8 +32,9 @@ class QTCOMMERCIALCHART_EXPORT QPercentBarSeries : public QBarSeries
{
Q_OBJECT
public:
- explicit QPercentBarSeries(QBarCategories categories, QObject *parent = 0);
+ explicit QPercentBarSeries(/*QBarCategories categories,*/ QObject *parent = 0);
QAbstractSeries::SeriesType type() const;
+
private:
Q_DECLARE_PRIVATE(QPercentBarSeries)
Q_DISABLE_COPY(QPercentBarSeries)
diff --git a/src/barchart/qpercentbarseries_p.h b/src/barchart/qpercentbarseries_p.h
index b296c91..d7494a9 100644
--- a/src/barchart/qpercentbarseries_p.h
+++ b/src/barchart/qpercentbarseries_p.h
@@ -39,7 +39,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QPercentBarSeriesPrivate: public QBarSeriesPrivate
{
public:
- QPercentBarSeriesPrivate(QBarCategories categories,QPercentBarSeries* q);
+ QPercentBarSeriesPrivate(/*QBarCategories categories,*/QPercentBarSeries* q);
void scaleDomain(Domain& domain);
Chart* createGraphics(ChartPresenter* presenter);
diff --git a/src/barchart/qstackedbarseries.cpp b/src/barchart/qstackedbarseries.cpp
index 3ef6dfe..12f7c62 100644
--- a/src/barchart/qstackedbarseries.cpp
+++ b/src/barchart/qstackedbarseries.cpp
@@ -52,8 +52,8 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
Constructs empty QStackedBarSeries. Parameter \a categories defines the categories for chart.
QStackedBarSeries is QObject which is a child of a \a parent.
*/
-QStackedBarSeries::QStackedBarSeries(QBarCategories categories, QObject *parent)
- : QBarSeries(*new QStackedBarSeriesPrivate(categories,this), parent)
+QStackedBarSeries::QStackedBarSeries(/*QBarCategories categories,*/ QObject *parent)
+ : QBarSeries(*new QStackedBarSeriesPrivate(/*categories,*/this), parent)
{
}
@@ -64,7 +64,7 @@ QAbstractSeries::SeriesType QStackedBarSeries::type() const
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(QBarCategories categories, QStackedBarSeries *q) : QBarSeriesPrivate(categories,q)
+QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(/*QBarCategories categories,*/ QStackedBarSeries *q) : QBarSeriesPrivate(/*categories,*/q)
{
}
diff --git a/src/barchart/qstackedbarseries.h b/src/barchart/qstackedbarseries.h
index 5e0f234..8833d9f 100644
--- a/src/barchart/qstackedbarseries.h
+++ b/src/barchart/qstackedbarseries.h
@@ -32,8 +32,9 @@ class QTCOMMERCIALCHART_EXPORT QStackedBarSeries : public QBarSeries
{
Q_OBJECT
public:
- explicit QStackedBarSeries(QBarCategories categories, QObject *parent = 0);
+ explicit QStackedBarSeries(/*QBarCategories categories,*/ QObject *parent = 0);
QAbstractSeries::SeriesType type() const;
+
private:
Q_DECLARE_PRIVATE(QStackedBarSeries)
Q_DISABLE_COPY(QStackedBarSeries)
diff --git a/src/barchart/qstackedbarseries_p.h b/src/barchart/qstackedbarseries_p.h
index 0ff4011..632de86 100644
--- a/src/barchart/qstackedbarseries_p.h
+++ b/src/barchart/qstackedbarseries_p.h
@@ -39,7 +39,7 @@ QTCOMMERCIALCHART_BEGIN_NAMESPACE
class QStackedBarSeriesPrivate: public QBarSeriesPrivate
{
public:
- QStackedBarSeriesPrivate(QBarCategories categories,QStackedBarSeries* q);
+ QStackedBarSeriesPrivate(/*QBarCategories categories,*/QStackedBarSeries* q);
Chart* createGraphics(ChartPresenter* presenter);
void scaleDomain(Domain& domain);
diff --git a/test/auto/auto.pri b/test/auto/auto.pri
index a1a846f..0a7c3ea 100644
--- a/test/auto/auto.pri
+++ b/test/auto/auto.pri
@@ -4,3 +4,6 @@
CONFIG += qtestlib
!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_")
+
+INCLUDEPATH += ../inc
+HEADERS += ../inc/tst_definitions.h
diff --git a/test/auto/auto.pro b/test/auto/auto.pro
index 8121e34..63a6c58 100644
--- a/test/auto/auto.pro
+++ b/test/auto/auto.pro
@@ -3,7 +3,7 @@
}
TEMPLATE = subdirs
-SUBDIRS += qchartview qchart qlineseries qbarset qbarseries qpieslice qpieseries
+SUBDIRS += qchartview qchart qlineseries qbarset qbarseries qstackedbarseries qpercentbarseries qpieslice qpieseries
test_private:{
SUBDIRS += chartdataset domain
diff --git a/test/auto/chartdataset/tst_chartdataset.cpp b/test/auto/chartdataset/tst_chartdataset.cpp
index 0876c86..a585d87 100644
--- a/test/auto/chartdataset/tst_chartdataset.cpp
+++ b/test/auto/chartdataset/tst_chartdataset.cpp
@@ -23,6 +23,7 @@
#include
#include
#include
+#include
QTCOMMERCIALCHART_USE_NAMESPACE
@@ -151,10 +152,10 @@ void tst_ChartDataSet::addSeries()
m_dataset->addSeries(series1,axis1);
m_dataset->addSeries(series2,axis2);
- QCOMPARE(spy0.count(), axisCount);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 3);
- QCOMPARE(spy3.count(), 0);
+ TRY_COMPARE(spy0.count(), axisCount);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 3);
+ TRY_COMPARE(spy3.count(), 0);
if(axis0==0) axis0 = m_dataset->axisY();
if(axis1==0) axis1 = m_dataset->axisY();
@@ -193,10 +194,10 @@ void tst_ChartDataSet::removeSeries()
m_dataset->removeSeries(series1);
m_dataset->removeSeries(series2);
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), axisCount);
- QCOMPARE(spy2.count(), 0);
- QCOMPARE(spy3.count(), 3);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), axisCount);
+ TRY_COMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy3.count(), 3);
}
void tst_ChartDataSet::removeAllSeries_data()
@@ -225,10 +226,10 @@ void tst_ChartDataSet::removeAllSeries()
m_dataset->removeAllSeries();
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 4);
- QCOMPARE(spy2.count(), 0);
- QCOMPARE(spy3.count(), 3);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 4);
+ TRY_COMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy3.count(), 3);
}
@@ -296,10 +297,10 @@ void tst_ChartDataSet::seriesCount()
QSignalSpy spy3(m_dataset, SIGNAL(seriesRemoved(QAbstractSeries *)));
QCOMPARE(m_dataset->seriesCount(series0->type()),3);
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
- QCOMPARE(spy3.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy3.count(), 0);
}
void tst_ChartDataSet::seriesIndex_data()
@@ -333,10 +334,10 @@ void tst_ChartDataSet::seriesIndex()
QCOMPARE(m_dataset->seriesIndex(series1),1);
QCOMPARE(m_dataset->seriesIndex(series2),2);
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
- QCOMPARE(spy3.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy3.count(), 0);
m_dataset->removeSeries(series0);
m_dataset->removeSeries(series1);
@@ -414,10 +415,10 @@ void tst_ChartDataSet::domain()
QVERIFY(m_dataset->domain(axis0)==m_dataset->domain(series0));
QVERIFY(m_dataset->domain(axis1)==m_dataset->domain(series1));
QVERIFY(m_dataset->domain(axis2)==m_dataset->domain(series2));
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
- QCOMPARE(spy3.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy3.count(), 0);
}
void tst_ChartDataSet::zoomInDomain_data()
@@ -450,9 +451,9 @@ void tst_ChartDataSet::zoomInDomain()
m_dataset->zoomInDomain(QRect(0,0,100,100),QSize(1000,1000));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 1);
}
void tst_ChartDataSet::zoomOutDomain_data()
@@ -486,9 +487,9 @@ void tst_ChartDataSet::zoomOutDomain()
m_dataset->zoomOutDomain(QRect(0,0,100,100),QSize(1000,1000));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 1);
}
void tst_ChartDataSet::scrollDomain_data()
@@ -522,9 +523,9 @@ void tst_ChartDataSet::scrollDomain()
m_dataset->scrollDomain(10,10,QSize(1000,1000));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 1);
}
QTEST_MAIN(tst_ChartDataSet)
diff --git a/test/auto/domain/tst_domain.cpp b/test/auto/domain/tst_domain.cpp
index dcf5352..c1ec2eb 100644
--- a/test/auto/domain/tst_domain.cpp
+++ b/test/auto/domain/tst_domain.cpp
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
QTCOMMERCIALCHART_USE_NAMESPACE
@@ -132,9 +133,9 @@ void tst_Domain::handleAxisRangeXChanged()
QVERIFY(qFuzzyIsNull(arg1.at(0).toReal() - min));
QVERIFY(qFuzzyIsNull(arg1.at(1).toReal() - max));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 0);
}
@@ -168,9 +169,9 @@ void tst_Domain::handleAxisRangeYChanged()
QVERIFY(qFuzzyIsNull(arg1.at(0).toReal() - min));
QVERIFY(qFuzzyIsNull(arg1.at(1).toReal() - max));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 1);
}
void tst_Domain::isEmpty_data()
@@ -226,9 +227,9 @@ void tst_Domain::maxX()
domain.setMaxX(maxX2);
QCOMPARE(domain.maxX(), maxX2);
- QCOMPARE(spy0.count(), count);
- QCOMPARE(spy1.count(), count);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), count);
+ TRY_COMPARE(spy1.count(), count);
+ TRY_COMPARE(spy2.count(), 0);
}
@@ -259,9 +260,9 @@ void tst_Domain::maxY()
domain.setMaxY(maxY2);
QCOMPARE(domain.maxY(), maxY2);
- QCOMPARE(spy0.count(), count);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), count);
+ TRY_COMPARE(spy0.count(), count);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), count);
}
void tst_Domain::minX_data()
@@ -291,9 +292,9 @@ void tst_Domain::minX()
domain.setMinX(minX2);
QCOMPARE(domain.minX(), minX2);
- QCOMPARE(spy0.count(), count);
- QCOMPARE(spy1.count(), count);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), count);
+ TRY_COMPARE(spy1.count(), count);
+ TRY_COMPARE(spy2.count(), 0);
}
void tst_Domain::minY_data()
@@ -323,9 +324,9 @@ void tst_Domain::minY()
domain.setMinY(minY2);
QCOMPARE(domain.minY(), minY2);
- QCOMPARE(spy0.count(), count);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), count);
+ TRY_COMPARE(spy0.count(), count);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), count);
}
void tst_Domain::operatorEquals_data()
@@ -371,9 +372,9 @@ void tst_Domain::operatorEquals()
QCOMPARE(*domain1==*domain2, equals);
QCOMPARE(*domain1!=*domain2, notEquals);
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 0);
}
void tst_Domain::setRange_data()
@@ -407,9 +408,9 @@ void tst_Domain::setRange()
QCOMPARE(domain.minY(), minY);
QCOMPARE(domain.maxY(), maxY);
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 1);
}
@@ -443,9 +444,9 @@ void tst_Domain::setRangeX()
QVERIFY(qFuzzyIsNull(arg1.at(0).toReal() - min));
QVERIFY(qFuzzyIsNull(arg1.at(1).toReal() - max));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 0);
}
void tst_Domain::setRangeY_data()
@@ -478,9 +479,9 @@ void tst_Domain::setRangeY()
QVERIFY(qFuzzyIsNull(arg1.at(0).toReal() - min));
QVERIFY(qFuzzyIsNull(arg1.at(1).toReal() - max));
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 1);
}
void tst_Domain::spanX_data()
@@ -508,9 +509,9 @@ void tst_Domain::spanX()
QCOMPARE(domain.spanX(), spanX);
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 0);
}
void tst_Domain::spanY_data()
@@ -538,9 +539,9 @@ void tst_Domain::spanY()
QCOMPARE(domain.spanY(), spanY);
- QCOMPARE(spy0.count(), 0);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 0);
}
void tst_Domain::zoom_data()
@@ -593,10 +594,9 @@ void tst_Domain::zoom()
QCOMPARE(domain == domain1, true);
domain.zoomOut(rect0, size0);
QCOMPARE(domain == domain0, true);
- QCOMPARE(spy0.count(), 6);
- QCOMPARE(spy1.count(), 6);
- QCOMPARE(spy2.count(), 6);
-
+ TRY_COMPARE(spy0.count(), 6);
+ TRY_COMPARE(spy1.count(), 6);
+ TRY_COMPARE(spy2.count(), 6);
}
void tst_Domain::move_data()
@@ -631,9 +631,9 @@ void tst_Domain::move()
result.setRange(dx, size.width() + dx, dy, size.height() + dy);
QCOMPARE(domain == result, true);
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), dx!=0?1:0);
- QCOMPARE(spy2.count(), dy!=0?1:0);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), (dx != 0 ? 1 : 0));
+ TRY_COMPARE(spy2.count(), (dy != 0 ? 1 : 0));
}
void tst_Domain::handleAxisXChanged_data()
@@ -671,9 +671,9 @@ void tst_Domain::handleAxisXChanged()
QCOMPARE(resultMin, domain.minX());
QCOMPARE(resultMax, domain.maxX());
QCOMPARE(resultTickCount, domain.tickXCount());
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 0);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 0);
}
@@ -702,9 +702,9 @@ void tst_Domain::handleAxisYChanged()
QCOMPARE(resultMin, domain.minY());
QCOMPARE(resultMax, domain.maxY());
QCOMPARE(resultTickCount, domain.tickYCount());
- QCOMPARE(spy0.count(), 1);
- QCOMPARE(spy1.count(), 0);
- QCOMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy0.count(), 1);
+ TRY_COMPARE(spy1.count(), 0);
+ TRY_COMPARE(spy2.count(), 1);
}
QTEST_MAIN(tst_Domain)
diff --git a/test/auto/inc/tst_definitions.h b/test/auto/inc/tst_definitions.h
new file mode 100644
index 0000000..f30e9bb
--- /dev/null
+++ b/test/auto/inc/tst_definitions.h
@@ -0,0 +1,38 @@
+/****************************************************************************
+**
+** 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 TST_DEFINITIONS_H
+#define TST_DEFINITIONS_H
+
+#include
+
+#define TRY_COMPARE(actual, expected) { \
+ do { \
+ const int timeout(1000); \
+ const int waitStep(30); \
+ /* always wait before comparing to catch possible extra signals */ \
+ QTest::qWait(waitStep); \
+ for (int time(0); (actual != expected) && (time < timeout); time += waitStep) \
+ QTest::qWait(waitStep); \
+ QCOMPARE(actual, expected); \
+ } while (0); \
+}
+
+#endif // TST_DEFINITIONS_H
diff --git a/test/auto/qbarseries/tst_qbarseries.cpp b/test/auto/qbarseries/tst_qbarseries.cpp
index d184e79..d4cab5a 100644
--- a/test/auto/qbarseries/tst_qbarseries.cpp
+++ b/test/auto/qbarseries/tst_qbarseries.cpp
@@ -39,6 +39,8 @@ private slots:
void qbarseries();
void type_data();
void type();
+ void setCategories_data();
+ void setCategories();
void appendBarSet_data();
void appendBarSet();
void removeBarSet_data();
@@ -78,8 +80,10 @@ void tst_QBarSeries::cleanupTestCase()
void tst_QBarSeries::init()
{
m_categories << "category0" << "category1" << "category2";
- m_barseries = new QBarSeries(m_categories);
- m_barseries_with_sets = new QBarSeries(m_categories);
+ m_barseries = new QBarSeries();
+ m_barseries->setCategories(m_categories);
+ m_barseries_with_sets = new QBarSeries();
+ m_barseries_with_sets->setCategories(m_categories);
for (int i=0; i<5; i++) {
m_testSets.append(new QBarSet("testset"));
@@ -113,8 +117,9 @@ void tst_QBarSeries::qbarseries_data()
void tst_QBarSeries::qbarseries()
{
QFETCH(QBarCategories, categories);
- QBarSeries *barseries = new QBarSeries(categories);
+ QBarSeries *barseries = new QBarSeries();
QVERIFY(barseries != 0);
+ barseries->setCategories(categories);
QBarCategories verifyCategories = barseries->categories();
QVERIFY(verifyCategories.count() == categories.count());
@@ -133,6 +138,27 @@ void tst_QBarSeries::type()
QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypeBar);
}
+void tst_QBarSeries::setCategories_data()
+{
+ QTest::addColumn ("categories");
+ QBarCategories categories;
+ categories << "c1" << "c2" << "c3" << "c4" << "c5" << "c6";
+ QTest::newRow("cat") << categories;
+}
+
+void tst_QBarSeries::setCategories()
+{
+ QVERIFY(m_barseries->categories().count() == m_categories.count());
+
+ QFETCH(QBarCategories, categories);
+ m_barseries->setCategories(categories);
+
+ QVERIFY(m_barseries->categories().count() == categories.count());
+ for (int i=0; icategories().at(i).compare(categories.at(i)) == 0);
+ }
+}
+
void tst_QBarSeries::appendBarSet_data()
{
}
@@ -141,15 +167,32 @@ void tst_QBarSeries::appendBarSet()
{
QVERIFY(m_barseries->barsetCount() == 0);
+ bool ret = false;
+
+ // Try adding barset
QBarSet *barset = new QBarSet("testset");
- m_barseries->appendBarSet(barset);
+ ret = m_barseries->appendBarSet(barset);
+ QVERIFY(ret == true);
QVERIFY(m_barseries->barsetCount() == 1);
+ // Try adding another set
QBarSet *barset2 = new QBarSet("testset2");
- m_barseries->appendBarSet(barset2);
+ ret = m_barseries->appendBarSet(barset2);
+
+ QVERIFY(ret == true);
+ QVERIFY(m_barseries->barsetCount() == 2);
+ // Try adding same set again
+ ret = m_barseries->appendBarSet(barset2);
+ QVERIFY(ret == false);
QVERIFY(m_barseries->barsetCount() == 2);
+
+ // Try adding null set
+ ret = m_barseries->appendBarSet(0);
+ QVERIFY(ret == false);
+ QVERIFY(m_barseries->barsetCount() == 2);
+
}
void tst_QBarSeries::removeBarSet_data()
@@ -161,10 +204,24 @@ void tst_QBarSeries::removeBarSet()
int count = m_testSets.count();
QVERIFY(m_barseries_with_sets->barsetCount() == count);
+ // Try to remove null pointer (should not remove, should not crash)
+ bool ret = false;
+ ret = m_barseries_with_sets->removeBarSet(0);
+ QVERIFY(ret == false);
+ QVERIFY(m_barseries_with_sets->barsetCount() == count);
+
+ // Try to remove invalid pointer (should not remove, should not crash)
+ ret = m_barseries_with_sets->removeBarSet((QBarSet*) (m_testSets.at(0) + 1) );
+ QVERIFY(ret == false);
+ QVERIFY(m_barseries_with_sets->barsetCount() == count);
+
// remove some sets
- m_barseries_with_sets->removeBarSet(m_testSets.at(2));
- m_barseries_with_sets->removeBarSet(m_testSets.at(3));
- m_barseries_with_sets->removeBarSet(m_testSets.at(4));
+ ret = m_barseries_with_sets->removeBarSet(m_testSets.at(2));
+ QVERIFY(ret == true);
+ ret = m_barseries_with_sets->removeBarSet(m_testSets.at(3));
+ QVERIFY(ret == true);
+ ret = m_barseries_with_sets->removeBarSet(m_testSets.at(4));
+ QVERIFY(ret == true);
QVERIFY(m_barseries_with_sets->barsetCount() == 2);
@@ -173,11 +230,13 @@ void tst_QBarSeries::removeBarSet()
QVERIFY(verifysets.at(0) == m_testSets.at(0));
QVERIFY(verifysets.at(1) == m_testSets.at(1));
- // Try removing all sets again
+ // Try removing all sets again (should be ok, even if some sets have already been removed)
+ ret = false;
for (int i=0; iremoveBarSet(m_testSets.at(i));
+ ret |= m_barseries_with_sets->removeBarSet(m_testSets.at(i));
}
+ QVERIFY(ret == true);
QVERIFY(m_barseries_with_sets->barsetCount() == 0);
}
@@ -196,7 +255,37 @@ void tst_QBarSeries::appendBarSets()
sets.append(new QBarSet("testset"));
}
- m_barseries->appendBarSets(sets);
+ // Append new sets (should succeed, count should match the count of sets)
+ bool ret = false;
+ ret = m_barseries->appendBarSets(sets);
+ QVERIFY(ret == true);
+ QVERIFY(m_barseries->barsetCount() == count);
+
+ // Append same sets again (should fail, count should remain same)
+ ret = m_barseries->appendBarSets(sets);
+ QVERIFY(ret == false);
+ QVERIFY(m_barseries->barsetCount() == count);
+
+ // Try append empty list (should succeed, but count should remain same)
+ QList invalidList;
+ ret = m_barseries->appendBarSets(invalidList);
+ QVERIFY(ret == true);
+ QVERIFY(m_barseries->barsetCount() == count);
+
+ // Try append list with one new and one existing set (should fail, count remains same)
+ invalidList.append(new QBarSet("ok set"));
+ invalidList.append(sets.at(0));
+ ret = m_barseries->appendBarSets(invalidList);
+ QVERIFY(ret == false);
+ QVERIFY(m_barseries->barsetCount() == count);
+
+ // Try append list with null pointers (should fail, count remains same)
+ QList invalidList2;
+ invalidList2.append(0);
+ invalidList2.append(0);
+ invalidList2.append(0);
+ ret = m_barseries->appendBarSets(invalidList2);
+ QVERIFY(ret == false);
QVERIFY(m_barseries->barsetCount() == count);
}
@@ -210,21 +299,36 @@ void tst_QBarSeries::removeBarSets()
int count = m_testSets.count();
QVERIFY(m_barseries_with_sets->barsetCount() == count);
- // Try removing empty list of sets
- QList empty;
- m_barseries_with_sets->removeBarSets(empty);
+ // Try removing empty list of sets (should return false, since no barsets were removed)
+ bool ret = false;
+ QList invalidList;
+ ret = m_barseries_with_sets->removeBarSets(invalidList);
+ QVERIFY(ret == false);
QVERIFY(m_barseries_with_sets->barsetCount() == count);
- // remove all sets
- m_barseries_with_sets->removeBarSets(m_testSets);
+ // Add some null pointers to list
+ invalidList.append(0);
+ invalidList.append(0);
+ invalidList.append(0);
+
+ // Try removing null pointers from list (should return false, should not crash, should not remove anything)
+ ret = m_barseries_with_sets->removeBarSets(invalidList);
+ QVERIFY(ret == false);
+ QVERIFY(m_barseries_with_sets->barsetCount() == count);
+
+ // remove all sets (should return true, since sets were removed)
+ ret = m_barseries_with_sets->removeBarSets(m_testSets);
+ QVERIFY(ret == true);
QVERIFY(m_barseries_with_sets->barsetCount() == 0);
- // Try removing empty list again
- m_barseries_with_sets->removeBarSets(empty);
+ // Try removing invalid list again (should return false, since no barsets were removed)
+ ret = m_barseries_with_sets->removeBarSets(invalidList);
+ QVERIFY(ret == false);
QVERIFY(m_barseries_with_sets->barsetCount() == 0);
- // remove all sets again
- m_barseries_with_sets->removeBarSets(m_testSets);
+ // remove all sets again (should return false, since barsets were already removed)
+ ret = m_barseries_with_sets->removeBarSets(m_testSets);
+ QVERIFY(ret == false);
QVERIFY(m_barseries_with_sets->barsetCount() == 0);
}
@@ -289,25 +393,31 @@ void tst_QBarSeries::setLabelsVisible_data()
void tst_QBarSeries::setLabelsVisible()
{
+ // labels should be invisible by default
foreach (QBarSet* s, m_testSets) {
QVERIFY(s->labelsVisible() == false);
}
+ // turn labels to visible
m_barseries_with_sets->setLabelsVisible(true);
foreach (QBarSet* s, m_testSets) {
QVERIFY(s->labelsVisible() == true);
}
+ // turn labels to invisible
m_barseries_with_sets->setLabelsVisible(false);
foreach (QBarSet* s, m_testSets) {
QVERIFY(s->labelsVisible() == false);
}
+
+ // without parameter, should turn labels to visible
+ m_barseries_with_sets->setLabelsVisible();
+ foreach (QBarSet* s, m_testSets) {
+ QVERIFY(s->labelsVisible() == true);
+ }
}
/*
-
-void setLabelsVisible(bool visible = true);
-
bool setModel(QAbstractItemModel *model);
void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
void setModelMappingRange(int first, int count = -1);
diff --git a/test/auto/qchart/tst_qchart.cpp b/test/auto/qchart/tst_qchart.cpp
index fe5ca33..f16fe49 100644
--- a/test/auto/qchart/tst_qchart.cpp
+++ b/test/auto/qchart/tst_qchart.cpp
@@ -164,9 +164,16 @@ void tst_QChart::addSeries_data()
QAbstractSeries* series2 = new QScatterSeries(this);
QAbstractSeries* series3 = new QSplineSeries(this);
QAbstractSeries* series4 = new QPieSeries(this);
- QAbstractSeries* series5 = new QBarSeries(QBarCategories(),this);
- QAbstractSeries* series6 = new QPercentBarSeries(QBarCategories(),this);
- QAbstractSeries* series7 = new QStackedBarSeries(QBarCategories(),this);
+ QAbstractSeries* series5 = new QBarSeries(this);
+ QAbstractSeries* series6 = new QPercentBarSeries(this);
+ QAbstractSeries* series7 = new QStackedBarSeries(this);
+
+ QBarSeries* s5 = static_cast (series5);
+ s5->setCategories(QBarCategories());
+ QPercentBarSeries* s6 = static_cast (series6);
+ s6->setCategories(QBarCategories());
+ QStackedBarSeries* s7 = static_cast (series7);
+ s7->setCategories(QBarCategories());
QAxis* axis = new QAxis(this);
@@ -550,17 +557,27 @@ void tst_QChart::zoomOut()
m_chart->zoomIn();
- QVERIFY(minXaxisX()->min());
- QVERIFY(maxX>m_chart->axisX()->max());
- QVERIFY(minYaxisY()->min());
- QVERIFY(maxY>m_chart->axisY()->max());
+ QVERIFY(minX < m_chart->axisX()->min());
+ QVERIFY(maxX > m_chart->axisX()->max());
+ QVERIFY(minY < m_chart->axisY()->min());
+ QVERIFY(maxY > m_chart->axisY()->max());
m_chart->zoomOut();
- QVERIFY(minX==m_chart->axisX()->min());
- QVERIFY(maxX==m_chart->axisX()->max());
- QVERIFY(minY==m_chart->axisY()->min());
- QVERIFY(maxY==m_chart->axisY()->max());
+ // min x may be a zero value
+ if (qFuzzyIsNull(minX))
+ QVERIFY(qFuzzyIsNull(m_chart->axisX()->min()));
+ else
+ QCOMPARE(minX, m_chart->axisX()->min());
+
+ // min y may be a zero value
+ if (qFuzzyIsNull(minY))
+ QVERIFY(qFuzzyIsNull(m_chart->axisY()->min()));
+ else
+ QCOMPARE(minY, m_chart->axisY()->min());
+
+ QVERIFY(maxX == m_chart->axisX()->max());
+ QVERIFY(maxY == m_chart->axisY()->max());
}
QTEST_MAIN(tst_QChart)
diff --git a/test/auto/qchartview/tst_qchartview.cpp b/test/auto/qchartview/tst_qchartview.cpp
index 7d58e31..6390b69 100644
--- a/test/auto/qchartview/tst_qchartview.cpp
+++ b/test/auto/qchartview/tst_qchartview.cpp
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
QTCOMMERCIALCHART_USE_NAMESPACE
@@ -153,8 +154,8 @@ void tst_QChartView::rubberBand()
QTest::mouseMove(m_view->viewport(), QPoint(maxX, maxY) + padding.topLeft().toPoint());
QTest::mouseRelease(m_view->viewport(), Qt::LeftButton, 0, QPoint(maxX, maxY)+ padding.topLeft().toPoint());
- QCOMPARE(spy0.count(), Xcount);
- QCOMPARE(spy1.count(), Ycount);
+ TRY_COMPARE(spy0.count(), Xcount);
+ TRY_COMPARE(spy1.count(), Ycount);
//this is hack since view does not get events otherwise
m_view->setMouseTracking(false);
diff --git a/test/auto/qlineseries/tst_qlineseries.cpp b/test/auto/qlineseries/tst_qlineseries.cpp
index 6469142..306dbd1 100644
--- a/test/auto/qlineseries/tst_qlineseries.cpp
+++ b/test/auto/qlineseries/tst_qlineseries.cpp
@@ -22,6 +22,7 @@
#include
#include
#include
+#include
Q_DECLARE_METATYPE(QList)
@@ -173,10 +174,8 @@ void tst_QLineSeries::append_raw()
{
QFETCH(QList, points);
QSignalSpy spy0(m_series, SIGNAL(clicked(QPointF const&)));
- QTest::qWait(200);
m_series->append(points);
- QTest::qWait(200);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->points(), points);
}
@@ -240,7 +239,7 @@ void tst_QLineSeries::count_raw()
for(int i=0 ; i< count; ++i)
m_series->append(i,i);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->count(), count);
}
@@ -262,7 +261,7 @@ void tst_QLineSeries::oper()
}
QCOMPARE(series.points(), points);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
}
@@ -283,7 +282,7 @@ void tst_QLineSeries::pen()
QSignalSpy spy0(&series, SIGNAL(clicked(QPointF const&)));
series.setPen(pen);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(series.pen(), pen);
m_chart->addSeries(&series);
@@ -312,7 +311,7 @@ void tst_QLineSeries::pointsVisible_raw()
QFETCH(bool, pointsVisible);
QSignalSpy spy0(m_series, SIGNAL(clicked(QPointF const&)));
m_series->setPointsVisible(pointsVisible);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->pointsVisible(), pointsVisible);
}
@@ -326,17 +325,13 @@ void tst_QLineSeries::remove_raw()
QFETCH(QList, points);
QSignalSpy spy0(m_series, SIGNAL(clicked(QPointF const&)));
m_series->append(points);
- QTest::qWait(200);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->points(), points);
foreach(const QPointF& point,points)
- {
m_series->remove(point);
- QTest::qWait(200);
- }
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->points().count(), 0);
}
@@ -375,12 +370,10 @@ void tst_QLineSeries::removeAll_raw()
QFETCH(QList, points);
QSignalSpy spy0(m_series, SIGNAL(clicked(QPointF const&)));
m_series->append(points);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->points(), points);
- QTest::qWait(200);
m_series->removeAll();
- QTest::qWait(200);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->points().count(), 0);
}
@@ -418,15 +411,11 @@ void tst_QLineSeries::replace_raw()
QFETCH(QList, points);
QSignalSpy spy0(m_series, SIGNAL(clicked(QPointF const&)));
m_series->append(points);
- QCOMPARE(spy0.count(), 0);
+ TRY_COMPARE(spy0.count(), 0);
QCOMPARE(m_series->points(), points);
- QTest::qWait(200);
foreach(const QPointF& point,points)
- {
- m_series->replace(point.x(),point.y(),point.x(),0);
- QTest::qWait(200);
- }
+ m_series->replace(point.x(),point.y(),point.x(),0);
QList newPoints = m_series->points();
diff --git a/test/auto/qpercentbarseries/qpercentbarseries.pro b/test/auto/qpercentbarseries/qpercentbarseries.pro
new file mode 100644
index 0000000..64f9b4b
--- /dev/null
+++ b/test/auto/qpercentbarseries/qpercentbarseries.pro
@@ -0,0 +1,6 @@
+!include( ../auto.pri ) {
+ error( "Couldn't find the auto.pri file!" )
+}
+SOURCES += tst_qpercentbarseries.cpp
+
+!system_build:mac: QMAKE_POST_LINK += "$$MAC_POST_LINK_PREFIX $$MAC_AUTOTESTS_BIN_DIR"
diff --git a/test/auto/qpercentbarseries/tst_qpercentbarseries.cpp b/test/auto/qpercentbarseries/tst_qpercentbarseries.cpp
new file mode 100644
index 0000000..6fc0b64
--- /dev/null
+++ b/test/auto/qpercentbarseries/tst_qpercentbarseries.cpp
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** 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
+#include
+#include
+
+QTCOMMERCIALCHART_USE_NAMESPACE
+
+class tst_QPercentBarSeries : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void qpercentbarseries_data();
+ void qpercentbarseries();
+ void type_data();
+ void type();
+
+private:
+ QPercentBarSeries* m_barseries;
+};
+
+void tst_QPercentBarSeries::initTestCase()
+{
+}
+
+void tst_QPercentBarSeries::cleanupTestCase()
+{
+}
+
+void tst_QPercentBarSeries::init()
+{
+ m_barseries = new QPercentBarSeries();
+}
+
+void tst_QPercentBarSeries::cleanup()
+{
+ delete m_barseries;
+ m_barseries = 0;
+}
+
+void tst_QPercentBarSeries::qpercentbarseries_data()
+{
+}
+
+void tst_QPercentBarSeries::qpercentbarseries()
+{
+ QPercentBarSeries *barseries = new QPercentBarSeries();
+ QVERIFY(barseries != 0);
+}
+
+void tst_QPercentBarSeries::type_data()
+{
+
+}
+
+void tst_QPercentBarSeries::type()
+{
+ QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypePercentBar);
+}
+
+
+/*
+bool setModel(QAbstractItemModel *model);
+void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
+void setModelMappingRange(int first, int count = -1);
+*/
+QTEST_MAIN(tst_QPercentBarSeries)
+
+#include "tst_qpercentbarseries.moc"
+
diff --git a/test/auto/qpieseries/tst_qpieseries.cpp b/test/auto/qpieseries/tst_qpieseries.cpp
index 27835a0..ad6486d 100644
--- a/test/auto/qpieseries/tst_qpieseries.cpp
+++ b/test/auto/qpieseries/tst_qpieseries.cpp
@@ -19,11 +19,16 @@
****************************************************************************/
#include
+#include
+#include
#include
#include
+#include
QTCOMMERCIALCHART_USE_NAMESPACE
+Q_DECLARE_METATYPE(QPieSlice*)
+
class tst_qpieseries : public QObject
{
Q_OBJECT
@@ -39,13 +44,12 @@ private slots:
void append();
void insert();
void remove();
- //void calculatedValues();
- //void themes();
- //void clickedSignal();
- //void hoverSignal();
+ void calculatedValues();
+ void clickedSignal();
+ void hoverSignal();
private:
-
+ void verifyCalculatedData(const QPieSeries &series, bool *ok);
private:
@@ -53,6 +57,7 @@ private:
void tst_qpieseries::initTestCase()
{
+ qRegisterMetaType("QPieSlice*");
}
void tst_qpieseries::cleanupTestCase()
@@ -76,12 +81,12 @@ void tst_qpieseries::construction()
QVERIFY(s.type() == QAbstractSeries::SeriesTypePie);
QVERIFY(s.count() == 0);
QVERIFY(s.isEmpty());
- QVERIFY(qFuzzyIsNull(s.sum()));
- QVERIFY(qFuzzyCompare(s.horizontalPosition(), 0.5));
- QVERIFY(qFuzzyCompare(s.verticalPosition(), 0.5));
- QVERIFY(qFuzzyCompare(s.pieSize(), 0.7));
- QVERIFY(qFuzzyIsNull(s.pieStartAngle()));
- QVERIFY(qFuzzyCompare(s.pieEndAngle(), 360));
+ QCOMPARE(s.sum(), 0.0);
+ QCOMPARE(s.horizontalPosition(), 0.5);
+ QCOMPARE(s.verticalPosition(), 0.5);
+ QCOMPARE(s.pieSize(), 0.7);
+ QCOMPARE(s.pieStartAngle(), 0.0);
+ QCOMPARE(s.pieEndAngle(), 360.0);
}
void tst_qpieseries::append()
@@ -116,14 +121,14 @@ void tst_qpieseries::append()
// append with params
QPieSlice *slice5 = s.append(5, "slice 5");
QVERIFY(slice5 != 0);
- QVERIFY(qFuzzyCompare(slice5->value(), 5.0));
+ QCOMPARE(slice5->value(), 5.0);
QCOMPARE(slice5->label(), QString("slice 5"));
QCOMPARE(s.count(), 5);
// check slices
QVERIFY(!s.isEmpty());
for (int i=0; ivalue(), (qreal) i+1));
+ QCOMPARE(s.slices().at(i)->value(), (qreal) i+1);
QCOMPARE(s.slices().at(i)->label(), QString("slice ") + QString::number(i+1));
}
}
@@ -153,7 +158,7 @@ void tst_qpieseries::insert()
// check slices
for (int i=0; ivalue(), (qreal) i+1));
+ QCOMPARE(s.slices().at(i)->value(), (qreal) i+1);
QCOMPARE(s.slices().at(i)->label(), QString("slice ") + QString::number(i+1));
}
}
@@ -187,32 +192,135 @@ void tst_qpieseries::remove()
QCOMPARE(s.count(), 0);
// check that slices were actually destroyed
- QCOMPARE(spy1.count(), 1);
- QCOMPARE(spy2.count(), 1);
- QCOMPARE(spy3.count(), 1);
+ TRY_COMPARE(spy1.count(), 1);
+ TRY_COMPARE(spy2.count(), 1);
+ TRY_COMPARE(spy3.count(), 1);
}
-/*
void tst_qpieseries::calculatedValues()
{
+ bool ok;
+ QPieSeries s;
+
+ // add a slice
+ QPieSlice *slice1 = s.append(1, "slice 1");
+ verifyCalculatedData(s, &ok);
+ if (!ok)
+ return;
+ // add some more slices
+ QList list;
+ list << new QPieSlice(2, "slice 2");
+ list << new QPieSlice(3, "slice 3");
+ s.append(list);
+ verifyCalculatedData(s, &ok);
+ if (!ok)
+ return;
+
+ // remove a slice
+ s.remove(slice1);
+ verifyCalculatedData(s, &ok);
+ if (!ok)
+ return;
+
+ // insert a slice
+ s.insert(0, new QPieSlice(1, "Slice 4"));
+ verifyCalculatedData(s, &ok);
+ if (!ok)
+ return;
+
+ // clear all
+ s.clear();
+ verifyCalculatedData(s, &ok);
}
-void tst_qpieseries::themes()
+void tst_qpieseries::verifyCalculatedData(const QPieSeries &series, bool *ok)
{
+ *ok = false;
+
+ qreal sum = 0;
+ foreach (const QPieSlice *slice, series.slices())
+ sum += slice->value();
+ QCOMPARE(series.sum(), sum);
+
+ qreal startAngle = series.pieStartAngle();
+ qreal pieAngleSpan = series.pieEndAngle() - series.pieStartAngle();
+ foreach (const QPieSlice *slice, series.slices()) {
+ qreal ratio = slice->value() / sum;
+ qreal sliceSpan = pieAngleSpan * ratio;
+ QCOMPARE(slice->startAngle(), startAngle);
+ QCOMPARE(slice->endAngle(), startAngle + sliceSpan);
+ QCOMPARE(slice->percentage(), ratio);
+ startAngle += sliceSpan;
+ }
+
+ if (!series.isEmpty())
+ QCOMPARE(series.slices().last()->endAngle(), series.pieEndAngle());
+ *ok = true;
}
+
void tst_qpieseries::clickedSignal()
{
-
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ series->setPieSize(1.0);
+ QPieSlice *s1 = series->append(1, "slice 1");
+ series->append(2, "slice 2");
+ series->append(3, "slice 3");
+ QSignalSpy clickSpy1(series, SIGNAL(clicked(QPieSlice*)));
+
+ // add series to the chart
+ QChartView view(new QChart());
+ view.resize(200, 200);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // simulate clicks
+ // pie rectangle: QRectF(60,60 121x121)
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(139, 85)); // inside slice 1
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(clickSpy1.count(), 1);
+ QCOMPARE(qvariant_cast(clickSpy1.at(0).at(0)), s1);
}
void tst_qpieseries::hoverSignal()
{
-
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ series->setPieSize(1.0);
+ QPieSlice *s1 = series->append(1, "slice 1");
+ series->append(2, "slice 2");
+ series->append(3, "slice 3");
+
+ // add series to the chart
+ QChartView view(new QChart());
+ view.resize(200, 200);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // first move to right top corner
+ QTest::mouseMove(view.viewport(), QPoint(200, 0));
+
+ // move inside the slice
+ // pie rectangle: QRectF(60,60 121x121)
+ QSignalSpy hoverSpy(series, SIGNAL(hovered(QPieSlice*,bool)));
+ QTest::mouseMove(view.viewport(), QPoint(139, 85));
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(hoverSpy.count(), 1);
+ QCOMPARE(qvariant_cast(hoverSpy.at(0).at(0)), s1);
+ QCOMPARE(qvariant_cast(hoverSpy.at(0).at(1)), true);
+
+ // move outside the slice
+ QTest::mouseMove(view.viewport(), QPoint(200, 0));
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(hoverSpy.count(), 2);
+ QCOMPARE(qvariant_cast(hoverSpy.at(1).at(0)), s1);
+ QCOMPARE(qvariant_cast(hoverSpy.at(1).at(1)), false);
}
-*/
QTEST_MAIN(tst_qpieseries)
diff --git a/test/auto/qpieslice/tst_qpieslice.cpp b/test/auto/qpieslice/tst_qpieslice.cpp
index cd92d85..31464eb 100644
--- a/test/auto/qpieslice/tst_qpieslice.cpp
+++ b/test/auto/qpieslice/tst_qpieslice.cpp
@@ -19,7 +19,11 @@
****************************************************************************/
#include
+#include
+#include
+#include
#include
+#include
QTCOMMERCIALCHART_USE_NAMESPACE
@@ -36,6 +40,9 @@ public slots:
private slots:
void construction();
void changedSignals();
+ void customize();
+ void mouseClick();
+ void mouseHover();
private:
@@ -66,7 +73,7 @@ void tst_qpieslice::construction()
{
// no params
QPieSlice slice1;
- QVERIFY(qFuzzyIsNull(slice1.value()));
+ QCOMPARE(slice1.value(), 0.0);
QVERIFY(slice1.label().isEmpty());
QVERIFY(!slice1.isLabelVisible());
QVERIFY(!slice1.isExploded());
@@ -74,15 +81,15 @@ void tst_qpieslice::construction()
QCOMPARE(slice1.brush(), QBrush());
QCOMPARE(slice1.labelPen(), QPen());
QCOMPARE(slice1.labelFont(), QFont());
- QVERIFY(qFuzzyCompare(slice1.labelArmLengthFactor(), 0.15)); // default value
- QVERIFY(qFuzzyCompare(slice1.explodeDistanceFactor(), 0.15)); // default value
- QVERIFY(qFuzzyIsNull(slice1.percentage()));
- QVERIFY(qFuzzyIsNull(slice1.startAngle()));
- QVERIFY(qFuzzyIsNull(slice1.endAngle()));
+ QCOMPARE(slice1.labelArmLengthFactor(), 0.15); // default value
+ QCOMPARE(slice1.explodeDistanceFactor(), 0.15); // default value
+ QCOMPARE(slice1.percentage(), 0.0);
+ QCOMPARE(slice1.startAngle(), 0.0);
+ QCOMPARE(slice1.endAngle(), 0.0);
// value and label params
QPieSlice slice2(1.0, "foobar");
- QVERIFY(qFuzzyCompare(slice2.value(), 1.0));
+ QCOMPARE(slice2.value(), 1.0);
QCOMPARE(slice2.label(), QString("foobar"));
QVERIFY(!slice2.isLabelVisible());
QVERIFY(!slice2.isExploded());
@@ -90,11 +97,11 @@ void tst_qpieslice::construction()
QCOMPARE(slice2.brush(), QBrush());
QCOMPARE(slice2.labelPen(), QPen());
QCOMPARE(slice2.labelFont(), QFont());
- QVERIFY(qFuzzyCompare(slice2.labelArmLengthFactor(), 0.15)); // default value
- QVERIFY(qFuzzyCompare(slice2.explodeDistanceFactor(), 0.15)); // default value
- QVERIFY(qFuzzyIsNull(slice2.percentage()));
- QVERIFY(qFuzzyIsNull(slice2.startAngle()));
- QVERIFY(qFuzzyIsNull(slice2.endAngle()));
+ QCOMPARE(slice2.labelArmLengthFactor(), 0.15); // default value
+ QCOMPARE(slice2.explodeDistanceFactor(), 0.15); // default value
+ QCOMPARE(slice2.percentage(), 0.0);
+ QCOMPARE(slice2.startAngle(), 0.0);
+ QCOMPARE(slice2.endAngle(), 0.0);
}
void tst_qpieslice::changedSignals()
@@ -122,7 +129,139 @@ void tst_qpieslice::changedSignals()
slice.setLabelArmLengthFactor(0.1);
slice.setExplodeDistanceFactor(0.1);
slice.setExplodeDistanceFactor(0.1);
- QCOMPARE(spy.count(), 10);
+ TRY_COMPARE(spy.count(), 10);
+}
+
+void tst_qpieslice::customize()
+{
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ QPieSlice *s1 = series->append(1, "slice 1");
+ QPieSlice *s2 = series->append(2, "slice 2");
+ series->append(3, "slice 3");
+
+ // customize a slice
+ QPen p1(Qt::red);
+ s1->setPen(p1);
+ QBrush b1(Qt::red);
+ s1->setBrush(b1);
+ s1->setLabelPen(p1);
+ QFont f1("Consolas");
+ s1->setLabelFont(f1);
+
+ // add series to the chart
+ QChartView view(new QChart());
+ view.resize(200, 200);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ //QTest::qWait(1000);
+
+ // check that customizations persist
+ QCOMPARE(s1->pen(), p1);
+ QCOMPARE(s1->brush(), b1);
+ QCOMPARE(s1->labelPen(), p1);
+ QCOMPARE(s1->labelFont(), f1);
+
+ // remove a slice
+ series->remove(s2);
+ QCOMPARE(s1->pen(), p1);
+ QCOMPARE(s1->brush(), b1);
+ QCOMPARE(s1->labelPen(), p1);
+ QCOMPARE(s1->labelFont(), f1);
+
+ // add a slice
+ series->append(4, "slice 4");
+ QCOMPARE(s1->pen(), p1);
+ QCOMPARE(s1->brush(), b1);
+ QCOMPARE(s1->labelPen(), p1);
+ QCOMPARE(s1->labelFont(), f1);
+
+ // insert a slice
+ series->insert(0, new QPieSlice(5, "slice 5"));
+ QCOMPARE(s1->pen(), p1);
+ QCOMPARE(s1->brush(), b1);
+ QCOMPARE(s1->labelPen(), p1);
+ QCOMPARE(s1->labelFont(), f1);
+
+ // change theme
+ // theme will overwrite customizations
+ view.chart()->setTheme(QChart::ChartThemeHighContrast);
+ QVERIFY(s1->pen() != p1);
+ QVERIFY(s1->brush() != b1);
+ QVERIFY(s1->labelPen() != p1);
+ QVERIFY(s1->labelFont() != f1);
+}
+
+void tst_qpieslice::mouseClick()
+{
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ series->setPieSize(1.0);
+ QPieSlice *s1 = series->append(1, "slice 1");
+ QPieSlice *s2 = series->append(2, "slice 2");
+ QPieSlice *s3 = series->append(3, "slice 3");
+ QSignalSpy clickSpy1(s1, SIGNAL(clicked()));
+ QSignalSpy clickSpy2(s2, SIGNAL(clicked()));
+ QSignalSpy clickSpy3(s3, SIGNAL(clicked()));
+
+ // add series to the chart
+ QChartView view(new QChart());
+ view.resize(200, 200);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // simulate clicks
+ // pie rectangle: QRectF(60,60 121x121)
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(139, 85)); // inside slice 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(146, 136)); // inside slice 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(91, 119)); // inside slice 3
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(70, 70)); // inside pie rectangle but not inside a slice
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, QPoint(170, 170)); // inside pie rectangle but not inside a slice
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(clickSpy1.count(), 1);
+ QCOMPARE(clickSpy2.count(), 1);
+ QCOMPARE(clickSpy3.count(), 1);
+}
+
+void tst_qpieslice::mouseHover()
+{
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ series->setPieSize(1.0);
+ QPieSlice *s1 = series->append(1, "slice 1");
+ series->append(2, "slice 2");
+ series->append(3, "slice 3");
+
+ // add series to the chart
+ QChartView view(new QChart());
+ view.resize(200, 200);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // first move to right top corner
+ QTest::mouseMove(view.viewport(), QPoint(200, 0));
+
+ // move inside slice rectangle but NOT the actual slice
+ // pie rectangle: QRectF(60,60 121x121)
+ QSignalSpy hoverSpy(s1, SIGNAL(hovered(bool)));
+ QTest::mouseMove(view.viewport(), QPoint(170, 70));
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(hoverSpy.count(), 0);
+
+ // move inside the slice
+ QTest::mouseMove(view.viewport(), QPoint(139, 85));
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(hoverSpy.count(), 1);
+ QCOMPARE(qvariant_cast(hoverSpy.at(0).at(0)), true);
+
+ // move outside the slice
+ QTest::mouseMove(view.viewport(), QPoint(200, 0));
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+ QCOMPARE(hoverSpy.count(), 2);
+ QCOMPARE(qvariant_cast(hoverSpy.at(1).at(0)), false);
}
QTEST_MAIN(tst_qpieslice)
diff --git a/test/auto/qstackedbarseries/qstackedbarseries.pro b/test/auto/qstackedbarseries/qstackedbarseries.pro
new file mode 100644
index 0000000..a3d9c51
--- /dev/null
+++ b/test/auto/qstackedbarseries/qstackedbarseries.pro
@@ -0,0 +1,6 @@
+!include( ../auto.pri ) {
+ error( "Couldn't find the auto.pri file!" )
+}
+SOURCES += tst_qstackedbarseries.cpp
+
+!system_build:mac: QMAKE_POST_LINK += "$$MAC_POST_LINK_PREFIX $$MAC_AUTOTESTS_BIN_DIR"
diff --git a/test/auto/qstackedbarseries/tst_qstackedbarseries.cpp b/test/auto/qstackedbarseries/tst_qstackedbarseries.cpp
new file mode 100644
index 0000000..a4ff457
--- /dev/null
+++ b/test/auto/qstackedbarseries/tst_qstackedbarseries.cpp
@@ -0,0 +1,94 @@
+/****************************************************************************
+**
+** 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
+#include
+#include
+
+QTCOMMERCIALCHART_USE_NAMESPACE
+
+class tst_QStackedBarSeries : public QObject
+{
+ Q_OBJECT
+
+public slots:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+private slots:
+ void qstackedbarseries_data();
+ void qstackedbarseries();
+ void type_data();
+ void type();
+
+private:
+ QStackedBarSeries* m_barseries;
+};
+
+void tst_QStackedBarSeries::initTestCase()
+{
+}
+
+void tst_QStackedBarSeries::cleanupTestCase()
+{
+}
+
+void tst_QStackedBarSeries::init()
+{
+ m_barseries = new QStackedBarSeries();
+}
+
+void tst_QStackedBarSeries::cleanup()
+{
+ delete m_barseries;
+ m_barseries = 0;
+}
+
+void tst_QStackedBarSeries::qstackedbarseries_data()
+{
+}
+
+void tst_QStackedBarSeries::qstackedbarseries()
+{
+ QStackedBarSeries *barseries = new QStackedBarSeries();
+ QVERIFY(barseries != 0);
+}
+
+void tst_QStackedBarSeries::type_data()
+{
+
+}
+
+void tst_QStackedBarSeries::type()
+{
+ QVERIFY(m_barseries->type() == QAbstractSeries::SeriesTypeStackedBar);
+}
+
+/*
+bool setModel(QAbstractItemModel *model);
+void setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
+void setModelMappingRange(int first, int count = -1);
+*/
+QTEST_MAIN(tst_QStackedBarSeries)
+
+#include "tst_qstackedbarseries.moc"
+
diff --git a/test/chartwidgettest/mainwidget.cpp b/test/chartwidgettest/mainwidget.cpp
index 4e136b2..f9c7099 100644
--- a/test/chartwidgettest/mainwidget.cpp
+++ b/test/chartwidgettest/mainwidget.cpp
@@ -272,12 +272,16 @@ void MainWidget::addSeries(QString seriesName, int columnCount, int rowCount, QS
foreach(QString label, labels)
category << label;
QBarSeries* series = 0;
- if (seriesName == "Bar")
- series = new QBarSeries(category, this);
- else if (seriesName == "Stacked bar")
- series = new QStackedBarSeries(category, this);
- else
- series = new QPercentBarSeries(category, this);
+ if (seriesName == "Bar") {
+ series = new QBarSeries(this);
+ series->setCategories(category);
+ } else if (seriesName == "Stacked bar") {
+ series = new QStackedBarSeries(this);
+ series->setCategories(category);
+ } else {
+ series = new QPercentBarSeries(this);
+ series->setCategories(category);
+ }
for (int j(0); j < data.count(); j++) {
QList column = data.at(j);
diff --git a/test/gdpbarchart/widget.cpp b/test/gdpbarchart/widget.cpp
index dfd6673..0cd68ba 100644
--- a/test/gdpbarchart/widget.cpp
+++ b/test/gdpbarchart/widget.cpp
@@ -140,8 +140,9 @@ void Widget::refreshChart()
QStringList category;
for (int i = 0; i < selectedCountriesStrings.size(); i++)
category << selectedCountriesStrings[i];
- QBarSeries* series0 = new QBarSeries(category);
- series0 = new QBarSeries(category);
+ QBarSeries* series0 = new QBarSeries();
+ series0->setCategories(category);
+// series0 = new QBarSeries(category);
// prepare the selected counries SQL query
QString countriesQuery = "country IN (";
diff --git a/test/tablemodelchart/tablewidget.cpp b/test/tablemodelchart/tablewidget.cpp
index af81e48..0821ca3 100644
--- a/test/tablemodelchart/tablewidget.cpp
+++ b/test/tablemodelchart/tablewidget.cpp
@@ -370,7 +370,8 @@ void TableWidget::updateChartType(bool toggle)
{
m_chart->setAnimationOptions(QChart::SeriesAnimations);
- QBarSeries* barSeries = new QBarSeries(QStringList());
+ QBarSeries* barSeries = new QBarSeries();
+ barSeries->setCategories(QStringList());
barSeries->setModel(m_model);
// barSeries->setModelMappingRange(2, 5);
barSeries->setModelMapping(5, 2, 4, Qt::Vertical);