mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 17:47:09 +00:00
114 lines
3.4 KiB
QML
114 lines
3.4 KiB
QML
import Qt.labs.folderlistmodel
|
|
import Qt5Compat.GraphicalEffects
|
|
import QtCore
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import qs.modules.functions
|
|
import qs.services
|
|
import qs.config
|
|
import qs.modules.components
|
|
|
|
Item {
|
|
id: wallpapersPage
|
|
property string displayName: screen?.name ?? ""
|
|
|
|
FolderListModel {
|
|
id: wallpaperModel
|
|
|
|
folder: StandardPaths.writableLocation(StandardPaths.PicturesLocation) + "/Wallpapers"
|
|
nameFilters: ["*.png", "*.jpg", "*.jpeg", "*.webp", "mp4", "mkv", "webm", "avi", "mov", "flv", "wmv", "m4v"]
|
|
showDirs: false
|
|
showDotAndDotDot: false
|
|
}
|
|
|
|
// EMPTY STATE
|
|
StyledText {
|
|
visible: wallpaperModel.count === 0
|
|
text: "Put some wallpapers in\n~/Pictures/Wallpapers"
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
color: Appearance.m3colors.m3onSurfaceVariant
|
|
font.pixelSize: Appearance.font.size.large
|
|
anchors.centerIn: parent
|
|
}
|
|
|
|
// WALLPAPER LIST
|
|
ListView {
|
|
anchors.topMargin: 90
|
|
visible: wallpaperModel.count > 0
|
|
anchors.fill: parent
|
|
model: wallpaperModel
|
|
spacing: Appearance.margin.normal
|
|
clip: true
|
|
|
|
delegate: Item {
|
|
width: ListView.view.width
|
|
height: 240
|
|
|
|
StyledRect {
|
|
id: imgContainer
|
|
property bool activeWallpaper:
|
|
Config.runtime.monitors?.[wallpapersPage.displayName]?.wallpaper === fileUrl
|
|
|
|
anchors.fill: parent
|
|
anchors.leftMargin: 20
|
|
anchors.rightMargin: 20
|
|
radius: Appearance.rounding.normal
|
|
color: activeWallpaper
|
|
? Appearance.m3colors.m3secondaryContainer
|
|
: Appearance.m3colors.m3surfaceContainerLow
|
|
layer.enabled: true
|
|
|
|
Image {
|
|
id: wallImg
|
|
|
|
anchors.fill: parent
|
|
source: fileUrl
|
|
fillMode: Image.PreserveAspectCrop
|
|
asynchronous: true
|
|
cache: true
|
|
clip: true
|
|
}
|
|
|
|
StyledText {
|
|
anchors.centerIn: parent
|
|
text: "Unsupported / Corrupted Image"
|
|
visible: wallImg.status === Image.Error
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
Config.updateKey(
|
|
"monitors." + wallpapersPage.displayName + ".wallpaper",
|
|
fileUrl
|
|
);
|
|
if (Config.runtime.appearance.colors.autogenerated) {
|
|
Quickshell.execDetached([
|
|
"nucleus", "ipc", "call", "global", "regenColors"
|
|
]);
|
|
}
|
|
}
|
|
cursorShape: Qt.PointingHandCursor
|
|
}
|
|
|
|
layer.effect: OpacityMask {
|
|
|
|
maskSource: Rectangle {
|
|
width: imgContainer.width
|
|
height: imgContainer.height
|
|
radius: imgContainer.radius
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} |