80 lines
3.6 KiB
QML
80 lines
3.6 KiB
QML
import QtQuick
|
|
import qs.config
|
|
import qs.services
|
|
|
|
Item {
|
|
Flickable {
|
|
anchors.fill: parent
|
|
clip: true
|
|
contentWidth: width
|
|
contentHeight: content.implicitHeight + 64
|
|
boundsBehavior: Flickable.StopAtBounds
|
|
|
|
Column {
|
|
id: content
|
|
width: parent.width - 68
|
|
x: 34
|
|
y: 30
|
|
spacing: 16
|
|
|
|
Text { text: "Notifications & Focus"; color: Theme.fg; font.family: Theme.fontFamily; font.pixelSize: 27; font.weight: Font.DemiBold }
|
|
Text { text: "Control interruptions without losing useful history."; color: Theme.fgDim; font.family: Theme.fontFamily; font.pixelSize: Theme.fontSize; bottomPadding: 6 }
|
|
|
|
SettingsCard {
|
|
title: "Notifications"
|
|
SettingRow {
|
|
label: "Do Not Disturb"
|
|
detail: "Keep notifications in the center but suppress banners"
|
|
controlWidth: 48
|
|
SettingsToggle { anchors.right: parent.right; anchors.verticalCenter: parent.verticalCenter; checked: Notifs.doNotDisturb; onToggled: value => Notifs.doNotDisturb = value }
|
|
}
|
|
SettingRow { label: "Notification history"; detail: "Live notifications retained by Panama"; value: `${Notifs.history.length} items` }
|
|
SettingRow {
|
|
label: "Clear notification history"
|
|
detail: "Dismiss every item currently in the notification center"
|
|
divider: false
|
|
controlWidth: 94
|
|
SettingsButton { anchors.right: parent.right; anchors.verticalCenter: parent.verticalCenter; text: "Clear all"; enabled: Notifs.history.length > 0; onClicked: Notifs.dismissAll() }
|
|
}
|
|
}
|
|
|
|
SettingsCard {
|
|
title: "Focus sessions"
|
|
subtitle: "A focus session binds quiet mode and Caffeine to the current workspace."
|
|
SettingRow {
|
|
label: "Default duration"
|
|
detail: "Used by Super+Shift+F and Quick Settings"
|
|
controlWidth: 264
|
|
Row {
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
spacing: 6
|
|
Repeater {
|
|
model: [25, 45, 60, 90]
|
|
SettingsButton {
|
|
required property int modelData
|
|
text: `${modelData}m`
|
|
tone: DesktopPreferences.focusDurationMinutes === modelData ? "accent" : "normal"
|
|
onClicked: DesktopPreferences.focusDurationMinutes = modelData
|
|
}
|
|
}
|
|
}
|
|
}
|
|
SettingRow {
|
|
label: FocusSession.active ? `Active on ${FocusSession.workspaceLabel}` : "No active focus session"
|
|
detail: FocusSession.active ? `${FocusSession.remainingText} remaining` : "Start one without leaving Settings"
|
|
divider: false
|
|
controlWidth: 120
|
|
SettingsButton {
|
|
anchors.right: parent.right
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
text: FocusSession.active ? "Show controls" : "Start focus"
|
|
tone: FocusSession.active ? "normal" : "accent"
|
|
onClicked: FocusSession.reveal()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|