summaryrefslogtreecommitdiffstats
path: root/examples/scatterchart
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2013-08-22 13:02:38 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-08-27 07:41:29 +0300
commite26bc838a8b2a5c6ce5013992a81c4b9ad040514 (patch)
treed57c5f93bd88491087ca5b3fac46e82909cb7b1f /examples/scatterchart
parentfb11df914d9a548675916f51466822f5263b8ceb (diff)
Add selection signaling for scatter
+ Fix crashes associated with selection + Optimized selection color handling Task-number: QTRD-2132 Task-number: QTRD-2208 Change-Id: Ie38c6779591fb0467cffb052edf7609f6677278a Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'examples/scatterchart')
-rw-r--r--examples/scatterchart/main.cpp12
-rw-r--r--examples/scatterchart/scatterchart.cpp29
-rw-r--r--examples/scatterchart/scatterchart.h3
3 files changed, 37 insertions, 7 deletions
diff --git a/examples/scatterchart/main.cpp b/examples/scatterchart/main.cpp
index ab6eb313..56e7f457 100644
--- a/examples/scatterchart/main.cpp
+++ b/examples/scatterchart/main.cpp
@@ -81,17 +81,20 @@ int main(int argc, char **argv)
insertBunchButton->setText(QStringLiteral("Insert bunch of items"));
QPushButton *changeOneButton = new QPushButton(widget);
- changeOneButton->setText(QStringLiteral("Change item"));
+ changeOneButton->setText(QStringLiteral("Change selected item"));
QPushButton *changeBunchButton = new QPushButton(widget);
changeBunchButton->setText(QStringLiteral("Change bunch of items"));
QPushButton *removeOneButton = new QPushButton(widget);
- removeOneButton->setText(QStringLiteral("Remove item"));
+ removeOneButton->setText(QStringLiteral("Remove selected item"));
QPushButton *removeBunchButton = new QPushButton(widget);
removeBunchButton->setText(QStringLiteral("Remove bunch of items"));
+ QPushButton *setSelectedItemButton = new QPushButton(widget);
+ setSelectedItemButton->setText(QStringLiteral("Select/deselect item 3"));
+
QPushButton *startTimerButton = new QPushButton(widget);
startTimerButton->setText(QStringLiteral("Start/stop timer"));
@@ -131,6 +134,7 @@ int main(int argc, char **argv)
vLayout->addWidget(changeBunchButton, 0, Qt::AlignTop);
vLayout->addWidget(removeOneButton, 0, Qt::AlignTop);
vLayout->addWidget(removeBunchButton, 0, Qt::AlignTop);
+ vLayout->addWidget(setSelectedItemButton, 0, Qt::AlignTop);
vLayout->addWidget(startTimerButton, 0, Qt::AlignTop);
vLayout->addWidget(backgroundCheckBox);
vLayout->addWidget(gridCheckBox);
@@ -170,6 +174,8 @@ int main(int argc, char **argv)
&ScatterDataModifier::removeOne);
QObject::connect(removeBunchButton, &QPushButton::clicked, modifier,
&ScatterDataModifier::removeBunch);
+ QObject::connect(setSelectedItemButton, &QPushButton::clicked, modifier,
+ &ScatterDataModifier::selectItem);
QObject::connect(startTimerButton, &QPushButton::clicked, modifier,
&ScatterDataModifier::startStopTimer);
QObject::connect(themeButton, &QPushButton::clicked, modifier,
@@ -183,6 +189,8 @@ int main(int argc, char **argv)
&QComboBox::setCurrentIndex);
QObject::connect(chart, &Q3DScatter::shadowQualityChanged, modifier,
&ScatterDataModifier::shadowQualityUpdatedByVisual);
+ QObject::connect(chart, &Q3DScatter::selectedItemIndexChanged, modifier,
+ &ScatterDataModifier::handleSelectionChange);
QObject::connect(fontList, &QFontComboBox::currentFontChanged, modifier,
&ScatterDataModifier::changeFont);
diff --git a/examples/scatterchart/scatterchart.cpp b/examples/scatterchart/scatterchart.cpp
index 5e1935b8..7af80b85 100644
--- a/examples/scatterchart/scatterchart.cpp
+++ b/examples/scatterchart/scatterchart.cpp
@@ -28,7 +28,8 @@ const int numberOfItems = 10000;
ScatterDataModifier::ScatterDataModifier(Q3DScatter *scatter)
: m_chart(scatter),
- m_fontSize(30.0f)
+ m_fontSize(30.0f),
+ m_selectedItem(-1)
{
QFont font = m_chart->font();
font.setPointSize(m_fontSize);
@@ -213,9 +214,9 @@ void ScatterDataModifier::insertBunch()
void ScatterDataModifier::changeOne()
{
- if (m_chart->dataProxy()->array()->size()) {
+ if (m_selectedItem >= 0 && m_chart->dataProxy()->array()->size()) {
QScatterDataItem item(randVector());
- m_chart->dataProxy()->setItem(0, item);
+ m_chart->dataProxy()->setItem(m_selectedItem, item);
qDebug() << m_loopCounter << "Changed one, array size:" << m_chart->dataProxy()->array()->size();
}
}
@@ -234,8 +235,10 @@ void ScatterDataModifier::changeBunch()
void ScatterDataModifier::removeOne()
{
- m_chart->dataProxy()->removeItems(0, 1);
- qDebug() << m_loopCounter << "Removed one, array size:" << m_chart->dataProxy()->array()->size();
+ if (m_selectedItem >= 0) {
+ m_chart->dataProxy()->removeItems(m_selectedItem, 1);
+ qDebug() << m_loopCounter << "Removed one, array size:" << m_chart->dataProxy()->array()->size();
+ }
}
void ScatterDataModifier::removeBunch()
@@ -294,6 +297,22 @@ void ScatterDataModifier::startStopTimer()
}
}
+void ScatterDataModifier::selectItem()
+{
+ int targetItem(3);
+ int noSelection(-1);
+ if (m_selectedItem != targetItem)
+ m_chart->setSelectedItemIndex(targetItem);
+ else
+ m_chart->setSelectedItemIndex(noSelection);
+}
+
+void ScatterDataModifier::handleSelectionChange(int index)
+{
+ m_selectedItem = index;
+ qDebug() << "Selected item index:" << index;
+}
+
void ScatterDataModifier::changeShadowQuality(int quality)
{
QDataVis::ShadowQuality sq = QDataVis::ShadowNone;
diff --git a/examples/scatterchart/scatterchart.h b/examples/scatterchart/scatterchart.h
index 8500ef29..4412af99 100644
--- a/examples/scatterchart/scatterchart.h
+++ b/examples/scatterchart/scatterchart.h
@@ -59,6 +59,8 @@ public slots:
void removeBunch();
void timeout();
void startStopTimer();
+ void selectItem();
+ void handleSelectionChange(int index);
signals:
void shadowQualityChanged(int quality);
@@ -69,6 +71,7 @@ private:
int m_fontSize;
QTimer m_timer;
int m_loopCounter;
+ int m_selectedItem;
};
#endif