161 lines
6.0 KiB
QML
161 lines
6.0 KiB
QML
import QtQuick
|
||
import qs.config
|
||
import qs.services
|
||
|
||
SettingsPage {
|
||
id: root
|
||
|
||
readonly property int openedHour: new Date().getHours()
|
||
readonly property string greeting: openedHour < 12 ? "Good morning" : (openedHour < 18 ? "Good afternoon" : "Good evening")
|
||
|
||
title: `${root.greeting}, Gabriel`
|
||
lede: "Your Panama desktop is configured and ready."
|
||
|
||
SettingsCard {
|
||
title: SystemSettings.monitorDescription || "Active display"
|
||
subtitle: SystemSettings.monitorName || "Detecting your display…"
|
||
|
||
Grid {
|
||
id: monitorLayout
|
||
|
||
width: parent.width
|
||
columns: width >= 620 ? 2 : 1
|
||
columnSpacing: 28
|
||
rowSpacing: 16
|
||
|
||
Item {
|
||
width: monitorLayout.columns === 2
|
||
? (monitorLayout.width - monitorLayout.columnSpacing) * 0.47
|
||
: monitorLayout.width
|
||
height: 164
|
||
|
||
Rectangle {
|
||
width: Math.min(parent.width - 24, 260)
|
||
height: width * 0.64
|
||
anchors.horizontalCenter: parent.horizontalCenter
|
||
anchors.top: parent.top
|
||
anchors.topMargin: 5
|
||
radius: 12
|
||
color: Theme.alpha(Theme.bgDark, 0.94)
|
||
border.width: 1
|
||
border.color: Theme.alpha(Theme.accent, 0.34)
|
||
|
||
Rectangle {
|
||
anchors.fill: parent
|
||
anchors.margins: 10
|
||
radius: 7
|
||
gradient: Gradient {
|
||
orientation: Gradient.Horizontal
|
||
GradientStop { position: 0; color: Theme.mix(Theme.bg, Theme.accent, 0.08) }
|
||
GradientStop { position: 1; color: Theme.mix(Theme.bg, Theme.accentSecondary, 0.08) }
|
||
}
|
||
|
||
Text {
|
||
anchors.centerIn: parent
|
||
text: SystemSettings.monitorName || "DISPLAY"
|
||
color: Theme.fgMuted
|
||
font.family: Theme.fontFamily
|
||
font.pixelSize: Theme.fontSizeSmall
|
||
font.letterSpacing: 1.5
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
Column {
|
||
width: monitorLayout.columns === 2
|
||
? (monitorLayout.width - monitorLayout.columnSpacing) * 0.47
|
||
: monitorLayout.width
|
||
height: monitorLayout.columns === 2 ? 164 : implicitHeight
|
||
spacing: 13
|
||
|
||
Text {
|
||
text: `${SystemSettings.monitorWidth} × ${SystemSettings.monitorHeight}`
|
||
color: Theme.fg
|
||
font.family: Theme.fontFamily
|
||
font.features: Theme.tabularFigures
|
||
font.pixelSize: Theme.fontSizeLarge
|
||
font.weight: Font.DemiBold
|
||
}
|
||
Text {
|
||
text: `${SystemSettings.monitorRefreshRate.toFixed(0)} Hz · ${SystemSettings.monitorScale.toFixed(1)}× scale`
|
||
color: Theme.fgDim
|
||
font.family: Theme.fontFamily
|
||
font.features: Theme.tabularFigures
|
||
font.pixelSize: Theme.fontSize
|
||
}
|
||
Text {
|
||
text: `${SystemSettings.monitorFormat || "Detecting format"} · ${SystemSettings.colorPreset || "standard color"}`
|
||
color: Theme.fgDim
|
||
font.family: Theme.fontFamily
|
||
font.pixelSize: Theme.fontSize
|
||
}
|
||
Text {
|
||
text: SystemSettings.autoHdr ? "Game-aware HDR is ready" : "Game-aware HDR is off"
|
||
color: SystemSettings.autoHdr ? Theme.ok : Theme.warn
|
||
font.family: Theme.fontFamily
|
||
font.pixelSize: Theme.fontSize
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "Weather"
|
||
subtitle: "Local conditions in the date menu"
|
||
ChoiceRow { setting: "temperatureUnit" }
|
||
SliderRow { setting: "weatherRefreshMinutes"; divider: false }
|
||
}
|
||
|
||
SettingsCard {
|
||
title: "System vitals"
|
||
subtitle: "Processor, memory, and graphics activity in the bar"
|
||
SliderRow { setting: "vitalsIntervalMs"; divider: false }
|
||
}
|
||
|
||
Grid {
|
||
id: summaryCards
|
||
|
||
width: parent.width
|
||
columns: width >= 720 ? 2 : 1
|
||
columnSpacing: 16
|
||
rowSpacing: 16
|
||
|
||
SettingsCard {
|
||
width: summaryCards.columns === 2
|
||
? (summaryCards.width - summaryCards.columnSpacing) / 2
|
||
: summaryCards.width
|
||
title: "Quiet focus"
|
||
subtitle: "Notifications and focused work"
|
||
|
||
SettingRow {
|
||
label: "Do Not Disturb"
|
||
detail: Notifs.doNotDisturb ? "Banners are currently quiet" : "Notification banners are visible"
|
||
divider: false
|
||
controlWidth: 48
|
||
SettingsToggle {
|
||
anchors.right: parent.right
|
||
anchors.verticalCenter: parent.verticalCenter
|
||
checked: Notifs.doNotDisturb
|
||
onToggled: value => Notifs.doNotDisturb = value
|
||
}
|
||
}
|
||
}
|
||
|
||
SettingsCard {
|
||
width: summaryCards.columns === 2
|
||
? (summaryCards.width - summaryCards.columnSpacing) / 2
|
||
: summaryCards.width
|
||
title: "Desktop services"
|
||
subtitle: "The essentials are running"
|
||
|
||
TextRow {
|
||
label: "Sync & remote access"
|
||
detail: `${SystemSettings.nextcloudActive ? "Nextcloud ready" : "Nextcloud stopped"} · ${SystemSettings.rustdeskActive ? "RustDesk ready" : "RustDesk stopped"}`
|
||
divider: false
|
||
value: SystemSettings.nextcloudActive && SystemSettings.rustdeskActive ? "Healthy" : "Review"
|
||
}
|
||
}
|
||
}
|
||
}
|