diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-12-13 16:33:42 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-12-13 15:40:52 +0000 |
commit | e9d439233c16d8de236df06b30486dc9b0f21730 (patch) | |
tree | 5ed15aaebe443c9b75916575a184c6950ae53188 | |
parent | e108810731b2c15822d5de039e9a2bbc7b836d88 (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>
-rw-r--r-- | src/qmlandroid/view/qqmlandroidview.cpp | 180 | ||||
-rw-r--r-- | src/qmlandroid/view/qqmlandroidview_p.h | 61 |
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 |