From b8eccc67a2c17b6c6f205adcb5e4193014cb5b08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Tinkl?= Date: Wed, 27 Sep 2023 12:55:52 +0200 Subject: [PATCH] feat: expose `animating` property to find out whether the pages in the stack are currently being animated --- .../src/StatusQ/Core/StatusAnimatedStack.qml | 14 +++++++++++--- ui/StatusQ/src/StatusQ/Popups/StatusStackModal.qml | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ui/StatusQ/src/StatusQ/Core/StatusAnimatedStack.qml b/ui/StatusQ/src/StatusQ/Core/StatusAnimatedStack.qml index ba86e22cc4..3809a03f2d 100644 --- a/ui/StatusQ/src/StatusQ/Core/StatusAnimatedStack.qml +++ b/ui/StatusQ/src/StatusQ/Core/StatusAnimatedStack.qml @@ -11,6 +11,7 @@ StackLayout { readonly property var previousItem: items[previousIndex] readonly property var currentItem: items[currentIndex] + readonly property bool animating: !!d.crossFaderAnim && d.crossFaderAnim.running clip: true @@ -22,6 +23,11 @@ StackLayout { } } + QtObject { + id: d + property var crossFaderAnim + } + Component { id: crossFader @@ -68,13 +74,15 @@ StackLayout { if (previousItem && currentItem && (previousItem != currentItem)) { previousItem.visible = true; currentItem.visible = true; - var crossFaderAnim = crossFader.createObject(parent, + if (!!d.crossFaderAnim) + d.crossFaderAnim.destroy() + d.crossFaderAnim = crossFader.createObject(parent, { fadeOutTarget: previousItem, fadeInTarget: currentItem }); - crossFaderAnim.restart(); + d.crossFaderAnim.restart(); } previousIndex = currentIndex; } -} \ No newline at end of file +} diff --git a/ui/StatusQ/src/StatusQ/Popups/StatusStackModal.qml b/ui/StatusQ/src/StatusQ/Popups/StatusStackModal.qml index 54e86da564..8a67a8b624 100644 --- a/ui/StatusQ/src/StatusQ/Popups/StatusStackModal.qml +++ b/ui/StatusQ/src/StatusQ/Popups/StatusStackModal.qml @@ -18,6 +18,7 @@ StatusModal { readonly property int itemsCount: stackLayout.count readonly property var currentItem: stackLayout.currentItem + readonly property alias animating: stackLayout.animating property Item backButton: StatusBackButton { visible: replaceItem || stackLayout.currentIndex > 0