diff options
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/features')
3 files changed, 66 insertions, 2 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationFragment.kt b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationFragment.kt index 33884f7..f1288cb 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationFragment.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationFragment.kt @@ -284,7 +284,11 @@ class FakeLocationFragment : NavToolbarFragment(R.layout.fragment_fake_location) Action.UpdateMockLocationParameters( binding.edittextAltitude.text.toString().toFloat(), binding.edittextSpeed.text.toString().toFloat(), + binding.edittextBearing.text.toString().toFloat(), binding.edittextJitter.text.toString().toFloat(), + binding.edittextJitterAltitude.text.toString().toFloat(), + binding.edittextJitterSpeed.text.toString().toFloat(), + binding.edittextJitterBearing.text.toString().toFloat(), ) ) } catch (e: NumberFormatException) { @@ -305,12 +309,36 @@ class FakeLocationFragment : NavToolbarFragment(R.layout.fragment_fake_location) } @Suppress("UNUSED_PARAMETER") + private fun onBearingTextChanged(editable: Editable?) { + if(!validateBounds(binding.textlayoutBearing, 0.0f, 360.0f)) return + updateMockLocationParameters() + } + + @Suppress("UNUSED_PARAMETER") private fun onJitterTextChanged(editable: Editable?) { if(!validateBounds(binding.textlayoutJitter, 0.0f, 10000000.0f)) return updateMockLocationParameters() } @Suppress("UNUSED_PARAMETER") + private fun onJitterAltitudeTextChanged(editable: Editable?) { + if(!validateBounds(binding.textlayoutJitterAltitude, -100000.0f, 100000.0f)) return + updateMockLocationParameters() + } + + @Suppress("UNUSED_PARAMETER") + private fun onJitterSpeedTextChanged(editable: Editable?) { + if(!validateBounds(binding.textlayoutJitterSpeed, 0.0f, 299792458.0f)) return + updateMockLocationParameters() + } + + @Suppress("UNUSED_PARAMETER") + private fun onJitterBearingTextChanged(editable: Editable?) { + if(!validateBounds(binding.textlayoutJitterBearing, 0.0f, 360.0f)) return + updateMockLocationParameters() + } + + @Suppress("UNUSED_PARAMETER") private fun onLatTextChanged(editable: Editable?) { if (!binding.edittextLatitude.isFocused || !validateCoordinate(binding.textlayoutLatitude, 90f) @@ -406,12 +434,20 @@ class FakeLocationFragment : NavToolbarFragment(R.layout.fragment_fake_location) binding.edittextAltitude.addTextChangedListener(afterTextChanged = ::onAltitudeTextChanged) binding.edittextSpeed.addTextChangedListener(afterTextChanged = ::onSpeedTextChanged) + binding.edittextBearing.addTextChangedListener(afterTextChanged = ::onBearingTextChanged) binding.edittextJitter.addTextChangedListener(afterTextChanged = ::onJitterTextChanged) + binding.edittextJitterAltitude.addTextChangedListener(afterTextChanged = ::onJitterAltitudeTextChanged) + binding.edittextJitterSpeed.addTextChangedListener(afterTextChanged = ::onJitterSpeedTextChanged) + binding.edittextJitterBearing.addTextChangedListener(afterTextChanged = ::onJitterBearingTextChanged) binding.edittextLatitude.addTextChangedListener(afterTextChanged = ::onLatTextChanged) binding.edittextLongitude.addTextChangedListener(afterTextChanged = ::onLonTextChanged) binding.edittextAltitude.onFocusChangeListener = latLonOnFocusChangeListener binding.edittextSpeed.onFocusChangeListener = latLonOnFocusChangeListener + binding.edittextBearing.onFocusChangeListener = latLonOnFocusChangeListener binding.edittextJitter.onFocusChangeListener = latLonOnFocusChangeListener + binding.edittextJitterAltitude.onFocusChangeListener = latLonOnFocusChangeListener + binding.edittextJitterSpeed.onFocusChangeListener = latLonOnFocusChangeListener + binding.edittextJitterBearing.onFocusChangeListener = latLonOnFocusChangeListener binding.edittextLatitude.onFocusChangeListener = latLonOnFocusChangeListener binding.edittextLongitude.onFocusChangeListener = latLonOnFocusChangeListener @@ -435,7 +471,11 @@ class FakeLocationFragment : NavToolbarFragment(R.layout.fragment_fake_location) binding.textlayoutAltitude.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION binding.textlayoutSpeed.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION + binding.textlayoutBearing.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION binding.textlayoutJitter.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION + binding.textlayoutJitterAltitude.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION + binding.textlayoutJitterSpeed.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION + binding.textlayoutJitterBearing.isVisible = state.mode == LocationMode.SPECIFIC_LOCATION binding.buttonLocationRoutePathSelect.isVisible = state.mode == LocationMode.ROUTE binding.locationRoutePath.isVisible = state.mode == LocationMode.ROUTE @@ -455,9 +495,21 @@ class FakeLocationFragment : NavToolbarFragment(R.layout.fragment_fake_location) if(!binding.edittextSpeed.isFocused) binding.edittextSpeed.setText(state.speed?.toString()) + if(!binding.edittextBearing.isFocused) + binding.edittextBearing.setText(state.bearing?.toString()) + if(!binding.edittextJitter.isFocused) binding.edittextJitter.setText(state.jitter?.toString()) + if(!binding.edittextJitterAltitude.isFocused) + binding.edittextJitterAltitude.setText(state.jitterAltitude?.toString()) + + if(!binding.edittextJitterSpeed.isFocused) + binding.edittextJitterSpeed.setText(state.jitterSpeed?.toString()) + + if(!binding.edittextJitterBearing.isFocused) + binding.edittextJitterBearing.setText(state.jitterBearing?.toString()) + if (state.mode == LocationMode.SPECIFIC_LOCATION) { binding.mapLoader.isVisible = false binding.mapOverlay.isVisible = false diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationState.kt b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationState.kt index 56acdfd..41e1402 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationState.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationState.kt @@ -27,7 +27,11 @@ data class FakeLocationState( val currentLocation: Location? = null, val altitude: Float? = null, val speed: Float? = null, + val bearing: Float? = null, val jitter: Float? = null, + val jitterAltitude: Float? = null, + val jitterSpeed: Float? = null, + val jitterBearing: Float? = null, val specificLatitude: Float? = null, val specificLongitude: Float? = null, val forceRefresh: Boolean = false, diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt index 049c707..17d8c98 100644 --- a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt +++ b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt @@ -72,7 +72,11 @@ class FakeLocationViewModel( mode = ss.mode, altitude = ss.altitude, speed = ss.speed, + bearing = ss.bearing, jitter = ss.jitter, + jitterAltitude = ss.jitterAltitude, + jitterSpeed = ss.jitterSpeed, + jitterBearing = ss.jitterBearing, specificLatitude = ss.specificLatitude, specificLongitude = ss.specificLongitude, route = ss.route, @@ -86,7 +90,7 @@ class FakeLocationViewModel( }, mockLocationParametersInputFlow .debounce(SET_MOCK_LOCATION_PARAMETERS_DELAY).map { action -> - fakeLocationStateUseCase.setFakeLocationParameters(action.altitude, action.speed, action.jitter) + fakeLocationStateUseCase.setFakeLocationParameters(action.altitude, action.speed, action.bearing, action.jitter, action.jitterAltitude, action.jitterSpeed, action.jitterBearing) }, routeInputFlow .debounce(SET_ROUTE_DELAY).map { action -> @@ -154,7 +158,11 @@ class FakeLocationViewModel( data class UpdateMockLocationParameters( val altitude: Float, val speed: Float, - val jitter: Float + val bearing: Float, + val jitter: Float, + val jitterAltitude: Float, + val jitterSpeed: Float, + val jitterBearing: Float ) : Action() data class SetSpecificLocationAction( val latitude: Float, |