Show sensor state in secondary label in Wear OS sensor UI (#3959)

* Show sensor state in secondary label in Wear OS sensor UI

* Review comments

* Remove runBlocking in previews and invert label check to match phone
This commit is contained in:
Daniel Shokouhi 2023-10-20 14:46:41 -07:00 committed by GitHub
parent cda25479d6
commit e10ec793d4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -21,6 +21,7 @@ import io.homeassistant.companion.android.database.sensor.Sensor
import io.homeassistant.companion.android.theme.getToggleButtonColors
import io.homeassistant.companion.android.util.ToggleSwitch
import io.homeassistant.companion.android.util.batterySensorManager
import io.homeassistant.companion.android.views.ThemeLazyColumn
import kotlinx.coroutines.runBlocking
@SuppressLint("InlinedApi")
@ -85,6 +86,13 @@ fun SensorUi(
overflow = TextOverflow.Ellipsis
)
},
secondaryLabel = {
if (sensor?.enabled == true) {
sensor.state.let {
Text(if (basicSensor.unitOfMeasurement.isNullOrBlank() || sensor.state.toDoubleOrNull() == null) it else "$it ${sensor.unitOfMeasurement}")
}
}
},
selectionControl = { ToggleSwitch(isChecked) },
colors = getToggleButtonColors()
)
@ -94,11 +102,43 @@ fun SensorUi(
@Composable
private fun PreviewSensorUI() {
val context = LocalContext.current
val batterySensors = runBlocking { batterySensorManager.getAvailableSensors(context) }
CompositionLocalProvider {
SensorUi(
sensor = null,
manager = batterySensorManager,
basicSensor = runBlocking { batterySensorManager.getAvailableSensors(context).first() }
) { _, _ -> }
ThemeLazyColumn {
item {
SensorUi(
sensor = Sensor(
"battery_level",
0,
true,
state = "80",
unitOfMeasurement = "%"
),
manager = batterySensorManager,
basicSensor = batterySensors.first { it.id == "battery_level" }
) { _, _ -> }
}
item {
SensorUi(
sensor = Sensor(
"is_charging",
0,
true,
state = "true"
),
manager = batterySensorManager,
basicSensor = batterySensors.first { it.id == "is_charging" }
) { _, _ -> }
}
item {
SensorUi(
sensor = null,
manager = batterySensorManager,
basicSensor = batterySensors.first { it.id == "battery_power" }
) { _, _ -> }
}
}
}
}