1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-29 07:52:50 -05:00

meta: large-scale refactor progress

This commit is contained in:
bbedward
2025-07-17 15:21:37 -04:00
parent 77cc9c288b
commit 7a40156893
24 changed files with 663 additions and 590 deletions

83
Services/ToastService.qml Normal file
View File

@@ -0,0 +1,83 @@
pragma Singleton
pragma ComponentBehavior: Bound
import QtQuick
import Quickshell
Singleton {
id: root
readonly property int levelInfo: 0
readonly property int levelWarn: 1
readonly property int levelError: 2
property string currentMessage: ""
property int currentLevel: levelInfo
property bool toastVisible: false
property var toastQueue: []
property string wallpaperErrorStatus: ""
Timer {
id: toastTimer
interval: 5000
running: false
repeat: false
onTriggered: hideToast()
}
Timer {
id: queueTimer
interval: 500
running: false
repeat: false
onTriggered: processQueue()
}
function showToast(message, level = levelInfo) {
toastQueue.push({ message, level })
if (!toastVisible) {
processQueue()
}
}
function showInfo(message) {
showToast(message, levelInfo)
}
function showWarning(message) {
showToast(message, levelWarn)
}
function showError(message) {
showToast(message, levelError)
}
function hideToast() {
toastVisible = false
currentMessage = ""
currentLevel = levelInfo
toastTimer.stop()
if (toastQueue.length > 0) {
queueTimer.start()
}
}
function processQueue() {
if (toastQueue.length === 0) return
const toast = toastQueue.shift()
currentMessage = toast.message
currentLevel = toast.level
toastVisible = true
toastTimer.interval =
toast.level === levelError ? 8000 :
toast.level === levelWarn ? 6000 : 5000
toastTimer.start()
}
function clearWallpaperError() {
wallpaperErrorStatus = ""
}
}