Files
quickdots/components/TimezoneProvider.qml
2026-05-17 22:30:27 +00:00

50 lines
1.2 KiB
QML

pragma Singleton
import QtQuick
import Quickshell
import Quickshell.Io
import "../config" as Cfg
Item {
id: root
readonly property string tz: Cfg.Config.timezone || ""
property int tzOffsetMin: 0
property bool ready: false
Process {
id: tzProc
command: ["/usr/bin/env", "TZ=" + root.tz, "date", "+%z"]
running: root.tz !== ""
stdout: SplitParser {
onRead: data => {
var s = data.trim()
if (s.length < 5) return
var sign = (s[0] === "-") ? -1 : 1
var h = parseInt(s.substring(1, 3), 10)
var m = parseInt(s.substring(3, 5), 10)
root.tzOffsetMin = sign * (h * 60 + m)
root.ready = true
}
}
}
Timer {
interval: 300000
running: root.tz !== ""
repeat: true
onTriggered: tzProc.running = true
}
function toTz(date) {
if (!root.tz) return date
return new Date(date.getTime()
+ date.getTimezoneOffset() * 60000
+ root.tzOffsetMin * 60000)
}
function tzOffsetHours() {
if (!root.tz) return -(new Date().getTimezoneOffset()) / 60
return root.tzOffsetMin / 60
}
}