summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-17 08:30:34 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-18 08:33:52 +0300
commit4daf244e9745a28b917b0976e39a60d73776c4aa (patch)
tree0b10abd2cea115f5f05b44e753e75cbde9badfd0 /tests
parent43435c1b51e81c3ecdfec771950d861df90ebef3 (diff)
Bar graph data window controlled by category axes ranges
Task-number: QTRD-2183 Task-number: QTRD-2254 Change-Id: I09808c3980a4fa60b7584839e834ee3a734b3e9a Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/barstest/chart.cpp94
-rw-r--r--tests/barstest/chart.h11
-rw-r--r--tests/barstest/main.cpp42
-rw-r--r--tests/spectrum/spectrumapp/main.cpp4
4 files changed, 117 insertions, 34 deletions
diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp
index b534f54c..b8ef0758 100644
--- a/tests/barstest/chart.cpp
+++ b/tests/barstest/chart.cpp
@@ -30,11 +30,11 @@ ChartModifier::ChartModifier(Q3DBars *barchart)
: m_chart(barchart),
m_columnCount(21),
m_rowCount(21),
- m_xRotation(0.0f),
- m_yRotation(0.0f),
+ m_xRotation(0.0),
+ m_yRotation(0.0),
m_static(true),
- m_barSpacingX(0.1f),
- m_barSpacingZ(0.1f),
+ m_barSpacingX(0.1),
+ m_barSpacingZ(0.1),
m_fontSize(20),
m_segments(4),
m_subSegments(3),
@@ -54,7 +54,7 @@ ChartModifier::ChartModifier(Q3DBars *barchart)
{
// Generate generic labels
QStringList genericColumnLabels;
- for (int i = 0; i < 200; i++) {
+ for (int i = 0; i < 400; i++) {
if (i % 5)
genericColumnLabels << QString();
else
@@ -80,9 +80,10 @@ ChartModifier::ChartModifier(Q3DBars *barchart)
m_fixedRangeAxis->setRange(0.0, 100.0);
m_genericRowAxis->setTitle("Generic Row");
+ m_genericRowAxis->setRange(0, m_rowCount - 1);
m_genericColumnAxis->setTitle("Generic Column");
- m_genericColumnAxis->setCategoryLabels(genericColumnLabels);
+ m_genericColumnAxis->setRange(0, m_columnCount - 1);
m_temperatureAxis->setTitle("Average temperature");
m_temperatureAxis->setSegmentCount(m_segments);
@@ -106,6 +107,7 @@ ChartModifier::ChartModifier(Q3DBars *barchart)
m_temperatureData->setItemLabelFormat(QStringLiteral("@valueTitle for @colLabel @rowLabel: @valueLabel"));
m_genericData->setItemLabelFormat(QStringLiteral("@valueTitle for (@rowIdx, @colIdx): @valueLabel"));
+ m_genericData->setColumnLabels(genericColumnLabels);
m_chart->addDataProxy(m_temperatureData);
m_chart->addDataProxy(m_genericData);
@@ -138,7 +140,6 @@ void ChartModifier::restart(bool dynamicData)
m_chart->setRowAxis(m_yearAxis);
m_chart->setColumnAxis(m_monthAxis);
- m_chart->setDataWindow(m_years.size(), m_months.size());
m_chart->setSelectionMode(QDataVis::ModeItem);
} else {
m_chart->setActiveDataProxy(m_genericData);
@@ -149,7 +150,6 @@ void ChartModifier::restart(bool dynamicData)
m_chart->setRowAxis(m_genericRowAxis);
m_chart->setColumnAxis(m_genericColumnAxis);
- m_chart->setDataWindow(m_rowCount, m_columnCount);
m_chart->setSelectionMode(QDataVis::ModeItem);
}
}
@@ -205,18 +205,54 @@ void ChartModifier::releaseProxies()
m_chart->releaseDataProxy(m_genericData);
}
+void ChartModifier::createMassiveArray()
+{
+ const int arrayDimension = 1000;
+ QTime timer;
+ timer.start();
+
+ QStringList genericColumnLabels;
+ for (int i = 0; i < arrayDimension; i++) {
+ if (i % 5)
+ genericColumnLabels << QString();
+ else
+ genericColumnLabels << QStringLiteral("Column %1").arg(i);
+ }
+
+ QStringList genericRowLabels;
+ for (int i = 0; i < arrayDimension; i++) {
+ if (i % 5)
+ genericRowLabels << QString();
+ else
+ genericRowLabels << QStringLiteral("Row %1").arg(i);
+ }
+
+ QBarDataArray *dataArray = new QBarDataArray;
+ dataArray->reserve(arrayDimension);
+ for (int i = 0; i < arrayDimension; i++) {
+ QBarDataRow *dataRow = new QBarDataRow(arrayDimension);
+ for (int j = 0; j < arrayDimension; j++)
+ (*dataRow)[j].setValue((qreal(i % 300 + 1) / 300.0) * qreal(rand() % 100));
+ dataArray->append(dataRow);
+ }
+
+ m_chart->activeDataProxy()->resetArray(dataArray, genericRowLabels, genericColumnLabels);
+
+ qDebug() << "Created Massive Array (" << arrayDimension << "), time:" << timer.elapsed();
+}
+
void ChartModifier::resetTemperatureData()
{
// Set up data
- static const float temp[7][12] = {
- {-6.7f, -11.7f, -9.7f, 3.3f, 9.2f, 14.0f, 16.3f, 17.8f, 10.2f, 2.1f, -2.6f, -0.3f}, // 2006
- {-6.8f, -13.3f, 0.2f, 1.5f, 7.9f, 13.4f, 16.1f, 15.5f, 8.2f, 5.4f, -2.6f, -0.8f}, // 2007
- {-4.2f, -4.0f, -4.6f, 1.9f, 7.3f, 12.5f, 15.0f, 12.8f, 7.6f, 5.1f, -0.9f, -1.3f}, // 2008
- {-7.8f, -8.8f, -4.2f, 0.7f, 9.3f, 13.2f, 15.8f, 15.5f, 11.2f, 0.6f, 0.7f, -8.4f}, // 2009
- {-14.4f, -12.1f, -7.0f, 2.3f, 11.0f, 12.6f, 18.8f, 13.8f, 9.4f, 3.9f, -5.6f, -13.0f}, // 2010
- {-9.0f, -15.2f, -3.8f, 2.6f, 8.3f, 15.9f, 18.6f, 14.9f, 11.1f, 5.3f, 1.8f, -0.2f}, // 2011
- {-8.7f, -11.3f, -2.3f, 0.4f, 7.5f, 12.2f, 16.4f, 14.1f, 9.2f, 3.1f, 0.3f, -12.1f} // 2012
+ static const qreal temp[7][12] = {
+ {-6.7, -11.7, -9.7, 3.3, 9.2, 14.0, 16.3, 17.8, 10.2, 2.1, -2.6, -0.3}, // 2006
+ {-6.8, -13.3, 0.2, 1.5, 7.9, 13.4, 16.1, 15.5, 8.2, 5.4, -2.6, -0.8}, // 2007
+ {-4.2, -4.0, -4.6, 1.9, 7.3, 12.5, 15.0, 12.8, 7.6, 5.1, -0.9, -1.3}, // 2008
+ {-7.8, -8.8, -4.2, 0.7, 9.3, 13.2, 15.8, 15.5, 11.2, 0.6, 0.7, -8.4}, // 2009
+ {-14.4, -12.1, -7.0, 2.3, 11.0, 12.6, 18.8, 13.8, 9.4, 3.9, -5.6, -13.0}, // 2010
+ {-9.0, -15.2, -3.8, 2.6, 8.3, 15.9, 18.6, 14.9, 11.1, 5.3, 1.8, -0.2}, // 2011
+ {-8.7, -11.3, -2.3, 0.4, 7.5, 12.2, 16.4, 14.1, 9.2, 3.1, 0.3, -12.1} // 2012
};
// Create data rows
@@ -248,8 +284,8 @@ static int changeCounter = 0;
void ChartModifier::addRow()
{
QBarDataRow *dataRow = new QBarDataRow(m_columnCount);
- for (float i = 0; i < m_columnCount; i++)
- (*dataRow)[i].setValue(((i + 1) / (float)m_columnCount) * (float)(rand() % 100));
+ for (qreal i = 0; i < m_columnCount; i++)
+ (*dataRow)[i].setValue(((i + 1) / (qreal)m_columnCount) * (qreal)(rand() % 100));
// TODO Needs to be changed to account for data window offset once it is implemented.
QString label = QStringLiteral("Add %1").arg(addCounter++);
@@ -275,8 +311,8 @@ void ChartModifier::addRows()
void ChartModifier::insertRow()
{
QBarDataRow *dataRow = new QBarDataRow(m_columnCount);
- for (float i = 0; i < m_columnCount; i++)
- (*dataRow)[i].setValue(((i + 1) / (float)m_columnCount) * (float)(rand() % 100));
+ for (qreal i = 0; i < m_columnCount; i++)
+ (*dataRow)[i].setValue(((i + 1) / (qreal)m_columnCount) * (qreal)(rand() % 100));
// TODO Needs to be changed to account for data window offset once it is implemented.
int row = qMax(m_selectedBarPos.x(), 0);
@@ -509,24 +545,34 @@ void ChartModifier::setSpecsRatio(int barwidth)
void ChartModifier::setSpacingSpecsX(int spacing)
{
- m_barSpacingX = (float)spacing / 100.0f;
+ m_barSpacingX = (qreal)spacing / 100.0;
m_chart->setBarSpacing(QSizeF(m_barSpacingX, m_barSpacingZ));
}
void ChartModifier::setSpacingSpecsZ(int spacing)
{
- m_barSpacingZ = (float)spacing / 100.0f;
+ m_barSpacingZ = (qreal)spacing / 100.0;
m_chart->setBarSpacing(QSizeF(m_barSpacingX, m_barSpacingZ));
}
void ChartModifier::setSampleCountX(int samples)
{
m_columnCount = samples;
- m_chart->setDataWindow(m_rowCount, m_columnCount);
+ m_genericColumnAxis->setRange(m_genericRowAxis->min(), m_genericRowAxis->min() + samples - 1);
}
void ChartModifier::setSampleCountZ(int samples)
{
m_rowCount = samples;
- m_chart->setDataWindow(m_rowCount, m_columnCount);
+ m_genericRowAxis->setRange(m_genericColumnAxis->min(), m_genericColumnAxis->min() + samples - 1);
+}
+
+void ChartModifier::setMinX(int min)
+{
+ m_genericRowAxis->setRange(min, min + m_rowCount - 1);
+}
+
+void ChartModifier::setMinZ(int min)
+{
+ m_genericColumnAxis->setRange(min, min + m_rowCount - 1);
}
diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h
index 65d404e0..8c8d9b81 100644
--- a/tests/barstest/chart.h
+++ b/tests/barstest/chart.h
@@ -62,12 +62,15 @@ public:
void setSpacingSpecsZ(int spacing);
void setSampleCountX(int samples);
void setSampleCountZ(int samples);
+ void setMinX(int min);
+ void setMinZ(int min);
void start();
void restart(bool dynamicData);
void selectBar();
void swapAxis();
void releaseAxes();
void releaseProxies();
+ void createMassiveArray();
public slots:
void changeShadowQuality(int quality);
@@ -81,11 +84,11 @@ private:
Q3DBars *m_chart;
int m_columnCount;
int m_rowCount;
- float m_xRotation;
- float m_yRotation;
+ qreal m_xRotation;
+ qreal m_yRotation;
bool m_static;
- float m_barSpacingX;
- float m_barSpacingZ;
+ qreal m_barSpacingX;
+ qreal m_barSpacingZ;
int m_fontSize;
int m_segments;
int m_subSegments;
diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp
index 39341471..0dd61c1d 100644
--- a/tests/barstest/main.cpp
+++ b/tests/barstest/main.cpp
@@ -87,9 +87,13 @@ int main(int argc, char **argv)
removeRowButton->setEnabled(false);
QPushButton *removeRowsButton = new QPushButton(widget);
- removeRowsButton->setText(QStringLiteral("remove three rows from selected"));
+ removeRowsButton->setText(QStringLiteral("Remove three rows from selected"));
removeRowsButton->setEnabled(false);
+ QPushButton *massiveArrayButton = new QPushButton(widget);
+ massiveArrayButton->setText(QStringLiteral("Create massive array"));
+ massiveArrayButton->setEnabled(false);
+
QPushButton *themeButton = new QPushButton(widget);
themeButton->setText(QStringLiteral("Change theme"));
@@ -167,17 +171,30 @@ int main(int argc, char **argv)
QSlider *sampleSliderX = new QSlider(Qt::Horizontal, widget);
sampleSliderX->setTickInterval(1);
- sampleSliderX->setMinimum(2);
- sampleSliderX->setValue(10);
+ sampleSliderX->setMinimum(1);
+ sampleSliderX->setValue(21);
sampleSliderX->setMaximum(200);
sampleSliderX->setEnabled(false);
QSlider *sampleSliderZ = new QSlider(Qt::Horizontal, widget);
sampleSliderZ->setTickInterval(1);
- sampleSliderZ->setMinimum(2);
- sampleSliderZ->setValue(10);
+ sampleSliderZ->setMinimum(1);
+ sampleSliderZ->setValue(21);
sampleSliderZ->setMaximum(200);
sampleSliderZ->setEnabled(false);
+ QSlider *minSliderX = new QSlider(Qt::Horizontal, widget);
+ minSliderX->setTickInterval(1);
+ minSliderX->setMinimum(0);
+ minSliderX->setValue(0);
+ minSliderX->setMaximum(200);
+ minSliderX->setEnabled(false);
+ QSlider *minSliderZ = new QSlider(Qt::Horizontal, widget);
+ minSliderZ->setTickInterval(1);
+ minSliderZ->setMinimum(0);
+ minSliderZ->setValue(0);
+ minSliderZ->setMaximum(200);
+ minSliderZ->setEnabled(false);
+
QSlider *fontSizeSlider = new QSlider(Qt::Horizontal, widget);
fontSizeSlider->setTickInterval(1);
fontSizeSlider->setMinimum(1);
@@ -205,6 +222,7 @@ int main(int argc, char **argv)
vLayout->addWidget(changeRowsButton, 0, Qt::AlignTop);
vLayout->addWidget(removeRowButton, 0, Qt::AlignTop);
vLayout->addWidget(removeRowsButton, 0, Qt::AlignTop);
+ vLayout->addWidget(massiveArrayButton, 0, Qt::AlignTop);
vLayout->addWidget(themeButton, 0, Qt::AlignTop);
vLayout->addWidget(labelButton, 0, Qt::AlignTop);
vLayout->addWidget(styleButton, 0, Qt::AlignTop);
@@ -227,6 +245,9 @@ int main(int argc, char **argv)
vLayout2->addWidget(new QLabel(QStringLiteral("Adjust sample count")), 0, Qt::AlignTop);
vLayout2->addWidget(sampleSliderX, 0, Qt::AlignTop);
vLayout2->addWidget(sampleSliderZ, 0, Qt::AlignTop);
+ vLayout2->addWidget(new QLabel(QStringLiteral("Adjust data window minimums")), 0, Qt::AlignTop);
+ vLayout2->addWidget(minSliderX, 0, Qt::AlignTop);
+ vLayout2->addWidget(minSliderZ, 0, Qt::AlignTop);
vLayout2->addWidget(backgroundCheckBox, 0, Qt::AlignTop);
vLayout2->addWidget(gridCheckBox, 0, Qt::AlignTop);
vLayout2->addWidget(new QLabel(QStringLiteral("Adjust shadow quality")), 0, Qt::AlignTop);
@@ -255,6 +276,10 @@ int main(int argc, char **argv)
&ChartModifier::setSampleCountX);
QObject::connect(sampleSliderZ, &QSlider::valueChanged, modifier,
&ChartModifier::setSampleCountZ);
+ QObject::connect(minSliderX, &QSlider::valueChanged, modifier,
+ &ChartModifier::setMinX);
+ QObject::connect(minSliderZ, &QSlider::valueChanged, modifier,
+ &ChartModifier::setMinZ);
QObject::connect(shadowQuality, SIGNAL(currentIndexChanged(int)), modifier,
SLOT(changeShadowQuality(int)));
@@ -283,6 +308,7 @@ int main(int argc, char **argv)
QObject::connect(changeRowsButton, &QPushButton::clicked, modifier, &ChartModifier::changeRows);
QObject::connect(removeRowButton, &QPushButton::clicked, modifier, &ChartModifier::removeRow);
QObject::connect(removeRowsButton, &QPushButton::clicked, modifier, &ChartModifier::removeRows);
+ QObject::connect(massiveArrayButton, &QPushButton::clicked, modifier, &ChartModifier::createMassiveArray);
QObject::connect(selectionButton, &QPushButton::clicked, modifier,
&ChartModifier::changeSelectionMode);
QObject::connect(setSelectedBarButton, &QPushButton::clicked, modifier,
@@ -329,10 +355,16 @@ int main(int argc, char **argv)
&QPushButton::setEnabled);
QObject::connect(staticCheckBox, &QCheckBox::stateChanged, removeRowsButton,
&QPushButton::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, massiveArrayButton,
+ &QPushButton::setEnabled);
QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderX,
&QSlider::setEnabled);
QObject::connect(staticCheckBox, &QCheckBox::stateChanged, sampleSliderZ,
&QSlider::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderX,
+ &QSlider::setEnabled);
+ QObject::connect(staticCheckBox, &QCheckBox::stateChanged, minSliderZ,
+ &QSlider::setEnabled);
QObject::connect(staticCheckBox, &QCheckBox::stateChanged, swapAxisButton,
&QSlider::setEnabled);
QObject::connect(staticCheckBox, &QCheckBox::stateChanged, modifier, &ChartModifier::restart);
diff --git a/tests/spectrum/spectrumapp/main.cpp b/tests/spectrum/spectrumapp/main.cpp
index 51e864e8..c6e2e04f 100644
--- a/tests/spectrum/spectrumapp/main.cpp
+++ b/tests/spectrum/spectrumapp/main.cpp
@@ -22,6 +22,7 @@
#include <QtDataVisualization/q3dbars.h>
#include <QtDataVisualization/qbardataproxy.h>
#include <QtDataVisualization/q3dvalueaxis.h>
+#include <QtDataVisualization/q3dcategoryaxis.h>
#include <QGuiApplication>
#include <QAudio>
@@ -66,7 +67,8 @@ MainApp::MainApp(Q3DBars *window)
m_lowFreq(SpectrumLowFreq),
m_highFreq(SpectrumHighFreq)
{
- m_chart->setDataWindow(SpectrumNumBands * 2, SpectrumNumBands);
+ m_chart->rowAxis()->setMax(SpectrumNumBands * 2);
+ m_chart->columnAxis()->setMax(SpectrumNumBands - 1);
// Disable grid
m_chart->setGridVisible(false);
// Disable auto-scaling of height by defining explicit range