mirror of
https://github.com/home-assistant/android
synced 2024-10-01 13:53:53 +00:00
Various changes to entity usage (#3816)
* Various changes to entity usage * Remove unneeded code * String fixes * Remove redundant string
This commit is contained in:
parent
cde8dc9ee9
commit
6c2e555e57
|
@ -15,13 +15,11 @@ import io.homeassistant.companion.android.R
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.util.capitalize
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import kotlinx.coroutines.withTimeoutOrNull
|
||||
import java.net.URL
|
||||
import java.util.Locale
|
||||
import java.util.concurrent.TimeUnit
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
||||
|
@ -36,15 +34,6 @@ object CameraControl : HaControl {
|
|||
area: AreaRegistryResponse?,
|
||||
baseUrl: String?
|
||||
): Control.StatefulBuilder {
|
||||
control.setStatusText(
|
||||
when (entity.state) {
|
||||
"idle" -> context.getString(commonR.string.state_idle)
|
||||
"recording" -> context.getString(commonR.string.state_recording)
|
||||
"streaming" -> context.getString(commonR.string.state_streaming)
|
||||
else -> entity.state.capitalize(Locale.getDefault())
|
||||
}
|
||||
)
|
||||
|
||||
val image = if (baseUrl != null && (entity.attributes["entity_picture"] as? String)?.isNotBlank() == true) {
|
||||
getThumbnail(baseUrl + entity.attributes["entity_picture"] as String)
|
||||
} else {
|
||||
|
|
|
@ -39,19 +39,6 @@ object ClimateControl : HaControl {
|
|||
area: AreaRegistryResponse?,
|
||||
baseUrl: String?
|
||||
): Control.StatefulBuilder {
|
||||
control.setStatusText(
|
||||
when (entity.state) {
|
||||
"auto" -> context.getString(commonR.string.state_auto)
|
||||
"cool" -> context.getString(commonR.string.state_cool)
|
||||
"dry" -> context.getString(commonR.string.state_dry)
|
||||
"fan_only" -> context.getString(commonR.string.state_fan_only)
|
||||
"heat" -> context.getString(commonR.string.state_heat)
|
||||
"heat_cool" -> context.getString(commonR.string.state_heat_cool)
|
||||
"off" -> context.getString(commonR.string.state_off)
|
||||
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
||||
else -> entity.state
|
||||
}
|
||||
)
|
||||
val minValue = (entity.attributes["min_temp"] as? Number)?.toFloat() ?: 0f
|
||||
val maxValue = (entity.attributes["max_temp"] as? Number)?.toFloat() ?: 100f
|
||||
var currentValue = (entity.attributes["temperature"] as? Number)?.toFloat() ?: (
|
||||
|
|
|
@ -15,6 +15,7 @@ import androidx.annotation.RequiresApi
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.getCoverPosition
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
||||
|
@ -28,22 +29,12 @@ object CoverControl : HaControl {
|
|||
area: AreaRegistryResponse?,
|
||||
baseUrl: String?
|
||||
): Control.StatefulBuilder {
|
||||
control.setStatusText(
|
||||
when (entity.state) {
|
||||
"closed" -> context.getString(commonR.string.state_closed)
|
||||
"closing" -> context.getString(commonR.string.state_closing)
|
||||
"open" -> context.getString(commonR.string.state_open)
|
||||
"opening" -> context.getString(commonR.string.state_opening)
|
||||
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
||||
else -> entity.state
|
||||
}
|
||||
)
|
||||
val position = entity.getCoverPosition()
|
||||
control.setControlTemplate(
|
||||
if ((entity.attributes["supported_features"] as Int) and SUPPORT_SET_POSITION == SUPPORT_SET_POSITION) {
|
||||
ToggleRangeTemplate(
|
||||
entity.entityId,
|
||||
entity.state in listOf("open", "opening"),
|
||||
entity.isActive(),
|
||||
"",
|
||||
RangeTemplate(
|
||||
entity.entityId,
|
||||
|
@ -58,7 +49,7 @@ object CoverControl : HaControl {
|
|||
ToggleTemplate(
|
||||
entity.entityId,
|
||||
ControlButton(
|
||||
entity.state in listOf("open", "opening"),
|
||||
entity.isActive(),
|
||||
"Description"
|
||||
)
|
||||
)
|
||||
|
|
|
@ -12,6 +12,7 @@ import androidx.annotation.RequiresApi
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.domain
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.util.capitalize
|
||||
import java.util.Locale
|
||||
|
@ -30,7 +31,7 @@ object DefaultSwitchControl : HaControl {
|
|||
ToggleTemplate(
|
||||
entity.entityId,
|
||||
ControlButton(
|
||||
entity.state == "on",
|
||||
entity.isActive(),
|
||||
"Description"
|
||||
)
|
||||
)
|
||||
|
|
|
@ -15,6 +15,7 @@ import androidx.annotation.RequiresApi
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.getFanSpeed
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.integration.supportsFanSetSpeed
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
@ -33,7 +34,7 @@ object FanControl : HaControl {
|
|||
control.setControlTemplate(
|
||||
ToggleRangeTemplate(
|
||||
entity.entityId,
|
||||
entity.state == "on",
|
||||
entity.isActive(),
|
||||
"",
|
||||
RangeTemplate(
|
||||
entity.entityId,
|
||||
|
@ -50,7 +51,7 @@ object FanControl : HaControl {
|
|||
ToggleTemplate(
|
||||
entity.entityId,
|
||||
ControlButton(
|
||||
entity.state == "on",
|
||||
entity.isActive(),
|
||||
""
|
||||
)
|
||||
)
|
||||
|
|
|
@ -16,6 +16,7 @@ import io.homeassistant.companion.android.common.R
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.domain
|
||||
import io.homeassistant.companion.android.common.data.integration.friendlyState
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.webview.WebViewActivity
|
||||
|
||||
|
@ -46,14 +47,7 @@ interface HaControl {
|
|||
(info.area?.name ?: getDomainString(context, entity))
|
||||
)
|
||||
control.setStatus(Control.STATUS_OK)
|
||||
control.setStatusText(
|
||||
when (entity.state) {
|
||||
"off" -> context.getString(R.string.state_off)
|
||||
"on" -> context.getString(R.string.state_on)
|
||||
"unavailable" -> context.getString(R.string.state_unavailable)
|
||||
else -> context.getString(R.string.state_unknown)
|
||||
}
|
||||
)
|
||||
control.setStatusText(entity.friendlyState(context))
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||
control.setAuthRequired(info.authRequired)
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ import androidx.annotation.RequiresApi
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.getLightBrightness
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.integration.supportsLightBrightness
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
@ -33,7 +34,7 @@ object LightControl : HaControl {
|
|||
if (entity.supportsLightBrightness()) {
|
||||
ToggleRangeTemplate(
|
||||
entity.entityId,
|
||||
entity.state == "on",
|
||||
entity.isActive(),
|
||||
"",
|
||||
RangeTemplate(
|
||||
entity.entityId,
|
||||
|
@ -48,7 +49,7 @@ object LightControl : HaControl {
|
|||
ToggleTemplate(
|
||||
entity.entityId,
|
||||
ControlButton(
|
||||
entity.state == "on",
|
||||
entity.isActive(),
|
||||
"Description"
|
||||
)
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.service.controls.templates.ToggleTemplate
|
|||
import androidx.annotation.RequiresApi
|
||||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
||||
|
@ -23,22 +24,11 @@ object LockControl : HaControl {
|
|||
area: AreaRegistryResponse?,
|
||||
baseUrl: String?
|
||||
): Control.StatefulBuilder {
|
||||
control.setStatusText(
|
||||
when (entity.state) {
|
||||
"jammed" -> context.getString(commonR.string.state_jammed)
|
||||
"locked" -> context.getString(commonR.string.state_locked)
|
||||
"locking" -> context.getString(commonR.string.state_locking)
|
||||
"unlocked" -> context.getString(commonR.string.state_unlocked)
|
||||
"unlocking" -> context.getString(commonR.string.state_unlocking)
|
||||
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
||||
else -> context.getString(commonR.string.state_unknown)
|
||||
}
|
||||
)
|
||||
control.setControlTemplate(
|
||||
ToggleTemplate(
|
||||
entity.entityId,
|
||||
ControlButton(
|
||||
entity.state == "locked",
|
||||
entity.isActive(),
|
||||
"Description"
|
||||
)
|
||||
)
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.service.controls.templates.ToggleTemplate
|
|||
import androidx.annotation.RequiresApi
|
||||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
||||
|
@ -27,29 +28,11 @@ object VacuumControl : HaControl {
|
|||
baseUrl: String?
|
||||
): Control.StatefulBuilder {
|
||||
entitySupportedFeatures = entity.attributes["supported_features"] as Int
|
||||
if (entitySupportedFeatures and SUPPORT_TURN_ON != SUPPORT_TURN_ON) {
|
||||
control.setStatusText(
|
||||
when (entity.state) {
|
||||
"cleaning" -> context.getString(commonR.string.state_cleaning)
|
||||
"docked" -> context.getString(commonR.string.state_docked)
|
||||
"error" -> context.getString(commonR.string.state_error)
|
||||
"idle" -> context.getString(commonR.string.state_idle)
|
||||
"paused" -> context.getString(commonR.string.state_paused)
|
||||
"returning" -> context.getString(commonR.string.state_returning)
|
||||
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
||||
else -> context.getString(commonR.string.state_unknown)
|
||||
}
|
||||
)
|
||||
}
|
||||
control.setControlTemplate(
|
||||
ToggleTemplate(
|
||||
entity.entityId,
|
||||
ControlButton(
|
||||
if (entitySupportedFeatures and SUPPORT_TURN_ON == SUPPORT_TURN_ON) {
|
||||
entity.state == "on"
|
||||
} else {
|
||||
entity.state == "cleaning"
|
||||
},
|
||||
entity.isActive(),
|
||||
"Description"
|
||||
)
|
||||
)
|
||||
|
|
|
@ -24,6 +24,7 @@ import dagger.hilt.components.SingletonComponent
|
|||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.EntityExt
|
||||
import io.homeassistant.companion.android.common.data.integration.getIcon
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.common.data.integration.onEntityPressedWithoutState
|
||||
import io.homeassistant.companion.android.common.data.servers.ServerManager
|
||||
import io.homeassistant.companion.android.database.qs.TileDao
|
||||
|
@ -111,7 +112,7 @@ abstract class TileExtensions : TileService() {
|
|||
) {
|
||||
serverManager.integrationRepository(tileData.serverId).getEntityUpdates(listOf(tileData.entityId))?.collect {
|
||||
tile.state =
|
||||
if (it.state in validActiveStates) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE
|
||||
if (it.isActive()) Tile.STATE_ACTIVE else Tile.STATE_INACTIVE
|
||||
getTileIcon(tileData.iconName, it, applicationContext)?.let { icon ->
|
||||
tile.icon = Icon.createWithBitmap(icon)
|
||||
}
|
||||
|
@ -161,8 +162,8 @@ abstract class TileExtensions : TileService() {
|
|||
}
|
||||
if (tileData.entityId.split('.')[0] in toggleDomainsWithLock) {
|
||||
tile.state = when {
|
||||
state?.state in validActiveStates -> Tile.STATE_ACTIVE
|
||||
state?.state != null && state.state !in validActiveStates -> Tile.STATE_INACTIVE
|
||||
state?.isActive() == true -> Tile.STATE_ACTIVE
|
||||
state?.state != null && !state.isActive() -> Tile.STATE_INACTIVE
|
||||
else -> Tile.STATE_UNAVAILABLE
|
||||
}
|
||||
} else {
|
||||
|
@ -332,7 +333,6 @@ abstract class TileExtensions : TileService() {
|
|||
companion object {
|
||||
private const val TAG = "TileExtensions"
|
||||
private val toggleDomainsWithLock = EntityExt.DOMAINS_TOGGLE
|
||||
private val validActiveStates = listOf("on", "open", "locked")
|
||||
}
|
||||
|
||||
private fun handleInject() {
|
||||
|
|
|
@ -213,7 +213,7 @@ fun <T> Entity<T>.getFanSteps(): Int? {
|
|||
((attributes as Map<*, *>)["percentage_step"] as? Double)?.toDouble() ?: 1.0
|
||||
) - 1
|
||||
} catch (e: Exception) {
|
||||
Log.e(EntityExt.TAG, "Unable to get getFanSteps")
|
||||
Log.e(EntityExt.TAG, "Unable to get getFanSteps", e)
|
||||
null
|
||||
}
|
||||
}
|
||||
|
@ -227,7 +227,7 @@ fun <T> Entity<T>.supportsLightBrightness(): Boolean {
|
|||
val supportedColorModes =
|
||||
(attributes as Map<*, *>)["supported_color_modes"] as? List<String>
|
||||
val supportsBrightness =
|
||||
if (supportedColorModes == null) false else (supportedColorModes - EntityExt.LIGHT_MODE_NO_BRIGHTNESS_SUPPORT).isNotEmpty()
|
||||
if (supportedColorModes == null) false else (supportedColorModes - EntityExt.LIGHT_MODE_NO_BRIGHTNESS_SUPPORT.toSet()).isNotEmpty()
|
||||
val supportedFeatures = attributes["supported_features"] as Int
|
||||
supportsBrightness || (supportedFeatures and EntityExt.LIGHT_SUPPORT_BRIGHTNESS_DEPR == EntityExt.LIGHT_SUPPORT_BRIGHTNESS_DEPR)
|
||||
} catch (e: Exception) {
|
||||
|
@ -298,7 +298,7 @@ fun <T> Entity<T>.getLightColor(): Int? {
|
|||
}
|
||||
}
|
||||
|
||||
fun <T> Entity<T>.getIcon(context: Context): IIcon? {
|
||||
fun <T> Entity<T>.getIcon(context: Context): IIcon {
|
||||
val attributes = this.attributes as Map<String, Any?>
|
||||
val icon = attributes["icon"] as? String
|
||||
return if (icon?.startsWith("mdi") == true) {
|
||||
|
@ -383,6 +383,7 @@ fun <T> Entity<T>.getIcon(context: Context): IIcon? {
|
|||
"input_number" -> CommunityMaterial.Icon3.cmd_ray_vertex
|
||||
"input_select" -> CommunityMaterial.Icon2.cmd_format_list_bulleted
|
||||
"input_text" -> CommunityMaterial.Icon2.cmd_form_textbox
|
||||
"lawn_mower" -> CommunityMaterial.Icon3.cmd_robot_mower
|
||||
"light" -> CommunityMaterial.Icon2.cmd_lightbulb
|
||||
"lock" -> when (compareState) {
|
||||
"unlocked" -> CommunityMaterial.Icon2.cmd_lock_open
|
||||
|
@ -699,30 +700,69 @@ val <T> Entity<T>.friendlyName: String
|
|||
get() = (attributes as? Map<*, *>)?.get("friendly_name")?.toString() ?: entityId
|
||||
|
||||
fun <T> Entity<T>.friendlyState(context: Context, options: EntityRegistryOptions? = null, appendUnitOfMeasurement: Boolean = false): String {
|
||||
// https://github.com/mikey0000/frontend/blob/c14d801380f04ac63c4cf9ac2479e3b39ef4db32/src/common/entity/get_states.ts#L5
|
||||
var friendlyState = when (state) {
|
||||
"above_horizon" -> context.getString(commonR.string.state_above_horizon)
|
||||
"active" -> context.getString(commonR.string.state_active)
|
||||
"armed_away" -> context.getString(commonR.string.state_armed_away)
|
||||
"armed_custom_bypass" -> context.getString(commonR.string.state_armed_custom_bypass)
|
||||
"armed_home" -> context.getString(commonR.string.state_armed_home)
|
||||
"armed_night" -> context.getString(commonR.string.state_armed_night)
|
||||
"armed_vacation" -> context.getString(commonR.string.state_armed_vacation)
|
||||
"arming" -> context.getString(commonR.string.state_arming)
|
||||
"auto" -> context.getString(commonR.string.state_auto)
|
||||
"below_horizon" -> context.getString(commonR.string.state_below_horizon)
|
||||
"buffering" -> context.getString(commonR.string.state_buffering)
|
||||
"cleaning" -> context.getString(commonR.string.state_cleaning)
|
||||
"clear-night" -> context.getString(commonR.string.state_clear_night)
|
||||
"cloudy" -> context.getString(commonR.string.state_cloudy)
|
||||
"closed" -> context.getString(commonR.string.state_closed)
|
||||
"closing" -> context.getString(commonR.string.state_closing)
|
||||
"cool" -> context.getString(commonR.string.state_cool)
|
||||
"disarmed" -> context.getString(commonR.string.state_disarmed)
|
||||
"disarming" -> context.getString(commonR.string.state_disarming)
|
||||
"docked" -> context.getString(commonR.string.state_docked)
|
||||
"dry" -> context.getString(commonR.string.state_dry)
|
||||
"error" -> context.getString(commonR.string.state_error)
|
||||
"exceptional" -> context.getString(commonR.string.state_exceptional)
|
||||
"fan_only" -> context.getString(commonR.string.state_fan_only)
|
||||
"fog" -> context.getString(commonR.string.state_fog)
|
||||
"hail" -> context.getString(commonR.string.state_hail)
|
||||
"heat" -> context.getString(commonR.string.state_heat)
|
||||
"heat_cool" -> context.getString(commonR.string.state_heat_cool)
|
||||
"home" -> context.getString(commonR.string.state_home)
|
||||
"idle" -> context.getString(commonR.string.state_idle)
|
||||
"jammed" -> context.getString(commonR.string.state_jammed)
|
||||
"lightning-raining" -> context.getString(commonR.string.state_lightning_raining)
|
||||
"lightning" -> context.getString(commonR.string.state_lightning)
|
||||
"locked" -> context.getString(commonR.string.state_locked)
|
||||
"locking" -> context.getString(commonR.string.state_locking)
|
||||
"mowing" -> context.getString(commonR.string.state_mowing)
|
||||
"not_home" -> context.getString(commonR.string.state_not_home)
|
||||
"off" -> context.getString(commonR.string.state_off)
|
||||
"on" -> context.getString(commonR.string.state_on)
|
||||
"open" -> context.getString(commonR.string.state_open)
|
||||
"opening" -> context.getString(commonR.string.state_opening)
|
||||
"partlycloudy" -> context.getString(commonR.string.state_partlycloudy)
|
||||
"paused" -> context.getString(commonR.string.state_paused)
|
||||
"pending" -> context.getString(commonR.string.state_pending)
|
||||
"playing" -> context.getString(commonR.string.state_playing)
|
||||
"problem" -> context.getString(commonR.string.state_problem)
|
||||
"pouring" -> context.getString(commonR.string.state_pouring)
|
||||
"rainy" -> context.getString(commonR.string.state_rainy)
|
||||
"recording" -> context.getString(commonR.string.state_recording)
|
||||
"returning" -> context.getString(commonR.string.state_returning)
|
||||
"snowy-rainy" -> context.getString(commonR.string.state_snowy_rainy)
|
||||
"snowy" -> context.getString(commonR.string.state_snowy)
|
||||
"standby" -> context.getString(commonR.string.state_standby)
|
||||
"streaming" -> context.getString(commonR.string.state_streaming)
|
||||
"sunny" -> context.getString(commonR.string.state_sunny)
|
||||
"triggered" -> context.getString(commonR.string.state_triggered)
|
||||
"unavailable" -> context.getString(commonR.string.state_unavailable)
|
||||
"unlocked" -> context.getString(commonR.string.state_unlocked)
|
||||
"unlocking" -> context.getString(commonR.string.state_unlocking)
|
||||
"unknown" -> context.getString(commonR.string.state_unknown)
|
||||
"windy", "windy-variant" -> context.getString(commonR.string.state_windy)
|
||||
else -> state
|
||||
}
|
||||
if (friendlyState == state && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
|
|
|
@ -1147,4 +1147,28 @@
|
|||
<string name="state_arming">Arming</string>
|
||||
<string name="state_disarming">Disarming</string>
|
||||
<string name="state_pending">Pending</string>
|
||||
<string name="state_mowing">Mowing</string>
|
||||
<string name="state_above_horizon">Above horizon</string>
|
||||
<string name="state_active">Active</string>
|
||||
<string name="state_below_horizon">Below horizon</string>
|
||||
<string name="state_buffering">Buffering</string>
|
||||
<string name="state_cloudy">Cloudy</string>
|
||||
<string name="state_exceptional">Exceptional</string>
|
||||
<string name="state_clear_night">Clear, night</string>
|
||||
<string name="state_fog">Fog</string>
|
||||
<string name="state_hail">Hail</string>
|
||||
<string name="state_home">Home</string>
|
||||
<string name="state_lightning_raining">Lightning, raining</string>
|
||||
<string name="state_lightning">Lightning</string>
|
||||
<string name="state_not_home">Not home</string>
|
||||
<string name="state_partlycloudy">Partly cloudy</string>
|
||||
<string name="state_playing">Playing</string>
|
||||
<string name="state_problem">Problem</string>
|
||||
<string name="state_pouring">Pouring</string>
|
||||
<string name="state_rainy">Rainy</string>
|
||||
<string name="state_snowy_rainy">Snowy, rainy</string>
|
||||
<string name="state_snowy">Snowy</string>
|
||||
<string name="state_standby">Standby</string>
|
||||
<string name="state_sunny">Sunny</string>
|
||||
<string name="state_windy">Windy</string>
|
||||
</resources>
|
||||
|
|
|
@ -26,6 +26,7 @@ import io.homeassistant.companion.android.common.data.integration.Entity
|
|||
import io.homeassistant.companion.android.common.data.integration.EntityExt
|
||||
import io.homeassistant.companion.android.common.data.integration.domain
|
||||
import io.homeassistant.companion.android.common.data.integration.getIcon
|
||||
import io.homeassistant.companion.android.common.data.integration.isActive
|
||||
import io.homeassistant.companion.android.theme.wearColorPalette
|
||||
import io.homeassistant.companion.android.util.WearToggleChip
|
||||
import io.homeassistant.companion.android.util.onEntityClickedFeedback
|
||||
|
@ -47,7 +48,7 @@ fun EntityUi(
|
|||
val friendlyName = attributes["friendly_name"].toString()
|
||||
|
||||
if (entity.domain in EntityExt.DOMAINS_TOGGLE) {
|
||||
val isChecked = entity.state in listOf("on", "locked", "open", "opening")
|
||||
val isChecked = entity.isActive()
|
||||
ToggleChip(
|
||||
checked = isChecked,
|
||||
onCheckedChange = {
|
||||
|
|
Loading…
Reference in a new issue