From a6c8a0cca08b4f19c66b55c8c778229ea0b3c85d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomi=20Korpip=C3=A4=C3=A4?= Date: Tue, 5 Nov 2013 08:48:34 +0200 Subject: Q_PROPERTY NOTIFY addition, part 1 Task-number: QTRD-2534 + Abstract3DController and AbstractDeclarative notifiers done Change-Id: I405b06388c4e9c9226ebbb051452ecf4f6b637c9 Reviewed-by: Miikka Heikkinen --- src/datavisualization/data/qabstractdataproxy.cpp | 8 ++- src/datavisualization/data/qabstractdataproxy.h | 2 +- .../engine/abstract3dcontroller.cpp | 69 ++++++++++++++-------- .../engine/abstract3dcontroller_p.h | 7 +++ .../input/qabstract3dinputhandler.cpp | 5 +- src/datavisualizationqml2/abstractdeclarative.cpp | 30 +++++----- src/datavisualizationqml2/abstractdeclarative_p.h | 29 +++++---- src/datavisualizationqml2/declarativebars.cpp | 3 +- src/datavisualizationqml2/declarativebars_p.h | 3 +- src/datavisualizationqml2/declarativescatter.cpp | 2 + src/datavisualizationqml2/declarativescatter_p.h | 4 +- 11 files changed, 100 insertions(+), 62 deletions(-) (limited to 'src') diff --git a/src/datavisualization/data/qabstractdataproxy.cpp b/src/datavisualization/data/qabstractdataproxy.cpp index 4a2f4ee5..b44f365e 100644 --- a/src/datavisualization/data/qabstractdataproxy.cpp +++ b/src/datavisualization/data/qabstractdataproxy.cpp @@ -108,8 +108,10 @@ QAbstractDataProxy::DataType QAbstractDataProxy::type() const */ void QAbstractDataProxy::setItemLabelFormat(const QString &format) { - d_ptr->setItemLabelFormat(format); - emit itemLabelFormatChanged(); + if (format != itemLabelFormat()) { + d_ptr->setItemLabelFormat(format); + emit itemLabelFormatChanged(format); + } } /*! @@ -121,7 +123,7 @@ QString QAbstractDataProxy::itemLabelFormat() const } /*! - * \fn void QAbstractDataProxy::itemLabelFormatChanged() + * \fn void QAbstractDataProxy::itemLabelFormatChanged(QString format) * * Emitted when label format changes. */ diff --git a/src/datavisualization/data/qabstractdataproxy.h b/src/datavisualization/data/qabstractdataproxy.h index db0e0863..d7793824 100644 --- a/src/datavisualization/data/qabstractdataproxy.h +++ b/src/datavisualization/data/qabstractdataproxy.h @@ -54,7 +54,7 @@ public: QString itemLabelFormat() const; signals: - void itemLabelFormatChanged(); + void itemLabelFormatChanged(QString format); protected: QScopedPointer d_ptr; diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index ee3e47e4..8d870716 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -693,10 +693,12 @@ QColor Abstract3DController::objectColor() const void Abstract3DController::setTheme(QDataVis::Theme theme) { - m_theme.useTheme(theme); - - m_changeTracker.themeChanged = true; - emitNeedRender(); + if (theme != m_theme.theme()) { + m_theme.useTheme(theme); + m_changeTracker.themeChanged = true; + emit themeChanged(theme); + emitNeedRender(); + } } Theme Abstract3DController::theme() @@ -706,10 +708,12 @@ Theme Abstract3DController::theme() void Abstract3DController::setFont(const QFont &font) { - m_font = font; - - m_changeTracker.fontChanged = true; - emitNeedRender(); + if (font != m_font) { + m_font = font; + m_changeTracker.fontChanged = true; + emit fontChanged(font); + emitNeedRender(); + } } QFont Abstract3DController::font() @@ -722,6 +726,7 @@ void Abstract3DController::setSelectionMode(QDataVis::SelectionFlags mode) if (mode != m_selectionMode) { m_selectionMode = mode; m_changeTracker.selectionModeChanged = true; + emit selectionModeChanged(mode); emitNeedRender(); } } @@ -733,11 +738,12 @@ QDataVis::SelectionFlags Abstract3DController::selectionMode() void Abstract3DController::setShadowQuality(QDataVis::ShadowQuality quality) { - m_shadowQuality = quality; - - m_changeTracker.shadowQualityChanged = true; - emit shadowQualityChanged(m_shadowQuality); - emitNeedRender(); + if (quality != m_shadowQuality) { + m_shadowQuality = quality; + m_changeTracker.shadowQualityChanged = true; + emit shadowQualityChanged(m_shadowQuality); + emitNeedRender(); + } } QDataVis::ShadowQuality Abstract3DController::shadowQuality() @@ -747,10 +753,12 @@ QDataVis::ShadowQuality Abstract3DController::shadowQuality() void Abstract3DController::setLabelStyle(QDataVis::LabelStyle style) { - m_labelStyle = style; - - m_changeTracker.labelStyleChanged = true; - emitNeedRender(); + if (style != m_labelStyle) { + m_labelStyle = style; + m_changeTracker.labelStyleChanged = true; + emit labelStyleChanged(style); + emitNeedRender(); + } } QDataVis::LabelStyle Abstract3DController::labelStyle() @@ -760,9 +768,12 @@ QDataVis::LabelStyle Abstract3DController::labelStyle() void Abstract3DController::setBackgroundEnabled(bool enable) { - m_isBackgroundEnabled = enable; - m_changeTracker.backgroundEnabledChanged = true; - emitNeedRender(); + if (enable != m_isBackgroundEnabled) { + m_isBackgroundEnabled = enable; + m_changeTracker.backgroundEnabledChanged = true; + emit backgroundVisibleChanged(enable); + emitNeedRender(); + } } bool Abstract3DController::backgroundEnabled() @@ -772,9 +783,12 @@ bool Abstract3DController::backgroundEnabled() void Abstract3DController::setGridEnabled(bool enable) { - m_isGridEnabled = enable; - m_changeTracker.gridEnabledChanged = true; - emitNeedRender(); + if (enable != m_isGridEnabled) { + m_isGridEnabled = enable; + m_changeTracker.gridEnabledChanged = true; + emit gridVisibleChanged(enable); + emitNeedRender(); + } } bool Abstract3DController::gridEnabled() @@ -811,9 +825,12 @@ QPoint Abstract3DController::inputPosition() void Abstract3DController::setMeshFileName(const QString &fileName) { - m_objFile = fileName; - m_changeTracker.objFileChanged = true; - emitNeedRender(); + if (fileName != m_objFile) { + m_objFile = fileName; + m_changeTracker.objFileChanged = true; + emit meshFileNameChanged(fileName); + emitNeedRender(); + } } QString Abstract3DController::meshFileName() diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h index 450153a0..7dc5d8bc 100644 --- a/src/datavisualization/engine/abstract3dcontroller_p.h +++ b/src/datavisualization/engine/abstract3dcontroller_p.h @@ -323,6 +323,13 @@ public slots: signals: void shadowQualityChanged(QDataVis::ShadowQuality quality); void activeInputHandlerChanged(QAbstract3DInputHandler *inputHandler); + void themeChanged(QDataVis::Theme theme); + void fontChanged(QFont font); + void selectionModeChanged(QDataVis::SelectionFlags mode); + void labelStyleChanged(QDataVis::LabelStyle style); + void backgroundVisibleChanged(bool visible); + void gridVisibleChanged(bool visible); + void meshFileNameChanged(QString filename); void needRender(); protected: diff --git a/src/datavisualization/input/qabstract3dinputhandler.cpp b/src/datavisualization/input/qabstract3dinputhandler.cpp index b84711a4..8a8313ef 100644 --- a/src/datavisualization/input/qabstract3dinputhandler.cpp +++ b/src/datavisualization/input/qabstract3dinputhandler.cpp @@ -173,7 +173,10 @@ Q3DScene *QAbstract3DInputHandler::scene() const void QAbstract3DInputHandler::setScene(Q3DScene *scene) { - d_ptr->m_scene = scene; + if (scene != d_ptr->m_scene) { + d_ptr->m_scene = scene; + emit sceneChanged(scene); + } } /*! diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp index d4b5c7b7..6abc8684 100644 --- a/src/datavisualizationqml2/abstractdeclarative.cpp +++ b/src/datavisualizationqml2/abstractdeclarative.cpp @@ -122,11 +122,23 @@ void AbstractDeclarative::setSharedController(Abstract3DController *controller) Q_ASSERT(controller); m_controller = controller; QObject::connect(m_controller, &Abstract3DController::shadowQualityChanged, this, - &AbstractDeclarative::handleShadowQualityUpdate); - emit sceneChanged(m_controller->scene()); + &AbstractDeclarative::shadowQualityChanged); QObject::connect(m_controller, &Abstract3DController::activeInputHandlerChanged, this, - &AbstractDeclarative::handleInputHandlerUpdate); - emit inputHandlerChanged(m_controller->activeInputHandler()); + &AbstractDeclarative::inputHandlerChanged); + QObject::connect(m_controller, &Abstract3DController::themeChanged, this, + &AbstractDeclarative::themeChanged); + QObject::connect(m_controller, &Abstract3DController::fontChanged, this, + &AbstractDeclarative::fontChanged); + QObject::connect(m_controller, &Abstract3DController::selectionModeChanged, this, + &AbstractDeclarative::selectionModeChanged); + QObject::connect(m_controller, &Abstract3DController::labelStyleChanged, this, + &AbstractDeclarative::labelStyleChanged); + QObject::connect(m_controller, &Abstract3DController::backgroundVisibleChanged, this, + &AbstractDeclarative::backgroundVisibleChanged); + QObject::connect(m_controller, &Abstract3DController::gridVisibleChanged, this, + &AbstractDeclarative::gridVisibleChanged); + QObject::connect(m_controller->activeDataProxy(), &QAbstractDataProxy::itemLabelFormatChanged, this, + &AbstractDeclarative::itemLabelFormatChanged); } QAbstract3DInputHandler* AbstractDeclarative::inputHandler() const @@ -176,14 +188,4 @@ void AbstractDeclarative::wheelEvent(QWheelEvent *event) m_controller->wheelEvent(event); } -void AbstractDeclarative::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} - -void AbstractDeclarative::handleInputHandlerUpdate(QAbstract3DInputHandler *inputHandler) -{ - emit inputHandlerChanged(inputHandler); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h index 842dbf4b..646ed785 100644 --- a/src/datavisualizationqml2/abstractdeclarative_p.h +++ b/src/datavisualizationqml2/abstractdeclarative_p.h @@ -42,16 +42,16 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE class AbstractDeclarative : public QQuickItem { Q_OBJECT - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionFlags selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelStyle labelStyle READ labelStyle WRITE setLabelStyle) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) - Q_PROPERTY(Q3DScene* scene READ scene NOTIFY sceneChanged) + Q_PROPERTY(QtDataVisualization::QDataVis::SelectionFlags selectionMode READ selectionMode WRITE setSelectionMode NOTIFY selectionModeChanged) + Q_PROPERTY(QtDataVisualization::QDataVis::LabelStyle labelStyle READ labelStyle WRITE setLabelStyle NOTIFY labelStyleChanged) + Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality NOTIFY shadowQualityChanged) + Q_PROPERTY(Q3DScene* scene READ scene) Q_PROPERTY(QAbstract3DInputHandler* inputHandler READ inputHandler WRITE setInputHandler NOTIFY inputHandlerChanged) - Q_PROPERTY(QtDataVisualization::QDataVis::Theme theme READ theme WRITE setTheme) - Q_PROPERTY(QFont font READ font WRITE setFont) - Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible) - Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible) - Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) + Q_PROPERTY(QtDataVisualization::QDataVis::Theme theme READ theme WRITE setTheme NOTIFY themeChanged) + Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) + Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible NOTIFY gridVisibleChanged) + Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible NOTIFY backgroundVisibleChanged) + Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat NOTIFY itemLabelFormatChanged) public: explicit AbstractDeclarative(QQuickItem *parent = 0); @@ -96,14 +96,17 @@ protected: virtual void mouseMoveEvent(QMouseEvent *event); virtual void wheelEvent(QWheelEvent *event); - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - virtual void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - virtual void handleInputHandlerUpdate(QAbstract3DInputHandler *inputHandler); signals: // Signals shadow quality changes. void shadowQualityChanged(QDataVis::ShadowQuality quality); - void sceneChanged(Q3DScene *scene); void inputHandlerChanged(QAbstract3DInputHandler *inputHandler); + void themeChanged(QDataVis::Theme theme); + void fontChanged(QFont font); + void selectionModeChanged(QDataVis::SelectionFlags mode); + void labelStyleChanged(QDataVis::LabelStyle style); + void backgroundVisibleChanged(bool visible); + void gridVisibleChanged(bool visible); + void itemLabelFormatChanged(QString format); private: Abstract3DController *m_controller; diff --git a/src/datavisualizationqml2/declarativebars.cpp b/src/datavisualizationqml2/declarativebars.cpp index 52b19807..09277272 100644 --- a/src/datavisualizationqml2/declarativebars.cpp +++ b/src/datavisualizationqml2/declarativebars.cpp @@ -43,6 +43,8 @@ DeclarativeBars::DeclarativeBars(QQuickItem *parent) AbstractDeclarative::setSharedController(m_shared); QObject::connect(m_shared, &Bars3DController::selectedBarChanged, this, &DeclarativeBars::selectedBarChanged); + QObject::connect(m_shared, &Abstract3DController::meshFileNameChanged, this, + &DeclarativeBars::meshFileNameChanged); QItemModelBarDataProxy *proxy = new QItemModelBarDataProxy; m_shared->setActiveDataProxy(proxy); @@ -53,7 +55,6 @@ DeclarativeBars::~DeclarativeBars() delete m_shared; } - QSGNode *DeclarativeBars::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { // If old node exists and has right size, reuse it. diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h index 16fe6d1f..06444dc8 100644 --- a/src/datavisualizationqml2/declarativebars_p.h +++ b/src/datavisualizationqml2/declarativebars_p.h @@ -56,7 +56,7 @@ class DeclarativeBars : public AbstractDeclarative Q_PROPERTY(QSizeF barSpacing READ barSpacing WRITE setBarSpacing) Q_PROPERTY(bool barSpacingRelative READ isBarSpacingRelative WRITE setBarSpacingRelative) Q_PROPERTY(bool barSmoothingEnabled READ isBarSmoothingEnabled WRITE setBarSmoothingEnabled) - Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) + Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName NOTIFY meshFileNameChanged) Q_PROPERTY(QPointF selectedBar READ selectedBar WRITE setSelectedBar NOTIFY selectedBarChanged) public: @@ -98,6 +98,7 @@ public: signals: void selectedBarChanged(const QPointF &position); + void meshFileNameChanged(QString filename); protected: QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); diff --git a/src/datavisualizationqml2/declarativescatter.cpp b/src/datavisualizationqml2/declarativescatter.cpp index a2ef9369..d18ff208 100644 --- a/src/datavisualizationqml2/declarativescatter.cpp +++ b/src/datavisualizationqml2/declarativescatter.cpp @@ -44,6 +44,8 @@ DeclarativeScatter::DeclarativeScatter(QQuickItem *parent) QObject::connect(m_shared, &Scatter3DController::selectedItemIndexChanged, this, &DeclarativeScatter::selectedItemIndexChanged); + QObject::connect(m_shared, &Abstract3DController::meshFileNameChanged, this, + &DeclarativeScatter::meshFileNameChanged); } DeclarativeScatter::~DeclarativeScatter() diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h index 922cf05e..62cbb605 100644 --- a/src/datavisualizationqml2/declarativescatter_p.h +++ b/src/datavisualizationqml2/declarativescatter_p.h @@ -51,8 +51,7 @@ class DeclarativeScatter : public AbstractDeclarative Q_PROPERTY(Q3DValueAxis *axisZ READ axisZ WRITE setAxisZ) Q_PROPERTY(QtDataVisualization::QDataVis::MeshStyle objectType READ objectType WRITE setObjectType) Q_PROPERTY(bool objectSmoothingEnabled READ isObjectSmoothingEnabled WRITE setObjectSmoothingEnabled) - Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) - Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) + Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName NOTIFY meshFileNameChanged) Q_PROPERTY(int selectedItemIndex READ selectedItemIndex WRITE setSelectedItemIndex NOTIFY selectedItemIndexChanged) public: @@ -85,6 +84,7 @@ public: signals: void selectedItemIndexChanged(int index); + void meshFileNameChanged(QString filename); protected: Scatter3DController *m_shared; -- cgit v1.2.3