From 38b9b8659541de53ae6b8e5fd0d6630621fb65cd Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 22 Sep 2025 23:32:36 +1000 Subject: config: add toasts for events Loaded, load parse error, load failed, save failed Also increase toast icon size --- config/Config.qml | 23 ++++++++++++++++++++++- modules/utilities/toasts/ToastItem.qml | 4 ++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/config/Config.qml b/config/Config.qml index f33cbba..8d54cf8 100644 --- a/config/Config.qml +++ b/config/Config.qml @@ -1,6 +1,7 @@ pragma Singleton import qs.utils +import Caelestia import Quickshell import Quickshell.Io @@ -25,10 +26,30 @@ Singleton { property alias services: adapter.services property alias paths: adapter.paths + ElapsedTimer { + id: timer + } + FileView { path: `${Paths.config}/shell.json` watchChanges: true - onFileChanged: reload() + onFileChanged: { + timer.restart(); + reload(); + } + onLoaded: { + try { + JSON.parse(text()); + Toaster.toast(qsTr("Config loaded"), qsTr("Config loaded in %1ms").arg(timer.elapsedMs()), "rule_settings"); + } catch (e) { + Toaster.toast(qsTr("Failed to load config"), e.message, "settings_alert", Toast.Error); + } + } + onLoadFailed: err => { + if (err !== FileViewError.FileNotFound) + Toaster.toast(qsTr("Failed to read config file"), FileViewError.toString(err), "settings_alert", Toast.Warning); + } + onSaveFailed: err => Toaster.toast(qsTr("Failed to save config"), FileViewError.toString(err), "settings_alert", Toast.Error) JsonAdapter { id: adapter diff --git a/modules/utilities/toasts/ToastItem.qml b/modules/utilities/toasts/ToastItem.qml index 481b831..f475500 100644 --- a/modules/utilities/toasts/ToastItem.qml +++ b/modules/utilities/toasts/ToastItem.qml @@ -68,7 +68,7 @@ StyledRect { } implicitWidth: implicitHeight - implicitHeight: icon.implicitHeight + Appearance.padding.normal * 2 + implicitHeight: icon.implicitHeight + Appearance.padding.smaller * 2 MaterialIcon { id: icon @@ -84,7 +84,7 @@ StyledRect { return Colours.palette.m3onError; return Colours.palette.m3onSurfaceVariant; } - font.pointSize: Appearance.font.size.large + font.pointSize: Math.round(Appearance.font.size.large * 1.2) } } -- cgit v1.2.3-freya