summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/barstest/chart.cpp38
-rw-r--r--tests/barstest/chart.h4
-rw-r--r--tests/barstest/main.cpp7
-rw-r--r--tests/directional/main.cpp6
-rw-r--r--tests/directional/scatterdatamodifier.cpp29
-rw-r--r--tests/directional/scatterdatamodifier.h4
6 files changed, 87 insertions, 1 deletions
diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp
index 6b0345ad..187f4886 100644
--- a/tests/barstest/chart.cpp
+++ b/tests/barstest/chart.cpp
@@ -47,6 +47,7 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog)
m_minval(-16.0f),
m_maxval(20.0f),
m_selectedBar(-1, -1),
+ m_selectedSeries(0),
m_autoAdjustingAxis(new QValue3DAxis),
m_fixedRangeAxis(new QValue3DAxis),
m_temperatureAxis(new QValue3DAxis),
@@ -229,6 +230,8 @@ GraphModifier::GraphModifier(Q3DBars *barchart, QColorDialog *colorDialog)
QObject::connect(&m_selectionTimer, &QTimer::timeout, this,
&GraphModifier::triggerSelection);
+ QObject::connect(&m_rotationTimer, &QTimer::timeout, this,
+ &GraphModifier::triggerRotation);
resetTemperatureData();
}
@@ -702,11 +705,17 @@ void GraphModifier::handleSelectionChange(const QPoint &position)
m_selectedBar = position;
int index = 0;
foreach (QBar3DSeries *series, m_graph->seriesList()) {
- if (series == sender())
+ if (series == sender()) {
+ if (series->selectedBar() != QBar3DSeries::invalidSelectionPosition())
+ m_selectedSeries = series;
break;
+ }
index++;
}
+ if (m_selectedSeries->selectedBar() == QBar3DSeries::invalidSelectionPosition())
+ m_selectedSeries = 0;
+
qDebug() << "Selected bar position:" << position << "series:" << index;
}
@@ -1027,6 +1036,14 @@ void GraphModifier::insertRemoveTestToggle()
}
}
+void GraphModifier::toggleRotation()
+{
+ if (m_rotationTimer.isActive())
+ m_rotationTimer.stop();
+ else
+ m_rotationTimer.start(20);
+}
+
void GraphModifier::insertRemoveTimerTimeout()
{
if (m_insertRemoveStep < 32) {
@@ -1066,6 +1083,25 @@ void GraphModifier::triggerSelection()
m_graph->scene()->setSelectionQueryPosition(m_customInputHandler->inputPosition());
}
+void GraphModifier::triggerRotation()
+{
+ if (m_selectedSeries) {
+ QPoint selectedBar = m_selectedSeries->selectedBar();
+ if (selectedBar != QBar3DSeries::invalidSelectionPosition()) {
+ QBarDataItem item(*(m_selectedSeries->dataProxy()->itemAt(selectedBar.x(), selectedBar.y())));
+ item.setRotation(item.rotation() + 1.0f);
+ m_selectedSeries->dataProxy()->setItem(selectedBar.x(), selectedBar.y(), item);
+ }
+ } else {
+ // Rotate the first series instead
+ static float seriesAngle = 0.0f;
+ if (m_graph->seriesList().size()) {
+ QQuaternion rotation = QQuaternion::fromAxisAndAngle(0.0f, 1.0f, 0.0f, seriesAngle++);
+ m_graph->seriesList().at(0)->setMeshRotation(rotation);
+ }
+ }
+}
+
void GraphModifier::setBackgroundEnabled(int enabled)
{
m_graph->activeTheme()->setBackgroundEnabled(bool(enabled));
diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h
index 8e3271cc..c9d2ca9e 100644
--- a/tests/barstest/chart.h
+++ b/tests/barstest/chart.h
@@ -84,6 +84,7 @@ public:
QBarDataArray *makeDummyData();
void primarySeriesTest();
void insertRemoveTestToggle();
+ void toggleRotation();
public slots:
void flipViews();
@@ -101,6 +102,7 @@ public slots:
void insertRemoveTimerTimeout();
void triggerSelection();
+ void triggerRotation();
signals:
void shadowQualityChanged(int quality);
@@ -123,6 +125,7 @@ private:
QStringList m_months;
QStringList m_years;
QPoint m_selectedBar;
+ QBar3DSeries *m_selectedSeries;
QValue3DAxis *m_autoAdjustingAxis;
QValue3DAxis *m_fixedRangeAxis;
QValue3DAxis *m_temperatureAxis;
@@ -148,6 +151,7 @@ private:
int m_insertRemoveStep;
QAbstract3DInputHandler *m_customInputHandler;
QTimer m_selectionTimer;
+ QTimer m_rotationTimer;
};
#endif
diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp
index 52d79468..a57d4aca 100644
--- a/tests/barstest/main.cpp
+++ b/tests/barstest/main.cpp
@@ -161,6 +161,10 @@ int main(int argc, char **argv)
primarySeriesTestsButton->setText(QStringLiteral("Test primary series"));
primarySeriesTestsButton->setEnabled(true);
+ QPushButton *toggleRotationButton = new QPushButton(widget);
+ toggleRotationButton->setText(QStringLiteral("Toggle rotation"));
+ toggleRotationButton->setEnabled(true);
+
QColorDialog *colorDialog = new QColorDialog(widget);
QLinearGradient grBtoY(0, 0, 100, 0);
@@ -308,6 +312,7 @@ int main(int argc, char **argv)
vLayout->addWidget(changeColorStyleButton, 0, Qt::AlignTop);
vLayout->addWidget(ownThemeButton, 0, Qt::AlignTop);
vLayout->addWidget(primarySeriesTestsButton, 0, Qt::AlignTop);
+ vLayout->addWidget(toggleRotationButton, 0, Qt::AlignTop);
vLayout->addWidget(gradientBtoYPB, 1, Qt::AlignTop);
vLayout2->addWidget(staticCheckBox, 0, Qt::AlignTop);
@@ -411,6 +416,8 @@ int main(int argc, char **argv)
&GraphModifier::useOwnTheme);
QObject::connect(primarySeriesTestsButton, &QPushButton::clicked, modifier,
&GraphModifier::primarySeriesTest);
+ QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier,
+ &GraphModifier::toggleRotation);
QObject::connect(colorDialog, &QColorDialog::currentColorChanged, modifier,
&GraphModifier::changeBaseColor);
QObject::connect(gradientBtoYPB, &QPushButton::clicked, modifier,
diff --git a/tests/directional/main.cpp b/tests/directional/main.cpp
index 359868cc..34d2e4a1 100644
--- a/tests/directional/main.cpp
+++ b/tests/directional/main.cpp
@@ -78,6 +78,9 @@ int main(int argc, char **argv)
QPushButton *cameraButton = new QPushButton(widget);
cameraButton->setText(QStringLiteral("Change camera preset"));
+ QPushButton *toggleRotationButton = new QPushButton(widget);
+ toggleRotationButton->setText(QStringLiteral("Toggle rotation"));
+
QCheckBox *backgroundCheckBox = new QCheckBox(widget);
backgroundCheckBox->setText(QStringLiteral("Show background"));
backgroundCheckBox->setChecked(true);
@@ -103,6 +106,7 @@ int main(int argc, char **argv)
//! [5]
vLayout->addWidget(labelButton, 0, Qt::AlignTop);
vLayout->addWidget(cameraButton, 0, Qt::AlignTop);
+ vLayout->addWidget(toggleRotationButton, 0, Qt::AlignTop);
vLayout->addWidget(backgroundCheckBox);
vLayout->addWidget(gridCheckBox);
vLayout->addWidget(new QLabel(QStringLiteral("Change dot style")));
@@ -122,6 +126,8 @@ int main(int argc, char **argv)
//! [6]
QObject::connect(cameraButton, &QPushButton::clicked, modifier,
&ScatterDataModifier::changePresetCamera);
+ QObject::connect(toggleRotationButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::toggleRotation);
QObject::connect(labelButton, &QPushButton::clicked, modifier,
&ScatterDataModifier::changeLabelStyle);
diff --git a/tests/directional/scatterdatamodifier.cpp b/tests/directional/scatterdatamodifier.cpp
index f7089ae4..5da48483 100644
--- a/tests/directional/scatterdatamodifier.cpp
+++ b/tests/directional/scatterdatamodifier.cpp
@@ -56,6 +56,9 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
series->setItemLabelFormat("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel");
m_graph->addSeries(series);
+ QObject::connect(&m_rotationTimer, &QTimer::timeout, this,
+ &ScatterDataModifier::triggerRotation);
+
addData();
}
@@ -164,6 +167,24 @@ void ScatterDataModifier::shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQ
emit shadowQualityChanged(quality); // connected to a checkbox in main.cpp
}
+void ScatterDataModifier::triggerRotation()
+{
+ if (m_graph->seriesList().size()) {
+ int selectedIndex = m_graph->seriesList().at(0)->selectedItem();
+ if (selectedIndex != QScatter3DSeries::invalidSelectionIndex()) {
+ static float itemAngle = 0.0f;
+ QScatterDataItem item(*(m_graph->seriesList().at(0)->dataProxy()->itemAt(selectedIndex)));
+ QQuaternion itemRotation = QQuaternion::fromAxisAndAngle(0.0f, 0.0f, 1.0f, itemAngle++);
+ item.setRotation(itemRotation);
+ m_graph->seriesList().at(0)->dataProxy()->setItem(selectedIndex, item);
+ } else {
+ static float seriesAngle = 0.0f;
+ QQuaternion rotation = QQuaternion::fromAxisAndAngle(1.0f, 1.0f, 1.0f, seriesAngle++);
+ m_graph->seriesList().at(0)->setMeshRotation(rotation);
+ }
+ }
+}
+
void ScatterDataModifier::changeShadowQuality(int quality)
{
QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality);
@@ -179,3 +200,11 @@ void ScatterDataModifier::setGridEnabled(int enabled)
{
m_graph->activeTheme()->setGridEnabled((bool)enabled);
}
+
+void ScatterDataModifier::toggleRotation()
+{
+ if (m_rotationTimer.isActive())
+ m_rotationTimer.stop();
+ else
+ m_rotationTimer.start(20);
+}
diff --git a/tests/directional/scatterdatamodifier.h b/tests/directional/scatterdatamodifier.h
index e3979818..f920d43f 100644
--- a/tests/directional/scatterdatamodifier.h
+++ b/tests/directional/scatterdatamodifier.h
@@ -22,6 +22,7 @@
#include <QtDataVisualization/q3dscatter.h>
#include <QtDataVisualization/qabstract3dseries.h>
#include <QtGui/QFont>
+#include <QtCore/QTimer>
using namespace QtDataVisualization;
@@ -40,6 +41,7 @@ public:
void changeFontSize(int fontsize);
void setBackgroundEnabled(int enabled);
void setGridEnabled(int enabled);
+ void toggleRotation();
void start();
public slots:
@@ -47,6 +49,7 @@ public slots:
void changeTheme(int theme);
void changeShadowQuality(int quality);
void shadowQualityUpdatedByVisual(QAbstract3DGraph::ShadowQuality shadowQuality);
+ void triggerRotation();
signals:
void backgroundEnabledChanged(bool enabled);
@@ -59,6 +62,7 @@ private:
int m_fontSize;
QAbstract3DSeries::Mesh m_style;
bool m_smooth;
+ QTimer m_rotationTimer;
};
#endif