fix: event colors/null parsing, edit+copy, settings chips, scroll perf, splash

- CalEvent parsing: handle Android's JSONObject.optString JSON-null quirk that
  returned the string "null" — this made every event blue (color "null" →
  fallback) and showed "null" for empty location/description. Now null-safe.
- Event detail: copy-to-calendar action; calendar row uses a calendar icon
  (was identical to the notes icon); empty location/notes rows hidden
- Event editor: copy mode (prefill from an existing event, save as new)
- Settings: hour height, text/line contrast are now button chips (like the
  cache range); color picker wraps, shows the current colour and a check mark
- Month scroll perf: precompute a day→events index once per change and only
  reload when the visible month actually changes (was filtering every cell
  every frame → laggy)
- Splash: dark window/splash background + inset launcher icon (was an ugly
  white box on startup)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Guido Schmit
2026-05-31 13:27:03 +02:00
parent c236db7fe9
commit 608580fc7e
10 changed files with 181 additions and 66 deletions

View File

@@ -1,5 +1,10 @@
<resources>
<color name="splash_bg">#0B1220</color>
<style name="Theme.Calendarr" parent="Theme.Material3.DayNight.NoActionBar">
<item name="android:windowBackground">?android:colorBackground</item>
<!-- Dark window background avoids a white flash before Compose draws. -->
<item name="android:windowBackground">@color/splash_bg</item>
<item name="android:statusBarColor">@color/splash_bg</item>
<item name="android:navigationBarColor">@color/splash_bg</item>
</style>
</resources>