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(); } } } }