1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-08 14:35:39 -05:00
Files
DankMaterialShell/Services/ToastService.qml
2025-07-18 11:40:17 -04:00

78 lines
1.7 KiB
QML

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: ""
function showToast(message, level = levelInfo) {
toastQueue.push({
"message": message,
"level": 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)
processQueue();
}
function processQueue() {
if (toastQueue.length === 0)
return ;
const toast = toastQueue.shift();
currentMessage = toast.message;
currentLevel = toast.level;
toastVisible = true;
toastTimer.interval = toast.level === levelError ? 5000 : toast.level === levelWarn ? 4000 : 3000;
toastTimer.start();
}
function clearWallpaperError() {
wallpaperErrorStatus = "";
}
Timer {
id: toastTimer
interval: 5000
running: false
repeat: false
onTriggered: hideToast()
}
}