summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-10-29 14:01:42 +0200
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-10-30 10:06:08 +0200
commit84c156d3e2fcceeab608f401fbc638f2d01219b3 (patch)
tree74de2de1635c60645f4864d08f6afb941948aea8 /tests
parent233d5c02638903e96687d580ada7188f0e6a9756 (diff)
Selection overhaul
Selection modes are now proper flags, so you can easily mix and match item, row, and column modes as you wish. Slice flag means automatic slicing control - if user wishes to control slicing himself, he should not set this mode flag. Clicking an item on graph now emits clicked signal from renderer to controller on all graphs instead of setting the selected item. Controller will set the selected item based on this information. Task-number: QTRD-2366 Task-number: QTRD-2491 Change-Id: I6251c42e22ea676613fbd36685e33574e6eb9a1a Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/barstest/chart.cpp36
-rw-r--r--tests/barstest/chart.h2
-rw-r--r--tests/barstest/main.cpp2
-rw-r--r--tests/kinectsurface/surfacedata.cpp4
-rw-r--r--tests/qmlcamera/qml/qmlcamera/main.qml4
-rw-r--r--tests/scattertest/scatterchart.cpp2
-rw-r--r--tests/spectrum/spectrumapp/main.cpp2
-rw-r--r--tests/surfacetest/graphmodifier.cpp49
-rw-r--r--tests/surfacetest/graphmodifier.h5
-rw-r--r--tests/surfacetest/main.cpp38
10 files changed, 92 insertions, 52 deletions
diff --git a/tests/barstest/chart.cpp b/tests/barstest/chart.cpp
index ad27d83c..d71f60b4 100644
--- a/tests/barstest/chart.cpp
+++ b/tests/barstest/chart.cpp
@@ -42,7 +42,7 @@ GraphModifier::GraphModifier(Q3DBars *barchart)
m_subSegments(3),
m_minval(-20.0), // TODO Barchart Y-axis currently only properly supports zero-centered ranges
m_maxval(20.0),
- m_selectedBarPos(-1, -1),
+ m_selectedBar(-1, -1),
m_autoAdjustingAxis(new Q3DValueAxis),
m_fixedRangeAxis(new Q3DValueAxis),
m_temperatureAxis(new Q3DValueAxis),
@@ -142,7 +142,7 @@ void GraphModifier::restart(bool dynamicData)
m_chart->setRowAxis(m_yearAxis);
m_chart->setColumnAxis(m_monthAxis);
- m_chart->setSelectionMode(QDataVis::SelectionModeItem);
+ m_chart->setSelectionMode(QDataVis::SelectionItem);
} else {
m_chart->setActiveDataProxy(m_genericData);
@@ -152,7 +152,7 @@ void GraphModifier::restart(bool dynamicData)
m_chart->setRowAxis(m_genericRowAxis);
m_chart->setColumnAxis(m_genericColumnAxis);
- m_chart->setSelectionMode(QDataVis::SelectionModeItem);
+ m_chart->setSelectionMode(QDataVis::SelectionItem);
}
}
@@ -160,10 +160,10 @@ void GraphModifier::selectBar()
{
QPoint targetBar(5, 5);
QPoint noSelection(-1, -1);
- if (m_selectedBarPos != targetBar)
- m_chart->setSelectedBarPos(targetBar);
+ if (m_selectedBar != targetBar)
+ m_chart->setSelectedBar(targetBar);
else
- m_chart->setSelectedBarPos(noSelection);
+ m_chart->setSelectedBar(noSelection);
}
void GraphModifier::swapAxis()
@@ -317,7 +317,7 @@ void GraphModifier::insertRow()
(*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);
+ int row = qMax(m_selectedBar.x(), 0);
QString label = QStringLiteral("Insert %1").arg(insertCounter++);
m_chart->activeDataProxy()->insertRow(row, dataRow, label);
}
@@ -337,7 +337,7 @@ void GraphModifier::insertRows()
}
// TODO Needs to be changed to account for data window offset once it is implemented.
- int row = qMax(m_selectedBarPos.x(), 0);
+ int row = qMax(m_selectedBar.x(), 0);
m_chart->activeDataProxy()->insertRows(row, dataArray, labels);
qDebug() << "Inserted" << m_rowCount << "rows, time:" << timer.elapsed();
}
@@ -345,8 +345,8 @@ void GraphModifier::insertRows()
void GraphModifier::changeItem()
{
// TODO Needs to be changed to account for data window offset once it is implemented.
- int row = m_selectedBarPos.x();
- int column = m_selectedBarPos.y();
+ int row = m_selectedBar.x();
+ int column = m_selectedBar.y();
if (row >= 0 && column >= 0) {
QBarDataItem item(qreal(rand() % 100));
m_chart->activeDataProxy()->setItem(row, column, item);
@@ -356,7 +356,7 @@ void GraphModifier::changeItem()
void GraphModifier::changeRow()
{
// TODO Needs to be changed to account for data window offset once it is implemented.
- int row = m_selectedBarPos.x();
+ int row = m_selectedBar.x();
if (row >= 0) {
QBarDataRow *newRow = new QBarDataRow(m_chart->activeDataProxy()->rowAt(row)->size());
for (int i = 0; i < newRow->size(); i++)
@@ -369,7 +369,7 @@ void GraphModifier::changeRow()
void GraphModifier::changeRows()
{
// TODO Needs to be changed to account for data window offset once it is implemented.
- int row = m_selectedBarPos.x();
+ int row = m_selectedBar.x();
if (row >= 0) {
int startRow = qMax(row - 2, 0);
QBarDataArray newArray;
@@ -388,7 +388,7 @@ void GraphModifier::changeRows()
void GraphModifier::removeRow()
{
// TODO Needs to be changed to account for data window offset once it is implemented.
- int row = m_selectedBarPos.x();
+ int row = m_selectedBar.x();
if (row >= 0)
m_chart->activeDataProxy()->removeRows(row, 1);
}
@@ -396,7 +396,7 @@ void GraphModifier::removeRow()
void GraphModifier::removeRows()
{
// TODO Needs to be changed to account for data window offset once it is implemented.
- int row = m_selectedBarPos.x();
+ int row = m_selectedBar.x();
if (row >= 0) {
int startRow = qMax(row - 2, 0);
m_chart->activeDataProxy()->removeRows(startRow, 3);
@@ -477,10 +477,10 @@ void GraphModifier::changeSelectionMode()
{
static int selectionMode = m_chart->selectionMode();
- if (++selectionMode > QDataVis::SelectionModeSliceColumn)
- selectionMode = QDataVis::SelectionModeNone;
+ if (++selectionMode > (QDataVis::SelectionItemAndColumn | QDataVis::SelectionSlice))
+ selectionMode = QDataVis::SelectionNone;
- m_chart->setSelectionMode((QDataVis::SelectionMode)selectionMode);
+ m_chart->setSelectionMode((QDataVis::SelectionFlag)selectionMode);
}
void GraphModifier::changeFont(const QFont &font)
@@ -507,7 +507,7 @@ void GraphModifier::shadowQualityUpdatedByVisual(QDataVis::ShadowQuality sq)
void GraphModifier::handleSelectionChange(const QPoint &position)
{
- m_selectedBarPos = position;
+ m_selectedBar = position;
qDebug() << "Selected bar position:" << position;
}
diff --git a/tests/barstest/chart.h b/tests/barstest/chart.h
index e4e96ffb..6d33bacb 100644
--- a/tests/barstest/chart.h
+++ b/tests/barstest/chart.h
@@ -96,7 +96,7 @@ private:
qreal m_maxval;
QStringList m_months;
QStringList m_years;
- QPoint m_selectedBarPos;
+ QPoint m_selectedBar;
Q3DValueAxis *m_autoAdjustingAxis;
Q3DValueAxis *m_fixedRangeAxis;
Q3DValueAxis *m_temperatureAxis;
diff --git a/tests/barstest/main.cpp b/tests/barstest/main.cpp
index 7742cb0e..0d3838a8 100644
--- a/tests/barstest/main.cpp
+++ b/tests/barstest/main.cpp
@@ -287,7 +287,7 @@ int main(int argc, char **argv)
&QComboBox::setCurrentIndex);
QObject::connect(widgetchart, &Q3DBars::shadowQualityChanged, modifier,
&GraphModifier::shadowQualityUpdatedByVisual);
- QObject::connect(widgetchart, &Q3DBars::selectedBarPosChanged, modifier,
+ QObject::connect(widgetchart, &Q3DBars::selectedBarChanged, modifier,
&GraphModifier::handleSelectionChange);
QObject::connect(fontSizeSlider, &QSlider::valueChanged, modifier,
diff --git a/tests/kinectsurface/surfacedata.cpp b/tests/kinectsurface/surfacedata.cpp
index b11be8d5..79489fc8 100644
--- a/tests/kinectsurface/surfacedata.cpp
+++ b/tests/kinectsurface/surfacedata.cpp
@@ -45,7 +45,7 @@ SurfaceData::SurfaceData(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars
gradient.setColorAt(0.33, Qt::blue);
gradient.setColorAt(0.67, Qt::red);
gradient.setColorAt(1.0, Qt::yellow);
- m_surface->setSelectionMode(QDataVis::SelectionModeNone);
+ m_surface->setSelectionMode(QDataVis::SelectionNone);
m_surface->setGridVisible(false);
m_surface->setGradient(gradient);
m_surface->axisY()->setMax(255);
@@ -57,7 +57,7 @@ SurfaceData::SurfaceData(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars
// Initialize scatter
m_scatter->setTheme(QDataVis::ThemeStoneMoss);
- m_scatter->setSelectionMode(QDataVis::SelectionModeNone);
+ m_scatter->setSelectionMode(QDataVis::SelectionNone);
m_scatter->setGridVisible(false);
m_scatter->setObjectType(QDataVis::MeshStyleDots, false);
m_scatter->setShadowQuality(QDataVis::ShadowQualitySoftLow);
diff --git a/tests/qmlcamera/qml/qmlcamera/main.qml b/tests/qmlcamera/qml/qmlcamera/main.qml
index 72d2a45f..dbe11b8e 100644
--- a/tests/qmlcamera/qml/qmlcamera/main.qml
+++ b/tests/qmlcamera/qml/qmlcamera/main.qml
@@ -46,7 +46,7 @@ Item {
width: dataView.width
height: dataView.height
shadowQuality: Bars3D.ShadowQualityMedium
- selectionMode: Bars3D.SelectionModeItem
+ selectionMode: Bars3D.SelectionItem
font.pointSize: 35
theme: Bars3D.ThemeRetro
labelStyle: Bars3D.LabelStyleFromTheme
@@ -59,7 +59,7 @@ Item {
valueAxis: chartAxes.expenses
itemLabelFormat: "@valueTitle for @colLabel, @rowLabel: @valueLabel"
- onSelectedBarPosChanged: {
+ onSelectedBarChanged: {
// Set camControlArea current row to selected bar
var rowRole = chartData.proxy.rowLabels[position.x];
var colRole = chartData.proxy.columnLabels[position.y];
diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp
index f23ee99d..48f1d999 100644
--- a/tests/scattertest/scatterchart.cpp
+++ b/tests/scattertest/scatterchart.cpp
@@ -48,6 +48,8 @@ ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
proxy->setItemLabelFormat("@xTitle: @xLabel @yTitle: @yLabel @zTitle: @zLabel");
m_chart->setActiveDataProxy(proxy);
+ m_chart->setSelectionMode(QDataVis::SelectionItemAndColumn);
+
connect(&m_timer, &QTimer::timeout, this, &ScatterDataModifier::timeout);
}
diff --git a/tests/spectrum/spectrumapp/main.cpp b/tests/spectrum/spectrumapp/main.cpp
index 3d2e2bf1..31bdb0f1 100644
--- a/tests/spectrum/spectrumapp/main.cpp
+++ b/tests/spectrum/spectrumapp/main.cpp
@@ -99,7 +99,7 @@ MainApp::MainApp(Q3DBars *window)
// Set color scheme
m_chart->setBarColor(QColor(Qt::red), false);
// Disable selection
- m_chart->setSelectionMode(QDataVis::SelectionModeNone);
+ m_chart->setSelectionMode(QDataVis::SelectionNone);
QObject::connect(m_engine, &Engine::changedSpectrum, this, &MainApp::spectrumChanged);
QObject::connect(m_engine, &Engine::stateChanged, this, &MainApp::stateChanged);
m_restartTimer->setSingleShot(true);
diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp
index d4e99031..bd6ec920 100644
--- a/tests/surfacetest/graphmodifier.cpp
+++ b/tests/surfacetest/graphmodifier.cpp
@@ -23,11 +23,12 @@
#include <qmath.h>
#include <QLinearGradient>
#include <QDebug>
+#include <QComboBox>
QT_DATAVISUALIZATION_USE_NAMESPACE
//#define JITTER_PLANE
-//#define WONKY_PLANE
+#define WONKY_PLANE
GraphModifier::GraphModifier(Q3DSurface *graph)
: m_graph(graph),
@@ -55,6 +56,7 @@ GraphModifier::GraphModifier(Q3DSurface *graph)
changeStyle();
connect(&m_timer, &QTimer::timeout, this, &GraphModifier::timeout);
+ connect(m_graph, &Q3DSurface::selectedPointChanged, this, &GraphModifier::selectedPointChanged);
}
GraphModifier::~GraphModifier()
@@ -137,6 +139,7 @@ void GraphModifier::togglePlane(bool enable)
float halfZ = m_zCount / 2;
float wonkyFactor = 0.01f;
float maxStepX = 0.0f;
+ float add = 0.0f;
for (float i = 0; i < m_zCount; i++) {
QSurfaceDataRow *newRow = new QSurfaceDataRow(m_xCount);
if (i < halfZ) {
@@ -145,15 +148,17 @@ void GraphModifier::togglePlane(bool enable)
} else {
stepX -= wonkyFactor;
}
+ add = 0.0f;
for (float j = 0; j < m_xCount; j++) {
(*newRow)[j].setPosition(QVector3D(j * stepX + minX, -0.04f,
- i * stepZ + minZ));
+ i * stepZ + minZ + add));
+ add += 0.5f;
}
*m_planeArray << newRow;
}
- resetArrayAndSliders(m_planeArray, minZ, maxZ, minX, m_xCount * maxStepX + minZ);
+ resetArrayAndSliders(m_planeArray, minZ, maxZ + add, minX, m_xCount * maxStepX + minX);
#else
for (float i = 0; i < m_zCount; i++) {
QSurfaceDataRow *newRow = new QSurfaceDataRow(m_xCount);
@@ -303,6 +308,20 @@ void GraphModifier::changeStyle()
style = QDataVis::LabelStyleOpaque;
}
+void GraphModifier::selectButtonClicked()
+{
+ int row = rand() % m_graph->activeDataProxy()->rowCount();
+ int col = rand() % m_graph->activeDataProxy()->columnCount();
+
+ m_graph->setSelectedPoint(QPoint(row, col));
+}
+
+void GraphModifier::selectedPointChanged(const QPoint &point)
+{
+ QString labelText = QStringLiteral("Selected row: %1, column: %2").arg(point.x()).arg(point.y());
+ m_selectionInfoLabel->setText(labelText);
+}
+
void GraphModifier::changeTheme(int theme)
{
m_graph->setTheme((QDataVis::Theme)theme);
@@ -347,26 +366,10 @@ void GraphModifier::changeShadowQuality(int quality)
void GraphModifier::changeSelectionMode(int mode)
{
- switch (mode) {
- case 0:
- qDebug() << "QDataVis::SelectionModeNone";
- m_graph->setSelectionMode(QDataVis::SelectionModeNone);
- break;
- case 1:
- qDebug() << "QDataVis::SelectionModeItem";
- m_graph->setSelectionMode(QDataVis::SelectionModeItem);
- break;
- case 2:
- qDebug() << "QDataVis::SelectionModeSliceRow";
- m_graph->setSelectionMode(QDataVis::SelectionModeSliceRow);
- break;
- case 3:
- qDebug() << "QDataVis::SelectionModeSliceColumn";
- m_graph->setSelectionMode(QDataVis::SelectionModeSliceColumn);
- break;
- default:
- qDebug() << __FUNCTION__ << " Unsupported selection mode.";
- break;
+ QComboBox *comboBox = qobject_cast<QComboBox *>(sender());
+ if (comboBox) {
+ int flags = comboBox->itemData(mode).toInt();
+ m_graph->setSelectionMode(QDataVis::SelectionFlags(flags));
}
}
diff --git a/tests/surfacetest/graphmodifier.h b/tests/surfacetest/graphmodifier.h
index 83b1873b..ed94b372 100644
--- a/tests/surfacetest/graphmodifier.h
+++ b/tests/surfacetest/graphmodifier.h
@@ -23,6 +23,7 @@
#include <QtDataVisualization/QSurfaceDataProxy>
#include <QSlider>
#include <QTimer>
+#include <QLabel>
using namespace QtDataVisualization;
@@ -61,6 +62,9 @@ public:
void gradientPressed();
void changeFont(const QFont &font);
void changeStyle();
+ void selectButtonClicked();
+ void setSelectionInfoLabel(QLabel *label) {m_selectionInfoLabel = label; }
+ void selectedPointChanged(const QPoint &point);
public slots:
void changeShadowQuality(int quality);
@@ -90,6 +94,7 @@ private:
qreal m_minZ;
QTimer m_timer;
QSurfaceDataArray *m_planeArray;
+ QLabel *m_selectionInfoLabel;
};
#endif
diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp
index 19f30e5d..e4283b3e 100644
--- a/tests/surfacetest/main.cpp
+++ b/tests/surfacetest/main.cpp
@@ -167,12 +167,37 @@ int main(int argc, char *argv[])
// shadowQuality->addItem(QStringLiteral("High Soft"));
// shadowQuality->setCurrentIndex(3);
QComboBox *selectionMode = new QComboBox(widget);
- selectionMode->addItem(QStringLiteral("SelectionModeNone"));
- selectionMode->addItem(QStringLiteral("SelectionModeItem"));
- selectionMode->addItem(QStringLiteral("SelectionModeSliceRow"));
- selectionMode->addItem(QStringLiteral("SelectionModeSliceColumn"));
+ selectionMode->addItem(QStringLiteral("None"),
+ int(QDataVis::SelectionNone));
+ selectionMode->addItem(QStringLiteral("Item"),
+ int(QDataVis::SelectionItem));
+ selectionMode->addItem(QStringLiteral("Row"),
+ int(QDataVis::SelectionRow));
+ selectionMode->addItem(QStringLiteral("Item and Row"),
+ int(QDataVis::SelectionItemAndRow));
+ selectionMode->addItem(QStringLiteral("Column"),
+ int(QDataVis::SelectionColumn));
+ selectionMode->addItem(QStringLiteral("Item and Column"),
+ int(QDataVis::SelectionItemAndColumn));
+ selectionMode->addItem(QStringLiteral("Row and Column"),
+ int(QDataVis::SelectionRowAndColumn));
+ selectionMode->addItem(QStringLiteral("Item, Row and Column"),
+ int(QDataVis::SelectionItemRowAndColumn));
+ selectionMode->addItem(QStringLiteral("Slice into Row"),
+ int(QDataVis::SelectionSlice | QDataVis::SelectionRow));
+ selectionMode->addItem(QStringLiteral("Slice into Row and Item"),
+ int(QDataVis::SelectionSlice | QDataVis::SelectionItemAndRow));
+ selectionMode->addItem(QStringLiteral("Slice into Column"),
+ int(QDataVis::SelectionSlice | QDataVis::SelectionColumn));
+ selectionMode->addItem(QStringLiteral("Slice into Column and Item"),
+ int(QDataVis::SelectionSlice | QDataVis::SelectionItemAndColumn));
selectionMode->setCurrentIndex(1);
+ QPushButton *selectButton = new QPushButton(widget);
+ selectButton->setText(QStringLiteral("Select random point"));
+
+ QLabel *selectionInfoLabel = new QLabel(widget);
+
// Add controls to the layout
vLayout->addWidget(smoothCB);
vLayout->addWidget(surfaceGridCB);
@@ -200,6 +225,8 @@ int main(int argc, char *argv[])
// vLayout->addWidget(shadowQuality);
vLayout->addWidget(new QLabel(QStringLiteral("Selection Mode")));
vLayout->addWidget(selectionMode);
+ vLayout->addWidget(selectButton);
+ vLayout->addWidget(selectionInfoLabel);
widget->show();
@@ -242,6 +269,8 @@ int main(int argc, char *argv[])
// modifier, SLOT(changeShadowQuality(int)));
QObject::connect(selectionMode, SIGNAL(currentIndexChanged(int)),
modifier, SLOT(changeSelectionMode(int)));
+ QObject::connect(selectButton, &QPushButton::clicked,
+ modifier, &GraphModifier::selectButtonClicked);
modifier->setGridSliderZ(gridSliderZ);
modifier->setGridSliderX(gridSliderX);
@@ -250,6 +279,7 @@ int main(int argc, char *argv[])
modifier->setAxisMinSliderX(axisMinSliderX);
modifier->setAxisMinSliderZ(axisMinSliderZ);
modifier->toggleGridSliderLock(gridSlidersLockCB->checkState());
+ modifier->setSelectionInfoLabel(selectionInfoLabel);
sqrtSinCB->setChecked(true);
return app.exec();