diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-09-18 13:49:23 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-09-19 09:14:13 +0300 |
commit | 98e0c04fe78da9735c2943524bd36648b2654f98 (patch) | |
tree | 3c711ff622e0fb43b358982fb815065e12d49af0 /src/datavisualization/engine | |
parent | 0c11550bed204807b8b366fd07862a5da9cd2251 (diff) |
Added possibility to change graph's locale
Locale affects how axis labels are formatted. Default locale is still
the "C".
Task-number: QTRD-3229
Change-Id: I6126ce676906f4bbc91ae0abd18775bc1d564118
Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
5 files changed, 62 insertions, 0 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index feb028cc..e2f8c1ad 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -42,6 +42,7 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen m_optimizationHints(QAbstract3DGraph::OptimizationDefault), m_reflectionEnabled(false), m_reflectivity(0.5), + m_locale(QLocale::c()), m_scene(scene), m_activeInputHandler(0), m_axisX(0), @@ -1415,6 +1416,8 @@ void Abstract3DController::setAxisHelper(QAbstract3DAxis::AxisOrientation orient handleAxisLabelFormatChangedBySender(valueAxis); handleAxisReversedChangedBySender(valueAxis); handleAxisFormatterDirtyBySender(valueAxis->dptr()); + + valueAxis->formatter()->setLocale(m_locale); } } @@ -1632,4 +1635,28 @@ float Abstract3DController::radialLabelOffset() const return m_radialLabelOffset; } +void Abstract3DController::setLocale(const QLocale &locale) +{ + if (m_locale != locale) { + m_locale = locale; + + // Value axis formatters need to be updated + QValue3DAxis *axis = qobject_cast<QValue3DAxis *>(m_axisX); + if (axis) + axis->formatter()->setLocale(m_locale); + axis = qobject_cast<QValue3DAxis *>(m_axisY); + if (axis) + axis->formatter()->setLocale(m_locale); + axis = qobject_cast<QValue3DAxis *>(m_axisZ); + if (axis) + axis->formatter()->setLocale(m_locale); + emit localeChanged(m_locale); + } +} + +QLocale Abstract3DController::locale() const +{ + return m_locale; +} + QT_END_NAMESPACE_DATAVISUALIZATION diff --git a/src/datavisualization/engine/abstract3dcontroller_p.h b/src/datavisualization/engine/abstract3dcontroller_p.h index 3397fc62..03061a13 100644 --- a/src/datavisualization/engine/abstract3dcontroller_p.h +++ b/src/datavisualization/engine/abstract3dcontroller_p.h @@ -38,6 +38,7 @@ #include "qcustom3ditem.h" #include <QtGui/QLinearGradient> #include <QtCore/QTime> +#include <QtCore/QLocale> class QOpenGLFramebufferObject; @@ -171,6 +172,7 @@ private: QAbstract3DGraph::OptimizationHints m_optimizationHints; bool m_reflectionEnabled; qreal m_reflectivity; + QLocale m_locale; protected: Q3DScene *m_scene; @@ -297,6 +299,9 @@ public: void setRadialLabelOffset(float offset); float radialLabelOffset() const; + void setLocale(const QLocale &locale); + QLocale locale() const; + void emitNeedRender(); virtual void clearSelection() = 0; @@ -378,6 +383,7 @@ signals: void radialLabelOffsetChanged(float offset); void reflectionChanged(bool enabled); void reflectivityChanged(qreal reflectivity); + void localeChanged(const QLocale &locale); protected: virtual QAbstract3DAxis *createDefaultAxis(QAbstract3DAxis::AxisOrientation orientation); diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h index b31cfbd3..2072314b 100644 --- a/src/datavisualization/engine/abstract3drenderer_p.h +++ b/src/datavisualization/engine/abstract3drenderer_p.h @@ -287,6 +287,8 @@ protected: bool m_reflectionEnabled; qreal m_reflectivity; + QLocale m_locale; + private: friend class Abstract3DController; }; diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp index d906666c..8ced09fe 100644 --- a/src/datavisualization/engine/qabstract3dgraph.cpp +++ b/src/datavisualization/engine/qabstract3dgraph.cpp @@ -767,6 +767,25 @@ qreal QAbstract3DGraph::reflectivity() const } /*! + * \property QAbstract3DGraph::locale + * \since QtDataVisualization 1.2 + * + * Sets the locale used for formatting various numeric labels. + * Defaults to \c{"C"} locale. + * + * \sa QValue3DAxis::labelFormat + */ +void QAbstract3DGraph::setLocale(const QLocale &locale) +{ + d_ptr->m_visualController->setLocale(locale); +} + +QLocale QAbstract3DGraph::locale() const +{ + return d_ptr->m_visualController->locale(); +} + +/*! * \internal */ bool QAbstract3DGraph::event(QEvent *event) @@ -927,6 +946,8 @@ void QAbstract3DGraphPrivate::setVisualController(Abstract3DController *controll &QAbstract3DGraph::reflectionChanged); QObject::connect(m_visualController, &Abstract3DController::reflectivityChanged, q_ptr, &QAbstract3DGraph::reflectivityChanged); + QObject::connect(m_visualController, &Abstract3DController::localeChanged, q_ptr, + &QAbstract3DGraph::localeChanged); } void QAbstract3DGraphPrivate::handleDevicePixelRatioChange() diff --git a/src/datavisualization/engine/qabstract3dgraph.h b/src/datavisualization/engine/qabstract3dgraph.h index e19a3e8e..2d76f780 100644 --- a/src/datavisualization/engine/qabstract3dgraph.h +++ b/src/datavisualization/engine/qabstract3dgraph.h @@ -25,6 +25,7 @@ #include <QtDataVisualization/qabstract3dinputhandler.h> #include <QtGui/QWindow> #include <QtGui/QOpenGLFunctions> +#include <QtCore/QLocale> QT_BEGIN_NAMESPACE_DATAVISUALIZATION @@ -55,6 +56,7 @@ class QT_DATAVISUALIZATION_EXPORT QAbstract3DGraph : public QWindow, protected Q Q_PROPERTY(qreal horizontalAspectRatio READ horizontalAspectRatio WRITE setHorizontalAspectRatio NOTIFY horizontalAspectRatioChanged) Q_PROPERTY(bool reflection READ isReflection WRITE setReflection NOTIFY reflectionChanged) Q_PROPERTY(qreal reflectivity READ reflectivity WRITE setReflectivity NOTIFY reflectivityChanged) + Q_PROPERTY(QLocale locale READ locale WRITE setLocale NOTIFY localeChanged) protected: explicit QAbstract3DGraph(QAbstract3DGraphPrivate *d, const QSurfaceFormat *format, @@ -170,6 +172,9 @@ public: void setReflectivity(qreal reflectivity); qreal reflectivity() const; + void setLocale(const QLocale &locale); + QLocale locale() const; + protected: bool event(QEvent *event); void resizeEvent(QResizeEvent *event); @@ -198,6 +203,7 @@ signals: void horizontalAspectRatioChanged(qreal ratio); void reflectionChanged(bool enabled); void reflectivityChanged(qreal reflectivity); + void localeChanged(const QLocale &locale); private: Q_DISABLE_COPY(QAbstract3DGraph) |