Sort settings into the places you'd look for them (#69)

Appearance had become the drawer everything got tossed into: 18 rows, half
of which weren't appearance at all. Views held three. Backup hid inside the
calendar manager, where nobody goes looking for "keep a copy of my
calendars".

The hub now reads as three labelled groups — look & behaviour, data, app —
and everything sits under the heading it belongs to:

- Appearance keeps theme/colour, the two fonts, and the app name (18 → 6).
- Views takes the per-view settings, grouped by the view they change: all
  views, month, week & day, agenda — then the two ordering lists (3 → 17).
- Widgets & tiles is new: the agenda widget's own range and size, plus the
  Quick Settings tile. "Agenda range" no longer sits one row above "Agenda
  widget range" pretending to be the same setting.
- Backup & restore is new: export, restore and automatic backup, lifted out
  of the calendar manager, which keeps a pointer row to it. Same screen
  logic, same either/or fallback when there's nothing exportable; it shares
  CalendarsViewModel and is hoisted in CalendarHost like the manager, since
  both are driven by the calendar list rather than by preferences.

Descriptions follow one rule now: a toggle says what happens when it's on
(Dynamic colour finally does), and a picker row shows its value, with the
explanation in the picker itself when the value alone says nothing — the
shape widget size and month style already used. Four picker descriptions
added, no string keys renamed or removed, so the translations stay
consistent.

SettingsScreen.kt is split one file per sub-screen (2108 → 409 lines); the
2000-line single file was why this drifted in the first place.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-30 19:51:19 +02:00
parent 02cf32b537
commit 08fd3467ad
13 changed files with 2502 additions and 2122 deletions

View File

@@ -430,12 +430,37 @@
<string name="settings_language_auto">System default</string>
<string name="settings_translate">Help translate</string>
<string name="settings_translate_hint">Add or improve a language on Weblate</string>
<!-- Hub group headers (#69) -->
<string name="settings_group_look">Look &amp; behaviour</string>
<string name="settings_group_data">Data</string>
<string name="settings_group_app">App</string>
<!-- Hub category subtitles -->
<string name="settings_appearance_subtitle">Theme, default view, week start</string>
<string name="settings_views_subtitle">Month layout, quick-switch button, menu order</string>
<string name="settings_event_form_subtitle">Default fields for new events</string>
<string name="settings_notifications_subtitle">Event reminders</string>
<string name="settings_appearance_subtitle">Theme, colours, fonts</string>
<string name="settings_views_subtitle">Default view, layout, order</string>
<string name="settings_event_form_subtitle">Default fields and behaviour</string>
<string name="settings_notifications_subtitle">Reminders and delivery</string>
<string name="settings_special_dates_subtitle">Contact birthdays &amp; anniversaries</string>
<string name="settings_widgets_subtitle">Agenda widget, Quick Settings tile</string>
<string name="settings_backup_subtitle">Export, import, automatic backup</string>
<!-- Widgets &amp; tiles (#69) -->
<string name="settings_section_widgets">Widgets &amp; tiles</string>
<string name="settings_widgets_hint">Settings for the home-screen widgets and the Quick Settings tile. Add a widget by long-pressing your home screen.</string>
<!-- Backup &amp; restore (#69) — the rows themselves reuse the calendars_* strings -->
<string name="settings_section_backup">Backup &amp; restore</string>
<!-- Views sub-headers (#69) -->
<string name="settings_views_all_header">All views</string>
<string name="settings_week_day_header">Week &amp; day</string>
<!-- Picker descriptions (#69) -->
<string name="settings_default_view_hint">The view Calendula opens on when you start it.</string>
<string name="settings_week_start_hint">The day every week begins on, in all views and widgets.</string>
<string name="settings_time_format_hint">How times are written throughout the app. Automatic follows your system setting.</string>
<string name="settings_past_events_hint">What the agenda does with events that have already ended.</string>
<string name="settings_dynamic_color_summary">Take the app\'s colours from your wallpaper.</string>
<!-- Contact special dates (issue #15) -->
<string name="settings_section_special_dates">Contact special dates</string>