summaryrefslogtreecommitdiff
path: root/test-runner/src/main
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-03-25 18:09:53 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-03-25 18:09:53 +0000
commitca57e40adc0b89e7dc5409475f7510c0c188d715 (patch)
treed1fd636e0bdd67e36870ae891ed55d7d764689cf /test-runner/src/main
parentb5ab0c5236d7503dc002b7bf04e0e33b9c7ff9fa (diff)
feat(track): implement GPS track recording with map overlay
- TrackRepository + TrackPoint wired into MainViewModel: isRecording/trackPoints StateFlows, startTrack/stopTrack/addGpsPoint - MapHandler.updateTrackLayer(): lazily initialises a red LineLayer and updates GeoJSON polyline from List<TrackPoint> - fab_record_track FAB in activity_main.xml (top|end of bottom nav); icon toggles between ic_track_record and ic_close while recording - MainActivity feeds every GPS fix into viewModel.addGpsPoint() and observes trackPoints to redraw the polyline in real time - ic_track_record.xml vector drawable (red record dot) - 8 TrackRepositoryTest tests all GREEN Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'test-runner/src/main')
-rw-r--r--test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt12
-rw-r--r--test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt24
2 files changed, 36 insertions, 0 deletions
diff --git a/test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt b/test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt
new file mode 100644
index 0000000..d803c8c
--- /dev/null
+++ b/test-runner/src/main/kotlin/org/terst/nav/track/TrackPoint.kt
@@ -0,0 +1,12 @@
+package org.terst.nav.track
+
+data class TrackPoint(
+ val lat: Double,
+ val lon: Double,
+ val sogKnots: Double,
+ val cogDeg: Double,
+ val windSpeedKnots: Double,
+ val windAngleDeg: Double,
+ val isTrueWind: Boolean,
+ val timestampMs: Long
+)
diff --git a/test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt b/test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt
new file mode 100644
index 0000000..c90adb9
--- /dev/null
+++ b/test-runner/src/main/kotlin/org/terst/nav/track/TrackRepository.kt
@@ -0,0 +1,24 @@
+package org.terst.nav.track
+
+class TrackRepository {
+
+ var isRecording: Boolean = false
+ private set
+
+ private val points = mutableListOf<TrackPoint>()
+
+ fun startTrack() {
+ points.clear()
+ isRecording = true
+ }
+
+ fun stopTrack() {
+ isRecording = false
+ }
+
+ fun addPoint(point: TrackPoint) {
+ if (isRecording) points.add(point)
+ }
+
+ fun getPoints(): List<TrackPoint> = points.toList()
+}