mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-02 11:38:30 -04:00
597ba597e5
- New option to customize your font & wallpaper on the LockScreen - New floating sync button if missed to explicitly sync on greeter changes
81 lines
2.6 KiB
QML
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]);
|
|
}
|
|
}
|
|
}
|