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
co-authored by Claude Opus 4.8
parent c236db7fe9
commit 608580fc7e
10 changed files with 181 additions and 66 deletions
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- The launcher icon inset so it sits comfortably inside the round splash mask. -->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/ic_launcher"
android:inset="18%" />