From 0b191307ac22b14175f846e06e3356ca00099c52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kera=CC=88nen=20Pasi?= Date: Tue, 24 Sep 2013 11:43:16 +0300 Subject: Added abstract baseclass for declarative components. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: Icdeb487388bb9c36cfbb6d7077de052434ec3fe3 Reviewed-by: Tomi Korpipää --- src/datavisualizationqml2/abstractdeclarative.cpp | 189 +++++++++++++++++++++ src/datavisualizationqml2/abstractdeclarative_p.h | 115 +++++++++++++ .../datavisualizationqml2.pro | 6 +- .../datavisualizationqml2_plugin.cpp | 2 + .../datavisualizationqml2_plugin.h | 1 + src/datavisualizationqml2/declarativebars.cpp | 162 +----------------- src/datavisualizationqml2/declarativebars_p.h | 94 +--------- src/datavisualizationqml2/declarativescatter.cpp | 157 +---------------- src/datavisualizationqml2/declarativescatter_p.h | 81 +-------- src/datavisualizationqml2/declarativesurface.cpp | 147 +--------------- src/datavisualizationqml2/declarativesurface_p.h | 62 +------ 11 files changed, 343 insertions(+), 673 deletions(-) create mode 100644 src/datavisualizationqml2/abstractdeclarative.cpp create mode 100644 src/datavisualizationqml2/abstractdeclarative_p.h (limited to 'src/datavisualizationqml2') diff --git a/src/datavisualizationqml2/abstractdeclarative.cpp b/src/datavisualizationqml2/abstractdeclarative.cpp new file mode 100644 index 00000000..a2b39bf0 --- /dev/null +++ b/src/datavisualizationqml2/abstractdeclarative.cpp @@ -0,0 +1,189 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +#include "abstractdeclarative_p.h" +#include "q3dvalueaxis.h" +#include "theme_p.h" + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +AbstractDeclarative::AbstractDeclarative(QQuickItem *parent) : + QQuickItem(parent) +{ +} + +AbstractDeclarative::~AbstractDeclarative() +{ +} + +void AbstractDeclarative::setCameraPosition(qreal horizontal, qreal vertical, int distance) +{ + m_controller->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance)); +} + +void AbstractDeclarative::setCameraPreset(QDataVis::CameraPreset preset) +{ + m_controller->setCameraPreset(preset); +} + +QDataVis::CameraPreset AbstractDeclarative::cameraPreset() const +{ + return m_controller->cameraPreset(); +} + +void AbstractDeclarative::setTheme(QDataVis::ColorTheme theme) +{ + // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented + m_controller->setColorTheme(theme); +} + +QDataVis::ColorTheme AbstractDeclarative::theme() const +{ + return m_controller->theme().colorTheme(); +} + +void AbstractDeclarative::setSelectionMode(QDataVis::SelectionMode mode) +{ + m_controller->setSelectionMode(mode); +} + +QDataVis::SelectionMode AbstractDeclarative::selectionMode() const +{ + return m_controller->selectionMode(); +} + +void AbstractDeclarative::setFont(const QFont &font) +{ + m_controller->setFont(font); +} + +QFont AbstractDeclarative::font() const +{ + return m_controller->font(); +} + +void AbstractDeclarative::setLabelTransparency(QDataVis::LabelTransparency transparency) +{ + m_controller->setLabelTransparency(transparency); +} + +QDataVis::LabelTransparency AbstractDeclarative::labelTransparency() const +{ + return m_controller->labelTransparency(); +} + +void AbstractDeclarative::setGridVisible(bool visible) +{ + m_controller->setGridEnabled(visible); +} + +bool AbstractDeclarative::isGridVisible() const +{ + return m_controller->gridEnabled(); +} + +void AbstractDeclarative::setBackgroundVisible(bool visible) +{ + m_controller->setBackgroundEnabled(visible); +} + +bool AbstractDeclarative::isBackgroundVisible() const +{ + return m_controller->backgroundEnabled(); +} + +void AbstractDeclarative::setShadowQuality(QDataVis::ShadowQuality quality) +{ + m_controller->setShadowQuality(quality); +} + +QDataVis::ShadowQuality AbstractDeclarative::shadowQuality() const +{ + return m_controller->shadowQuality(); +} + +void AbstractDeclarative::setItemLabelFormat(const QString &format) +{ + m_controller->activeDataProxy()->setItemLabelFormat(format); +} + +QString AbstractDeclarative::itemLabelFormat() const +{ + return m_controller->activeDataProxy()->itemLabelFormat(); +} + +void AbstractDeclarative::setSharedController(Abstract3DController *controller) +{ + Q_ASSERT(controller); + m_controller = controller; + QObject::connect(m_controller, &Abstract3DController::shadowQualityChanged, this, + &AbstractDeclarative::handleShadowQualityUpdate); +} + + +void AbstractDeclarative::mouseDoubleClickEvent(QMouseEvent *event) +{ +#if defined(Q_OS_ANDROID) + m_controller->mouseDoubleClickEvent(event); +#else + Q_UNUSED(event) +#endif +} + +void AbstractDeclarative::touchEvent(QTouchEvent *event) +{ +#if defined(Q_OS_ANDROID) + m_controller->touchEvent(event); + update(); +#else + Q_UNUSED(event) +#endif +} + +void AbstractDeclarative::mousePressEvent(QMouseEvent *event) +{ + QPoint mousePos = event->pos(); + //mousePos.setY(height() - mousePos.y()); + m_controller->mousePressEvent(event, mousePos); +} + +void AbstractDeclarative::mouseReleaseEvent(QMouseEvent *event) +{ + QPoint mousePos = event->pos(); + //mousePos.setY(height() - mousePos.y()); + m_controller->mouseReleaseEvent(event, mousePos); +} + +void AbstractDeclarative::mouseMoveEvent(QMouseEvent *event) +{ + QPoint mousePos = event->pos(); + //mousePos.setY(height() - mousePos.y()); + m_controller->mouseMoveEvent(event, mousePos); +} + +void AbstractDeclarative::wheelEvent(QWheelEvent *event) +{ + m_controller->wheelEvent(event); +} + +void AbstractDeclarative::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) +{ + emit shadowQualityChanged(quality); +} + +QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/abstractdeclarative_p.h b/src/datavisualizationqml2/abstractdeclarative_p.h new file mode 100644 index 00000000..a7f03cc7 --- /dev/null +++ b/src/datavisualizationqml2/abstractdeclarative_p.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the QtDataVisualization module. +** +** Licensees holding valid Qt Enterprise licenses may use this file in +** accordance with the Qt Enterprise License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the QtDataVisualization API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#ifndef ABSTRACTDECLARATIVE_P_H +#define ABSTRACTDECLARATIVE_P_H + +#include "datavisualizationglobal_p.h" +#include "abstract3dcontroller_p.h" + +#include +#include +#include + +QT_DATAVISUALIZATION_BEGIN_NAMESPACE + +class AbstractDeclarative : public QQuickItem +{ + Q_OBJECT + Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) + Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) + Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) + Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) + Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme 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_ENUMS(QtDataVisualization::QDataVis::SelectionMode) + Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) + Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) + Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) + Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) + Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) + +public: + explicit AbstractDeclarative(QQuickItem *parent = 0); + virtual ~AbstractDeclarative(); + + Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance); + + virtual void setCameraPreset(QDataVis::CameraPreset preset); + virtual QDataVis::CameraPreset cameraPreset() const; + + virtual void setTheme(QDataVis::ColorTheme theme); + virtual QDataVis::ColorTheme theme() const; + + virtual void setSelectionMode(QDataVis::SelectionMode mode); + virtual QDataVis::SelectionMode selectionMode() const; + + virtual void setFont(const QFont &font); + virtual QFont font() const; + + virtual void setLabelTransparency(QDataVis::LabelTransparency transparency); + virtual QDataVis::LabelTransparency labelTransparency() const; + + virtual void setGridVisible(bool visible); + virtual bool isGridVisible() const; + + virtual void setBackgroundVisible(bool visible); + virtual bool isBackgroundVisible() const; + + virtual void setShadowQuality(QDataVis::ShadowQuality quality); + virtual QDataVis::ShadowQuality shadowQuality() const; + + virtual void setItemLabelFormat(const QString &format); + virtual QString itemLabelFormat() const; + + void setSharedController(Abstract3DController *controller); + +protected: + virtual void mouseDoubleClickEvent(QMouseEvent *event); + virtual void touchEvent(QTouchEvent *event); + virtual void mousePressEvent(QMouseEvent *event); + virtual void mouseReleaseEvent(QMouseEvent *event); + 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); + +signals: + // Signals shadow quality changes. + void shadowQualityChanged(QDataVis::ShadowQuality quality); + +private: + Abstract3DController *m_controller; +}; + +QT_DATAVISUALIZATION_END_NAMESPACE + +#endif // ABSTRACTDECLARATIVE_P_H diff --git a/src/datavisualizationqml2/datavisualizationqml2.pro b/src/datavisualizationqml2/datavisualizationqml2.pro index c5ee910b..68e267ed 100644 --- a/src/datavisualizationqml2/datavisualizationqml2.pro +++ b/src/datavisualizationqml2/datavisualizationqml2.pro @@ -23,7 +23,8 @@ SOURCES += \ declarativescatter.cpp \ declarativescatterrenderer.cpp \ declarativesurface.cpp \ - declarativesurfacerenderer.cpp + declarativesurfacerenderer.cpp \ + abstractdeclarative.cpp HEADERS += \ datavisualizationqml2_plugin.h \ @@ -32,7 +33,8 @@ HEADERS += \ declarativescatter_p.h \ declarativescatterrenderer_p.h \ declarativesurface_p.h \ - declarativesurfacerenderer_p.h + declarativesurfacerenderer_p.h \ + abstractdeclarative_p.h OTHER_FILES = qmldir diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp index db3cb6f5..5bb9ed3a 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.cpp @@ -41,6 +41,8 @@ void Datavis3Dqml2Plugin::registerTypes(const char *uri) QLatin1String("Trying to create uncreatable: ScatterDataProxy.")); qmlRegisterUncreatableType(uri, 1, 0, "SurfaceDataProxy", QLatin1String("Trying to create uncreatable: SurfaceDataProxy.")); + qmlRegisterUncreatableType(uri, 1, 0, "AbstractDeclarative", + QLatin1String("Trying to create uncreatable: AbstractDeclarative.")); qmlRegisterType(uri, 1, 0, "BarDataMapping"); qmlRegisterType(uri, 1, 0, "ScatterDataMapping"); diff --git a/src/datavisualizationqml2/datavisualizationqml2_plugin.h b/src/datavisualizationqml2/datavisualizationqml2_plugin.h index 19106279..31066c47 100644 --- a/src/datavisualizationqml2/datavisualizationqml2_plugin.h +++ b/src/datavisualizationqml2/datavisualizationqml2_plugin.h @@ -37,6 +37,7 @@ QT_DATAVISUALIZATION_USE_NAMESPACE +Q_DECLARE_METATYPE(AbstractDeclarative *) Q_DECLARE_METATYPE(DeclarativeBars *) Q_DECLARE_METATYPE(DeclarativeScatter *) Q_DECLARE_METATYPE(DeclarativeSurface *) diff --git a/src/datavisualizationqml2/declarativebars.cpp b/src/datavisualizationqml2/declarativebars.cpp index c757c804..c15ca495 100644 --- a/src/datavisualizationqml2/declarativebars.cpp +++ b/src/datavisualizationqml2/declarativebars.cpp @@ -27,7 +27,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE const QString smoothString(QStringLiteral("Smooth")); DeclarativeBars::DeclarativeBars(QQuickItem *parent) - : QQuickItem(parent), + : AbstractDeclarative(parent), m_shared(0), m_initialisedSize(0, 0) { @@ -40,8 +40,7 @@ DeclarativeBars::DeclarativeBars(QQuickItem *parent) // Create the shared component on the main GUI thread. m_shared = new Bars3DController(boundingRect().toRect()); - QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this, - &DeclarativeBars::handleShadowQualityUpdate); + AbstractDeclarative::setSharedController(m_shared); QObject::connect(m_shared, &Bars3DController::selectedBarPosChanged, this, &DeclarativeBars::selectedBarPosChanged); @@ -54,10 +53,6 @@ DeclarativeBars::~DeclarativeBars() delete m_shared; } -void DeclarativeBars::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} QSGNode *DeclarativeBars::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { @@ -87,11 +82,6 @@ void DeclarativeBars::setBarColor(const QColor &baseColor, bool uniform) m_shared->setObjectColor(baseColor, uniform); } -void DeclarativeBars::setCameraPosition(qreal horizontal, qreal vertical, int distance) -{ - m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance)); -} - void DeclarativeBars::setDataProxy(QBarDataProxy *dataProxy) { m_shared->setActiveDataProxy(dataProxy); @@ -137,7 +127,7 @@ void DeclarativeBars::setBarThickness(qreal thicknessRatio) m_shared->setBarSpecs(GLfloat(thicknessRatio), barSpacing(), isBarSpacingRelative()); } -qreal DeclarativeBars::barThickness() +qreal DeclarativeBars::barThickness() const { return m_shared->barThickness(); } @@ -147,7 +137,7 @@ void DeclarativeBars::setBarSpacing(QSizeF spacing) m_shared->setBarSpecs(GLfloat(barThickness()), spacing, isBarSpacingRelative()); } -QSizeF DeclarativeBars::barSpacing() +QSizeF DeclarativeBars::barSpacing() const { return m_shared->barSpacing(); } @@ -157,7 +147,7 @@ void DeclarativeBars::setBarSpacingRelative(bool relative) m_shared->setBarSpecs(GLfloat(barThickness()), barSpacing(), relative); } -bool DeclarativeBars::isBarSpacingRelative() +bool DeclarativeBars::isBarSpacingRelative() const { return m_shared->isBarSpecRelative(); } @@ -169,7 +159,7 @@ void DeclarativeBars::setBarType(QDataVis::MeshStyle style) m_shared->setBarType(style, smooth); } -QDataVis::MeshStyle DeclarativeBars::barType() +QDataVis::MeshStyle DeclarativeBars::barType() const { QString objFile = m_shared->meshFileName(); if (objFile.contains("/sphere")) @@ -195,7 +185,7 @@ void DeclarativeBars::setBarSmoothingEnabled(bool enabled) m_shared->setMeshFileName(objFile); } -bool DeclarativeBars::isBarSmoothingEnabled() +bool DeclarativeBars::isBarSmoothingEnabled() const { QString objFile = m_shared->meshFileName(); return objFile.endsWith(smoothString); @@ -206,102 +196,11 @@ void DeclarativeBars::setMeshFileName(const QString &objFileName) m_shared->setMeshFileName(objFileName); } -QString DeclarativeBars::meshFileName() +QString DeclarativeBars::meshFileName() const { return m_shared->meshFileName(); } -void DeclarativeBars::setCameraPreset(QDataVis::CameraPreset preset) -{ - m_shared->setCameraPreset(preset); -} - -QDataVis::CameraPreset DeclarativeBars::cameraPreset() -{ - return m_shared->cameraPreset(); -} - -void DeclarativeBars::setTheme(QDataVis::ColorTheme theme) -{ - // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented - m_shared->setColorTheme(theme); -} - -QDataVis::ColorTheme DeclarativeBars::theme() -{ - return m_shared->theme().colorTheme(); -} - -void DeclarativeBars::setFont(const QFont &font) -{ - m_shared->setFont(font); -} - -QFont DeclarativeBars::font() -{ - return m_shared->font(); -} - -void DeclarativeBars::setLabelTransparency(QDataVis::LabelTransparency transparency) -{ - m_shared->setLabelTransparency(transparency); -} - -QDataVis::LabelTransparency DeclarativeBars::labelTransparency() -{ - return m_shared->labelTransparency(); -} - -void DeclarativeBars::setGridVisible(bool visible) -{ - m_shared->setGridEnabled(visible); -} - -bool DeclarativeBars::isGridVisible() -{ - return m_shared->gridEnabled(); -} - -void DeclarativeBars::setBackgroundVisible(bool visible) -{ - m_shared->setBackgroundEnabled(visible); -} - -bool DeclarativeBars::isBackgroundVisible() -{ - return m_shared->backgroundEnabled(); -} - -void DeclarativeBars::setSelectionMode(QDataVis::SelectionMode mode) -{ - m_shared->setSelectionMode(mode); -} - -QDataVis::SelectionMode DeclarativeBars::selectionMode() -{ - return m_shared->selectionMode(); -} - -void DeclarativeBars::setShadowQuality(QDataVis::ShadowQuality quality) -{ - m_shared->setShadowQuality(quality); -} - -QDataVis::ShadowQuality DeclarativeBars::shadowQuality() -{ - return m_shared->shadowQuality(); -} - -void DeclarativeBars::setItemLabelFormat(const QString &format) -{ - m_shared->activeDataProxy()->setItemLabelFormat(format); -} - -QString DeclarativeBars::itemLabelFormat() -{ - return m_shared->activeDataProxy()->itemLabelFormat(); -} - void DeclarativeBars::setSelectedBarPos(const QPointF &position) { m_shared->setSelectedBarPos(position.toPoint()); @@ -312,49 +211,4 @@ QPointF DeclarativeBars::selectedBarPos() const return QPointF(m_shared->selectedBarPos()); } -void DeclarativeBars::mouseDoubleClickEvent(QMouseEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->mouseDoubleClickEvent(event); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeBars::touchEvent(QTouchEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->touchEvent(event); - update(); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeBars::mousePressEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mousePressEvent(event, mousePos); -} - -void DeclarativeBars::mouseReleaseEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseReleaseEvent(event, mousePos); -} - -void DeclarativeBars::mouseMoveEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseMoveEvent(event, mousePos); -} - -void DeclarativeBars::wheelEvent(QWheelEvent *event) -{ - m_shared->wheelEvent(event); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativebars_p.h b/src/datavisualizationqml2/declarativebars_p.h index 78223773..dfbf9934 100644 --- a/src/datavisualizationqml2/declarativebars_p.h +++ b/src/datavisualizationqml2/declarativebars_p.h @@ -30,6 +30,7 @@ #define DECLARATIVEBARS_P_H #include "datavisualizationglobal_p.h" +#include "abstractdeclarative_p.h" #include "bars3dcontroller_p.h" #include "declarativebars_p.h" #include "q3dvalueaxis.h" @@ -43,49 +44,28 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE -class DeclarativeBars : public QQuickItem +class DeclarativeBars : public AbstractDeclarative { Q_OBJECT Q_PROPERTY(QBarDataProxy *dataProxy READ dataProxy WRITE setDataProxy) Q_PROPERTY(Q3DCategoryAxis *rowAxis READ rowAxis WRITE setRowAxis) Q_PROPERTY(Q3DValueAxis *valueAxis READ valueAxis WRITE setValueAxis) Q_PROPERTY(Q3DCategoryAxis *columnAxis READ columnAxis WRITE setColumnAxis) - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) Q_PROPERTY(QtDataVisualization::QDataVis::MeshStyle barType READ barType WRITE setBarType) - Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) - Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) Q_PROPERTY(qreal barThickness READ barThickness WRITE setBarThickness) 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(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(QPointF selectedBarPos READ selectedBarPos WRITE setSelectedBarPos NOTIFY selectedBarPosChanged) - Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) - Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) - Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) Q_ENUMS(QtDataVisualization::QDataVis::MeshStyle) - Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) - Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) public: explicit DeclarativeBars(QQuickItem *parent = 0); ~DeclarativeBars(); - // Set color if you don't want to use themes. Set uniform to false if you want the (height) - // color to change from bottom to top Q_INVOKABLE void setBarColor(const QColor &baseColor, bool uniform = true); - // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and - // vertical (0...90) (or (-90...90) if there are negative values) angles and distance in - // percentage (10...500)) - Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance); - QBarDataProxy *dataProxy() const; void setDataProxy(QBarDataProxy *dataProxy); @@ -96,91 +76,35 @@ public: Q3DCategoryAxis *columnAxis() const; void setColumnAxis(Q3DCategoryAxis *axis); - // Set bar thickness. void setBarThickness(qreal thicknessRatio); - qreal barThickness(); + qreal barThickness() const; - // Set spacing between bars. Y-component sets the spacing of Z-direction. - // If spacing is relative, 0.0f means side-to-side and 1.0f = one thickness in between. void setBarSpacing(QSizeF spacing); - QSizeF barSpacing(); + QSizeF barSpacing() const; - // Set bar spacing relative to thickness or absolute void setBarSpacingRelative(bool relative); - bool isBarSpacingRelative(); + bool isBarSpacingRelative() const; - // Bar type void setBarType(QDataVis::MeshStyle style); - QDataVis::MeshStyle barType(); + QDataVis::MeshStyle barType() const; - // Bar smoothing void setBarSmoothingEnabled(bool enabled); - bool isBarSmoothingEnabled(); + bool isBarSmoothingEnabled() const; - // override object type with own mesh void setMeshFileName(const QString &objFileName); - QString meshFileName(); - - // Select preset camera placement - void setCameraPreset(QDataVis::CameraPreset preset); - QDataVis::CameraPreset cameraPreset(); - - // Set theme (object colors, shaders, window color, background colors, light intensity and text - // colors are affected) - void setTheme(QDataVis::ColorTheme theme); - QDataVis::ColorTheme theme(); - - // Change selection mode; single bar, bar and row, bar and column, or all - void setSelectionMode(QDataVis::SelectionMode mode); - QDataVis::SelectionMode selectionMode(); - - // Set font - void setFont(const QFont &font); - QFont font(); - - // Label transparency adjustment - void setLabelTransparency(QDataVis::LabelTransparency transparency); - QDataVis::LabelTransparency labelTransparency(); - - // Enable or disable background grid - void setGridVisible(bool visible); - bool isGridVisible(); - - // Enable or disable background mesh - void setBackgroundVisible(bool visible); - bool isBackgroundVisible(); - - // Adjust shadow quality - void setShadowQuality(QDataVis::ShadowQuality quality); - QDataVis::ShadowQuality shadowQuality(); - - void setItemLabelFormat(const QString &format); - QString itemLabelFormat(); + QString meshFileName() const; void setSelectedBarPos(const QPointF &position); QPointF selectedBarPos() const; signals: - // Signals shadow quality changes. - void shadowQualityChanged(QDataVis::ShadowQuality quality); void selectedBarPosChanged(const QPointF &position); protected: - Bars3DController *m_shared; - - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - private: + Bars3DController *m_shared; QSize m_initialisedSize; }; diff --git a/src/datavisualizationqml2/declarativescatter.cpp b/src/datavisualizationqml2/declarativescatter.cpp index 34a11024..6447c781 100644 --- a/src/datavisualizationqml2/declarativescatter.cpp +++ b/src/datavisualizationqml2/declarativescatter.cpp @@ -26,7 +26,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE const QString smoothString(QStringLiteral("Smooth")); DeclarativeScatter::DeclarativeScatter(QQuickItem *parent) - : QQuickItem(parent), + : AbstractDeclarative(parent), m_shared(0), m_initialisedSize(0, 0) { @@ -39,9 +39,7 @@ DeclarativeScatter::DeclarativeScatter(QQuickItem *parent) // Create the shared component on the main GUI thread. m_shared = new Scatter3DController(boundingRect().toRect()); - QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this, - &DeclarativeScatter::handleShadowQualityUpdate); - + setSharedController(m_shared); m_shared->setActiveDataProxy(new QItemModelScatterDataProxy); } @@ -50,11 +48,6 @@ DeclarativeScatter::~DeclarativeScatter() delete m_shared; } -void DeclarativeScatter::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} - QSGNode *DeclarativeScatter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { // If old node exists and has right size, reuse it. @@ -78,11 +71,6 @@ QSGNode *DeclarativeScatter::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeDa return node; } -void DeclarativeScatter::setCameraPosition(qreal horizontal, qreal vertical, int distance) -{ - m_shared->setCameraPosition(GLfloat(horizontal), GLfloat(vertical), GLint(distance)); -} - void DeclarativeScatter::setObjectColor(const QColor &baseColor, bool uniform) { m_shared->setObjectColor(baseColor, uniform); @@ -135,7 +123,7 @@ void DeclarativeScatter::setObjectType(QDataVis::MeshStyle style) m_shared->setObjectType(style, smooth); } -QDataVis::MeshStyle DeclarativeScatter::objectType() +QDataVis::MeshStyle DeclarativeScatter::objectType() const { QString objFile = m_shared->meshFileName(); if (objFile.contains("/sphere")) @@ -161,7 +149,7 @@ void DeclarativeScatter::setObjectSmoothingEnabled(bool enabled) m_shared->setMeshFileName(objFile); } -bool DeclarativeScatter::isObjectSmoothingEnabled() +bool DeclarativeScatter::isObjectSmoothingEnabled() const { QString objFile = m_shared->meshFileName(); return objFile.endsWith(smoothString); @@ -172,144 +160,9 @@ void DeclarativeScatter::setMeshFileName(const QString &objFileName) m_shared->setMeshFileName(objFileName); } -QString DeclarativeScatter::meshFileName() +QString DeclarativeScatter::meshFileName() const { return m_shared->meshFileName(); } -void DeclarativeScatter::setCameraPreset(QDataVis::CameraPreset preset) -{ - m_shared->setCameraPreset(preset); -} - -QDataVis::CameraPreset DeclarativeScatter::cameraPreset() -{ - return m_shared->cameraPreset(); -} - -void DeclarativeScatter::setTheme(QDataVis::ColorTheme theme) -{ - m_shared->setColorTheme(theme); -} - -QDataVis::ColorTheme DeclarativeScatter::theme() -{ - return m_shared->theme().colorTheme(); -} - -void DeclarativeScatter::setFont(const QFont &font) -{ - m_shared->setFont(font); -} - -QFont DeclarativeScatter::font() -{ - return m_shared->font(); -} - -void DeclarativeScatter::setLabelTransparency(QDataVis::LabelTransparency transparency) -{ - m_shared->setLabelTransparency(transparency); -} - -QDataVis::LabelTransparency DeclarativeScatter::labelTransparency() -{ - return m_shared->labelTransparency(); -} - -void DeclarativeScatter::setGridVisible(bool visible) -{ - m_shared->setGridEnabled(visible); -} - -bool DeclarativeScatter::isGridVisible() -{ - return m_shared->gridEnabled(); -} - -void DeclarativeScatter::setBackgroundVisible(bool visible) -{ - m_shared->setBackgroundEnabled(visible); -} - -bool DeclarativeScatter::isBackgroundVisible() -{ - return m_shared->backgroundEnabled(); -} - -void DeclarativeScatter::setSelectionMode(QDataVis::SelectionMode mode) -{ - m_shared->setSelectionMode(mode); -} - -QDataVis::SelectionMode DeclarativeScatter::selectionMode() -{ - return m_shared->selectionMode(); -} - -void DeclarativeScatter::setShadowQuality(QDataVis::ShadowQuality quality) -{ - m_shared->setShadowQuality(quality); -} - -QDataVis::ShadowQuality DeclarativeScatter::shadowQuality() -{ - return m_shared->shadowQuality(); -} - -void DeclarativeScatter::setItemLabelFormat(const QString &format) -{ - m_shared->activeDataProxy()->setItemLabelFormat(format); -} - -QString DeclarativeScatter::itemLabelFormat() -{ - return m_shared->activeDataProxy()->itemLabelFormat(); -} - -void DeclarativeScatter::mouseDoubleClickEvent(QMouseEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->mouseDoubleClickEvent(event); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeScatter::touchEvent(QTouchEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->touchEvent(event); - update(); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeScatter::mousePressEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mousePressEvent(event, mousePos); -} - -void DeclarativeScatter::mouseReleaseEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseReleaseEvent(event, mousePos); -} - -void DeclarativeScatter::mouseMoveEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseMoveEvent(event, mousePos); -} - -void DeclarativeScatter::wheelEvent(QWheelEvent *event) -{ - m_shared->wheelEvent(event); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativescatter_p.h b/src/datavisualizationqml2/declarativescatter_p.h index 4541df8e..cc16e770 100644 --- a/src/datavisualizationqml2/declarativescatter_p.h +++ b/src/datavisualizationqml2/declarativescatter_p.h @@ -30,6 +30,7 @@ #define DECLARATIVESCATTER_P_H #include "datavisualizationglobal_p.h" +#include "abstractdeclarative_p.h" #include "scatter3dcontroller_p.h" #include "declarativescatter_p.h" #include "q3dvalueaxis.h" @@ -41,42 +42,23 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE -class DeclarativeScatter : public QQuickItem +class DeclarativeScatter : public AbstractDeclarative { Q_OBJECT Q_PROPERTY(QScatterDataProxy *dataProxy READ dataProxy WRITE setDataProxy) Q_PROPERTY(Q3DValueAxis *axisX READ axisX WRITE setAxisX) Q_PROPERTY(Q3DValueAxis *axisY READ axisY WRITE setAxisY) Q_PROPERTY(Q3DValueAxis *axisZ READ axisZ WRITE setAxisZ) - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) Q_PROPERTY(QtDataVisualization::QDataVis::MeshStyle objectType READ objectType WRITE setObjectType) - Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) - Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme theme READ theme WRITE setTheme) Q_PROPERTY(bool objectSmoothingEnabled READ isObjectSmoothingEnabled WRITE setObjectSmoothingEnabled) Q_PROPERTY(QString meshFileName READ meshFileName WRITE setMeshFileName) - 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_ENUMS(QtDataVisualization::QDataVis::SelectionMode) - Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) - Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) Q_ENUMS(QtDataVisualization::QDataVis::MeshStyle) - Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) - Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) public: explicit DeclarativeScatter(QQuickItem *parent = 0); ~DeclarativeScatter(); - // Set camera rotation if you don't want to use the presets (in horizontal (-180...180) and - // vertical (-90...90) angles and distance in percentage (10...500)) - Q_INVOKABLE void setCameraPosition(qreal horizontal, qreal vertical, int distance); - - // Set color if you don't want to use themes. Set uniform to false if you want the (height) - // color to change from bottom to top Q_INVOKABLE void setObjectColor(const QColor &baseColor, bool uniform = true); QScatterDataProxy *dataProxy() const; @@ -89,72 +71,19 @@ public: Q3DValueAxis *axisZ() const; void setAxisZ(Q3DValueAxis *axis); - // Object type void setObjectType(QDataVis::MeshStyle style); - QDataVis::MeshStyle objectType(); + QDataVis::MeshStyle objectType() const; - // Object smoothing void setObjectSmoothingEnabled(bool enabled); - bool isObjectSmoothingEnabled(); + bool isObjectSmoothingEnabled() const; - // override object type with own mesh void setMeshFileName(const QString &objFileName); - QString meshFileName(); - - // Select preset camera placement - void setCameraPreset(QDataVis::CameraPreset preset); - QDataVis::CameraPreset cameraPreset(); - - // Set theme (object colors, shaders, window color, background colors, light intensity and text - // colors are affected) - void setTheme(QDataVis::ColorTheme theme); - QDataVis::ColorTheme theme(); - - // Change selection mode - void setSelectionMode(QDataVis::SelectionMode mode); - QDataVis::SelectionMode selectionMode(); - - // Set font - void setFont(const QFont &font); - QFont font(); - - // Label transparency adjustment - void setLabelTransparency(QDataVis::LabelTransparency transparency); - QDataVis::LabelTransparency labelTransparency(); - - // Enable or disable background grid - void setGridVisible(bool visible); - bool isGridVisible(); - - // Enable or disable background mesh - void setBackgroundVisible(bool visible); - bool isBackgroundVisible(); - - void setItemLabelFormat(const QString &format); - QString itemLabelFormat(); - - // Adjust shadow quality - void setShadowQuality(QDataVis::ShadowQuality quality); - QDataVis::ShadowQuality shadowQuality(); - -signals: - // Signals shadow quality changes. - void shadowQualityChanged(QDataVis::ShadowQuality quality); + QString meshFileName() const; protected: Scatter3DController *m_shared; QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - private: QSize m_initialisedSize; }; diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp index 48eec8ce..f74472f5 100644 --- a/src/datavisualizationqml2/declarativesurface.cpp +++ b/src/datavisualizationqml2/declarativesurface.cpp @@ -25,7 +25,7 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE DeclarativeSurface::DeclarativeSurface(QQuickItem *parent) - : QQuickItem(parent), + : AbstractDeclarative(parent), m_shared(0), m_initialisedSize(0, 0) { @@ -38,8 +38,7 @@ DeclarativeSurface::DeclarativeSurface(QQuickItem *parent) // Create the shared component on the main GUI thread. m_shared = new Surface3DController(boundingRect().toRect()); - QObject::connect(m_shared, &Abstract3DController::shadowQualityChanged, this, - &DeclarativeSurface::handleShadowQualityUpdate); + setSharedController(m_shared); QItemModelSurfaceDataProxy *proxy = new QItemModelSurfaceDataProxy; m_shared->setActiveDataProxy(proxy); @@ -50,11 +49,6 @@ DeclarativeSurface::~DeclarativeSurface() delete m_shared; } -void DeclarativeSurface::handleShadowQualityUpdate(QDataVis::ShadowQuality quality) -{ - emit shadowQualityChanged(quality); -} - QSGNode *DeclarativeSurface::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) { // If old node exists and has right size, reuse it. @@ -93,17 +87,6 @@ QSurfaceDataProxy *DeclarativeSurface::dataProxy() const return static_cast(m_shared->activeDataProxy()); } -void DeclarativeSurface::setCameraPreset(QDataVis::CameraPreset preset) -{ - m_shared->setCameraPreset(preset); -} - -QDataVis::CameraPreset DeclarativeSurface::cameraPreset() -{ - return m_shared->cameraPreset(); - -} - Q3DValueAxis *DeclarativeSurface::axisX() const { return static_cast(m_shared->axisX()); @@ -134,57 +117,6 @@ void DeclarativeSurface::setAxisZ(Q3DValueAxis *axis) m_shared->setAxisZ(axis); } -void DeclarativeSurface::setTheme(QDataVis::ColorTheme theme) -{ - // TODO: Implement correctly once "user-modifiable themes" (QTRD-2120) is implemented - m_shared->setColorTheme(theme); -} - -QDataVis::ColorTheme DeclarativeSurface::theme() -{ - return m_shared->theme().colorTheme(); -} - -void DeclarativeSurface::setFont(const QFont &font) -{ - m_shared->setFont(font); -} - -QFont DeclarativeSurface::font() -{ - return m_shared->font(); -} - -void DeclarativeSurface::setLabelTransparency(QDataVis::LabelTransparency transparency) -{ - m_shared->setLabelTransparency(transparency); -} - -QDataVis::LabelTransparency DeclarativeSurface::labelTransparency() -{ - return m_shared->labelTransparency(); -} - -void DeclarativeSurface::setGridVisible(bool visible) -{ - m_shared->setGridEnabled(visible); -} - -bool DeclarativeSurface::isGridVisible() -{ - return m_shared->gridEnabled(); -} - -void DeclarativeSurface::setBackgroundVisible(bool visible) -{ - m_shared->setBackgroundEnabled(visible); -} - -bool DeclarativeSurface::isBackgroundVisible() -{ - return m_shared->backgroundEnabled(); -} - void DeclarativeSurface::setSmoothSurfaceEnabled(bool enabled) { m_shared->setSmoothSurface(enabled); @@ -205,26 +137,6 @@ bool DeclarativeSurface::isSurfaceGridEnabled() const return m_shared->surfaceGrid(); } -void DeclarativeSurface::setSelectionMode(QDataVis::SelectionMode mode) -{ - m_shared->setSelectionMode(mode); -} - -QDataVis::SelectionMode DeclarativeSurface::selectionMode() -{ - return m_shared->selectionMode(); -} - -void DeclarativeSurface::setShadowQuality(QDataVis::ShadowQuality quality) -{ - m_shared->setShadowQuality(quality); -} - -QDataVis::ShadowQuality DeclarativeSurface::shadowQuality() -{ - return m_shared->shadowQuality(); -} - void DeclarativeSurface::setGradient(const QLinearGradient &gradient) { m_shared->setGradient(gradient); @@ -235,59 +147,4 @@ QLinearGradient DeclarativeSurface::gradient() const return m_shared->gradient(); } -void DeclarativeSurface::setItemLabelFormat(const QString &format) -{ - m_shared->activeDataProxy()->setItemLabelFormat(format); -} - -QString DeclarativeSurface::itemLabelFormat() -{ - return m_shared->activeDataProxy()->itemLabelFormat(); -} - -void DeclarativeSurface::mouseDoubleClickEvent(QMouseEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->mouseDoubleClickEvent(event); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeSurface::touchEvent(QTouchEvent *event) -{ -#if defined(Q_OS_ANDROID) - m_shared->touchEvent(event); - update(); -#else - Q_UNUSED(event) -#endif -} - -void DeclarativeSurface::mousePressEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mousePressEvent(event, mousePos); -} - -void DeclarativeSurface::mouseReleaseEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseReleaseEvent(event, mousePos); -} - -void DeclarativeSurface::mouseMoveEvent(QMouseEvent *event) -{ - QPoint mousePos = event->pos(); - //mousePos.setY(height() - mousePos.y()); - m_shared->mouseMoveEvent(event, mousePos); -} - -void DeclarativeSurface::wheelEvent(QWheelEvent *event) -{ - m_shared->wheelEvent(event); -} - QT_DATAVISUALIZATION_END_NAMESPACE diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h index 21555fcc..29db1a44 100644 --- a/src/datavisualizationqml2/declarativesurface_p.h +++ b/src/datavisualizationqml2/declarativesurface_p.h @@ -30,6 +30,7 @@ #define DECLARATIVESURFACE_P_H #include "datavisualizationglobal_p.h" +#include "abstractdeclarative_p.h" #include "surface3dcontroller_p.h" #include "declarativesurface_p.h" #include "q3dvalueaxis.h" @@ -42,30 +43,16 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE -class DeclarativeSurface : public QQuickItem +class DeclarativeSurface : public AbstractDeclarative { Q_OBJECT Q_PROPERTY(QSurfaceDataProxy *dataProxy READ dataProxy WRITE setDataProxy) Q_PROPERTY(Q3DValueAxis *axisX READ axisX WRITE setAxisX) Q_PROPERTY(Q3DValueAxis *axisY READ axisY WRITE setAxisY) Q_PROPERTY(Q3DValueAxis *axisZ READ axisZ WRITE setAxisZ) - Q_PROPERTY(QtDataVisualization::QDataVis::SelectionMode selectionMode READ selectionMode WRITE setSelectionMode) - Q_PROPERTY(QtDataVisualization::QDataVis::LabelTransparency labelTransparency READ labelTransparency WRITE setLabelTransparency) - Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality) - Q_PROPERTY(QtDataVisualization::QDataVis::CameraPreset cameraPreset READ cameraPreset WRITE setCameraPreset) - Q_PROPERTY(QtDataVisualization::QDataVis::ColorTheme 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(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled) Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled) Q_PROPERTY(QLinearGradient gradient READ gradient WRITE setGradient) - Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat) - Q_ENUMS(QtDataVisualization::QDataVis::SelectionMode) - Q_ENUMS(QtDataVisualization::QDataVis::ShadowQuality) - Q_ENUMS(QtDataVisualization::QDataVis::LabelTransparency) - Q_ENUMS(QtDataVisualization::QDataVis::CameraPreset) - Q_ENUMS(QtDataVisualization::QDataVis::ColorTheme) public: explicit DeclarativeSurface(QQuickItem *parent = 0); @@ -83,62 +70,19 @@ public: Q3DValueAxis *axisZ() const; void setAxisZ(Q3DValueAxis *axis); - void setCameraPreset(QDataVis::CameraPreset preset); - QDataVis::CameraPreset cameraPreset(); - - void setTheme(QDataVis::ColorTheme theme); - QDataVis::ColorTheme theme(); - - void setSelectionMode(QDataVis::SelectionMode mode); - QDataVis::SelectionMode selectionMode(); - - void setFont(const QFont &font); - QFont font(); - - void setLabelTransparency(QDataVis::LabelTransparency transparency); - QDataVis::LabelTransparency labelTransparency(); - - void setGridVisible(bool visible); - bool isGridVisible(); - - void setBackgroundVisible(bool visible); - bool isBackgroundVisible(); - void setSmoothSurfaceEnabled(bool enabled); bool isSmoothSurfaceEnabled() const; void setSurfaceGridEnabled(bool enabled); bool isSurfaceGridEnabled() const; - void setShadowQuality(QDataVis::ShadowQuality quality); - QDataVis::ShadowQuality shadowQuality(); - void setGradient(const QLinearGradient &gradient); QLinearGradient gradient() const; - - void setItemLabelFormat(const QString &format); - QString itemLabelFormat(); - -signals: - // Signals shadow quality changes. - void shadowQualityChanged(QDataVis::ShadowQuality quality); - protected: - Surface3DController *m_shared; - - // Used to detect when shadow quality changes autonomously due to e.g. resizing. - void handleShadowQualityUpdate(QDataVis::ShadowQuality quality); - QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *); - void mouseDoubleClickEvent(QMouseEvent *event); - void touchEvent(QTouchEvent *event); - void mousePressEvent(QMouseEvent *event); - void mouseReleaseEvent(QMouseEvent *event); - void mouseMoveEvent(QMouseEvent *event); - void wheelEvent(QWheelEvent *event); - private: + Surface3DController *m_shared; QSize m_initialisedSize; }; -- cgit v1.2.3