mirror of
https://github.com/home-assistant/android
synced 2024-07-22 10:54:12 +00:00
Minor Android Auto improvements (#3218)
- Fix low res entity icons - Fix domains not being translated - Add support for input_button - Use domain extension property
This commit is contained in:
parent
d1e0f29486
commit
d6fbc1e95d
|
@ -15,6 +15,7 @@ import androidx.car.app.model.Template
|
|||
import androidx.lifecycle.lifecycleScope
|
||||
import com.mikepenz.iconics.IconicsDrawable
|
||||
import com.mikepenz.iconics.typeface.library.community.material.CommunityMaterial
|
||||
import com.mikepenz.iconics.utils.sizeDp
|
||||
import com.mikepenz.iconics.utils.toAndroidIconCompat
|
||||
import io.homeassistant.companion.android.common.data.integration.Entity
|
||||
import io.homeassistant.companion.android.common.data.integration.IntegrationRepository
|
||||
|
@ -57,7 +58,11 @@ class EntityGridVehicleScreen(
|
|||
.setTitle(entity.friendlyName)
|
||||
.setText(entity.friendlyState)
|
||||
.setImage(
|
||||
CarIcon.Builder(IconicsDrawable(carContext, icon).toAndroidIconCompat())
|
||||
CarIcon.Builder(
|
||||
IconicsDrawable(carContext, icon).apply {
|
||||
sizeDp = 64
|
||||
}.toAndroidIconCompat()
|
||||
)
|
||||
.setTint(CarColor.DEFAULT)
|
||||
.build()
|
||||
)
|
||||
|
|
|
@ -11,12 +11,12 @@ import androidx.car.app.model.ListTemplate
|
|||
import androidx.car.app.model.Row
|
||||
import androidx.car.app.model.Template
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
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.integration.domain
|
||||
import kotlinx.coroutines.launch
|
||||
import java.util.Locale
|
||||
import io.homeassistant.companion.android.common.R as commonR
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.O)
|
||||
class MainVehicleScreen(
|
||||
|
@ -27,16 +27,18 @@ class MainVehicleScreen(
|
|||
companion object {
|
||||
private const val TAG = "MainVehicleScreen"
|
||||
|
||||
private val SUPPORTED_DOMAINS = listOf(
|
||||
"button",
|
||||
"cover",
|
||||
"input_boolean",
|
||||
"light",
|
||||
"lock",
|
||||
"scene",
|
||||
"script",
|
||||
"switch",
|
||||
private val SUPPORTED_DOMAINS_WITH_STRING = mapOf(
|
||||
"button" to commonR.string.buttons,
|
||||
"cover" to commonR.string.covers,
|
||||
"input_boolean" to commonR.string.input_booleans,
|
||||
"input_button" to commonR.string.input_buttons,
|
||||
"light" to commonR.string.lights,
|
||||
"lock" to commonR.string.locks,
|
||||
"scene" to commonR.string.scenes,
|
||||
"script" to commonR.string.scripts,
|
||||
"switch" to commonR.string.switches,
|
||||
)
|
||||
private val SUPPORTED_DOMAINS = SUPPORTED_DOMAINS_WITH_STRING.keys
|
||||
}
|
||||
|
||||
private val domains = mutableSetOf<String>()
|
||||
|
@ -45,7 +47,7 @@ class MainVehicleScreen(
|
|||
init {
|
||||
lifecycleScope.launch {
|
||||
integrationRepository.getEntities()?.forEach { entity ->
|
||||
val domain = entity.entityId.split(".")[0]
|
||||
val domain = entity.domain
|
||||
if (domain in SUPPORTED_DOMAINS) {
|
||||
entities[entity.entityId] = entity
|
||||
domains.add(domain)
|
||||
|
@ -58,11 +60,13 @@ class MainVehicleScreen(
|
|||
override fun onGetTemplate(): Template {
|
||||
val listBuilder = ItemList.Builder()
|
||||
domains.forEach { domain ->
|
||||
val friendlyDomain = domain.split("_").joinToString(" ") { word ->
|
||||
word.replaceFirstChar {
|
||||
if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
|
||||
}
|
||||
}
|
||||
val friendlyDomain =
|
||||
SUPPORTED_DOMAINS_WITH_STRING[domain]?.let { carContext.getString(it) }
|
||||
?: domain.split("_").joinToString(" ") { word ->
|
||||
word.replaceFirstChar {
|
||||
if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString()
|
||||
}
|
||||
}
|
||||
listBuilder.addItem(
|
||||
Row.Builder()
|
||||
.setTitle(friendlyDomain)
|
||||
|
|
|
@ -414,9 +414,10 @@ suspend fun <T> Entity<T>.onPressed(
|
|||
"cover" -> {
|
||||
if (state == "open") "close_cover" else "open_cover"
|
||||
}
|
||||
"button",
|
||||
"input_button",
|
||||
"scene",
|
||||
"script",
|
||||
"button" -> "press"
|
||||
"script" -> "press"
|
||||
"fan",
|
||||
"input_boolean",
|
||||
"switch" -> {
|
||||
|
|
Loading…
Reference in a new issue