summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-12-13 16:49:59 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2016-12-13 16:16:50 +0000
commit3d1e80d077f0ba1c1894b9425fe35f4f8fdeb018 (patch)
treeebe1ff8a3dad2118d36287b18cc8c010f0cc67f0
parente9d439233c16d8de236df06b30486dc9b0f21730 (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.cpp30
-rw-r--r--src/qmlandroid/view/qqmlandroidview_p.h11
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