diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-12-13 16:49:59 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-12-13 16:16:50 +0000 |
commit | 3d1e80d077f0ba1c1894b9425fe35f4f8fdeb018 (patch) | |
tree | ebe1ff8a3dad2118d36287b18cc8c010f0cc67f0 | |
parent | e9d439233c16d8de236df06b30486dc9b0f21730 (diff) |
Add View::z and View::elevation
Change-Id: I3e0c7fe9a45cd2a35353060997a4288bb04bf443
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
-rw-r--r-- | src/qmlandroid/view/qqmlandroidview.cpp | 30 | ||||
-rw-r--r-- | src/qmlandroid/view/qqmlandroidview_p.h | 11 |
2 files changed, 41 insertions, 0 deletions
diff --git a/src/qmlandroid/view/qqmlandroidview.cpp b/src/qmlandroid/view/qqmlandroidview.cpp index 237d3e6..3455395 100644 --- a/src/qmlandroid/view/qqmlandroidview.cpp +++ b/src/qmlandroid/view/qqmlandroidview.cpp @@ -242,6 +242,16 @@ qreal QQmlAndroidView::y() const return top(); // TODO: + translationY } +qreal QQmlAndroidView::z() const +{ + return elevation() + translationZ(); +} + +void QQmlAndroidView::setZ(qreal z) +{ + setTranslationZ(z - elevation()); +} + int QQmlAndroidView::top() const { if (m_top.isNull()) @@ -582,6 +592,24 @@ void QQmlAndroidView::setTranslationZ(qreal translationZ) m_translationZ = translationZ; QtQmlAndroid::callRealMethod(instance(), "setTranslationZ", translationZ); emit translationZChanged(); + emit zChanged(); + } +} + +qreal QQmlAndroidView::elevation() const +{ + if (!m_elevation.isNull()) + return m_elevation; + return 0; +} + +void QQmlAndroidView::setElevation(qreal elevation) +{ + if (m_elevation.isNull() || m_elevation != elevation) { + m_elevation = elevation; + QtQmlAndroid::callRealMethod(instance(), "setElevation", elevation); + emit elevationChanged(); + emit zChanged(); } } @@ -702,6 +730,8 @@ void QQmlAndroidView::onInflate(QAndroidJniObject &instance) instance.callMethod<void>("setTranslationY", "(F)V", m_translationY); if (!m_translationZ.isNull()) instance.callMethod<void>("setTranslationZ", "(F)V", m_translationZ); + if (!m_elevation.isNull()) + instance.callMethod<void>("setElevation", "(F)V", m_elevation); if (m_backgroundResource != 0) { QAndroidJniObject background = ctx().callObjectMethod("getDrawable", "(I)Landroid/graphics/drawable/Drawable;", m_backgroundResource); diff --git a/src/qmlandroid/view/qqmlandroidview_p.h b/src/qmlandroid/view/qqmlandroidview_p.h index 566dc56..15a0d18 100644 --- a/src/qmlandroid/view/qqmlandroidview_p.h +++ b/src/qmlandroid/view/qqmlandroidview_p.h @@ -75,6 +75,8 @@ class Q_QMLANDROID_EXPORT QQmlAndroidView : public QQmlAndroidContextual Q_PROPERTY(qreal x READ x NOTIFY xChanged) Q_PROPERTY(qreal y READ y NOTIFY yChanged) + Q_PROPERTY(qreal z READ z WRITE setZ NOTIFY zChanged) + Q_PROPERTY(int top READ top WRITE setTop NOTIFY topChanged) Q_PROPERTY(int left READ left WRITE setLeft NOTIFY leftChanged) Q_PROPERTY(int right READ right WRITE setRight NOTIFY rightChanged) @@ -135,6 +137,9 @@ public: qreal x() const; qreal y() const; + qreal z() const; + void setZ(qreal z); + int top() const; void setTop(int top); @@ -198,6 +203,9 @@ public: qreal translationZ() const; void setTranslationZ(qreal translationZ); + qreal elevation() const; + void setElevation(qreal elevation); + void requestPolish(); enum ViewChange { @@ -229,6 +237,7 @@ Q_SIGNALS: void click(); void xChanged(); void yChanged(); + void zChanged(); void topChanged(); void leftChanged(); void rightChanged(); @@ -250,6 +259,7 @@ Q_SIGNALS: void translationXChanged(); void translationYChanged(); void translationZChanged(); + void elevationChanged(); void longClick(); // TODO: accept protected: @@ -318,6 +328,7 @@ private: QQmlAndroidOptional<qreal> m_translationX; QQmlAndroidOptional<qreal> m_translationY; QQmlAndroidOptional<qreal> m_translationZ; + QQmlAndroidOptional<qreal> m_elevation; }; QT_END_NAMESPACE |