// The centre clock, kept in the same place and the same format GNOME had it:
// weekday, date, 12-hour time with seconds. Clicking it opens the calendar,
// exactly like GNOME's date menu.

import Quickshell
import QtQuick
import qs.config
import qs.services
import qs.widgets

Pill {
    id: root

    // Seconds are only ticked when they are actually shown — a per-second wake
    // for a clock that displays minutes would be pure waste.
    SystemClock {
        id: clock
        precision: Settings.showSeconds ? SystemClock.Seconds : SystemClock.Minutes
    }

    readonly property string format: {
        const date = Settings.showWeekday ? "ddd MMM d  " : "MMM d  ";
        const time = Settings.use24Hour ? (Settings.showSeconds ? "HH:mm:ss" : "HH:mm") : (Settings.showSeconds ? "h:mm:ss AP" : "h:mm AP");
        return date + time;
    }

    onActivated: ShellState.toggleDateMenu("agenda")

    // Right-click opens the settings that govern this widget. Timezone and clock format live on Date & Time. The
    // format toggles are mirrored on Appearance, but someone right-clicking a
    // clock is far more often after the time itself than its typography.
    onSecondaryActivated: ShellState.openSettings("datetime")

    Text {
        anchors.verticalCenter: parent.verticalCenter
        text: Qt.formatDateTime(clock.date, root.format)
        font.family: Theme.fontFamily
        // Seconds tick once a second in the centre of the bar; without tabular
        // figures the whole clock shifts sideways on every digit change.
        font.features: Theme.tabularFigures
        font.pixelSize: Theme.fontSize
        color: Theme.fg
    }

}
