From c6bad779d38802f5c8666a3bc4471fd19ff64d46 Mon Sep 17 00:00:00 2001 From: Dimitris Date: Mon, 6 Apr 2026 09:27:39 +0200 Subject: [PATCH] Refresh Distance in PlaceList --- .../kouros/navigation/car/screen/PlaceListScreen.kt | 13 ++++++++++--- .../com/kouros/navigation/utils/NavigationUtils.kt | 3 ++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt b/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt index 3a15baf..3ce96dc 100644 --- a/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt +++ b/common/car/src/main/java/com/kouros/navigation/car/screen/PlaceListScreen.kt @@ -29,6 +29,7 @@ import com.kouros.navigation.data.Constants.RECENT import com.kouros.navigation.data.Place import com.kouros.navigation.model.NavigationViewModel import com.kouros.navigation.utils.getSettingsRepository +import com.kouros.navigation.utils.location class PlaceListScreen( private val carContext: CarContext, @@ -59,6 +60,12 @@ class PlaceListScreen( override fun onStop(owner: LifecycleOwner) { navigationViewModel.recentPlaces.value = emptyList() } + + override fun onStart(owner: LifecycleOwner) { + recentPlaces.forEach { + it.distance = location(it.longitude, it.latitude).distanceTo(surfaceRenderer.lastLocation) + } + } }) } @@ -74,7 +81,7 @@ class PlaceListScreen( .setImage(contactIcon(null, it.category)) .setTitle("$street ${it.city}") .setOnClickListener { - clickOnPlace(it) + clickOnPlace(it) } if (category != CONTACTS) { row.addText(SpannableString(" ").apply { @@ -130,7 +137,7 @@ class PlaceListScreen( if (surfaceRenderer.navigation) { startStopOverScreen(place) } else { - starPreviewScreen(place) + starPreviewScreen(place) } } @@ -142,7 +149,7 @@ class PlaceListScreen( .pushForResult( RoutePreviewScreen( carContext, - if (showAlternativeRoute) RoutePreviewType.MULTI_ROUTE else RoutePreviewType.SINGLE_ROUTE, + if (showAlternativeRoute) RoutePreviewType.MULTI_ROUTE else RoutePreviewType.SINGLE_ROUTE, surfaceRenderer, place, navigationViewModel, diff --git a/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt b/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt index 96e297d..17be864 100644 --- a/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt +++ b/common/data/src/main/java/com/kouros/navigation/utils/NavigationUtils.kt @@ -28,6 +28,7 @@ import kotlin.math.cos import kotlin.math.ln import kotlin.math.pow import kotlin.math.roundToInt +import kotlin.ranges.contains import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.seconds @@ -145,7 +146,7 @@ fun duration( 2.seconds } else { val updateDuration = java.time.Duration.between(LocalDateTime.now(), lastLocationUpdate) - if (updateDuration.toMillis().absoluteValue < 1000) { + if (updateDuration.toMillis().absoluteValue !in 1000..2000) { 2.seconds } else { ((updateDuration!!.toMillis().absoluteValue * 1.8).toDuration(DurationUnit.MILLISECONDS))