feat(worldclock): the tab, the picker, and the face that answers at a glance

A hero face for home over a list of cities, each carrying its time, its offset
and how many days apart it is from you. The dial morphs between a circle and a
sun with the hour *there*: the one showpiece M0 reserved, spent on information
rather than decoration — a glance says "it is the middle of the night for them"
with no sentence needed.

The picker searches the device's own zones by word prefix. The list reorders by
drag **and** by move-up/move-down actions, because a drag-only reorder is
unreachable by a screen reader; each row reads as one sentence rather than
three texts in child order. Home is set by hand or left following the device.
At the twenty-fourth city the refusal is written on the screen, not only in the
content description.
This commit is contained in:
2026-09-22 13:05:18 +02:00
parent 5d11921c19
commit 26f1effb4f
16 changed files with 2394 additions and 9 deletions
+40
View File
@@ -190,4 +190,44 @@
<item quantity="one">%1$d lap</item>
<item quantity="other">%1$d laps</item>
</plurals>
<!-- M8: the world clock tab, its rows and the zone picker -->
<string name="world_clock_add">Add city</string>
<string name="world_clock_limit">Add up to %1$d cities</string>
<string name="world_clock_home_action">Home time zone</string>
<string name="world_clock_home">Home</string>
<string name="world_clock_empty_hint">Add a city to compare its time with your own.</string>
<string name="world_clock_offset_same">Same time as home</string>
<string name="world_clock_ahead">%1$s ahead</string>
<string name="world_clock_behind">%1$s behind</string>
<string name="world_clock_hours_minutes">%1$s %2$s</string>
<string name="world_clock_summary">%1$s \u00b7 %2$s</string>
<string name="world_clock_day_yesterday">Yesterday</string>
<string name="world_clock_day_today">Today</string>
<string name="world_clock_day_tomorrow">Tomorrow</string>
<string name="world_clock_unknown_zone">This time zone is no longer on your device</string>
<string name="world_clock_face_description">%1$s, %2$s</string>
<string name="world_clock_row_description">%1$s, %2$s, %3$s</string>
<!-- A row whose zone the device no longer knows has no time to read out. -->
<string name="world_clock_row_description_unknown">%1$s, %2$s</string>
<string name="world_clock_row_drag">Reorder %1$s</string>
<string name="world_clock_row_move_up">Move up</string>
<string name="world_clock_row_move_down">Move down</string>
<string name="world_clock_row_remove">Remove</string>
<string name="world_clock_remove_title">Remove %1$s?</string>
<string name="world_clock_remove_message">The city will be removed from your world clocks.</string>
<string name="action_remove">Remove</string>
<string name="zone_picker_add_title">Add city</string>
<string name="zone_picker_home_title">Home time zone</string>
<string name="zone_picker_search">Search cities</string>
<string name="zone_picker_search_clear">Clear search</string>
<string name="zone_picker_no_results">No city matches \u201c%1$s\u201d</string>
<string name="zone_picker_device_zone">Device time zone</string>
<plurals name="world_clock_hours">
<item quantity="one">%d hour</item>
<item quantity="other">%d hours</item>
</plurals>
<plurals name="world_clock_minutes">
<item quantity="one">%d minute</item>
<item quantity="other">%d minutes</item>
</plurals>
</resources>