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.get("focusDurationMinutes") === modelData ? "accent" : "normal" onClicked: DesktopPreferences.set("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() } } } } } }