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 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"
        TextRow {
            label: "Location"
            detail: "Only the search term is sent; the name below is a label kept on this machine"
            value: Settings.weatherLocation
        }

        LocationPicker {
            width: parent.width
        }

        ChoiceRow { setting: "temperatureUnit" }
        SliderRow { setting: "weatherRefreshMinutes"; 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"
            }
        }
    }
}
