diff --git a/app/src/full/java/io/homeassistant/companion/android/vehicle/EntityGridVehicleScreen.kt b/app/src/full/java/io/homeassistant/companion/android/vehicle/EntityGridVehicleScreen.kt index dc707c2f3..006a9ea3f 100644 --- a/app/src/full/java/io/homeassistant/companion/android/vehicle/EntityGridVehicleScreen.kt +++ b/app/src/full/java/io/homeassistant/companion/android/vehicle/EntityGridVehicleScreen.kt @@ -24,6 +24,7 @@ import io.homeassistant.companion.android.common.data.integration.IntegrationRep import io.homeassistant.companion.android.common.data.integration.friendlyName import io.homeassistant.companion.android.common.data.integration.friendlyState import io.homeassistant.companion.android.common.data.integration.getIcon +import io.homeassistant.companion.android.common.data.integration.isExecuting import io.homeassistant.companion.android.common.data.integration.onPressed import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.launch @@ -59,11 +60,22 @@ class EntityGridVehicleScreen( val listBuilder = ItemList.Builder() entities.forEach { entity -> val icon = entity.getIcon(carContext) ?: CommunityMaterial.Icon.cmd_cloud_question - listBuilder.addItem( + val gridItem = GridItem.Builder() .setLoading(false) .setTitle(entity.friendlyName) .setText(entity.friendlyState(carContext)) + + if (entity.isExecuting()) { + gridItem.setLoading(entity.isExecuting()) + } else { + gridItem + .setOnClickListener { + Log.i(TAG, "${entity.entityId} clicked") + lifecycleScope.launch { + entity.onPressed(integrationRepository) + } + } .setImage( CarIcon.Builder( IconicsDrawable(carContext, icon).apply { @@ -73,14 +85,8 @@ class EntityGridVehicleScreen( .setTint(CarColor.DEFAULT) .build() ) - .setOnClickListener { - Log.i(TAG, "${entity.entityId} clicked") - lifecycleScope.launch { - entity.onPressed(integrationRepository) - } - } - .build() - ) + } + listBuilder.addItem(gridItem.build()) } return GridTemplate.Builder().apply { diff --git a/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt index 9b07b6116..322c004a4 100644 --- a/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt +++ b/common/src/main/java/io/homeassistant/companion/android/common/data/integration/Entity.kt @@ -642,3 +642,14 @@ fun Entity.friendlyState(context: Context): String { } return friendlyState } + +fun Entity.isExecuting() = when (state) { + "closing" -> true + "locking" -> true + "opening" -> true + "unlocking" -> true + "buffering" -> true + "disarming" -> true + "arming" -> true + else -> false +}