config: add toasts for events

Loaded, load parse error, load failed, save failed
Also increase toast icon size
This commit is contained in:
2 * r + 2 * t 2025-09-22 23:32:36 +10:00
parent 8e4c29b9de
commit 38b9b86595
2 changed files with 24 additions and 3 deletions

View file

@ -1,6 +1,7 @@
pragma Singleton pragma Singleton
import qs.utils import qs.utils
import Caelestia
import Quickshell import Quickshell
import Quickshell.Io import Quickshell.Io
@ -25,10 +26,30 @@ Singleton {
property alias services: adapter.services property alias services: adapter.services
property alias paths: adapter.paths property alias paths: adapter.paths
ElapsedTimer {
id: timer
}
FileView { FileView {
path: `${Paths.config}/shell.json` path: `${Paths.config}/shell.json`
watchChanges: true 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 { JsonAdapter {
id: adapter id: adapter

View file

@ -68,7 +68,7 @@ StyledRect {
} }
implicitWidth: implicitHeight implicitWidth: implicitHeight
implicitHeight: icon.implicitHeight + Appearance.padding.normal * 2 implicitHeight: icon.implicitHeight + Appearance.padding.smaller * 2
MaterialIcon { MaterialIcon {
id: icon id: icon
@ -84,7 +84,7 @@ StyledRect {
return Colours.palette.m3onError; return Colours.palette.m3onError;
return Colours.palette.m3onSurfaceVariant; return Colours.palette.m3onSurfaceVariant;
} }
font.pointSize: Appearance.font.size.large font.pointSize: Math.round(Appearance.font.size.large * 1.2)
} }
} }