From f475b043a1c784afa6b2453848d19871a566c4ff Mon Sep 17 00:00:00 2001 From: Tsic Liu Date: Tue, 6 Aug 2024 16:27:08 +0800 Subject: [PATCH] feat: adjust tray collapse animation log: as title --- .../package/ActionToggleCollapseDelegate.qml | 22 ++++++++++++++++++- panels/dock/tray/package/TrayContainer.qml | 4 ++-- .../dock/tray/package/TrayItemPositioner.qml | 12 +++++----- panels/dock/tray/traysortordermodel.cpp | 5 +++-- 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/panels/dock/tray/package/ActionToggleCollapseDelegate.qml b/panels/dock/tray/package/ActionToggleCollapseDelegate.qml index 3061bba6e..2cf560de5 100644 --- a/panels/dock/tray/package/ActionToggleCollapseDelegate.qml +++ b/panels/dock/tray/package/ActionToggleCollapseDelegate.qml @@ -16,7 +16,7 @@ AppletItemButton { z: 5 - icon.name: isHorizontal ? (collapsed ? "expand-left" : "expand-right") : (collapsed ? "expand-up" : "expand-down") + icon.name: isHorizontal ? "expand-right" : "expand-up" padding: itemPadding @@ -25,6 +25,26 @@ AppletItemButton { toolTip.close() } + states: [ + State { + name: "opened" + when: !collapsed + PropertyChanges { target: root.contentItem; rotation: 180 } + }, + + State { + name: "closed" + when: collapsed + PropertyChanges { target: root.contentItem; rotation: 0 } + } + ] + + transitions: [ + Transition { + RotationAnimation { duration: 200; } + } + ] + PanelToolTip { id: toolTip text: qsTr("Collapse tray") diff --git a/panels/dock/tray/package/TrayContainer.qml b/panels/dock/tray/package/TrayContainer.qml index 2ff4a51a2..97880da2a 100644 --- a/panels/dock/tray/package/TrayContainer.qml +++ b/panels/dock/tray/package/TrayContainer.qml @@ -95,11 +95,11 @@ Item { height: containerSize.height Behavior on width { - NumberAnimation { duration: 200; easing.type: Easing.OutQuad } + NumberAnimation { duration: 200; easing.type: collapsed ? Easing.OutQuad : Easing.InQuad } } Behavior on height { - NumberAnimation { duration: 200; easing.type: Easing.OutQuad } + NumberAnimation { duration: 200; easing.type: collapsed ? Easing.OutQuad : Easing.InQuad } } // Delegates diff --git a/panels/dock/tray/package/TrayItemPositioner.qml b/panels/dock/tray/package/TrayItemPositioner.qml index ab8c7f636..77bc361de 100644 --- a/panels/dock/tray/package/TrayItemPositioner.qml +++ b/panels/dock/tray/package/TrayItemPositioner.qml @@ -26,33 +26,35 @@ Control { x: visualPosition.x y: visualPosition.y Behavior on x { - NumberAnimation { duration: 200; easing.type: Easing.OutQuad } + NumberAnimation { duration: 200; easing.type: collapsed ? Easing.OutQuad : Easing.InQuad } } Behavior on y { - NumberAnimation { duration: 200; easing.type: Easing.OutQuad } + NumberAnimation { duration: 200; easing.type: collapsed ? Easing.OutQuad : Easing.InQuad } } states: [ State { when: root.itemVisible PropertyChanges { target: root; opacity: 1.0 } + PropertyChanges { target: root; scale: 1.0 } PropertyChanges { target: root; visible: true } }, State { name: "item-invisible" when: !root.itemVisible - PropertyChanges { target: root; opacity: 0.0 } + PropertyChanges { target: root; opacity: 0 } + PropertyChanges { target: root; scale: 0.2 } } ] transitions: [ Transition { to: "item-invisible" SequentialAnimation { - NumberAnimation { property: "opacity"; easing.type: Easing.InQuad; duration: 200 } + NumberAnimation { properties: "opacity,scale"; easing.type: Easing.OutQuad; duration: 200 } PropertyAction { target: root; property: "visible"; value: false } } }, Transition { - NumberAnimation { property: "opacity"; easing.type: Easing.OutQuad; duration: 200 } + NumberAnimation { properties: "opacity,scale"; easing.type: Easing.InQuad; duration: 200 } } ] } diff --git a/panels/dock/tray/traysortordermodel.cpp b/panels/dock/tray/traysortordermodel.cpp index 6f567b3f7..98543d604 100644 --- a/panels/dock/tray/traysortordermodel.cpp +++ b/panels/dock/tray/traysortordermodel.cpp @@ -363,9 +363,10 @@ void TraySortOrderModel::updateVisualIndexes() results[0]->setData(-1, TraySortOrderModel::VisualIndexRole); if (itemVisible) { toogleCollapseActionVisible = true; - results[0]->setData(currentVisualIndex, TraySortOrderModel::VisualIndexRole); if (!m_collapsed) { - currentVisualIndex++; + results[0]->setData(currentVisualIndex++, TraySortOrderModel::VisualIndexRole); + } else { + results[0]->setData(currentVisualIndex-1, TraySortOrderModel::VisualIndexRole); } } }