pragma ComponentBehavior: Bound import qs.components import qs.services import Quickshell import QtQuick import QtQuick.Layouts LazyLoader { id: loader property list cwd: ["Home"] property string filterLabel: "All files" property list filters: ["*"] property string title: qsTr("Select a file") signal accepted(path: string) signal rejected function open(): void { activeAsync = true; } function close(): void { rejected(); } onAccepted: activeAsync = false onRejected: activeAsync = false FloatingWindow { id: root property list cwd: loader.cwd property string filterLabel: loader.filterLabel property list filters: loader.filters readonly property bool selectionValid: { const file = folderContents.currentItem?.modelData; return file && !file.isDir && (filters.includes("*") || filters.includes(file.suffix)); } function accepted(path: string): void { loader.accepted(path); } function rejected(): void { loader.rejected(); } implicitWidth: 1000 implicitHeight: 600 color: Colours.tPalette.m3surface title: loader.title onVisibleChanged: { if (!visible) rejected(); } RowLayout { anchors.fill: parent spacing: 0 Sidebar { Layout.fillHeight: true dialog: root } ColumnLayout { Layout.fillWidth: true Layout.fillHeight: true spacing: 0 HeaderBar { Layout.fillWidth: true dialog: root } FolderContents { id: folderContents Layout.fillWidth: true Layout.fillHeight: true dialog: root } DialogButtons { Layout.fillWidth: true dialog: root folder: folderContents } } } Behavior on color { CAnim {} } } }