diff --git a/README.md b/README.md index ccc1f97..e1fd650 100644 --- a/README.md +++ b/README.md @@ -53,10 +53,11 @@ This app uses Google Crashlytics for crash reporting to help improve stability a ## Extension Developers: Headwind Data Type If the user has installed the headwind extension on his karoo, you can stream the headwind data type from other extensions via `karoo-ext`. -Use extension id `karoo-headwind` with datatype ids `headwind` and `userwindSpeed`. +Use extension id `karoo-headwind` with datatype ids `headwind`, `windDirection`, `headwindSpeed`, `windSpeed` etc. -- The `headwind` datatype contains a single field that either represents an error code or the wind direction. A `-1.0` indicates missing gps receiption, `-2.0` no weather data, `-3.0` that the headwind extension -has not been set up. Otherwise, the value is the wind direction in degrees; if the user has set the headwind indicator to depict the absolute wind direction, the field will contain the absolute wind direction; otherwise -it will contain the headwind direction. -- The `userwindSpeed` datatype contains a single field with the wind speed in the user's defined unit. If the user has set the headwind indicator to show the absolute wind speed, -this field will contain the absolute wind speed; otherwise it will contain the headwind speed. +- The `headwind` datatype contains a single field that either represents an error code or the *relative* wind direction. A `-1.0` indicates missing gps receiption, `-2.0` no weather data, `-3.0` that the headwind extension +has not been set up. Otherwise, the value is the headwind direction in degrees. +- The `windDirection` datatype contains a single field with the *absolute* wind direction in degrees (so 0 = North, 90 = East etc.) +- The `headwindSpeed` datatype contains a single field that contains the *relative* headwind speed in meters per second. +- The `windSpeed` datatype contains a single field that contains the *absolute* wind speed in meters per second. +- Other datatypes like `windGusts` etc. are also available, see [extension_info.xml](https://github.com/timklge/karoo-headwind/blob/master/app/src/main/res/xml/extension_info.xml) \ No newline at end of file diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/HeadwindSettings.kt b/app/src/main/kotlin/de/timklge/karooheadwind/HeadwindSettings.kt index f5cd6ec..b77dbf5 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/HeadwindSettings.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/HeadwindSettings.kt @@ -18,17 +18,6 @@ enum class PrecipitationUnit(val id: String, val label: String, val unitDisplay: INCH("inch", "Inch", "in") } -enum class WindDirectionIndicatorTextSetting(val id: String, val label: String){ - HEADWIND_SPEED("headwind-speed", "Headwind speed"), - WIND_SPEED("absolute-wind-speed", "Absolute wind speed"), - NONE("none", "None") -} - -enum class WindDirectionIndicatorSetting(val id: String, val label: String){ - HEADWIND_DIRECTION("headwind-direction", "Headwind"), - WIND_DIRECTION("wind-direction", "Absolute wind direction"), -} - enum class TemperatureUnit(val id: String, val label: String, val unitDisplay: String){ CELSIUS("celsius", "Celsius (°C)", "°C"), FAHRENHEIT("fahrenheit", "Fahrenheit (°F)", "°F") @@ -91,8 +80,6 @@ enum class RefreshRate(val id: String, val k2Ms: Long, val k3Ms: Long) { @Serializable data class HeadwindSettings( val welcomeDialogAccepted: Boolean = false, - val windDirectionIndicatorTextSetting: WindDirectionIndicatorTextSetting = WindDirectionIndicatorTextSetting.HEADWIND_SPEED, - val windDirectionIndicatorSetting: WindDirectionIndicatorSetting = WindDirectionIndicatorSetting.HEADWIND_DIRECTION, val roundLocationTo: RoundLocationSetting = RoundLocationSetting.KM_3, val forecastedKmPerHour: Int = 20, val forecastedMilesPerHour: Int = 12, diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/KarooHeadwindExtension.kt b/app/src/main/kotlin/de/timklge/karooheadwind/KarooHeadwindExtension.kt index dbb222f..bdfad02 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/KarooHeadwindExtension.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/KarooHeadwindExtension.kt @@ -20,7 +20,6 @@ import de.timklge.karooheadwind.datatypes.TailwindAndRideSpeedDataType import de.timklge.karooheadwind.datatypes.TailwindDataType import de.timklge.karooheadwind.datatypes.TemperatureDataType import de.timklge.karooheadwind.datatypes.TemperatureForecastDataType -import de.timklge.karooheadwind.datatypes.UserWindSpeedDataType import de.timklge.karooheadwind.datatypes.WeatherDataType import de.timklge.karooheadwind.datatypes.WeatherForecastDataType import de.timklge.karooheadwind.datatypes.WindDirectionDataType @@ -81,7 +80,6 @@ class KarooHeadwindExtension : KarooExtension("karoo-headwind", BuildConfig.VERS PrecipitationDataType(karooSystem, applicationContext), SurfacePressureDataType(karooSystem, applicationContext), SealevelPressureDataType(karooSystem, applicationContext), - UserWindSpeedDataType(karooSystem, applicationContext), TemperatureForecastDataType(karooSystem), PrecipitationForecastDataType(karooSystem), WindForecastDataType(karooSystem), diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt index c5411af..a3f8693 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/HeadwindDirectionDataType.kt @@ -9,7 +9,6 @@ import androidx.glance.appwidget.GlanceRemoteViews import de.timklge.karooheadwind.HeadingResponse import de.timklge.karooheadwind.HeadwindSettings import de.timklge.karooheadwind.KarooHeadwindExtension -import de.timklge.karooheadwind.WindDirectionIndicatorSetting import de.timklge.karooheadwind.getRelativeHeadingFlow import de.timklge.karooheadwind.streamCurrentWeatherData import de.timklge.karooheadwind.streamDatatypeIsVisible @@ -17,6 +16,7 @@ import de.timklge.karooheadwind.streamSettings import de.timklge.karooheadwind.streamUserProfile import de.timklge.karooheadwind.throttle import de.timklge.karooheadwind.util.msInUserUnit +import de.timklge.karooheadwind.weatherprovider.WeatherData import io.hammerhead.karooext.KarooSystemService import io.hammerhead.karooext.extension.DataTypeImpl import io.hammerhead.karooext.internal.Emitter @@ -39,6 +39,7 @@ import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flow import kotlinx.coroutines.launch +import kotlin.math.cos import kotlin.math.roundToInt @OptIn(ExperimentalGlanceRemoteViewsApi::class) @@ -84,10 +85,7 @@ class HeadwindDirectionDataType( returnValue = errorCode } else { - var windDirection = when (streamData.settings.windDirectionIndicatorSetting){ - WindDirectionIndicatorSetting.HEADWIND_DIRECTION -> value - WindDirectionIndicatorSetting.WIND_DIRECTION -> streamData.absoluteWindDirection + 180 - } + var windDirection = value if (windDirection < 0) windDirection += 360 @@ -154,7 +152,7 @@ class HeadwindDirectionDataType( val directionFlow = streamValues() val speedFlow = flow { emit(0.0) - emitAll(UserWindSpeedDataType.streamValues(context, karooSystem)) + emitAll(streamValues(context, karooSystem)) } combine(directionFlow, speedFlow, karooSystem.streamDatatypeIsVisible(dataTypeId), karooSystem.streamUserProfile()) { direction, speed, isVisible, profile -> @@ -203,6 +201,26 @@ class HeadwindDirectionDataType( const val ERROR_NO_GPS = -1 const val ERROR_NO_WEATHER_DATA = -2 const val ERROR_APP_NOT_SET_UP = -3 + + fun streamValues(context: Context, karooSystem: KarooSystemService): Flow = flow { + data class StreamData( + val headingResponse: HeadingResponse, + val weatherResponse: WeatherData?, + val settings: HeadwindSettings + ) + + combine(karooSystem.getRelativeHeadingFlow(context), context.streamCurrentWeatherData(karooSystem), context.streamSettings(karooSystem)) { headingResponse, weatherResponse, settings -> + StreamData(headingResponse, weatherResponse, settings) + }.filter { it.weatherResponse != null } + .collect { streamData -> + val windSpeed = streamData.weatherResponse?.windSpeed ?: 0.0 + val windDirection = (streamData.headingResponse as? HeadingResponse.Value)?.diff ?: 0.0 + + val headwindSpeed = cos((windDirection + 180) * Math.PI / 180.0) * windSpeed + + emit(headwindSpeed) + } + } } } diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindAndRideSpeedDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindAndRideSpeedDataType.kt index fa23877..555345e 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindAndRideSpeedDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindAndRideSpeedDataType.kt @@ -15,8 +15,6 @@ import de.timklge.karooheadwind.HeadingResponse import de.timklge.karooheadwind.HeadwindSettings import de.timklge.karooheadwind.KarooHeadwindExtension import de.timklge.karooheadwind.R -import de.timklge.karooheadwind.WindDirectionIndicatorSetting -import de.timklge.karooheadwind.WindDirectionIndicatorTextSetting import de.timklge.karooheadwind.datatypes.TailwindDataType.StreamData import de.timklge.karooheadwind.getRelativeHeadingFlow import de.timklge.karooheadwind.streamCurrentWeatherData @@ -161,10 +159,7 @@ class TailwindAndRideSpeedDataType( } val windSpeed = streamData.windSpeed - val windDirection = when (streamData.settings.windDirectionIndicatorSetting){ - WindDirectionIndicatorSetting.HEADWIND_DIRECTION -> streamData.headingResponse.diff - WindDirectionIndicatorSetting.WIND_DIRECTION -> streamData.absoluteWindDirection + 180 - } + val windDirection = streamData.headingResponse.diff val rideSpeedInUserUnit = msInUserUnit(streamData.rideSpeed ?: 0.0, streamData.isImperial) val text = String.format(Locale.current.platformLocale, "%.1f", rideSpeedInUserUnit) @@ -181,32 +176,27 @@ class TailwindAndRideSpeedDataType( val windSpeedUserUnit = msInUserUnit(windSpeed, streamData.isImperial) - val subtextWithSign = when (streamData.settings.windDirectionIndicatorTextSetting) { - WindDirectionIndicatorTextSetting.HEADWIND_SPEED -> { - val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed - headwindSpeed.roundToInt().toString() + val subtextWithSign = let { + val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed + headwindSpeed.roundToInt().toString() - val sign = if (headwindSpeed < 0) "+" else { - if (headwindSpeed > 0) "-" else "" - } - - val headwindSpeedUserUnit = msInUserUnit(headwindSpeed, streamData.isImperial) - - "$sign${headwindSpeedUserUnit.roundToInt().absoluteValue} ${windSpeedUserUnit.roundToInt()}${gustSpeedAddon}" + val sign = if (headwindSpeed < 0) "+" else { + if (headwindSpeed > 0) "-" else "" } - WindDirectionIndicatorTextSetting.WIND_SPEED -> "${windSpeedUserUnit.roundToInt()}${gustSpeedAddon}" - WindDirectionIndicatorTextSetting.NONE -> "" + + val headwindSpeedUserUnit = msInUserUnit(headwindSpeed, streamData.isImperial) + + "$sign${headwindSpeedUserUnit.roundToInt().absoluteValue} ${windSpeedUserUnit.roundToInt()}${gustSpeedAddon}" } + var dayColor = Color(ContextCompat.getColor(context, R.color.black)) var nightColor = Color(ContextCompat.getColor(context, R.color.white)) - if (streamData.settings.windDirectionIndicatorSetting == WindDirectionIndicatorSetting.HEADWIND_DIRECTION) { - val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed - val windSpeedInKmh = headwindSpeed * 3.6 - dayColor = interpolateWindColor(windSpeedInKmh, false, context) - nightColor = interpolateWindColor(windSpeedInKmh, true, context) - } + val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed + val windSpeedInKmh = headwindSpeed * 3.6 + dayColor = interpolateWindColor(windSpeedInKmh, false, context) + nightColor = interpolateWindColor(windSpeedInKmh, true, context) val result = glance.compose(context, DpSize.Unspecified) { HeadwindDirection( diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindDataType.kt index fc9782a..73aa608 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindDataType.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/TailwindDataType.kt @@ -12,8 +12,6 @@ import de.timklge.karooheadwind.HeadingResponse import de.timklge.karooheadwind.HeadwindSettings import de.timklge.karooheadwind.KarooHeadwindExtension import de.timklge.karooheadwind.R -import de.timklge.karooheadwind.WindDirectionIndicatorSetting -import de.timklge.karooheadwind.WindDirectionIndicatorTextSetting import de.timklge.karooheadwind.getRelativeHeadingFlow import de.timklge.karooheadwind.streamCurrentWeatherData import de.timklge.karooheadwind.streamDataFlow @@ -147,26 +145,19 @@ class TailwindDataType( } val windSpeed = streamData.windSpeed - val windDirection = when (streamData.settings.windDirectionIndicatorSetting){ - WindDirectionIndicatorSetting.HEADWIND_DIRECTION -> streamData.headingResponse.diff - WindDirectionIndicatorSetting.WIND_DIRECTION -> streamData.absoluteWindDirection + 180 - } + val windDirection = streamData.headingResponse.diff - val mainText = when (streamData.settings.windDirectionIndicatorTextSetting) { - WindDirectionIndicatorTextSetting.HEADWIND_SPEED -> { - val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed - headwindSpeed.roundToInt().toString() + val mainText = let { + val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed + headwindSpeed.roundToInt().toString() - val sign = if (headwindSpeed < 0) "+" else { - if (headwindSpeed > 0) "-" else "" - } - - val headwindSpeedUserUnit = msInUserUnit(headwindSpeed, streamData.isImperial) - - "$sign${headwindSpeedUserUnit.roundToInt().absoluteValue}" + val sign = if (headwindSpeed < 0) "+" else { + if (headwindSpeed > 0) "-" else "" } - WindDirectionIndicatorTextSetting.WIND_SPEED -> msInUserUnit(windSpeed, streamData.isImperial).roundToInt().toString() - WindDirectionIndicatorTextSetting.NONE -> "" + + val headwindSpeedUserUnit = msInUserUnit(headwindSpeed, streamData.isImperial) + + "$sign${headwindSpeedUserUnit.roundToInt().absoluteValue}" } val windSpeedUserUnit = msInUserUnit(windSpeed, streamData.isImperial) @@ -177,12 +168,10 @@ class TailwindDataType( var dayColor = Color(ContextCompat.getColor(context, R.color.black)) var nightColor = Color(ContextCompat.getColor(context, R.color.white)) - if (streamData.settings.windDirectionIndicatorSetting == WindDirectionIndicatorSetting.HEADWIND_DIRECTION) { - val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed - val windSpeedInKmh = headwindSpeed * 3.6 - dayColor = interpolateWindColor(windSpeedInKmh, false, context) - nightColor = interpolateWindColor(windSpeedInKmh, true, context) - } + val headwindSpeed = cos( (windDirection + 180) * Math.PI / 180.0) * windSpeed + val windSpeedInKmh = headwindSpeed * 3.6 + dayColor = interpolateWindColor(windSpeedInKmh, false, context) + nightColor = interpolateWindColor(windSpeedInKmh, true, context) val result = glance.compose(context, DpSize.Unspecified) { HeadwindDirection( diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/UserWindSpeedDataType.kt b/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/UserWindSpeedDataType.kt deleted file mode 100644 index b44ef80..0000000 --- a/app/src/main/kotlin/de/timklge/karooheadwind/datatypes/UserWindSpeedDataType.kt +++ /dev/null @@ -1,75 +0,0 @@ -package de.timklge.karooheadwind.datatypes - -import android.content.Context -import de.timklge.karooheadwind.HeadingResponse -import de.timklge.karooheadwind.HeadwindSettings -import de.timklge.karooheadwind.weatherprovider.WeatherData -import de.timklge.karooheadwind.WindDirectionIndicatorTextSetting -import de.timklge.karooheadwind.getRelativeHeadingFlow -import de.timklge.karooheadwind.streamCurrentWeatherData -import de.timklge.karooheadwind.streamSettings -import io.hammerhead.karooext.KarooSystemService -import io.hammerhead.karooext.extension.DataTypeImpl -import io.hammerhead.karooext.internal.Emitter -import io.hammerhead.karooext.models.DataPoint -import io.hammerhead.karooext.models.DataType -import io.hammerhead.karooext.models.StreamState -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.filter -import kotlinx.coroutines.flow.flow -import kotlinx.coroutines.launch -import kotlin.math.cos - -class UserWindSpeedDataType( - private val karooSystem: KarooSystemService, - private val context: Context -) : DataTypeImpl("karoo-headwind", "userwindSpeed"){ - - data class StreamData(val headingResponse: HeadingResponse, val weatherResponse: WeatherData?, val settings: HeadwindSettings) - - companion object { - fun streamValues(context: Context, karooSystem: KarooSystemService): Flow = flow { - karooSystem.getRelativeHeadingFlow(context) - .combine(context.streamCurrentWeatherData(karooSystem)) { value, data -> value to data } - .combine(context.streamSettings(karooSystem)) { (value, data), settings -> - StreamData(value, data, settings) - } - .filter { it.weatherResponse != null } - .collect { streamData -> - val windSpeed = streamData.weatherResponse?.windSpeed ?: 0.0 - val windDirection = (streamData.headingResponse as? HeadingResponse.Value)?.diff ?: 0.0 - - if (streamData.settings.windDirectionIndicatorTextSetting == WindDirectionIndicatorTextSetting.HEADWIND_SPEED){ - val headwindSpeed = cos((windDirection + 180) * Math.PI / 180.0) * windSpeed - - emit(headwindSpeed) - } else { - emit(windSpeed) - } - } - } - } - - override fun startStream(emitter: Emitter) { - val job = CoroutineScope(Dispatchers.IO).launch { - streamValues(context, karooSystem) - .collect { value -> - emitter.onNext( - StreamState.Streaming( - DataPoint( - dataTypeId, - mapOf(DataType.Field.SINGLE to value) - ) - ) - ) - } - } - - emitter.setCancellable { - job.cancel() - } - } -} \ No newline at end of file diff --git a/app/src/main/kotlin/de/timklge/karooheadwind/screens/SettingsScreen.kt b/app/src/main/kotlin/de/timklge/karooheadwind/screens/SettingsScreen.kt index df4b9ee..ec92b89 100644 --- a/app/src/main/kotlin/de/timklge/karooheadwind/screens/SettingsScreen.kt +++ b/app/src/main/kotlin/de/timklge/karooheadwind/screens/SettingsScreen.kt @@ -42,8 +42,6 @@ import de.timklge.karooheadwind.KarooHeadwindExtension import de.timklge.karooheadwind.RefreshRate import de.timklge.karooheadwind.RoundLocationSetting import de.timklge.karooheadwind.WeatherDataProvider -import de.timklge.karooheadwind.WindDirectionIndicatorSetting -import de.timklge.karooheadwind.WindDirectionIndicatorTextSetting import de.timklge.karooheadwind.datatypes.GpsCoordinates import de.timklge.karooheadwind.saveSettings import de.timklge.karooheadwind.streamSettings @@ -64,16 +62,6 @@ fun SettingsScreen(onFinish: () -> Unit) { val karooSystem = remember { KarooSystemService(ctx) } var refreshRateSetting by remember { mutableStateOf(RefreshRate.STANDARD) } - var selectedWindDirectionIndicatorTextSetting by remember { - mutableStateOf( - WindDirectionIndicatorTextSetting.HEADWIND_SPEED - ) - } - var selectedWindDirectionIndicatorSetting by remember { - mutableStateOf( - WindDirectionIndicatorSetting.HEADWIND_DIRECTION - ) - } var selectedRoundLocationSetting by remember { mutableStateOf(RoundLocationSetting.KM_3) } var forecastKmPerHour by remember { mutableStateOf("20") } @@ -88,8 +76,6 @@ fun SettingsScreen(onFinish: () -> Unit) { LaunchedEffect(Unit) { ctx.streamSettings(karooSystem).collect { settings -> - selectedWindDirectionIndicatorTextSetting = settings.windDirectionIndicatorTextSetting - selectedWindDirectionIndicatorSetting = settings.windDirectionIndicatorSetting selectedRoundLocationSetting = settings.roundLocationTo forecastKmPerHour = settings.forecastedKmPerHour.toString() forecastMilesPerHour = settings.forecastedMilesPerHour.toString() @@ -118,8 +104,6 @@ fun SettingsScreen(onFinish: () -> Unit) { val newSettings = HeadwindSettings( welcomeDialogAccepted = true, - windDirectionIndicatorSetting = selectedWindDirectionIndicatorSetting, - windDirectionIndicatorTextSetting = selectedWindDirectionIndicatorTextSetting, roundLocationTo = selectedRoundLocationSetting, forecastedMilesPerHour = forecastMilesPerHour.toIntOrNull()?.coerceIn(3, 30) ?: 12, forecastedKmPerHour = forecastKmPerHour.toIntOrNull()?.coerceIn(5, 50) ?: 20, @@ -165,37 +149,6 @@ fun SettingsScreen(onFinish: () -> Unit) { refreshRateSetting = RefreshRate.entries.find { unit -> unit.id == selectedOption.id }!! } - val windDirectionIndicatorSettingDropdownOptions = - WindDirectionIndicatorSetting.entries.toList().map { unit -> DropdownOption(unit.id, unit.label) } - val windDirectionIndicatorSettingSelection by remember(selectedWindDirectionIndicatorSetting) { - mutableStateOf(windDirectionIndicatorSettingDropdownOptions.find { option -> option.id == selectedWindDirectionIndicatorSetting.id }!!) - } - Dropdown( - label = "Wind Direction Indicator", - options = windDirectionIndicatorSettingDropdownOptions, - selected = windDirectionIndicatorSettingSelection - ) { selectedOption -> - selectedWindDirectionIndicatorSetting = - WindDirectionIndicatorSetting.entries.find { unit -> unit.id == selectedOption.id }!! - } - - val windDirectionIndicatorTextSettingDropdownOptions = - WindDirectionIndicatorTextSetting.entries.toList() - .map { unit -> DropdownOption(unit.id, unit.label) } - val windDirectionIndicatorTextSettingSelection by remember( - selectedWindDirectionIndicatorTextSetting - ) { - mutableStateOf(windDirectionIndicatorTextSettingDropdownOptions.find { option -> option.id == selectedWindDirectionIndicatorTextSetting.id }!!) - } - Dropdown( - label = "Text on Headwind Indicator", - options = windDirectionIndicatorTextSettingDropdownOptions, - selected = windDirectionIndicatorTextSettingSelection - ) { selectedOption -> - selectedWindDirectionIndicatorTextSetting = - WindDirectionIndicatorTextSetting.entries.find { unit -> unit.id == selectedOption.id }!! - } - val roundLocationDropdownOptions = RoundLocationSetting.entries.toList() .map { unit -> DropdownOption(unit.id, unit.label) } val roundLocationInitialSelection by remember(selectedRoundLocationSetting) { diff --git a/app/src/main/res/xml/extension_info.xml b/app/src/main/res/xml/extension_info.xml index a701f6a..90514ac 100644 --- a/app/src/main/res/xml/extension_info.xml +++ b/app/src/main/res/xml/extension_info.xml @@ -75,13 +75,6 @@ icon="@drawable/wind" typeId="headwindSpeed" /> - -