wallpaper: add fallback and selector

Add fallback for when no wallpaper and button to set
This commit is contained in:
2 * r + 2 * t 2025-06-18 21:31:36 +10:00
parent 605c6f95f1
commit c94b761459

View file

@ -4,6 +4,7 @@ import "root:/widgets"
import "root:/services"
import "root:/config"
import QtQuick
import QtQuick.Dialogs
Item {
id: root
@ -14,12 +15,86 @@ Item {
anchors.fill: parent
onSourceChanged: {
if (current === one)
if (!source)
current = null;
else if (current === one)
two.update();
else
one.update();
}
Loader {
anchors.fill: parent
active: !root.source
asynchronous: true
sourceComponent: StyledRect {
color: Colours.palette.m3surfaceContainer
Row {
anchors.centerIn: parent
spacing: Appearance.spacing.large
MaterialIcon {
text: "sentiment_stressed"
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.extraLarge * 5
font.variableAxes: ({
opsz: Appearance.font.size.extraLarge * 5
})
}
Column {
anchors.verticalCenter: parent.verticalCenter
spacing: Appearance.spacing.small
StyledText {
text: qsTr("Wallpaper missing?")
color: Colours.palette.m3onSurfaceVariant
font.pointSize: Appearance.font.size.extraLarge * 2
font.bold: true
}
StyledRect {
implicitWidth: selectWallText.implicitWidth + Appearance.padding.large * 2
implicitHeight: selectWallText.implicitHeight + Appearance.padding.small * 2
radius: Appearance.rounding.full
color: Colours.palette.m3primary
FileDialog {
id: dialog
nameFilters: [`Image files (${Wallpapers.extensions.map(e => `*.${e}`).join(" ")})`]
onAccepted: Wallpapers.setWallpaper(selectedFile.toString().replace("file://", ""))
}
StateLayer {
radius: parent.radius
color: Colours.palette.m3onPrimary
function onClicked(): void {
dialog.open();
}
}
StyledText {
id: selectWallText
anchors.centerIn: parent
text: qsTr("Set it now!")
color: Colours.palette.m3onPrimary
font.pointSize: Appearance.font.size.large
}
}
}
}
}
}
Img {
id: one
}