From: Samuel Rødal Date: Fri, 18 Mar 2011 13:48:34 +0000 (+0100) Subject: Added animation to QML compositor when window is destroyed. X-Git-Tag: qt-v5.0.0-alpha1~345 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c003c6b6a7772b82ab1877ec2c07ee09e91004dc;p=profile%2Fivi%2Fqtwayland.git Added animation to QML compositor when window is destroyed. --- diff --git a/examples/qml-compositor/main.cpp b/examples/qml-compositor/main.cpp index d6bb3b7..b09444b 100644 --- a/examples/qml-compositor/main.cpp +++ b/examples/qml-compositor/main.cpp @@ -274,6 +274,11 @@ signals: void windowAdded(QVariant window); void windowDestroyed(QVariant window); +public slots: + void destroyWindow(QVariant window) { + qvariant_cast(window)->deleteLater(); + } + private slots: void surfaceMapped(const QRect &rect) { WaylandSurface *surface = qobject_cast(sender()); @@ -292,7 +297,6 @@ private slots: void surfaceDestroyed(QObject *object) { WindowItem *item = m_windowMap.take(object); emit windowDestroyed(QVariant::fromValue(static_cast(item))); - item->deleteLater(); setInputFocus(0); } diff --git a/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml b/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml index 0bbf45c..9182f25 100644 --- a/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml +++ b/examples/qml-compositor/qml/QmlCompositor/WindowContainer.qml @@ -47,8 +47,8 @@ Item { y: 0; opacity: 0 - property variant chrome: null; property variant child: null; + property variant chrome: null; property bool animationsEnabled: false; property int index; @@ -85,4 +85,18 @@ Item { NumberAnimation { easing.type: Easing.Linear; duration: 200; } } } + + transform: Scale { id: scaleTransform; origin.x: container.width / 2; origin.y: container.height / 2; xScale: 1; yScale: 1 } + + SequentialAnimation { + id: destroyAnimation + NumberAnimation { target: scaleTransform; property: "yScale"; easing.type: Easing.Linear; to: 0.01; duration: 200; } + NumberAnimation { target: scaleTransform; property: "xScale"; easing.type: Easing.Linear; to: 0.01; duration: 150; } + NumberAnimation { target: container; property: "opacity"; easing.type: Easing.Linear; to: 0.0; duration: 150; } + ScriptAction { script: container.parent.removeWindow(child); } + } + + function runDestroyAnimation() { + destroyAnimation.start(); + } } diff --git a/examples/qml-compositor/qml/QmlCompositor/main.qml b/examples/qml-compositor/qml/QmlCompositor/main.qml index 0681f73..8024a6e 100644 --- a/examples/qml-compositor/qml/QmlCompositor/main.qml +++ b/examples/qml-compositor/qml/QmlCompositor/main.qml @@ -76,9 +76,15 @@ Item { } function windowDestroyed(window) { - CompositorLogic.removeWindow(window.parent); var windowContainer = window.parent; + windowContainer.runDestroyAnimation(); + } + + function removeWindow(window) { + var windowContainer = window.parent; + CompositorLogic.removeWindow(windowContainer); windowContainer.chrome.destroy(); windowContainer.destroy(); + compositor.destroyWindow(window); } }