// A time of day, stored as a decimal hour.
//
// SliderRow would render 17.5 as "17.50", which is not how anyone reads a
// clock. This is the same control with the readout formatted as a time, so the
// night light schedule says "5:30 PM" rather than a number you have to convert.
//
// Honours the 24-hour clock preference, because a user who has asked for 18:30
// everywhere else should not be shown 6:30 PM here.

import QtQuick
import qs.config
import qs.services

SliderRow {
    id: root

    // SliderRow renders `unit` after the number; a time needs the whole readout
    // replaced, so the formatting is done here instead.
    function display(value: real): string {
        const hour = Math.floor(value);
        const minute = Math.round((value - hour) * 60);
        const padded = String(minute).padStart(2, "0");

        if (Settings.use24Hour)
            return `${String(hour).padStart(2, "0")}:${padded}`;

        const suffix = hour < 12 ? "AM" : "PM";
        const twelve = hour % 12 === 0 ? 12 : hour % 12;
        return `${twelve}:${padded} ${suffix}`;
    }
}
