[x] Add a compiler from zic-compiled tzinfo to a packed format that's a little more efficient than tzinfo raw files.
[x] Modify the localtime.c in eggert/tz to support loading a timezone from a system resource. Ideally, modify it to not have to load the whole timezone into RAM at once (expensive: costs 6 kB for some time zones!), and to iteratively read() to get what it needs.
[x] Write UI to change the timezone.
[x] Write logic to take timezone from phone.
[x] Write backend to store time preferences (while we're at it, implement 24hr preference) in a rdb prefdb.
[ ] Scrub APIs for things that we do wrong right now - clock_get_timezone, etc.
[ ] Fire tick events for when the timezone changes. Or just don't put the time in the status bar in the settings menu. 🙈
I think this is a good chunk of work, but no individual step is all that complicated. Basically, the steps involved are:
zic
-compiled tzinfo to a packed format that's a little more efficient thantzinfo
raw files.localtime.c
in eggert/tz to support loading a timezone from a system resource. Ideally, modify it to not have to load the whole timezone into RAM at once (expensive: costs 6 kB for some time zones!), and to iteratively read() to get what it needs.rdb
prefdb.