Files
z-bar-qt/Modules/Settings/Pages/WallpaperPage.qml
T

168 lines
4.5 KiB
QML

pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Layouts
import ZShell.Components
import qs.Helpers
import qs.Components
import ZShell.Config
import qs.Modules.Settings
import qs.Modules.Settings.Common
import qs.Services
PageBase {
id: root
title: qsTr("Wallpaper & style")
ColumnLayout {
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
spacing: Tokens.spacing.largeIncreased
width: root.cappedWidth
Item {
id: wallWrapper
Layout.alignment: Qt.AlignHCenter
implicitHeight: cropper.height
implicitWidth: root.cappedWidth
WallpaperCropper {
id: cropper
}
}
ButtonRow {
Layout.alignment: Qt.AlignHCenter
spacing: Tokens.spacing.small
IconTextButton {
enabled: Config.background.enabled
horizontalPadding: Tokens.padding.extraLarge
icon: "wallpaper"
isRound: true
shapeMorph: true
text: qsTr("Wallpapers")
type: IconTextButton.Tonal
verticalPadding: Tokens.padding.small
onClicked: root.sState.openSubPage(1) // Wallpaper page
}
IconTextButton {
enabled: Config.background.enabled
horizontalPadding: Tokens.padding.extraLarge
icon: "palette"
isRound: true
shapeMorph: true
text: qsTr("Colors & font")
type: IconTextButton.Tonal
verticalPadding: Tokens.padding.small
onClicked: root.sState.openSubPage(2) // Colors & font page
}
}
ToggleRow {
checked: Config.background.enabled
first: true
settingAnchor: "style-display-wallpaper"
text: qsTr("Display wallpaper")
onToggled: Config.background.enabled = checked
}
ToggleRow {
Layout.topMargin: Tokens.spacing.extraSmall / 2 - parent.spacing
checked: Colors.transparency.enabled
settingAnchor: "style-transparency"
subtext: qsTr("Base %1, layers %2").arg(Colors.transparency.base).arg(Colors.transparency.layers)
text: qsTr("Transparency")
onToggled: Config.appearance.transparency.enabled = checked
}
ToggleRow {
Layout.topMargin: Tokens.spacing.extraSmall / 2 - parent.spacing
checked: !Colors.light
last: true
settingAnchor: "style-dark-theme"
text: qsTr("Dark theme")
onToggled: Colors.setMode(checked ? "dark" : "light")
}
TimeDialogSelect {
readonly property string endTime: {
var d = new Date(0, 0, 0, 0, 0, 0, 0);
d.setMinutes(Config.general.color.scheduleDarkEnd);
return Qt.formatTime(d, "hh:mm AP");
}
readonly property string startTime: {
var d = new Date(0, 0, 0, 0, 0, 0, 0);
d.setMinutes(Config.general.color.scheduleDarkStart);
return Qt.formatTime(d, "hh:mm AP");
}
rowButton.checked: Config.general.color.scheduleDark
rowButton.onToggled: Config.general.color.scheduleDark = rowButton.checked
start: Config.general.color.scheduleDarkStart
end: Config.general.color.scheduleDarkEnd
first: true
settingAnchor: "style-schedule-dark-mode"
acceptLabel: qsTr("Apply")
rootParent: root.flickable
header: qsTr("Select time")
subtext: qsTr("Dark mode will turn on at %1, and turn off at %2.").arg(startTime).arg(endTime)
label: qsTr("Schedule dark mode")
onOpenChanged: {
root.sState.dimmed = open;
}
onAccepted: {
Config.general.color.scheduleDarkStart = startCurrent;
Config.general.color.scheduleDarkEnd = endCurrent;
ModeScheduler.checkStartup();
}
}
TimeDialogSelect {
readonly property string endTime: {
var d = new Date(0, 0, 0, 0, 0, 0, 0);
d.setMinutes(Config.general.color.scheduleHyprsunsetEnd);
return Qt.formatTime(d, "hh:mm AP");
}
readonly property string startTime: {
var d = new Date(0, 0, 0, 0, 0, 0, 0);
d.setMinutes(Config.general.color.scheduleHyprsunsetStart);
return Qt.formatTime(d, "hh:mm AP");
}
Layout.topMargin: Tokens.spacing.extraSmall / 2 - parent.spacing
rowButton.checked: Config.general.color.scheduleHyprsunset
rowButton.onToggled: Config.general.color.scheduleHyprsunset = rowButton.checked
start: Config.general.color.scheduleHyprsunsetStart
end: Config.general.color.scheduleHyprsunsetEnd
last: true
settingAnchor: "style-schedule-hyprsunset"
acceptLabel: qsTr("Apply")
rootParent: root.flickable
header: qsTr("Select time")
subtext: qsTr("Hyprsunset will turn on at %1, and turn off at %2.").arg(startTime).arg(endTime)
label: qsTr("Schedule hyprsunset")
onOpenChanged: {
root.sState.dimmed = open;
}
onAccepted: {
Config.general.color.scheduleHyprsunsetStart = startCurrent;
Config.general.color.scheduleHyprsunsetEnd = endCurrent;
Hyprsunset.checkStartup();
}
}
}
}