mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 01:26:46 +00:00
103 lines
2.3 KiB
QML
103 lines
2.3 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import qs.components
|
|
import qs.services
|
|
import Quickshell
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
|
|
LazyLoader {
|
|
id: loader
|
|
|
|
property list<string> cwd: ["Home"]
|
|
property string filterLabel: "All files"
|
|
property list<string> 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<string> cwd: loader.cwd
|
|
property string filterLabel: loader.filterLabel
|
|
property list<string> filters: loader.filters
|
|
|
|
readonly property bool selectionValid: {
|
|
const file = folderContents.currentItem?.modelData;
|
|
return (file && !file.isDir && (filters.includes("*") || filters.includes(file.suffix))) ?? false;
|
|
}
|
|
|
|
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 {}
|
|
}
|
|
}
|
|
}
|