mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-04-13 17:22:08 -04:00
notification: expand/collapse animation adjustment
This commit is contained in:
@@ -799,12 +799,12 @@ Singleton {
|
|||||||
|
|
||||||
readonly property int notificationExpandDuration: {
|
readonly property int notificationExpandDuration: {
|
||||||
const base = notificationAnimationBaseDuration;
|
const base = notificationAnimationBaseDuration;
|
||||||
return base === 0 ? 0 : Math.round(base * 1.4);
|
return base === 0 ? 0 : Math.round(base * 1.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly property int notificationCollapseDuration: {
|
readonly property int notificationCollapseDuration: {
|
||||||
const base = notificationAnimationBaseDuration;
|
const base = notificationAnimationBaseDuration;
|
||||||
return base === 0 ? 0 : Math.round(base * 1.1);
|
return base === 0 ? 0 : Math.round(base * 0.85);
|
||||||
}
|
}
|
||||||
|
|
||||||
readonly property int popoutAnimationDuration: {
|
readonly property int popoutAnimationDuration: {
|
||||||
|
|||||||
@@ -11,16 +11,38 @@ DankListView {
|
|||||||
property bool autoScrollDisabled: false
|
property bool autoScrollDisabled: false
|
||||||
property bool isAnimatingExpansion: false
|
property bool isAnimatingExpansion: false
|
||||||
property alias listContentHeight: listView.contentHeight
|
property alias listContentHeight: listView.contentHeight
|
||||||
|
property real stableContentHeight: 0
|
||||||
property bool cardAnimateExpansion: true
|
property bool cardAnimateExpansion: true
|
||||||
property bool listInitialized: false
|
property bool listInitialized: false
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
Qt.callLater(() => {
|
Qt.callLater(() => {
|
||||||
if (listView)
|
if (listView) {
|
||||||
listView.listInitialized = true;
|
listView.listInitialized = true;
|
||||||
|
listView.stableContentHeight = listView.contentHeight;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onContentHeightChanged: {
|
||||||
|
if (!isAnimatingExpansion)
|
||||||
|
stableContentHeight = contentHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
onIsAnimatingExpansionChanged: {
|
||||||
|
if (isAnimatingExpansion) {
|
||||||
|
let delta = 0;
|
||||||
|
for (let i = 0; i < count; i++) {
|
||||||
|
const item = itemAtIndex(i);
|
||||||
|
if (item && item.children[0] && item.children[0].isAnimating)
|
||||||
|
delta += item.children[0].targetHeight - item.height;
|
||||||
|
}
|
||||||
|
stableContentHeight = contentHeight + delta;
|
||||||
|
} else {
|
||||||
|
stableContentHeight = contentHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
clip: true
|
clip: true
|
||||||
model: NotificationService.groupedNotifications
|
model: NotificationService.groupedNotifications
|
||||||
spacing: Theme.spacingL
|
spacing: Theme.spacingL
|
||||||
|
|||||||
@@ -735,7 +735,7 @@ Rectangle {
|
|||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: root.expanded ? Theme.notificationExpandDuration : Theme.notificationCollapseDuration
|
duration: root.expanded ? Theme.notificationExpandDuration : Theme.notificationCollapseDuration
|
||||||
easing.type: Easing.BezierSpline
|
easing.type: Easing.BezierSpline
|
||||||
easing.bezierCurve: root.expanded ? Theme.expressiveCurves.emphasizedDecel : Theme.expressiveCurves.emphasizedAccel
|
easing.bezierCurve: Theme.expressiveCurves.emphasized
|
||||||
onRunningChanged: {
|
onRunningChanged: {
|
||||||
if (running) {
|
if (running) {
|
||||||
root.isAnimating = true;
|
root.isAnimating = true;
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ DankPopout {
|
|||||||
baseHeight += Theme.spacingM * 2;
|
baseHeight += Theme.spacingM * 2;
|
||||||
|
|
||||||
const settingsHeight = notificationSettings.expanded ? notificationSettings.contentHeight : 0;
|
const settingsHeight = notificationSettings.expanded ? notificationSettings.contentHeight : 0;
|
||||||
let listHeight = notificationHeader.currentTab === 0 ? notificationList.listContentHeight : Math.max(200, NotificationService.historyList.length * 80);
|
let listHeight = notificationHeader.currentTab === 0 ? notificationList.stableContentHeight : Math.max(200, NotificationService.historyList.length * 80);
|
||||||
if (notificationHeader.currentTab === 0 && NotificationService.groupedNotifications.length === 0) {
|
if (notificationHeader.currentTab === 0 && NotificationService.groupedNotifications.length === 0) {
|
||||||
listHeight = 200;
|
listHeight = 200;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user