mirror of
https://github.com/home-assistant/android
synced 2024-10-15 12:32:54 +00:00
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:
parent
6cf6c06c4c
commit
f811c09175
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue