summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@theqtcompany.com>2014-11-12 10:23:01 +0200
committerTitta Heikkala <titta.heikkala@theqtcompany.com>2014-11-12 13:13:16 +0200
commitf78be8da2422a758e0f50d3ca0cced53f44d0f12 (patch)
tree91dae2e5066bf548817c32f06c26df425a58f82f /tests
parent6c4e7f2cd60f47ef5935ed9f21d19bb94db5f048 (diff)
Add pressed, released and doubleClicked signals
Added pressed, released and doubleClicked signals for all series. The signals are also added to QPieSlice and QBoxPlotSet. Change-Id: If94948be439a3b53ed48c02d0092091e836222a4 Task-number: QTRD-2384 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@theqtcompany.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qbarseries/tst_qbarseries.cpp407
-rw-r--r--tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp406
-rw-r--r--tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp408
-rw-r--r--tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp421
-rw-r--r--tests/auto/qlineseries/tst_qlineseries.cpp96
-rw-r--r--tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp413
-rw-r--r--tests/auto/qpieseries/tst_qpieseries.cpp136
-rw-r--r--tests/auto/qpieslice/tst_qpieslice.cpp111
-rw-r--r--tests/auto/qscatterseries/tst_qscatterseries.cpp96
-rw-r--r--tests/auto/qsplineseries/tst_qsplineseries.cpp95
-rw-r--r--tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp421
-rw-r--r--tests/manual/boxplottester/mainwidget.cpp37
-rw-r--r--tests/manual/boxplottester/mainwidget.h6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/AreaChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/BarChart.qml7
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalBarChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalPercentBarChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalStackedBarChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/LineChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/PercentBarChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/PieChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/ScatterChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/SplineChart.qml6
-rw-r--r--tests/manual/qmlchartproperties/qml/qmlchartproperties/StackedBarChart.qml6
24 files changed, 3120 insertions, 0 deletions
diff --git a/tests/auto/qbarseries/tst_qbarseries.cpp b/tests/auto/qbarseries/tst_qbarseries.cpp
index 029a445c..9f318ee2 100644
--- a/tests/auto/qbarseries/tst_qbarseries.cpp
+++ b/tests/auto/qbarseries/tst_qbarseries.cpp
@@ -69,6 +69,9 @@ private slots:
void mousehovered();
void clearWithAnimations();
void destruction();
+ void mousePressed();
+ void mouseReleased();
+ void mouseDoubleClicked();
private:
QBarSeries* m_barseries;
@@ -926,6 +929,410 @@ void tst_QBarSeries::destruction()
QCOMPARE(spy1.count(), 1);
}
+void tst_QBarSeries::mousePressed()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QBarSeries* series = new QBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(pressed(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(pressed(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = (scaleX / setCount) * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal yPos = height + scaleY * domainMinY + plotArea.top();
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left();
+ xPos -= series->count()*rectWidth/2;
+ xPos += set*rectWidth;
+
+ qreal rectHeight = barSets.at(set)->at(i) * scaleY;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QBarSeries::mouseReleased()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QBarSeries* series = new QBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(released(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(released(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = (scaleX / setCount) * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal yPos = height + scaleY * domainMinY + plotArea.top();
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left();
+ xPos -= series->count()*rectWidth/2;
+ xPos += set*rectWidth;
+
+ qreal rectHeight = barSets.at(set)->at(i) * scaleY;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QBarSeries::mouseDoubleClicked()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QBarSeries* series = new QBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 10; // From 0 to 10 because of maximum value in set is 10
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = (scaleX / setCount) * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal yPos = height + scaleY * domainMinY + plotArea.top();
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left();
+ xPos -= series->count()*rectWidth/2;
+ xPos += set*rectWidth;
+
+ qreal rectHeight = barSets.at(set)->at(i) * scaleY;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ }
+ }
+
+ // barset 1, bar 0
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+}
+
QTEST_MAIN(tst_QBarSeries)
#include "tst_qbarseries.moc"
diff --git a/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp b/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp
index 29bb682f..a209becc 100644
--- a/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp
+++ b/tests/auto/qhorizontalbarseries/tst_qhorizontalbarseries.cpp
@@ -64,6 +64,9 @@ private slots:
void mousehovered_data();
void mousehovered();
void clearWithAnimations();
+ void mousePressed();
+ void mouseReleased();
+ void mouseDoubleClicked();
private:
QHorizontalBarSeries* m_barseries;
@@ -859,6 +862,409 @@ void tst_QHorizontalBarSeries::clearWithAnimations()
series->clear();
}
+void tst_QHorizontalBarSeries::mousePressed()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalBarSeries* series = new QHorizontalBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(pressed(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(pressed(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeX = 10; // From 0 to 10 because of maximum value in set is 10
+ qreal rangeY = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = (scaleY / setCount) * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal xPos = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = plotArea.bottom() + (domainMinY - i) * scaleY;
+ yPos += setCount*rectHeight/2;
+ yPos -= set*rectHeight;
+
+ qreal rectWidth = barSets.at(set)->at(i) * scaleX;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QHorizontalBarSeries::mouseReleased()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalBarSeries* series = new QHorizontalBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(released(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(released(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeX = 10; // From 0 to 10 because of maximum value in set is 10
+ qreal rangeY = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = (scaleY / setCount) * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal xPos = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = plotArea.bottom() + (domainMinY - i) * scaleY;
+ yPos += setCount*rectHeight/2;
+ yPos -= set*rectHeight;
+
+ qreal rectWidth = barSets.at(set)->at(i) * scaleX;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QHorizontalBarSeries::mouseDoubleClicked()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalBarSeries* series = new QHorizontalBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeX = 10; // From 0 to 10 because of maximum value in set is 10
+ qreal rangeY = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = (scaleY / setCount) * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal xPos = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = plotArea.bottom() + (domainMinY - i) * scaleY;
+ yPos += setCount*rectHeight/2;
+ yPos -= set*rectHeight;
+
+ qreal rectWidth = barSets.at(set)->at(i) * scaleX;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ }
+ }
+
+ // barset 1, bar 0
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+}
QTEST_MAIN(tst_QHorizontalBarSeries)
#include "tst_qhorizontalbarseries.moc"
diff --git a/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp b/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp
index 2c3f4bd8..add938c6 100644
--- a/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp
+++ b/tests/auto/qhorizontalpercentbarseries/tst_qhorizontalpercentbarseries.cpp
@@ -52,6 +52,9 @@ private slots:
void mousehovered_data();
void mousehovered();
void zeroValuesInSeries();
+ void mousePressed();
+ void mouseReleased();
+ void mouseDoubleClicked();
private:
QHorizontalPercentBarSeries* m_barseries;
@@ -604,6 +607,411 @@ void tst_QHorizontalPercentBarSeries::zeroValuesInSeries()
QTest::qWaitForWindowShown(&view);
}
+
+void tst_QHorizontalPercentBarSeries::mousePressed()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalPercentBarSeries* series = new QHorizontalPercentBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(pressed(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(pressed(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeX = 100; // From 0 to 100 because of scaling to 100%
+ qreal rangeY = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = scaleY * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal colSum = 20; // Sum of values in column (10 + 10 in our test case)
+ qreal percentage = (100 / colSum);
+ qreal xPos = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = (domainMinY +0.5 -i) * scaleY + plotArea.bottom() - rectHeight/2;
+ qreal rectWidth = barSets.at(set)->at(i) * percentage * scaleX;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xPos += rectWidth;
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QHorizontalPercentBarSeries::mouseReleased()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalPercentBarSeries* series = new QHorizontalPercentBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(released(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(released(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeX = 100; // From 0 to 100 because of scaling to 100%
+ qreal rangeY = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = scaleY * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal colSum = 20; // Sum of values in column (10 + 10 in our test case)
+ qreal percentage = (100 / colSum);
+ qreal xPos = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = (domainMinY +0.5 -i) * scaleY + plotArea.bottom() - rectHeight/2;
+ qreal rectWidth = barSets.at(set)->at(i) * percentage * scaleX;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xPos += rectWidth;
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QHorizontalPercentBarSeries::mouseDoubleClicked()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalPercentBarSeries* series = new QHorizontalPercentBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeX = 100; // From 0 to 100 because of scaling to 100%
+ qreal rangeY = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = scaleY * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal colSum = 20; // Sum of values in column (10 + 10 in our test case)
+ qreal percentage = (100 / colSum);
+ qreal xPos = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = (domainMinY +0.5 -i) * scaleY + plotArea.bottom() - rectHeight/2;
+ qreal rectWidth = barSets.at(set)->at(i) * percentage * scaleX;
+ QRectF rect(xPos, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xPos += rectWidth;
+ }
+ }
+
+ // barset 1, bar 0
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+}
+
QTEST_MAIN(tst_QHorizontalPercentBarSeries)
#include "tst_qhorizontalpercentbarseries.moc"
diff --git a/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp b/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp
index ac6b9b1b..cbf64efc 100644
--- a/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp
+++ b/tests/auto/qhorizontalstackedbarseries/tst_qhorizontalstackedbarseries.cpp
@@ -51,6 +51,9 @@ private slots:
void mouseclicked();
void mousehovered_data();
void mousehovered();
+ void mousePressed();
+ void mouseReleased();
+ void mouseDoubleClicked();
private:
QHorizontalStackedBarSeries* m_barseries;
@@ -594,6 +597,424 @@ void tst_QHorizontalStackedBarSeries::mousehovered()
QVERIFY(setIndexSpyArg.at(1).toInt() == 1);
}
+void tst_QHorizontalStackedBarSeries::mousePressed()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalStackedBarSeries* series = new QHorizontalStackedBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(pressed(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(pressed(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 3; // 3 values per set
+ qreal rangeX = 20; // From 0 to 20 because bars are stacked (this should be height of highest stack)
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = scaleY * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal xMax = -scaleX * domainMinX + plotArea.left();
+ qreal xMin = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = (domainMinY +0.5 -i) * scaleY + plotArea.bottom() - rectHeight/2;
+ qreal rectWidth = barSets.at(set)->at(i) * scaleX;
+ if (rectWidth > 0) {
+ QRectF rect(xMax, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xMax += rectWidth;
+ } else {
+ QRectF rect(xMin, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xMin += rectWidth;
+ }
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QHorizontalStackedBarSeries::mouseReleased()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalStackedBarSeries* series = new QHorizontalStackedBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(released(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(released(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 3; // 3 values per set
+ qreal rangeX = 20; // From 0 to 20 because bars are stacked (this should be height of highest stack)
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = scaleY * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal xMax = -scaleX * domainMinX + plotArea.left();
+ qreal xMin = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = (domainMinY +0.5 -i) * scaleY + plotArea.bottom() - rectHeight/2;
+ qreal rectWidth = barSets.at(set)->at(i) * scaleX;
+ if (rectWidth > 0) {
+ QRectF rect(xMax, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xMax += rectWidth;
+ } else {
+ QRectF rect(xMin, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xMin += rectWidth;
+ }
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QHorizontalStackedBarSeries::mouseDoubleClicked()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QHorizontalStackedBarSeries* series = new QHorizontalStackedBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 3; // 3 values per set
+ qreal rangeX = 20; // From 0 to 20 because bars are stacked (this should be height of highest stack)
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = -0.5; // These come from internal domain used by barseries.
+ qreal domainMinX = 0; // No access to domain from outside, so use hard coded values.
+ qreal rectHeight = scaleY * series->barWidth(); // On horizontal chart barWidth of the barseries means height of the rect.
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal xMax = -scaleX * domainMinX + plotArea.left();
+ qreal xMin = -scaleX * domainMinX + plotArea.left();
+ for (int set = 0; set < setCount; set++) {
+ qreal yPos = (domainMinY +0.5 -i) * scaleY + plotArea.bottom() - rectHeight/2;
+ qreal rectWidth = barSets.at(set)->at(i) * scaleX;
+ if (rectWidth > 0) {
+ QRectF rect(xMax, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xMax += rectWidth;
+ } else {
+ QRectF rect(xMin, yPos - rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ xMin += rectWidth;
+ }
+ }
+ }
+
+ // barset 1, bar 0
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+}
QTEST_MAIN(tst_QHorizontalStackedBarSeries)
#include "tst_qhorizontalstackedbarseries.moc"
diff --git a/tests/auto/qlineseries/tst_qlineseries.cpp b/tests/auto/qlineseries/tst_qlineseries.cpp
index aea9ccc9..13f29a14 100644
--- a/tests/auto/qlineseries/tst_qlineseries.cpp
+++ b/tests/auto/qlineseries/tst_qlineseries.cpp
@@ -36,6 +36,9 @@ public slots:
private slots:
void qlineseries_data();
void qlineseries();
+ void pressedSignal();
+ void releasedSignal();
+ void doubleClickedSignal();
protected:
void pointsVisible_data();
};
@@ -102,6 +105,99 @@ void tst_QLineSeries::qlineseries()
QTest::qWaitForWindowShown(m_view);
}
+void tst_QLineSeries::pressedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF linePoint(4, 12);
+ QLineSeries *lineSeries = new QLineSeries();
+ lineSeries->append(QPointF(2, 1));
+ lineSeries->append(linePoint);
+ lineSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(lineSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(lineSeries, SIGNAL(pressed(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(linePoint);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(linePoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(linePoint.y()));
+}
+
+void tst_QLineSeries::releasedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF linePoint(4, 12);
+ QLineSeries *lineSeries = new QLineSeries();
+ lineSeries->append(QPointF(2, 20));
+ lineSeries->append(linePoint);
+ lineSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(lineSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(lineSeries, SIGNAL(released(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(linePoint);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(linePoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(linePoint.y()));
+}
+
+void tst_QLineSeries::doubleClickedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF linePoint(4, 12);
+ QLineSeries *lineSeries = new QLineSeries();
+ lineSeries->append(QPointF(2, 20));
+ lineSeries->append(linePoint);
+ lineSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(lineSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(lineSeries, SIGNAL(doubleClicked(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(linePoint);
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(linePoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(linePoint.y()));
+}
+
QTEST_MAIN(tst_QLineSeries)
#include "tst_qlineseries.moc"
diff --git a/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp b/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp
index e4bab706..a74c6511 100644
--- a/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp
+++ b/tests/auto/qpercentbarseries/tst_qpercentbarseries.cpp
@@ -52,6 +52,9 @@ private slots:
void mousehovered_data();
void mousehovered();
void zeroValuesInSeries();
+ void mousePressed();
+ void mouseReleased();
+ void mouseDoubleClicked();
private:
QPercentBarSeries* m_barseries;
@@ -608,6 +611,416 @@ void tst_QPercentBarSeries::zeroValuesInSeries()
QTest::qWaitForWindowShown(&view);
}
+void tst_QPercentBarSeries::mousePressed()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPercentBarSeries* series = new QPercentBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(pressed(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(pressed(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 100; // From 0 to 100 because range is scaled to 100%
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = scaleX * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal colSum = 20; // Sum of values in column (10 + 10 in our test case)
+ qreal percentage = (100 / colSum);
+ qreal yPos = height + scaleY * domainMinY + plotArea.top();
+
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left() - rectWidth/2;
+ qreal rectHeigth = barSets.at(set)->at(i) * percentage * scaleY;
+
+ QRectF rect(xPos, yPos-rectHeigth, rectWidth, rectHeigth);
+ layout.append(rect);
+ yPos -= rectHeigth;
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QPercentBarSeries::mouseReleased()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPercentBarSeries* series = new QPercentBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(released(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(released(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 100; // From 0 to 100 because range is scaled to 100%
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = scaleX * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal colSum = 20; // Sum of values in column (10 + 10 in our test case)
+ qreal percentage = (100 / colSum);
+ qreal yPos = height + scaleY * domainMinY + plotArea.top();
+
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left() - rectWidth/2;
+ qreal rectHeigth = barSets.at(set)->at(i) * percentage * scaleY;
+
+ QRectF rect(xPos, yPos-rectHeigth, rectWidth, rectHeigth);
+ layout.append(rect);
+ yPos -= rectHeigth;
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QPercentBarSeries::mouseDoubleClicked()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPercentBarSeries* series = new QPercentBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 100; // From 0 to 100 because range is scaled to 100%
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = scaleX * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal colSum = 20; // Sum of values in column (10 + 10 in our test case)
+ qreal percentage = (100 / colSum);
+ qreal yPos = height + scaleY * domainMinY + plotArea.top();
+
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left() - rectWidth/2;
+ qreal rectHeigth = barSets.at(set)->at(i) * percentage * scaleY;
+
+ QRectF rect(xPos, yPos-rectHeigth, rectWidth, rectHeigth);
+ layout.append(rect);
+ yPos -= rectHeigth;
+ }
+ }
+
+ // barset 1, bar 0
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+}
+
QTEST_MAIN(tst_QPercentBarSeries)
#include "tst_qpercentbarseries.moc"
diff --git a/tests/auto/qpieseries/tst_qpieseries.cpp b/tests/auto/qpieseries/tst_qpieseries.cpp
index ce7e8d54..9d975c5a 100644
--- a/tests/auto/qpieseries/tst_qpieseries.cpp
+++ b/tests/auto/qpieseries/tst_qpieseries.cpp
@@ -57,6 +57,9 @@ private slots:
void hoverSignal();
void sliceSeries();
void destruction();
+ void pressedSignal();
+ void releasedSignal();
+ void doubleClickedSignal();
private:
void verifyCalculatedData(const QPieSeries &series, bool *ok);
@@ -652,6 +655,139 @@ QList<QPoint> tst_qpieseries::slicePoints(QRectF rect)
return points;
}
+void tst_qpieseries::pressedSignal()
+{
+ // NOTE:
+ // This test is the same as tst_qpieslice::pressedSignal()
+ // Just for different signals.
+
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ // add some slices
+ QPieSlice *s1 = m_series->append("slice 1", 1);
+ QPieSlice *s2 = m_series->append("slice 2", 1);
+ QPieSlice *s3 = m_series->append("slice 3", 1);
+ QPieSlice *s4 = m_series->append("slice 4", 1);
+ QSignalSpy clickSpy(m_series, SIGNAL(pressed(QPieSlice*)));
+
+ // add series to the chart
+ m_view->chart()->legend()->setVisible(false);
+ m_view->chart()->addSeries(m_series);
+ m_view->show();
+ QTest::qWaitForWindowShown(m_view);
+
+ // test maximum size
+ m_series->setPieSize(1.0);
+ QRectF pieRect = m_view->chart()->plotArea();
+ QList<QPoint> points = slicePoints(pieRect);
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(1));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(2));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(3));
+ TRY_COMPARE(clickSpy.count(), 4);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s2);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s4);
+ clickSpy.clear();
+
+ // test half size
+ m_series->setPieSize(0.5);
+ m_series->setVerticalPosition(0.25);
+ m_series->setHorizontalPosition(0.25);
+ pieRect = QRectF(m_view->chart()->plotArea().topLeft(), m_view->chart()->plotArea().center());
+ points = slicePoints(pieRect);
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(1));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(2));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(3));
+ TRY_COMPARE(clickSpy.count(), 4);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s2);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s4);
+}
+
+void tst_qpieseries::releasedSignal()
+{
+ // NOTE:
+ // This test is the same as tst_qpieslice::pressedSignal()
+ // Just for different signals.
+
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ // add some slices
+ QPieSlice *s1 = m_series->append("slice 1", 1);
+ QPieSlice *s2 = m_series->append("slice 2", 1);
+ QPieSlice *s3 = m_series->append("slice 3", 1);
+ QPieSlice *s4 = m_series->append("slice 4", 1);
+ QSignalSpy clickSpy(m_series, SIGNAL(released(QPieSlice*)));
+
+ // add series to the chart
+ m_view->chart()->legend()->setVisible(false);
+ m_view->chart()->addSeries(m_series);
+ m_view->show();
+ QTest::qWaitForWindowShown(m_view);
+
+ // test maximum size
+ m_series->setPieSize(1.0);
+ QRectF pieRect = m_view->chart()->plotArea();
+ QList<QPoint> points = slicePoints(pieRect);
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(1));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(2));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(3));
+ TRY_COMPARE(clickSpy.count(), 4);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s2);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s4);
+ clickSpy.clear();
+
+ // test half size
+ m_series->setPieSize(0.5);
+ m_series->setVerticalPosition(0.25);
+ m_series->setHorizontalPosition(0.25);
+ pieRect = QRectF(m_view->chart()->plotArea().topLeft(), m_view->chart()->plotArea().center());
+ points = slicePoints(pieRect);
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(1));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(2));
+ QTest::mouseClick(m_view->viewport(), Qt::LeftButton, 0, points.at(3));
+ TRY_COMPARE(clickSpy.count(), 4);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(1).at(0)), s2);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(2).at(0)), s3);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(3).at(0)), s4);
+}
+
+void tst_qpieseries::doubleClickedSignal()
+{
+ // NOTE:
+ // This test is the same as tst_qpieslice::pressedSignal()
+ // Just for different signals.
+
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ // add some slices
+ QPieSlice *s1 = m_series->append("slice 1", 1);
+ QSignalSpy clickSpy(m_series, SIGNAL(doubleClicked(QPieSlice*)));
+
+ // add series to the chart
+ m_view->chart()->legend()->setVisible(false);
+ m_view->chart()->addSeries(m_series);
+ m_view->show();
+ QTest::qWaitForWindowShown(m_view);
+
+ // test maximum size
+ m_series->setPieSize(1.0);
+ QRectF pieRect = m_view->chart()->plotArea();
+ QList<QPoint> points = slicePoints(pieRect);
+ QTest::mouseDClick(m_view->viewport(), Qt::LeftButton, 0, points.at(0));
+ TRY_COMPARE(clickSpy.count(), 1);
+ QCOMPARE(qvariant_cast<QPieSlice*>(clickSpy.at(0).at(0)), s1);
+}
+
QTEST_MAIN(tst_qpieseries)
#include "tst_qpieseries.moc"
diff --git a/tests/auto/qpieslice/tst_qpieslice.cpp b/tests/auto/qpieslice/tst_qpieslice.cpp
index 16099cfd..9887d36b 100644
--- a/tests/auto/qpieslice/tst_qpieslice.cpp
+++ b/tests/auto/qpieslice/tst_qpieslice.cpp
@@ -43,6 +43,9 @@ private slots:
void customize();
void clickedSignal();
void hoverSignal();
+ void pressedSignal();
+ void releasedSignal();
+ void doubleClickedSignal();
private:
QList<QPoint> slicePoints(QRectF rect);
@@ -335,6 +338,114 @@ QList<QPoint> tst_qpieslice::slicePoints(QRectF rect)
return points;
}
+void tst_qpieslice::pressedSignal()
+{
+ // NOTE:
+ // This test is the same as tst_qpieseries::pressedSignal()
+ // Just for different signals.
+
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ QPieSlice *s1 = series->append("slice 1", 1);
+ QPieSlice *s2 = series->append("slice 2", 1);
+ QPieSlice *s3 = series->append("slice 3", 1);
+ QPieSlice *s4 = series->append("slice 4", 1);
+ QSignalSpy clickSpy1(s1, SIGNAL(pressed()));
+ QSignalSpy clickSpy2(s2, SIGNAL(pressed()));
+ QSignalSpy clickSpy3(s3, SIGNAL(pressed()));
+ QSignalSpy clickSpy4(s4, SIGNAL(pressed()));
+
+ // add series to the chart
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // simulate clicks
+ series->setPieSize(1.0);
+ QRectF pieRect = view.chart()->plotArea();
+ QList<QPoint> points = slicePoints(pieRect);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(0));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(1));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(2));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(3));
+ QCOMPARE(clickSpy1.count(), 1);
+ QCOMPARE(clickSpy2.count(), 1);
+ QCOMPARE(clickSpy3.count(), 1);
+ QCOMPARE(clickSpy4.count(), 1);
+}
+
+void tst_qpieslice::releasedSignal()
+{
+ // NOTE:
+ // This test is the same as tst_qpieseries::releasedSignal()
+ // Just for different signals.
+
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ QPieSlice *s1 = series->append("slice 1", 1);
+ QPieSlice *s2 = series->append("slice 2", 1);
+ QPieSlice *s3 = series->append("slice 3", 1);
+ QPieSlice *s4 = series->append("slice 4", 1);
+ QSignalSpy clickSpy1(s1, SIGNAL(released()));
+ QSignalSpy clickSpy2(s2, SIGNAL(released()));
+ QSignalSpy clickSpy3(s3, SIGNAL(released()));
+ QSignalSpy clickSpy4(s4, SIGNAL(released()));
+
+ // add series to the chart
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // simulate clicks
+ series->setPieSize(1.0);
+ QRectF pieRect = view.chart()->plotArea();
+ QList<QPoint> points = slicePoints(pieRect);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(0));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(1));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(2));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, points.at(3));
+ QCOMPARE(clickSpy1.count(), 1);
+ QCOMPARE(clickSpy2.count(), 1);
+ QCOMPARE(clickSpy3.count(), 1);
+ QCOMPARE(clickSpy4.count(), 1);
+}
+
+void tst_qpieslice::doubleClickedSignal()
+{
+ // NOTE:
+ // This test is the same as tst_qpieseries::doubleClickedSignal()
+ // Just for different signals.
+
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ // create a pie series
+ QPieSeries *series = new QPieSeries();
+ QPieSlice *s1 = series->append("slice 1", 1);
+ QSignalSpy clickSpy1(s1, SIGNAL(doubleClicked()));
+
+ // add series to the chart
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // simulate clicks
+ series->setPieSize(1.0);
+ QRectF pieRect = view.chart()->plotArea();
+ QList<QPoint> points = slicePoints(pieRect);
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, points.at(0));
+ QCOMPARE(clickSpy1.count(), 1);
+}
+
QTEST_MAIN(tst_qpieslice)
#include "tst_qpieslice.moc"
diff --git a/tests/auto/qscatterseries/tst_qscatterseries.cpp b/tests/auto/qscatterseries/tst_qscatterseries.cpp
index c68d9999..3872c7bf 100644
--- a/tests/auto/qscatterseries/tst_qscatterseries.cpp
+++ b/tests/auto/qscatterseries/tst_qscatterseries.cpp
@@ -36,6 +36,9 @@ private slots:
void qscatterseries_data();
void qscatterseries();
void scatterChangedSignals();
+ void pressedSignal();
+ void releasedSignal();
+ void doubleClickedSignal();
protected:
void pointsVisible_data();
@@ -126,6 +129,99 @@ void tst_QScatterSeries::scatterChangedSignals()
TRY_COMPARE(colorSpy.count(), 2);
}
+void tst_QScatterSeries::pressedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF scatterPoint(4, 12);
+ QScatterSeries *scatterSeries = new QScatterSeries();
+ scatterSeries->append(QPointF(2, 1));
+ scatterSeries->append(scatterPoint);
+ scatterSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(scatterSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(scatterSeries, SIGNAL(pressed(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(scatterPoint);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(scatterPoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(scatterPoint.y()));
+}
+
+void tst_QScatterSeries::releasedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF scatterPoint(4, 12);
+ QScatterSeries *scatterSeries = new QScatterSeries();
+ scatterSeries->append(QPointF(2, 1));
+ scatterSeries->append(scatterPoint);
+ scatterSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(scatterSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(scatterSeries, SIGNAL(released(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(scatterPoint);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(scatterPoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(scatterPoint.y()));
+}
+
+void tst_QScatterSeries::doubleClickedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF scatterPoint(4, 12);
+ QScatterSeries *scatterSeries = new QScatterSeries();
+ scatterSeries->append(QPointF(2, 1));
+ scatterSeries->append(scatterPoint);
+ scatterSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(scatterSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(scatterSeries, SIGNAL(doubleClicked(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(scatterPoint);
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(scatterPoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(scatterPoint.y()));
+}
+
QTEST_MAIN(tst_QScatterSeries)
#include "tst_qscatterseries.moc"
diff --git a/tests/auto/qsplineseries/tst_qsplineseries.cpp b/tests/auto/qsplineseries/tst_qsplineseries.cpp
index b72ac81d..8041d28b 100644
--- a/tests/auto/qsplineseries/tst_qsplineseries.cpp
+++ b/tests/auto/qsplineseries/tst_qsplineseries.cpp
@@ -35,6 +35,9 @@ public slots:
private slots:
void qsplineseries_data();
void qsplineseries();
+ void pressedSignal();
+ void releasedSignal();
+ void doubleClickedSignal();
protected:
void pointsVisible_data();
};
@@ -95,6 +98,98 @@ void tst_QSplineSeries::qsplineseries()
QTest::qWaitForWindowShown(m_view);
}
+void tst_QSplineSeries::pressedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF splinePoint(4, 12);
+ QSplineSeries *splineSeries = new QSplineSeries();
+ splineSeries->append(QPointF(2, 1));
+ splineSeries->append(splinePoint);
+ splineSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(splineSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(splineSeries, SIGNAL(pressed(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(splinePoint);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(splinePoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(splinePoint.y()));
+}
+
+void tst_QSplineSeries::releasedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF splinePoint(4, 12);
+ QSplineSeries *splineSeries = new QSplineSeries();
+ splineSeries->append(QPointF(2, 20));
+ splineSeries->append(splinePoint);
+ splineSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(splineSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(splineSeries, SIGNAL(released(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(splinePoint);
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(splinePoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(splinePoint.y()));
+}
+
+void tst_QSplineSeries::doubleClickedSignal()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QPointF splinePoint(4, 12);
+ QSplineSeries *splineSeries = new QSplineSeries();
+ splineSeries->append(QPointF(2, 20));
+ splineSeries->append(splinePoint);
+ splineSeries->append(QPointF(6, 12));
+
+ QChartView view;
+ view.chart()->legend()->setVisible(false);
+ view.chart()->addSeries(splineSeries);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ QSignalSpy seriesSpy(splineSeries, SIGNAL(doubleClicked(QPointF)));
+
+ QPointF checkPoint = view.chart()->mapToPosition(splinePoint);
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, checkPoint.toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ // checkPoint is QPointF and for the mouseClick it it's changed to QPoint
+ // this causes small distinction in decimals so we round it before comparing
+ QPointF signalPoint = qvariant_cast<QPointF>(seriesSpyArg.at(0));
+ QCOMPARE(qRound(signalPoint.x()), qRound(splinePoint.x()));
+ QCOMPARE(qRound(signalPoint.y()), qRound(splinePoint.y()));
+}
QTEST_MAIN(tst_QSplineSeries)
#include "tst_qsplineseries.moc"
diff --git a/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp b/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp
index a5df87d2..bda94704 100644
--- a/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp
+++ b/tests/auto/qstackedbarseries/tst_qstackedbarseries.cpp
@@ -51,6 +51,9 @@ private slots:
void mouseclicked();
void mousehovered_data();
void mousehovered();
+ void mousePressed();
+ void mouseReleased();
+ void mouseDoubleClicked();
private:
QStackedBarSeries* m_barseries;
@@ -595,6 +598,424 @@ void tst_QStackedBarSeries::mousehovered()
QVERIFY(setIndexSpyArg.at(1).toInt() == 1);
}
+void tst_QStackedBarSeries::mousePressed()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QStackedBarSeries* series = new QStackedBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(pressed(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(pressed(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(pressed(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 20; // From 0 to 20 because sets are stacked (this should be height of highest stack)
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = scaleX * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal yMax = height + scaleY * domainMinY + plotArea.top();
+ qreal yMin = height + scaleY * domainMinY + plotArea.top();
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left() - rectWidth/2;
+ qreal rectHeight = barSets.at(set)->at(i) * scaleY;
+ if (rectHeight < 0) {
+ QRectF rect(xPos, yMax-rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ yMax -= rectHeight;
+ } else {
+ QRectF rect(xPos, yMin-rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ yMin -= rectHeight;
+ }
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QStackedBarSeries::mouseReleased()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QStackedBarSeries* series = new QStackedBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(released(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(released(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(released(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 20; // From 0 to 20 because sets are stacked (this should be height of highest stack)
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = scaleX * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal yMax = height + scaleY * domainMinY + plotArea.top();
+ qreal yMin = height + scaleY * domainMinY + plotArea.top();
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left() - rectWidth/2;
+ qreal rectHeight = barSets.at(set)->at(i) * scaleY;
+ if (rectHeight < 0) {
+ QRectF rect(xPos, yMax-rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ yMax -= rectHeight;
+ } else {
+ QRectF rect(xPos, yMin-rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ yMin -= rectHeight;
+ }
+ }
+ }
+
+//====================================================================================
+// barset 1, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 1, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(2).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 1, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(4).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+
+//====================================================================================
+// barset 2, bar 0
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(1).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+
+//====================================================================================
+// barset 2, bar 1
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(3).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 1);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 1);
+
+//====================================================================================
+// barset 2, bar 2
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, 0, layout.at(5).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 0);
+ QCOMPARE(setSpy2.count(), 1);
+
+ seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set2);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 2);
+
+ setSpyArg = setSpy2.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 2);
+}
+
+void tst_QStackedBarSeries::mouseDoubleClicked()
+{
+ SKIP_IF_CANNOT_TEST_MOUSE_EVENTS();
+
+ QStackedBarSeries* series = new QStackedBarSeries();
+
+ QBarSet* set1 = new QBarSet(QString("set 1"));
+ *set1 << 10 << 10 << 10;
+ series->append(set1);
+
+ QBarSet* set2 = new QBarSet(QString("set 2"));
+ *set2 << 10 << 10 << 10;
+ series->append(set2);
+ QList<QBarSet*> barSets = series->barSets();
+
+ QSignalSpy seriesSpy(series,SIGNAL(doubleClicked(int,QBarSet*)));
+ QSignalSpy setSpy1(set1, SIGNAL(doubleClicked(int)));
+ QSignalSpy setSpy2(set2, SIGNAL(doubleClicked(int)));
+
+ QChartView view(new QChart());
+ view.resize(400,300);
+ view.chart()->addSeries(series);
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+
+ // Calculate expected layout for bars
+ QRectF plotArea = view.chart()->plotArea();
+ qreal width = plotArea.width();
+ qreal height = plotArea.height();
+ qreal rangeY = 20; // From 0 to 20 because sets are stacked (this should be height of highest stack)
+ qreal rangeX = 3; // 3 values per set
+ qreal scaleY = (height / rangeY);
+ qreal scaleX = (width / rangeX);
+
+ qreal setCount = series->count();
+ qreal domainMinY = 0; // These come from internal domain used by barseries.
+ qreal domainMinX = -0.5; // No access to domain from outside, so use hard coded values.
+ qreal rectWidth = scaleX * series->barWidth();
+
+ QVector<QRectF> layout;
+
+ // 3 = count of values in set
+ // Note that rects in this vector will be interleaved (set1 bar0, set2 bar0, set1 bar1, set2 bar1, etc.)
+ for (int i = 0; i < 3; i++) {
+ qreal yMax = height + scaleY * domainMinY + plotArea.top();
+ qreal yMin = height + scaleY * domainMinY + plotArea.top();
+ for (int set = 0; set < setCount; set++) {
+ qreal xPos = (i - domainMinX) * scaleX + plotArea.left() - rectWidth/2;
+ qreal rectHeight = barSets.at(set)->at(i) * scaleY;
+ if (rectHeight < 0) {
+ QRectF rect(xPos, yMax-rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ yMax -= rectHeight;
+ } else {
+ QRectF rect(xPos, yMin-rectHeight, rectWidth, rectHeight);
+ layout.append(rect);
+ yMin -= rectHeight;
+ }
+ }
+ }
+
+ // barset 1, bar 0
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton, 0, layout.at(0).center().toPoint());
+ QCoreApplication::processEvents(QEventLoop::AllEvents, 1000);
+
+ QCOMPARE(seriesSpy.count(), 1);
+ QCOMPARE(setSpy1.count(), 1);
+ QCOMPARE(setSpy2.count(), 0);
+
+ QList<QVariant> seriesSpyArg = seriesSpy.takeFirst();
+ QCOMPARE(qvariant_cast<QBarSet*>(seriesSpyArg.at(1)), set1);
+ QVERIFY(seriesSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(seriesSpyArg.at(0).toInt() == 0);
+
+ QList<QVariant> setSpyArg = setSpy1.takeFirst();
+ QVERIFY(setSpyArg.at(0).type() == QVariant::Int);
+ QVERIFY(setSpyArg.at(0).toInt() == 0);
+}
QTEST_MAIN(tst_QStackedBarSeries)
#include "tst_qstackedbarseries.moc"
diff --git a/tests/manual/boxplottester/mainwidget.cpp b/tests/manual/boxplottester/mainwidget.cpp
index 784512d3..81a05f67 100644
--- a/tests/manual/boxplottester/mainwidget.cpp
+++ b/tests/manual/boxplottester/mainwidget.cpp
@@ -250,8 +250,15 @@ void MainWidget::addSeries()
m_series[m_seriesCount]->setName("Box & Whiskers");
connect(m_series[m_seriesCount], SIGNAL(clicked(QBoxSet*)), this, SLOT(boxClicked(QBoxSet*)));
+ connect(m_series[m_seriesCount], SIGNAL(pressed(QBoxSet*)), this, SLOT(boxPressed(QBoxSet*)));
+ connect(m_series[m_seriesCount], SIGNAL(released(QBoxSet*)), this, SLOT(boxReleased(QBoxSet*)));
+ connect(m_series[m_seriesCount], SIGNAL(doubleClicked(QBoxSet*)),
+ this, SLOT(boxDoubleClicked(QBoxSet*)));
connect(m_series[m_seriesCount], SIGNAL(hovered(bool, QBoxSet*)), this, SLOT(boxHovered(bool, QBoxSet*)));
connect(set1, SIGNAL(clicked()), this, SLOT(singleBoxClicked()));
+ connect(set1, SIGNAL(pressed()), this, SLOT(singleBoxPressed()));
+ connect(set1, SIGNAL(released()), this, SLOT(singleBoxReleased()));
+ connect(set1, SIGNAL(doubleClicked()), this, SLOT(singleBoxDoubleClicked()));
connect(set2, SIGNAL(hovered(bool)), this, SLOT(singleBoxHovered(bool)));
m_series[m_seriesCount]->setBoxOutlineVisible(m_boxOutlined->checkState());
@@ -453,11 +460,41 @@ void MainWidget::boxHovered(bool state, QBoxSet *set)
qDebug() << "box median " << set->at(QBoxSet::Median) << " hover ended";
}
+void MainWidget::boxPressed(QBoxSet *set)
+{
+ qDebug() << "boxPressed, median = " << set->at(QBoxSet::Median);
+}
+
+void MainWidget::boxReleased(QBoxSet *set)
+{
+ qDebug() << "boxReleased, median = " << set->at(QBoxSet::Median);
+}
+
+void MainWidget::boxDoubleClicked(QBoxSet *set)
+{
+ qDebug() << "boxDoubleClicked, median = " << set->at(QBoxSet::Median);
+}
+
void MainWidget::singleBoxClicked()
{
qDebug() << "singleBoxClicked";
}
+void MainWidget::singleBoxPressed()
+{
+ qDebug() << "singleBoxPressed";
+}
+
+void MainWidget::singleBoxReleased()
+{
+ qDebug() << "singleBoxReleased";
+}
+
+void MainWidget::singleBoxDoubleClicked()
+{
+ qDebug() << "singleBoxDoubleClicked";
+}
+
void MainWidget::singleBoxHovered(bool state)
{
if (state)
diff --git a/tests/manual/boxplottester/mainwidget.h b/tests/manual/boxplottester/mainwidget.h
index cbb2cd38..00f835bf 100644
--- a/tests/manual/boxplottester/mainwidget.h
+++ b/tests/manual/boxplottester/mainwidget.h
@@ -66,8 +66,14 @@ private slots:
void changeChartTheme(int themeIndex);
void boxClicked(QBoxSet *set);
void boxHovered(bool state, QBoxSet *set);
+ void boxPressed(QBoxSet *set);
+ void boxReleased(QBoxSet *set);
+ void boxDoubleClicked(QBoxSet *set);
void singleBoxClicked();
void singleBoxHovered(bool state);
+ void singleBoxPressed();
+ void singleBoxReleased();
+ void singleBoxDoubleClicked();
void changePen();
void antialiasingToggled(bool);
void boxOutlineToggled(bool);
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/AreaChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/AreaChart.qml
index 069e17de..d94f8a2e 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/AreaChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/AreaChart.qml
@@ -81,6 +81,9 @@ ChartView {
+ font.family);
onPointLabelsColorChanged: console.log(name + ".onPointLabelsColorChanged: "
+ color);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
AreaSeries {
@@ -107,5 +110,8 @@ ChartView {
onSelected: console.log(name + ".onSelected");
onColorChanged: console.log(name + ".onColorChanged: " + color);
onBorderColorChanged: console.log(name + ".onBorderColorChanged: " + borderColor);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
}
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/BarChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/BarChart.qml
index ad088646..45bd494a 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/BarChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/BarChart.qml
@@ -51,6 +51,10 @@ ChartView {
onValuesAdded: console.log("barset.onValuesAdded: " + index + ", " + count);
onValuesRemoved: console.log("barset.onValuesRemoved: " + index + ", " + count);
onValueChanged: console.log("barset.onValuesChanged: " + index);
+ onPressed: console.log("barset.onPressed: " + index);
+ onReleased: console.log("barset.onReleased: " + index);
+ onDoubleClicked: console.log("barset.onDoubleClicked: " + index);
+
}
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
@@ -65,6 +69,9 @@ ChartView {
onCountChanged: console.log("barSeries.onCountChanged: " + count);
onLabelsFormatChanged: console.log("barSeries.onLabelsFormatChanged: " + format);
onLabelsPositionChanged: console.log("barSeries.onLabelsPositionChanged: " + series.labelsPosition);
+ onPressed: console.log("barSeries.onPressed: " + barset + " " + index);
+ onReleased: console.log("barSeries.onReleased: " + barset + " " + index);
+ onDoubleClicked: console.log("barSeries.onDoubleClicked: " + barset + " " + index);
function changeLabelsPosition() {
if (labelsPosition === BarSeries.LabelsCenter)
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalBarChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalBarChart.qml
index aedb26cb..278d2964 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalBarChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalBarChart.qml
@@ -50,6 +50,9 @@ ChartView {
onValuesAdded: console.log("barset.onValuesAdded: " + index + ", " + count);
onValuesRemoved: console.log("barset.onValuesRemoved: " + index + ", " + count);
onValueChanged: console.log("barset.onValuesChanged: " + index);
+ onPressed: console.log("barset.onPressed: " + index);
+ onReleased: console.log("barset.onReleased: " + index);
+ onDoubleClicked: console.log("barset.onDoubleClicked: " + index);
}
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
@@ -66,6 +69,9 @@ ChartView {
+ format);
onLabelsPositionChanged: console.log("horizontalBarSeries.onLabelsPositionChanged: "
+ series.labelsPosition);
+ onPressed: console.log("horizontalBarSeries.onPressed: " + barset + " " + index);
+ onReleased: console.log("horizontalBarSeries.onReleased: " + barset + " " + index);
+ onDoubleClicked: console.log("horizontalBarSeries.onDoubleClicked: " + barset + " " + index);
function changeLabelsPosition() {
if (labelsPosition === BarSeries.LabelsCenter)
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalPercentBarChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalPercentBarChart.qml
index c0d1b443..eab84f71 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalPercentBarChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalPercentBarChart.qml
@@ -50,6 +50,9 @@ ChartView {
onValuesAdded: console.log("barset.onValuesAdded: " + index + ", " + count);
onValuesRemoved: console.log("barset.onValuesRemoved: " + index + ", " + count);
onValueChanged: console.log("barset.onValuesChanged: " + index);
+ onPressed: console.log("barset.onPressed: " + index);
+ onReleased: console.log("barset.onReleased: " + index);
+ onDoubleClicked: console.log("barset.onDoubleClicked: " + index);
}
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
@@ -68,6 +71,9 @@ ChartView {
onLabelsPositionChanged: console.log(
"horizontalPercentBarSeries.onLabelsPositionChanged: "
+ series.labelsPosition);
+ onPressed: console.log("horizontalPercentBarSeries.onPressed: " + barset + " " + index);
+ onReleased: console.log("horizontalPercentBarSeries.onReleased: " + barset + " " + index);
+ onDoubleClicked: console.log("horizontalPercentBarSeries.onDoubleClicked: " + barset + " " + index);
function changeLabelsPosition() {
if (labelsPosition === BarSeries.LabelsCenter)
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalStackedBarChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalStackedBarChart.qml
index 3b94e89d..ab79dc5a 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalStackedBarChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/HorizontalStackedBarChart.qml
@@ -50,6 +50,9 @@ ChartView {
onValuesAdded: console.log("barset.onValuesAdded: " + index + ", " + count);
onValuesRemoved: console.log("barset.onValuesRemoved: " + index + ", " + count);
onValueChanged: console.log("barset.onValuesChanged: " + index);
+ onPressed: console.log("barset.onPressed: " + index);
+ onReleased: console.log("barset.onReleased: " + index);
+ onDoubleClicked: console.log("barset.onDoubleClicked: " + index);
}
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
@@ -68,6 +71,9 @@ ChartView {
onLabelsPositionChanged: console.log(
"horizontalStackedBarSeries.onLabelsPositionChanged: "
+ series.labelsPosition);
+ onPressed: console.log("horizontalStackedBarSeries.onPressed: " + barset + " " + index);
+ onReleased: console.log("horizontalStackedBarSeries.onReleased: " + barset + " " + index);
+ onDoubleClicked: console.log("horizontalStackedBarSeries.onDoubleClicked: " + barset + " " + index);
function changeLabelsPosition() {
if (labelsPosition === BarSeries.LabelsCenter)
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/LineChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/LineChart.qml
index de3134a8..6e16918a 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/LineChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/LineChart.qml
@@ -62,6 +62,9 @@ ChartView {
+ font.family);
onPointLabelsColorChanged: console.log("lineSeries.onPointLabelsColorChanged: "
+ color);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
LineSeries {
@@ -74,5 +77,8 @@ ChartView {
XYPoint { x: 4.1; y: 2.3 }
onClicked: console.log(name + ".onClicked: " + point.x + ", " + point.y);
onHovered: console.log(name + ".onHovered: " + point.x + ", " + point.y);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
}
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/PercentBarChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/PercentBarChart.qml
index 74c9b88f..c595873f 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/PercentBarChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/PercentBarChart.qml
@@ -51,6 +51,9 @@ ChartView {
onValuesAdded: console.log("barset.onValuesAdded: " + index + ", " + count);
onValuesRemoved: console.log("barset.onValuesRemoved: " + index + ", " + count);
onValueChanged: console.log("barset.onValuesChanged: " + index);
+ onPressed: console.log("barset.onPressed: " + index);
+ onReleased: console.log("barset.onReleased: " + index);
+ onDoubleClicked: console.log("barset.onDoubleClicked: " + index);
}
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
@@ -67,6 +70,9 @@ ChartView {
+ format);
onLabelsPositionChanged: console.log("percentBarSeries.onLabelsPositionChanged: "
+ series.labelsPosition);
+ onPressed: console.log("percentBarSeries.onPressed: " + barset + " " + index);
+ onReleased: console.log("percentBarSeries.onReleased: " + barset + " " + index);
+ onDoubleClicked: console.log("percentBarSeries.onDoubleClicked: " + barset + " " + index);
function changeLabelsPosition() {
if (labelsPosition === BarSeries.LabelsCenter)
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/PieChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/PieChart.qml
index 37a321ae..675ae3ee 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/PieChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/PieChart.qml
@@ -47,6 +47,9 @@ ChartView {
onAngleSpanChanged: console.log("slice.onAngleSpanChanged: " + angleSpan);
onClicked: console.log("slice.onClicked: " + label);
onHovered: console.log("slice.onHovered: " + state);
+ onPressed: console.log("slice.onPressed: " + label);
+ onReleased: console.log("slice.onReleased: " + label);
+ onDoubleClicked: console.log("slice.onDoubleClicked: " + label);
}
PieSlice { label: "slice2"; value: 22 }
PieSlice { label: "slice3"; value: 33 }
@@ -63,5 +66,8 @@ ChartView {
onSliceRemoved: console.log("pieSeries.onSliceRemoved: " + slice.label);
onCountChanged: console.log("pieSeries.onCountChanged: " + count);
onSumChanged: console.log("pieSeries.onSumChanged: " + sum);
+ onPressed: console.log("pieSeries.onPressed: " + slice.label);
+ onReleased: console.log("pieSeries.onReleased: " + slice.label);
+ onDoubleClicked: console.log("pieSeries.onDoubleClicked: " + slice.label);
}
}
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/ScatterChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/ScatterChart.qml
index d531ac32..2b815530 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/ScatterChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/ScatterChart.qml
@@ -59,6 +59,9 @@ ChartView {
+ font.family);
onPointLabelsColorChanged: console.log("lineSeries.onPointLabelsColorChanged: "
+ color);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
ScatterSeries {
@@ -71,5 +74,8 @@ ChartView {
XYPoint { x: 2.67; y: 2.65 }
onClicked: console.log(name + ".onClicked: " + point.x + ", " + point.y);
onHovered: console.log(name + ".onHovered: " + point.x + ", " + point.y);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
}
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/SplineChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/SplineChart.qml
index 3a182d19..fd78a449 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/SplineChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/SplineChart.qml
@@ -61,6 +61,9 @@ ChartView {
+ font.family);
onPointLabelsColorChanged: console.log("splineSeries.onPointLabelsColorChanged: "
+ color);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
SplineSeries {
@@ -73,5 +76,8 @@ ChartView {
XYPoint { x: 4.1; y: 2.3 }
onClicked: console.log(name + ".onClicked: " + point.x + ", " + point.y);
onHovered: console.log(name + ".onHovered: " + point.x + ", " + point.y);
+ onPressed: console.log(name + ".onPressed: " + point.x + ", " + point.y);
+ onReleased: console.log(name + ".onReleased: " + point.x + ", " + point.y);
+ onDoubleClicked: console.log(name + ".onDoubleClicked: " + point.x + ", " + point.y);
}
}
diff --git a/tests/manual/qmlchartproperties/qml/qmlchartproperties/StackedBarChart.qml b/tests/manual/qmlchartproperties/qml/qmlchartproperties/StackedBarChart.qml
index a59f0e12..aff78367 100644
--- a/tests/manual/qmlchartproperties/qml/qmlchartproperties/StackedBarChart.qml
+++ b/tests/manual/qmlchartproperties/qml/qmlchartproperties/StackedBarChart.qml
@@ -50,6 +50,9 @@ ChartView {
onValuesAdded: console.log("barset.onValuesAdded: " + index + ", " + count);
onValuesRemoved: console.log("barset.onValuesRemoved: " + index + ", " + count);
onValueChanged: console.log("barset.onValuesChanged: " + index);
+ onPressed: console.log("barset.onPressed: " + index);
+ onReleased: console.log("barset.onReleased: " + index);
+ onDoubleClicked: console.log("barset.onDoubleClicked: " + index);
}
BarSet { label: "Susan"; values: [5, 1, 2, 4, 1, 7] }
BarSet { label: "James"; values: [3, 5, 8, 13, 5, 8] }
@@ -66,6 +69,9 @@ ChartView {
+ format);
onLabelsPositionChanged: console.log("stackedBarSeries.onLabelsPositionChanged: "
+ series.labelsPosition);
+ onPressed: console.log("stackedBarSeries.onPressed: " + barset + " " + index);
+ onReleased: console.log("stackedBarSeries.onReleased: " + barset + " " + index);
+ onDoubleClicked: console.log("stackedBarSeries.onDoubleClicked: " + barset + " " + index);
function changeLabelsPosition() {
if (labelsPosition === BarSeries.LabelsCenter)