quickshell/modules/applets/WallPicker.qml
2026-08-28 19:27:27 +02:00

68 lines
2.1 KiB
QML

pragma ComponentBehavior: Bound
import Quickshell.Widgets
import QtQuick
import Qt.labs.folderlistmodel 2.11
import qs
import qs.settings
Rectangle {
id: wallPicker
color: "transparent"
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.AllButtons
}
Rectangle {
id: container
anchors.fill: parent
color: Colors.base02
radius: Config.cfg.appearance.rounding
GridView {
id: wallpaperLayout
clip: true
snapMode: GridView.SnapOneRow
flow: GridView.FlowTopToBottom
cellHeight: container.height
cellWidth: container.width / 8
anchors.fill: parent
anchors.centerIn: parent
anchors.margins: 10
model: wallpaperList
delegate: ClippingRectangle {
id: wallTile
clip: true
required property var modelData
radius: Config.cfg.appearance.rounding / 1.5
color: 'transparent'
implicitWidth: wallpaperLayout.cellWidth - 20
implicitHeight: wallpaperLayout.cellHeight - 20
Image {
id: wallpaper
anchors.fill: parent
source: wallTile.modelData.filePath
sourceSize.width: 16 * 30
sourceSize.height: 9 * 30
asynchronous: true
cache: true
}
MouseArea {
id: wpClickHandler
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
acceptedButtons: Qt.LeftButton
hoverEnabled: true
onClicked: {
Config.cfg.wallpaper.wallpaper = wallTile.modelData.filePath;
Config.save();
}
}
}
}
FolderListModel {
id: wallpaperList
folder: Qt.resolvedUrl(Config.cfg.wallpaper.wallDir)
nameFilters: ["*.png"]
}
}
}