FilePicker: back to our custom file picker.

This commit is contained in:
ItsLemmy
2025-09-25 20:59:50 -04:00
parent cb3fc1a45c
commit 22b843587c
9 changed files with 864 additions and 195 deletions
@@ -15,8 +15,6 @@ Popup {
property var widgetData: null
property string widgetId: ""
property bool isMasked: false
// Center popup in parent
x: (parent.width - width) * 0.5
y: (parent.height - height) * 0.5
@@ -43,7 +41,6 @@ Popup {
background: Rectangle {
id: bgRect
opacity: widgetSettings.isMasked ? 0 : 1.0
color: Color.mSurface
radius: Style.radiusL * scaling
border.color: Color.mPrimary
@@ -53,7 +50,6 @@ Popup {
contentItem: ColumnLayout {
id: content
opacity: widgetSettings.isMasked ? 0 : 1.0
width: parent.width
spacing: Style.marginM * scaling
@@ -1,6 +1,7 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell
import qs.Commons
import qs.Widgets
import qs.Services
@@ -73,7 +74,7 @@ ColumnLayout {
NButton {
enabled: !valueUseDistroLogo
text: I18n.tr("bar.widget-settings.control-center.browse-file")
onClicked: filePicker.open()
onClicked: imagePicker.openFilePicker()
}
}
@@ -87,8 +88,16 @@ ColumnLayout {
}
NFilePicker {
id: filePicker
id: imagePicker
title: I18n.tr("bar.widget-settings.control-center.select-custom-icon")
onAccepted: paths => valueCustomIconPath = paths[0]
selectFiles: true
selectFolders: false
nameFilters: ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.pnm", "*.bmp"]
initialPath: Quickshell.env("HOME")
onAccepted: paths => {
if (paths.length > 0) {
valueCustomIconPath = paths[0] // Use first selected file
}
}
}
}
+10 -5
View File
@@ -41,18 +41,23 @@ ColumnLayout {
buttonTooltip: "Browse for avatar image"
onInputEditingFinished: Settings.data.general.avatarImage = text
onButtonClicked: {
filePicker.open()
avatarPicker.openFilePicker()
}
}
}
NFilePicker {
id: filePicker
pickerType: "file"
id: avatarPicker
title: I18n.tr("settings.general.profile.select-avatar")
selectFiles: true
selectFolders: true
initialPath: Settings.data.general.avatarImage.substr(0, Settings.data.general.avatarImage.lastIndexOf("/")) || Quickshell.env("HOME")
nameFilters: ["Image files (*.jpg *.jpeg *.png *.gif *.pnm *.bmp *.face)", "All files (*)"]
onAccepted: paths => Settings.data.general.avatarImage = paths[0]
nameFilters: ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.pnm", "*.bmp"]
onAccepted: paths => {
if (paths.length > 0) {
Settings.data.general.avatarImage = paths[0]
}
}
}
NDivider {
+8 -3
View File
@@ -29,7 +29,7 @@ ColumnLayout {
buttonIcon: "folder-open"
buttonTooltip: I18n.tr("settings.screen-recorder.general.output-folder.tooltip")
onInputEditingFinished: Settings.data.screenRecorder.directory = text
onButtonClicked: folderPicker.open()
onButtonClicked: folderPicker.openFilePicker()
}
// Show Cursor
@@ -229,9 +229,14 @@ ColumnLayout {
NFilePicker {
id: folderPicker
pickerType: "folder"
selectFiles: false
selectFolders: true
title: I18n.tr("settings.screen-recorder.general.select-output-folder")
initialPath: Settings.data.screenRecorder.directory || Quickshell.env("HOME") + "/Videos"
onAccepted: paths => Settings.data.screenRecorder.directory = paths[0]
onAccepted: paths => {
if (paths.length > 0) {
Settings.data.screenRecorder.directory = paths[0] // Use first selected file
}
}
}
}
+16 -4
View File
@@ -340,15 +340,27 @@ ColumnLayout {
NFilePicker {
id: mainFolderPicker
pickerType: "folder"
selectFiles: false
selectFolders: true
title: I18n.tr("settings.wallpaper.settings.select-folder")
onAccepted: paths => Settings.data.wallpaper.directory = paths[0]
initialPath: Settings.data.wallpaper.directory || Quickshell.env("HOME") + "/Pictures"
onAccepted: paths => {
if (paths.length > 0) {
Settings.data.wallpaper.directory = paths[0]
}
}
}
NFilePicker {
id: monitorFolderPicker
pickerType: "folder"
selectFiles: false
selectFolders: true
title: I18n.tr("settings.wallpaper.settings.select-monitor-folder")
onAccepted: paths => WallpaperService.setMonitorDirectory(specificFolderMonitorName, paths[0])
initialPath: WallpaperService.getMonitorDirectory(specificFolderMonitorName) || Quickshell.env("HOME") + "/Pictures"
onAccepted: paths => {
if (paths.length > 0) {
WallpaperService.setMonitorDirectory(specificFolderMonitorName, paths[0])
}
}
}
}