Merge pull request 'feat: Replay disabled' (#9) from issue.5.replay into master

Reviewed-on: https://hattori.ztsh.eu/stawros/Garmin/pulls/9

Resolves #5
This commit is contained in:
Piotr Dec 2024-08-15 22:21:32 +02:00
commit 9758da2a10
4 changed files with 70 additions and 7 deletions

View file

@ -36,7 +36,7 @@ class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding private lateinit var binding: ActivityMainBinding
private lateinit var mapControl: MapControl private lateinit var mapControl: MapControl
private val permissionsHelper = PermissionsHelper(WeakReference(this)) val permissionsHelper = PermissionsHelper(WeakReference(this))
val mapboxNavigation: MapboxNavigation by requireMapboxNavigation( val mapboxNavigation: MapboxNavigation by requireMapboxNavigation(
onResumedObserver = object : DefaultLifecycleObserver, MapboxNavigationObserver { onResumedObserver = object : DefaultLifecycleObserver, MapboxNavigationObserver {

View file

@ -51,7 +51,7 @@ class MapControl(
val navigationStatusControl = NavigationStatusControl() val navigationStatusControl = NavigationStatusControl()
val replay = ReplayResources(this) val tripControl = TripControl(this, TripMode.GPS)
// Observers // Observers
private lateinit var routeControl: RouteControl private lateinit var routeControl: RouteControl
@ -129,7 +129,7 @@ class MapControl(
enabled = true enabled = true
} }
replay.replayOriginLocation() tripControl.initLocation()
} }
fun mapboxNavigation(): MapboxNavigation { fun mapboxNavigation(): MapboxNavigation {
@ -144,7 +144,7 @@ class MapControl(
navigationStatusControl.registerObserver(searchControl) navigationStatusControl.registerObserver(searchControl)
replay.onAttached(mapboxNavigation) tripControl.onAttached(mapboxNavigation)
} }
override fun onDetached(mapboxNavigation: MapboxNavigation) { override fun onDetached(mapboxNavigation: MapboxNavigation) {
@ -155,7 +155,7 @@ class MapControl(
navigationStatusControl.unregisterObserver(searchControl) navigationStatusControl.unregisterObserver(searchControl)
replay.onDetached(mapboxNavigation) tripControl.onDetached(mapboxNavigation)
} }
fun onDestroy() { fun onDestroy() {

View file

@ -281,7 +281,7 @@ class RouteControl(private val mapControl: MapControl, ui: UI, private val conte
mapControl.navigationCamera.requestNavigationCameraToOverview() mapControl.navigationCamera.requestNavigationCameraToOverview()
// start simulation // start simulation
mapControl.replay.startSimulation(routes.first().directionsRoute) mapControl.tripControl.startSession(routes.first().directionsRoute)
mapControl.context.apply { mapControl.context.apply {
lifecycleScope.launch { lifecycleScope.launch {
@ -298,7 +298,7 @@ class RouteControl(private val mapControl: MapControl, ui: UI, private val conte
mapControl.mapboxNavigation().setNavigationRoutes(listOf()) mapControl.mapboxNavigation().setNavigationRoutes(listOf())
// stop simulation // stop simulation
mapControl.replay.stopSimulation() mapControl.tripControl.stopSession()
// hide UI elements // hide UI elements
mapControl.ui.soundButton.visibility = View.INVISIBLE mapControl.ui.soundButton.visibility = View.INVISIBLE

View file

@ -0,0 +1,63 @@
package eu.ztsh.garmin.mapbox
import com.mapbox.api.directions.v5.models.DirectionsRoute
import com.mapbox.navigation.core.MapboxNavigation
import eu.ztsh.garmin.MainActivity
import eu.ztsh.garmin.mock.ReplayResources
class TripControl(private val mapControl: MapControl, private val tripMode: TripMode) {
val replay = ReplayResources(mapControl)
fun onAttached(mapboxNavigation: MapboxNavigation) {
when (tripMode) {
TripMode.REPLAY -> replay.onAttached(mapboxNavigation)
TripMode.GPS -> startSession(mapboxNavigation)
}
}
fun onDetached(mapboxNavigation: MapboxNavigation) {
when (tripMode) {
TripMode.REPLAY -> replay.onDetached(mapboxNavigation)
TripMode.GPS -> stopSession(mapboxNavigation)
}
}
fun initLocation() {
if (tripMode == TripMode.REPLAY) {
replay.replayOriginLocation()
}
}
fun startSession(mapboxNavigation: MapboxNavigation) {
if (tripMode == TripMode.GPS) {
(mapControl.context as MainActivity).permissionsHelper.checkPermissions {
mapboxNavigation.startTripSession()
}
}
}
fun startSession(directionsRoute: DirectionsRoute) {
if (tripMode == TripMode.REPLAY) {
replay.startSimulation(directionsRoute)
}
}
fun stopSession() {
if (tripMode == TripMode.REPLAY) {
replay.stopSimulation()
}
}
fun stopSession(mapboxNavigation: MapboxNavigation) {
if (tripMode == TripMode.GPS) {
mapboxNavigation.stopTripSession()
}
}
}
enum class TripMode {
GPS,
REPLAY
}