From 6368dd9a1d9e51016dcef9c93137526c07adcbeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Thu, 15 May 2014 12:01:47 +0300 Subject: Dirty bits to custom item Task-number: QTRD-3082 Change-Id: I1503b067edcc677904ca16c1501109187809f98b Change-Id: I1503b067edcc677904ca16c1501109187809f98b Reviewed-by: Miikka Heikkinen --- .../customitems/customitemgraph.cpp | 23 ++++++++++++++++++++++ .../customitems/customitemgraph.h | 5 +++++ 2 files changed, 28 insertions(+) (limited to 'examples/datavisualization/customitems') diff --git a/examples/datavisualization/customitems/customitemgraph.cpp b/examples/datavisualization/customitems/customitemgraph.cpp index 14117580..56187d14 100644 --- a/examples/datavisualization/customitems/customitemgraph.cpp +++ b/examples/datavisualization/customitems/customitemgraph.cpp @@ -91,6 +91,11 @@ CustomItemGraph::CustomItemGraph(Q3DSurface *surface, QLabel *label) connect(m_graph, &QAbstract3DGraph::elementSelected, this, &CustomItemGraph::handleElementSelected); + + m_selectionAnimation = new QPropertyAnimation(this); + m_selectionAnimation->setPropertyName("scaling"); + m_selectionAnimation->setDuration(500); + m_selectionAnimation->setLoopCount(-1); } CustomItemGraph::~CustomItemGraph() @@ -118,6 +123,7 @@ void CustomItemGraph::toggleItemOne(bool show) m_graph->addCustomItem(item); //! [3] } else { + resetSelection(); //! [4] m_graph->removeCustomItemAt(positionOne); //! [4] @@ -138,6 +144,7 @@ void CustomItemGraph::toggleItemTwo(bool show) item->setTextureImage(color); m_graph->addCustomItem(item); } else { + resetSelection(); m_graph->removeCustomItemAt(positionTwo); } } @@ -156,6 +163,7 @@ void CustomItemGraph::toggleItemThree(bool show) item->setTextureImage(color); m_graph->addCustomItem(item); } else { + resetSelection(); m_graph->removeCustomItemAt(positionThree); } } @@ -196,15 +204,22 @@ void CustomItemGraph::toggleShadows(bool shadows) void CustomItemGraph::handleElementSelected(QAbstract3DGraph::ElementType type) { + resetSelection(); if (type == QAbstract3DGraph::ElementCustomItem) { int index = m_graph->selectedCustomItemIndex(); QCustom3DItem *item = m_graph->selectedCustomItem(); + m_previouslyAnimatedItem = item; + m_previousScaling = item->scaling(); QString text; text.setNum(index); text.append(": "); QStringList split = item->meshFile().split("/"); text.append(split.last()); m_textField->setText(text); + m_selectionAnimation->setTargetObject(item); + m_selectionAnimation->setStartValue(item->scaling()); + m_selectionAnimation->setEndValue(item->scaling() * 1.5f); + m_selectionAnimation->start(); } else if (type == QAbstract3DGraph::ElementSeries) { QString text = "Surface ("; QSurface3DSeries *series = m_graph->selectedSeries(); @@ -226,3 +241,11 @@ void CustomItemGraph::handleElementSelected(QAbstract3DGraph::ElementType type) m_textField->setText("Nothing"); } } + +void CustomItemGraph::resetSelection() +{ + m_selectionAnimation->stop(); + if (m_previouslyAnimatedItem) + m_previouslyAnimatedItem->setScaling(m_previousScaling); + m_previouslyAnimatedItem = 0; +} diff --git a/examples/datavisualization/customitems/customitemgraph.h b/examples/datavisualization/customitems/customitemgraph.h index aee32c62..e86d3910 100644 --- a/examples/datavisualization/customitems/customitemgraph.h +++ b/examples/datavisualization/customitems/customitemgraph.h @@ -25,6 +25,7 @@ #include #include #include +#include using namespace QtDataVisualization; @@ -44,10 +45,14 @@ public: private: void handleElementSelected(QAbstract3DGraph::ElementType type); + void resetSelection(); private: Q3DSurface *m_graph; QLabel *m_textField; + QPropertyAnimation *m_selectionAnimation; + QCustom3DItem *m_previouslyAnimatedItem; + QVector3D m_previousScaling; }; #endif -- cgit v1.2.3