summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Notifications/Center/KeyboardNavigatedNotificationList.qml
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Notifications/Center/KeyboardNavigatedNotificationList.qml')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Notifications/Center/KeyboardNavigatedNotificationList.qml311
1 files changed, 0 insertions, 311 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Notifications/Center/KeyboardNavigatedNotificationList.qml b/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Notifications/Center/KeyboardNavigatedNotificationList.qml
deleted file mode 100644
index 855163d..0000000
--- a/raveos-hyprland-theme/theme-data/DankMaterialShell/quickshell/Modules/Notifications/Center/KeyboardNavigatedNotificationList.qml
+++ /dev/null
@@ -1,311 +0,0 @@
-import QtQuick
-import qs.Common
-import qs.Services
-import qs.Widgets
-
-DankListView {
- id: listView
-
- property var keyboardController: null
- property bool keyboardActive: false
- property bool autoScrollDisabled: false
- property bool isAnimatingExpansion: false
- property alias listContentHeight: listView.contentHeight
- property real stableContentHeight: 0
- property bool cardAnimateExpansion: true
- property bool listInitialized: false
- property int swipingCardIndex: -1
- property real swipingCardOffset: 0
- property real __pendingStableHeight: 0
- property real __heightUpdateThreshold: 20
- readonly property real shadowBlurPx: Theme.elevationEnabled ? ((Theme.elevationLevel1 && Theme.elevationLevel1.blurPx !== undefined) ? Theme.elevationLevel1.blurPx : 4) : 0
- readonly property real shadowHorizontalGutter: Theme.snap(Math.max(Theme.spacingS, Math.min(32, shadowBlurPx * 1.5 + 6)), 1)
- readonly property real shadowVerticalGutter: Theme.snap(Math.max(Theme.spacingXS, 6), 1)
- readonly property real delegateShadowGutter: Theme.snap(Math.max(Theme.spacingXS, 4), 1)
-
- Component.onCompleted: {
- Qt.callLater(() => {
- if (listView) {
- listView.listInitialized = true;
- listView.stableContentHeight = listView.contentHeight;
- }
- });
- }
-
- Timer {
- id: heightUpdateDebounce
- interval: Theme.mediumDuration + 20
- repeat: false
- onTriggered: {
- if (!listView.isAnimatingExpansion && Math.abs(listView.__pendingStableHeight - listView.stableContentHeight) > listView.__heightUpdateThreshold) {
- listView.stableContentHeight = listView.__pendingStableHeight;
- }
- }
- }
-
- onContentHeightChanged: {
- if (!isAnimatingExpansion) {
- __pendingStableHeight = contentHeight;
- if (Math.abs(contentHeight - stableContentHeight) > __heightUpdateThreshold) {
- heightUpdateDebounce.restart();
- } else {
- stableContentHeight = contentHeight;
- }
- }
- }
-
- onIsAnimatingExpansionChanged: {
- if (isAnimatingExpansion) {
- heightUpdateDebounce.stop();
- let delta = 0;
- for (let i = 0; i < count; i++) {
- const item = itemAtIndex(i);
- if (item && item.children[0] && item.children[0].isAnimating) {
- const targetDelegateHeight = item.children[0].targetHeight + listView.delegateShadowGutter;
- delta += targetDelegateHeight - item.height;
- }
- }
- const targetHeight = contentHeight + delta;
- // During expansion, always update immediately without threshold check
- stableContentHeight = targetHeight;
- } else {
- __pendingStableHeight = contentHeight;
- heightUpdateDebounce.stop();
- stableContentHeight = __pendingStableHeight;
- }
- }
-
- clip: true
- model: NotificationService.groupedNotifications
- spacing: Theme.spacingL
- topMargin: shadowVerticalGutter
- bottomMargin: shadowVerticalGutter
-
- onIsUserScrollingChanged: {
- if (isUserScrolling && keyboardController && keyboardController.keyboardNavigationActive) {
- autoScrollDisabled = true;
- }
- }
-
- function enableAutoScroll() {
- autoScrollDisabled = false;
- }
-
- Timer {
- id: positionPreservationTimer
- interval: 200
- running: keyboardController && keyboardController.keyboardNavigationActive && !autoScrollDisabled && !isAnimatingExpansion
- repeat: true
- onTriggered: {
- if (keyboardController && keyboardController.keyboardNavigationActive && !autoScrollDisabled && !isAnimatingExpansion) {
- keyboardController.ensureVisible();
- }
- }
- }
-
- Timer {
- id: expansionEnsureVisibleTimer
- interval: Theme.mediumDuration + 50
- repeat: false
- onTriggered: {
- if (keyboardController && keyboardController.keyboardNavigationActive && !autoScrollDisabled) {
- keyboardController.ensureVisible();
- }
- }
- }
-
- NotificationEmptyState {
- visible: listView.count === 0
- y: 20
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- onModelChanged: {
- if (!keyboardController || !keyboardController.keyboardNavigationActive) {
- return;
- }
- keyboardController.rebuildFlatNavigation();
- Qt.callLater(() => {
- if (keyboardController && keyboardController.keyboardNavigationActive && !autoScrollDisabled) {
- keyboardController.ensureVisible();
- }
- });
- }
-
- delegate: Item {
- id: delegateRoot
- required property var modelData
- required property int index
-
- readonly property bool isExpanded: (NotificationService.expandedGroups[modelData && modelData.key] || false)
- property real swipeOffset: 0
- property bool isDismissing: false
- readonly property real dismissThreshold: width * 0.35
- property bool __delegateInitialized: false
-
- readonly property bool isAdjacentToSwipe: listView.count >= 2 && listView.swipingCardIndex !== -1 && (index === listView.swipingCardIndex - 1 || index === listView.swipingCardIndex + 1)
- readonly property real adjacentSwipeInfluence: isAdjacentToSwipe ? listView.swipingCardOffset * 0.10 : 0
- readonly property real adjacentScaleInfluence: isAdjacentToSwipe ? 1.0 - Math.abs(listView.swipingCardOffset) / width * 0.02 : 1.0
- readonly property real swipeFadeStartOffset: width * 0.75
- readonly property real swipeFadeDistance: Math.max(1, width - swipeFadeStartOffset)
-
- Component.onCompleted: {
- Qt.callLater(() => {
- if (delegateRoot)
- delegateRoot.__delegateInitialized = true;
- });
- }
-
- width: ListView.view.width
- height: notificationCard.height + listView.delegateShadowGutter
- clip: false
-
- NotificationCard {
- id: notificationCard
- width: Math.max(0, parent.width - (listView.shadowHorizontalGutter * 2))
- y: listView.delegateShadowGutter / 2
- x: listView.shadowHorizontalGutter + delegateRoot.swipeOffset + delegateRoot.adjacentSwipeInfluence
- listLevelAdjacentScaleInfluence: delegateRoot.adjacentScaleInfluence
- listLevelScaleAnimationsEnabled: listView.swipingCardIndex === -1 || !delegateRoot.isAdjacentToSwipe
- notificationGroup: modelData
- keyboardNavigationActive: listView.keyboardActive
- animateExpansion: listView.cardAnimateExpansion && listView.listInitialized
- opacity: {
- const swipeAmount = Math.abs(delegateRoot.swipeOffset);
- if (swipeAmount <= delegateRoot.swipeFadeStartOffset)
- return 1;
- const fadeProgress = (swipeAmount - delegateRoot.swipeFadeStartOffset) / delegateRoot.swipeFadeDistance;
- return Math.max(0, 1 - fadeProgress);
- }
- onIsAnimatingChanged: {
- if (isAnimating) {
- listView.isAnimatingExpansion = true;
- } else {
- Qt.callLater(() => {
- if (!notificationCard || !listView)
- return;
- let anyAnimating = false;
- for (let i = 0; i < listView.count; i++) {
- const item = listView.itemAtIndex(i);
- if (item && item.children[0] && item.children[0].isAnimating) {
- anyAnimating = true;
- break;
- }
- }
- listView.isAnimatingExpansion = anyAnimating;
- });
- }
- }
-
- isGroupSelected: {
- if (!keyboardController || !keyboardController.keyboardNavigationActive || !listView.keyboardActive)
- return false;
- keyboardController.selectionVersion;
- const selection = keyboardController.getCurrentSelection();
- return selection.type === "group" && selection.groupIndex === index;
- }
-
- selectedNotificationIndex: {
- if (!keyboardController || !keyboardController.keyboardNavigationActive || !listView.keyboardActive)
- return -1;
- keyboardController.selectionVersion;
- const selection = keyboardController.getCurrentSelection();
- return (selection.type === "notification" && selection.groupIndex === index) ? selection.notificationIndex : -1;
- }
-
- Behavior on x {
- enabled: !swipeDragHandler.active && !delegateRoot.isDismissing && (listView.swipingCardIndex === -1 || !delegateRoot.isAdjacentToSwipe) && listView.listInitialized
- NumberAnimation {
- duration: Theme.shortDuration
- easing.type: Theme.standardEasing
- }
- }
-
- Behavior on opacity {
- enabled: listView.listInitialized
- NumberAnimation {
- duration: listView.listInitialized ? Theme.shortDuration : 0
- }
- }
- }
-
- DragHandler {
- id: swipeDragHandler
- target: null
- yAxis.enabled: false
- xAxis.enabled: true
-
- onActiveChanged: {
- if (active) {
- listView.swipingCardIndex = index;
- return;
- }
- listView.swipingCardIndex = -1;
- listView.swipingCardOffset = 0;
- if (delegateRoot.isDismissing)
- return;
- if (Math.abs(delegateRoot.swipeOffset) > delegateRoot.dismissThreshold) {
- delegateRoot.isDismissing = true;
- swipeDismissAnim.to = delegateRoot.swipeOffset > 0 ? delegateRoot.width : -delegateRoot.width;
- swipeDismissAnim.start();
- } else {
- delegateRoot.swipeOffset = 0;
- }
- }
-
- onTranslationChanged: {
- if (delegateRoot.isDismissing)
- return;
- delegateRoot.swipeOffset = translation.x;
- listView.swipingCardOffset = translation.x;
- }
- }
-
- NumberAnimation {
- id: swipeDismissAnim
- target: delegateRoot
- property: "swipeOffset"
- to: 0
- duration: Theme.notificationExitDuration
- easing.type: Easing.OutCubic
- onStopped: NotificationService.dismissGroup(delegateRoot.modelData?.key || "")
- }
- }
-
- Connections {
- target: NotificationService
-
- function onGroupedNotificationsChanged() {
- if (!keyboardController) {
- return;
- }
-
- if (keyboardController.isTogglingGroup) {
- keyboardController.rebuildFlatNavigation();
- return;
- }
-
- keyboardController.rebuildFlatNavigation();
-
- if (keyboardController.keyboardNavigationActive) {
- Qt.callLater(() => {
- if (!autoScrollDisabled) {
- keyboardController.ensureVisible();
- }
- });
- }
- }
-
- function onExpandedGroupsChanged() {
- if (!keyboardController || !keyboardController.keyboardNavigationActive)
- return;
- expansionEnsureVisibleTimer.restart();
- }
-
- function onExpandedMessagesChanged() {
- if (!keyboardController || !keyboardController.keyboardNavigationActive)
- return;
- expansionEnsureVisibleTimer.restart();
- }
- }
-}