summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-12-13 16:33:42 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2016-12-13 15:40:52 +0000
commite9d439233c16d8de236df06b30486dc9b0f21730 (patch)
tree5ed15aaebe443c9b75916575a184c6950ae53188 /src
parente108810731b2c15822d5de039e9a2bbc7b836d88 (diff)
View: add support for transformations
- scaleX, scaleY - pivotX, pivotY - rotation, rotationX, rotationY - translationX, translationY, translationZ Change-Id: I96f0ab64806eb2a1b590019c0fab892e3e2bd7d8 Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qmlandroid/view/qqmlandroidview.cpp180
-rw-r--r--src/qmlandroid/view/qqmlandroidview_p.h61
2 files changed, 241 insertions, 0 deletions
diff --git a/src/qmlandroid/view/qqmlandroidview.cpp b/src/qmlandroid/view/qqmlandroidview.cpp
index f846dca..237d3e6 100644
--- a/src/qmlandroid/view/qqmlandroidview.cpp
+++ b/src/qmlandroid/view/qqmlandroidview.cpp
@@ -425,6 +425,166 @@ void QQmlAndroidView::setPaddingBottom(int padding)
}
}
+qreal QQmlAndroidView::scaleX() const
+{
+ if (!m_scaleX.isNull())
+ return m_scaleX;
+ return 0;
+}
+
+void QQmlAndroidView::setScaleX(qreal scaleX)
+{
+ if (m_scaleX.isNull() || m_scaleX != scaleX) {
+ m_scaleX = scaleX;
+ QtQmlAndroid::callRealMethod(instance(), "setScaleX", scaleX);
+ emit scaleXChanged();
+ }
+}
+
+qreal QQmlAndroidView::scaleY() const
+{
+ if (!m_scaleY.isNull())
+ return m_scaleY;
+ return 0;
+}
+
+void QQmlAndroidView::setScaleY(qreal scaleY)
+{
+ if (m_scaleY.isNull() || m_scaleY != scaleY) {
+ m_scaleY = scaleY;
+ QtQmlAndroid::callRealMethod(instance(), "setScaleY", scaleY);
+ emit scaleYChanged();
+ }
+}
+
+qreal QQmlAndroidView::pivotX() const
+{
+ if (!m_pivotX.isNull())
+ return m_pivotX;
+ return 0;
+}
+
+void QQmlAndroidView::setPivotX(qreal pivotX)
+{
+ if (m_pivotX.isNull() || m_pivotX != pivotX) {
+ m_pivotX = pivotX;
+ QtQmlAndroid::callRealMethod(instance(), "setPivotX", pivotX);
+ emit pivotXChanged();
+ }
+}
+
+qreal QQmlAndroidView::pivotY() const
+{
+ if (!m_pivotY.isNull())
+ return m_pivotY;
+ return 0;
+}
+
+void QQmlAndroidView::setPivotY(qreal pivotY)
+{
+ if (m_pivotY.isNull() || m_pivotY != pivotY) {
+ m_pivotY = pivotY;
+ QtQmlAndroid::callRealMethod(instance(), "setPivotY", pivotY);
+ emit pivotYChanged();
+ }
+}
+
+qreal QQmlAndroidView::rotation() const
+{
+ if (!m_rotation.isNull())
+ return m_rotation;
+ return 0;
+}
+
+void QQmlAndroidView::setRotation(qreal rotation)
+{
+ if (m_rotation.isNull() || m_rotation != rotation) {
+ m_rotation = rotation;
+ QtQmlAndroid::callRealMethod(instance(), "setRotation", rotation);
+ emit rotationChanged();
+ }
+}
+
+qreal QQmlAndroidView::rotationX() const
+{
+ if (!m_rotationX.isNull())
+ return m_rotationX;
+ return 0;
+}
+
+void QQmlAndroidView::setRotationX(qreal rotationX)
+{
+ if (m_rotationX.isNull() || m_rotationX != rotationX) {
+ m_rotationX = rotationX;
+ QtQmlAndroid::callRealMethod(instance(), "setRotationX", rotationX);
+ emit rotationXChanged();
+ }
+}
+
+qreal QQmlAndroidView::rotationY() const
+{
+ if (!m_rotationY.isNull())
+ return m_rotationY;
+ return 0;
+}
+
+void QQmlAndroidView::setRotationY(qreal rotationY)
+{
+ if (m_rotationY.isNull() || m_rotationY != rotationY) {
+ m_rotationY = rotationY;
+ QtQmlAndroid::callRealMethod(instance(), "setRotationY", rotationY);
+ emit rotationYChanged();
+ }
+}
+
+qreal QQmlAndroidView::translationX() const
+{
+ if (!m_translationX.isNull())
+ return m_translationX;
+ return 0;
+}
+
+void QQmlAndroidView::setTranslationX(qreal translationX)
+{
+ if (m_translationX.isNull() || m_translationX != translationX) {
+ m_translationX = translationX;
+ QtQmlAndroid::callRealMethod(instance(), "setTranslationX", translationX);
+ emit translationXChanged();
+ }
+}
+
+qreal QQmlAndroidView::translationY() const
+{
+ if (!m_translationY.isNull())
+ return m_translationY;
+ return 0;
+}
+
+void QQmlAndroidView::setTranslationY(qreal translationY)
+{
+ if (m_translationY.isNull() || m_translationY != translationY) {
+ m_translationY = translationY;
+ QtQmlAndroid::callRealMethod(instance(), "setTranslationY", translationY);
+ emit translationYChanged();
+ }
+}
+
+qreal QQmlAndroidView::translationZ() const
+{
+ if (!m_translationZ.isNull())
+ return m_translationZ;
+ return 0;
+}
+
+void QQmlAndroidView::setTranslationZ(qreal translationZ)
+{
+ if (m_translationZ.isNull() || m_translationZ != translationZ) {
+ m_translationZ = translationZ;
+ QtQmlAndroid::callRealMethod(instance(), "setTranslationZ", translationZ);
+ emit translationZChanged();
+ }
+}
+
void QQmlAndroidView::viewChange(ViewChange change, const ViewChangeData &data)
{
switch (change) {
@@ -522,6 +682,26 @@ void QQmlAndroidView::onInflate(QAndroidJniObject &instance)
instance.callMethod<void>("setRight", "(I)V", m_right);
if (!m_bottom.isNull())
instance.callMethod<void>("setBottom", "(I)V", m_bottom);
+ if (!m_scaleX.isNull())
+ instance.callMethod<void>("setScaleX", "(F)V", m_scaleX);
+ if (!m_scaleY.isNull())
+ instance.callMethod<void>("setScaleY", "(F)V", m_scaleY);
+ if (!m_pivotX.isNull())
+ instance.callMethod<void>("setPivotX", "(F)V", m_pivotX);
+ if (!m_pivotY.isNull())
+ instance.callMethod<void>("setPivotY", "(F)V", m_pivotY);
+ if (!m_rotation.isNull())
+ instance.callMethod<void>("setRotation", "(F)V", m_rotation);
+ if (!m_rotationX.isNull())
+ instance.callMethod<void>("setRotationX", "(F)V", m_rotationX);
+ if (!m_rotationY.isNull())
+ instance.callMethod<void>("setRotationY", "(F)V", m_rotationY);
+ if (!m_translationX.isNull())
+ instance.callMethod<void>("setTranslationX", "(F)V", m_translationX);
+ if (!m_translationY.isNull())
+ instance.callMethod<void>("setTranslationY", "(F)V", m_translationY);
+ if (!m_translationZ.isNull())
+ instance.callMethod<void>("setTranslationZ", "(F)V", m_translationZ);
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 3de61c7..566dc56 100644
--- a/src/qmlandroid/view/qqmlandroidview_p.h
+++ b/src/qmlandroid/view/qqmlandroidview_p.h
@@ -88,6 +88,17 @@ class Q_QMLANDROID_EXPORT QQmlAndroidView : public QQmlAndroidContextual
Q_PROPERTY(int paddingRight READ paddingRight WRITE setPaddingRight NOTIFY paddingRightChanged)
Q_PROPERTY(int paddingBottom READ paddingBottom WRITE setPaddingBottom NOTIFY paddingBottomChanged)
+ Q_PROPERTY(qreal scaleX READ scaleX WRITE setScaleX NOTIFY scaleXChanged)
+ Q_PROPERTY(qreal scaleY READ scaleY WRITE setScaleY NOTIFY scaleYChanged)
+ Q_PROPERTY(qreal pivotX READ pivotX WRITE setPivotX NOTIFY pivotXChanged)
+ Q_PROPERTY(qreal pivotY READ pivotY WRITE setPivotY NOTIFY pivotYChanged)
+ Q_PROPERTY(qreal rotation READ rotation WRITE setRotation NOTIFY rotationChanged)
+ Q_PROPERTY(qreal rotationX READ rotationX WRITE setRotationX NOTIFY rotationXChanged)
+ Q_PROPERTY(qreal rotationY READ rotationY WRITE setRotationY NOTIFY rotationYChanged)
+ Q_PROPERTY(qreal translationX READ translationX WRITE setTranslationX NOTIFY translationXChanged)
+ Q_PROPERTY(qreal translationY READ translationY WRITE setTranslationY NOTIFY translationYChanged)
+ Q_PROPERTY(qreal translationZ READ translationZ WRITE setTranslationZ NOTIFY translationZChanged)
+
public:
explicit QQmlAndroidView(QQmlAndroidView *parent = 0);
~QQmlAndroidView();
@@ -157,6 +168,36 @@ public:
int paddingBottom() const;
void setPaddingBottom(int padding);
+ qreal scaleX() const;
+ void setScaleX(qreal scaleX);
+
+ qreal scaleY() const;
+ void setScaleY(qreal scaleY);
+
+ qreal pivotX() const;
+ void setPivotX(qreal pivotX);
+
+ qreal pivotY() const;
+ void setPivotY(qreal pivotY);
+
+ qreal rotation() const;
+ void setRotation(qreal rotation);
+
+ qreal rotationX() const;
+ void setRotationX(qreal rotationY);
+
+ qreal rotationY() const;
+ void setRotationY(qreal rotationY);
+
+ qreal translationX() const;
+ void setTranslationX(qreal translationY);
+
+ qreal translationY() const;
+ void setTranslationY(qreal translationY);
+
+ qreal translationZ() const;
+ void setTranslationZ(qreal translationZ);
+
void requestPolish();
enum ViewChange {
@@ -199,6 +240,16 @@ Q_SIGNALS:
void paddingLeftChanged();
void paddingRightChanged();
void paddingBottomChanged();
+ void scaleXChanged();
+ void scaleYChanged();
+ void pivotXChanged();
+ void pivotYChanged();
+ void rotationChanged();
+ void rotationXChanged();
+ void rotationYChanged();
+ void translationXChanged();
+ void translationYChanged();
+ void translationZChanged();
void longClick(); // TODO: accept
protected:
@@ -257,6 +308,16 @@ private:
QQmlAndroidOptional<int> m_paddingLeft;
QQmlAndroidOptional<int> m_paddingRight;
QQmlAndroidOptional<int> m_paddingBottom;
+ QQmlAndroidOptional<qreal> m_scaleX;
+ QQmlAndroidOptional<qreal> m_scaleY;
+ QQmlAndroidOptional<qreal> m_pivotX;
+ QQmlAndroidOptional<qreal> m_pivotY;
+ QQmlAndroidOptional<qreal> m_rotation;
+ QQmlAndroidOptional<qreal> m_rotationX;
+ QQmlAndroidOptional<qreal> m_rotationY;
+ QQmlAndroidOptional<qreal> m_translationX;
+ QQmlAndroidOptional<qreal> m_translationY;
+ QQmlAndroidOptional<qreal> m_translationZ;
};
QT_END_NAMESPACE