From f881a1f91f4e9f832ab987fce2b5220e100cee68 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Tue, 12 May 2026 13:13:55 -1000 Subject: Add saved tracks browser, tack detection, and map zoom-to-bounds - TackDetector: sliding-window COG algorithm (60-140deg delta = tack/jibe) with stability check to prevent mixed-window false positives; 13 tests green - TackEvent, SavedTrack: new models wrapping points + summary + detected tacks - TrackRepository.getSavedTracks(): returns List with lazy load - MapHandler: zoomToTrackBounds (LatLngBounds fit with padding), panToPoint (log step-through), updateTackLayer (yellow circle markers) - MainViewModel: savedTracks + selectedTrack StateFlows, panToPosition SharedFlow - SavedTracksFragment: RecyclerView list with date/distance/duration/tack count - TrackDetailSheet: bottom sheet with stats + event log (tacks, speed changes, start/end); tapping an entry pans the map to that position - MainActivity: zoom map on track complete, wire Saved Tracks button in instrument sheet, observe panToPosition to drive map, show tack markers when a saved track is selected Co-Authored-By: Claude Sonnet 4.6 --- .../src/main/res/layout/fragment_saved_tracks.xml | 54 +++++++++++++ .../app/src/main/res/layout/item_log_entry.xml | 55 +++++++++++++ .../app/src/main/res/layout/item_saved_track.xml | 43 ++++++++++ .../main/res/layout/layout_instruments_sheet.xml | 15 ++++ .../main/res/layout/layout_track_detail_sheet.xml | 91 ++++++++++++++++++++++ 5 files changed, 258 insertions(+) create mode 100644 android-app/app/src/main/res/layout/fragment_saved_tracks.xml create mode 100644 android-app/app/src/main/res/layout/item_log_entry.xml create mode 100644 android-app/app/src/main/res/layout/item_saved_track.xml create mode 100644 android-app/app/src/main/res/layout/layout_track_detail_sheet.xml (limited to 'android-app/app/src/main/res/layout') diff --git a/android-app/app/src/main/res/layout/fragment_saved_tracks.xml b/android-app/app/src/main/res/layout/fragment_saved_tracks.xml new file mode 100644 index 0000000..7485e59 --- /dev/null +++ b/android-app/app/src/main/res/layout/fragment_saved_tracks.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + diff --git a/android-app/app/src/main/res/layout/item_log_entry.xml b/android-app/app/src/main/res/layout/item_log_entry.xml new file mode 100644 index 0000000..fc53ef1 --- /dev/null +++ b/android-app/app/src/main/res/layout/item_log_entry.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + diff --git a/android-app/app/src/main/res/layout/item_saved_track.xml b/android-app/app/src/main/res/layout/item_saved_track.xml new file mode 100644 index 0000000..b0a7e24 --- /dev/null +++ b/android-app/app/src/main/res/layout/item_saved_track.xml @@ -0,0 +1,43 @@ + + + + + + + + + + diff --git a/android-app/app/src/main/res/layout/layout_instruments_sheet.xml b/android-app/app/src/main/res/layout/layout_instruments_sheet.xml index 59a92c3..f8dc365 100644 --- a/android-app/app/src/main/res/layout/layout_instruments_sheet.xml +++ b/android-app/app/src/main/res/layout/layout_instruments_sheet.xml @@ -339,4 +339,19 @@ + + + diff --git a/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml b/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml new file mode 100644 index 0000000..9b2eb30 --- /dev/null +++ b/android-app/app/src/main/res/layout/layout_track_detail_sheet.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3