Set Loading State for Entities (#3502)

* Set Loading State for Entities

* Fixing Ktlin LInt.

* Entity to executing take 2

* Adding buffering and disarming.

* Adding arming
This commit is contained in:
googlvalenzuela 2023-05-20 11:57:31 -07:00 committed by GitHub
parent 6cf6c06c4c
commit f811c09175
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 9 deletions

View file

@ -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 {

View file

@ -642,3 +642,14 @@ fun <T> Entity<T>.friendlyState(context: Context): String {
}
return friendlyState
}
fun <T> Entity<T>.isExecuting() = when (state) {
"closing" -> true
"locking" -> true
"opening" -> true
"unlocking" -> true
"buffering" -> true
"disarming" -> true
"arming" -> true
else -> false
}