From 97ea9d49929b223036e96388c66d700ea731d6db Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Mon, 5 May 2025 17:06:12 +1000 Subject: feat: wallpaper and colour preview --- services/Colours.qml | 4 ++-- services/Wallpapers.qml | 33 +++++++++++++++++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) (limited to 'services') diff --git a/services/Colours.qml b/services/Colours.qml index 27e0afd..fd0d1f6 100644 --- a/services/Colours.qml +++ b/services/Colours.qml @@ -33,8 +33,8 @@ Singleton { return Qt.hsla(c.hslHue, c.hslSaturation, 0.2, 1); } - function load(data: string, preview: bool): void { - const colours = preview ? preview : current; + function load(data: string, isPreview: bool): void { + const colours = isPreview ? preview : current; for (const line of data.trim().split("\n")) { let [name, colour] = line.split(" "); name = name.trim(); diff --git a/services/Wallpapers.qml b/services/Wallpapers.qml index 8e98e32..1d2a097 100644 --- a/services/Wallpapers.qml +++ b/services/Wallpapers.qml @@ -9,13 +9,13 @@ import Qt.labs.platform Singleton { id: root - readonly property string currentPath: `${StandardPaths.standardLocations(StandardPaths.GenericStateLocation)[0]}/caelestia/wallpaper/last.txt`.slice(7) + readonly property string currentNamePath: `${StandardPaths.standardLocations(StandardPaths.GenericStateLocation)[0]}/caelestia/wallpaper/last.txt`.slice(7) readonly property string path: `${StandardPaths.standardLocations(StandardPaths.PicturesLocation)[0]}/Wallpapers`.slice(7) property list list property bool showPreview: false - readonly property string current: showPreview ? preview : actualCurrent - property string preview + readonly property string current: showPreview ? previewPath : actualCurrent + property string previewPath property string actualCurrent readonly property list preppedWalls: list.map(w => ({ @@ -33,19 +33,44 @@ Singleton { } function setWallpaper(path: string): void { + actualCurrent = path; setWall.path = path; setWall.startDetached(); } + function preview(path: string): void { + previewPath = path; + showPreview = true; + getPreviewColoursProc.running = true; + } + + function stopPreview(): void { + showPreview = false; + Colours.showPreview = false; + } + reloadableId: "wallpapers" FileView { - path: root.currentPath + path: root.currentNamePath watchChanges: true onFileChanged: reload() onLoaded: root.actualCurrent = text().trim() } + Process { + id: getPreviewColoursProc + + command: ["caelestia", "scheme", "print", root.previewPath] + stdout: SplitParser { + splitMarker: "" + onRead: data => { + Colours.load(data, true); + Colours.showPreview = true; + } + } + } + Process { id: setWall -- cgit v1.2.3-freya