diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-08-22 13:02:38 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-08-27 07:41:29 +0300 |
commit | e26bc838a8b2a5c6ce5013992a81c4b9ad040514 (patch) | |
tree | d57c5f93bd88491087ca5b3fac46e82909cb7b1f /examples/scatterchart | |
parent | fb11df914d9a548675916f51466822f5263b8ceb (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.cpp | 12 | ||||
-rw-r--r-- | examples/scatterchart/scatterchart.cpp | 29 | ||||
-rw-r--r-- | examples/scatterchart/scatterchart.h | 3 |
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 |