feat(widgets): let each widget pick its theme and wallpaper colours
Every widget instance can now follow the system or be pinned to Light or Dark, and on Android 12+ turn the wallpaper's colours off in favour of the app's own palette. Both are set in the widget's config screen and stored in its own Glance state; an instance without them keeps today's look. Glance content takes them through WidgetTheme. The plain-RemoteViews parts (the analog and digital faces, readouts and chronometers) go through a new WidgetPalette, which resolves the widget_* palette under a forced day/night and sets concrete colours, or day/night pairs, on the views. The app's own tones are now widget_app_*, so they stay reachable on API 31+. The analog and digital clocks are re-coloured on API 31+ only: below that AnalogClock's hands and a shape's background tint can't be set through RemoteViews, so their config screens don't offer it. The next-alarm and timer widgets gain a config screen for this (configuration_optional, so placing one doesn't stop there). The analog, stopwatch and quick-timer config screens become settings screens with an OK, like the digital clock's, since they now hold more than one choice. Background opacity is left out: most faces are a shape with text in its container colour rather than a card, so there is no background to fade without losing contrast against the wallpaper. Closes #6
This commit is contained in:
@@ -139,7 +139,7 @@ kit module — the kit's roadmap keeps schedulers app-local.
|
||||
| `ui/worldclock/` | the real World clock tab (M8): the pure row builders (`WorldClockRows`, `ZonePickerRows`) and their state, `WorldClockSource`, the ViewModel, the tab, the analog face, the row and the zone picker, `WorldClockDefaults` |
|
||||
| `ui/ring/` | `AlarmRingActivity`, its ViewModel, `RingScreen` and the dismiss-challenge controls |
|
||||
| `ui/settings/` | the settings hub (M10): `SettingsScreen`/`SettingsViewModel` (appearance, alarm/timer/clock defaults, reliability, data, help), `SelfCheckScreen`/`SelfCheckViewModel`, `BackupScreen`/`BackupViewModel` — all reachable from a gear icon on every tab, with no owning tab of their own |
|
||||
| `ui/widget/` | the three widgets' `@Composable` Glance content (M10) — the only Compose this milestone adds outside a tab; the `GlanceAppWidget`/`GlanceAppWidgetReceiver` classes themselves live in `widget/`, since they are manifest components, not UI |
|
||||
| `ui/widget/` | the three widgets' `@Composable` Glance content (M10) — the only Compose this milestone adds outside a tab; the `GlanceAppWidget`/`GlanceAppWidgetReceiver` classes themselves live in `widget/`, since they are manifest components, not UI. `ui/widget/config/` holds each widget's config activity; every widget has one, if only for its per-instance colours (`domain/widget/WidgetColors.kt`: System/Light/Dark and, on API 31+, wallpaper colours on/off). Glance content takes those through `WidgetTheme`; the plain-`RemoteViews` faces, readouts and chronometers through `WidgetPalette.kt`, which resolves the `widget_*` palette under a forced day/night (the app's own tones are `widget_app_*`) and sets concrete colours, or day/night pairs, on the views. The analog and digital clocks are re-coloured on API 31+ only, since below that `AnalogClock`'s hands and a shape's background tint can't be set through `RemoteViews` |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user