1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-02 11:38:30 -04:00
Files
purian23 597ba597e5 feat(settings): implement greeter & lockscreen customization options
- New option to customize your font & wallpaper on the LockScreen
- New floating sync button if missed to explicitly sync on greeter changes
2026-07-02 17:13:18 -04:00

81 lines
2.6 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import qs.Common
import qs.Modals.FileBrowser
import qs.Widgets
Column {
id: root
property string path: ""
property string fillMode: ""
property string fallbackFillMode: "Fill"
property string browserTitle: I18n.tr("Select background image")
property string placeholderText: I18n.tr("Use desktop wallpaper")
property string fillModeSettingKey: ""
property var fillModeTags: []
signal pathSelected(string path)
signal fillModeSelected(string mode)
readonly property var _fillModes: ["Stretch", "Fit", "Fill", "Tile", "TileVertically", "TileHorizontally", "Pad"]
spacing: Theme.spacingS
FileBrowserModal {
id: wallpaperBrowserModal
browserTitle: root.browserTitle
browserIcon: "wallpaper"
browserType: "wallpaper"
showHiddenFiles: true
fileExtensions: ["*.jpg", "*.jpeg", "*.png", "*.bmp", "*.gif", "*.webp", "*.jxl", "*.avif", "*.heif"]
onFileSelected: path => {
root.pathSelected(path);
close();
}
}
Row {
width: parent.width
spacing: Theme.spacingS
DankTextField {
id: wallpaperPathField
width: parent.width - browseWallpaperButton.width - Theme.spacingS
placeholderText: root.placeholderText
text: root.path
backgroundColor: Theme.surfaceContainerHighest
onTextChanged: {
if (text !== root.path)
root.pathSelected(text);
}
}
DankButton {
id: browseWallpaperButton
text: I18n.tr("Browse")
horizontalPadding: Theme.spacingL
onClicked: wallpaperBrowserModal.open()
}
}
SettingsDropdownRow {
settingKey: root.fillModeSettingKey
tags: root.fillModeTags
text: I18n.tr("Wallpaper fill mode")
description: I18n.tr("How the background image is scaled")
options: root._fillModes.map(m => I18n.tr(m, "wallpaper fill mode"))
currentValue: {
var mode = (root.fillMode && root.fillMode !== "") ? root.fillMode : root.fallbackFillMode;
var idx = root._fillModes.indexOf(mode);
return idx >= 0 ? I18n.tr(root._fillModes[idx], "wallpaper fill mode") : I18n.tr("Fill", "wallpaper fill mode");
}
onValueChanged: value => {
var idx = root._fillModes.map(m => I18n.tr(m, "wallpaper fill mode")).indexOf(value);
if (idx >= 0)
root.fillModeSelected(root._fillModes[idx]);
}
}
}