57 lines
1.1 KiB
QML
57 lines
1.1 KiB
QML
pragma Singleton
|
|
pragma ComponentBehavior: Bound
|
|
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import QtQuick
|
|
|
|
Singleton {
|
|
id: root
|
|
|
|
property alias crops: adapter.monitorCrops
|
|
property alias monitorCrops: monitorCrops
|
|
property string previewPath
|
|
property bool recentlyChanged
|
|
property bool showPreview: false
|
|
|
|
function getCrop(screen: string): var {
|
|
return root.crops[screen];
|
|
}
|
|
|
|
function setCrop(screen: string, rect: rect, scaledRect: rect, zoom: real): void {
|
|
let updated = Object.assign({}, root.crops);
|
|
|
|
updated[screen] = {
|
|
x: rect.x,
|
|
y: rect.y,
|
|
width: rect.width,
|
|
height: rect.height,
|
|
scaledX: scaledRect.x,
|
|
scaledY: scaledRect.y,
|
|
scaledWidth: scaledRect.width,
|
|
scaledHeight: scaledRect.height,
|
|
zoom: zoom
|
|
};
|
|
|
|
root.crops = updated;
|
|
monitorCrops.writeAdapter();
|
|
monitorCrops.reload();
|
|
}
|
|
|
|
FileView {
|
|
id: monitorCrops
|
|
|
|
path: `${Paths.state}/wallpaper-crops.json`
|
|
watchChanges: true
|
|
|
|
onAdapterUpdated: writeAdapter()
|
|
onFileChanged: reload()
|
|
|
|
JsonAdapter {
|
|
id: adapter
|
|
|
|
property var monitorCrops: ({})
|
|
}
|
|
}
|
|
}
|