From 0a28ab13604cfe93e8ca437f2f1acacc9276a11c Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 12 Jun 2026 02:40:01 +0300 Subject: [PATCH 1/8] Migrate entity widget configuration to Compose --- .../entity/EntityWidgetConfigureActivity.kt | 400 +++-------------- .../entity/EntityWidgetConfigureScreen.kt | 423 ++++++++++++++++++ .../entity/EntityWidgetConfigureViewModel.kt | 312 +++++++++++++ .../res/layout/widget_static_configure.xml | 285 ------------ .../EntityWidgetConfigureViewModelTest.kt | 180 ++++++++ common/src/main/res/values/strings.xml | 1 + 6 files changed, 989 insertions(+), 612 deletions(-) create mode 100644 app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt create mode 100644 app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt delete mode 100644 app/src/main/res/layout/widget_static_configure.xml create mode 100644 app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt index 70edc6fbf19..74a8e1745d1 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt @@ -5,45 +5,30 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle -import android.text.Editable -import android.text.TextWatcher -import android.view.View -import android.widget.AdapterView -import android.widget.ArrayAdapter -import android.widget.AutoCompleteTextView -import android.widget.LinearLayout.VISIBLE -import android.widget.MultiAutoCompleteTextView.CommaTokenizer -import android.widget.Spinner import android.widget.Toast -import androidx.core.content.ContextCompat -import androidx.core.graphics.toColorInt -import androidx.core.view.isVisible +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.annotation.RequiresApi import androidx.lifecycle.lifecycleScope +import com.google.android.material.color.DynamicColors import dagger.hilt.android.AndroidEntryPoint +import dagger.hilt.android.lifecycle.withCreationCallback +import io.homeassistant.companion.android.BaseActivity import io.homeassistant.companion.android.common.R as commonR -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.friendlyName +import io.homeassistant.companion.android.common.compose.theme.HATheme import io.homeassistant.companion.android.common.util.SdkVersion -import io.homeassistant.companion.android.database.widget.StaticWidgetDao -import io.homeassistant.companion.android.database.widget.StaticWidgetEntity import io.homeassistant.companion.android.database.widget.WidgetBackgroundType -import io.homeassistant.companion.android.database.widget.WidgetTapAction -import io.homeassistant.companion.android.databinding.WidgetStaticConfigureBinding import io.homeassistant.companion.android.settings.widgets.ManageWidgetsViewModel -import io.homeassistant.companion.android.util.applySafeDrawingInsets +import io.homeassistant.companion.android.util.enableEdgeToEdgeCompat import io.homeassistant.companion.android.util.getHexForColor -import io.homeassistant.companion.android.widgets.BaseWidgetConfigureActivity -import io.homeassistant.companion.android.widgets.common.SingleItemArrayAdapter -import io.homeassistant.companion.android.widgets.common.WidgetUtils import kotlinx.coroutines.launch -import timber.log.Timber -// TODO Migrate to compose https://github.com/home-assistant/android/issues/6307 @AndroidEntryPoint -class EntityWidgetConfigureActivity : BaseWidgetConfigureActivity() { +class EntityWidgetConfigureActivity : BaseActivity() { companion object { + private const val FOR_ENTITY = "for_entity" + fun newInstance(context: Context, entityId: String): Intent { return Intent(context, EntityWidgetConfigureActivity::class.java).apply { putExtra(FOR_ENTITY, entityId) @@ -53,335 +38,96 @@ class EntityWidgetConfigureActivity : BaseWidgetConfigureActivity>() - - private var selectedEntity: Entity? = null - private var appendAttributes: Boolean = false - private var selectedAttributeIds: ArrayList = ArrayList() - private var labelFromEntity = false - - private lateinit var binding: WidgetStaticConfigureBinding - - override val serverSelect: View - get() = binding.serverSelect - - override val serverSelectList: Spinner - get() = binding.serverSelectList - - private var requestLauncherSetup = false + private val viewModel: EntityWidgetConfigureViewModel by viewModels( + extrasProducer = { + defaultViewModelCreationExtras.withCreationCallback { factory -> + factory.create(intent.extras?.getString(FOR_ENTITY, null)) + } + }, + ) - private var entityAdapter: SingleItemArrayAdapter? = null + private val requestLauncherSetup: Boolean + get() = intent.extras?.getBoolean(ManageWidgetsViewModel.CONFIGURE_REQUEST_LAUNCHER, false) == true override fun onCreate(savedInstanceState: Bundle?) { + enableEdgeToEdgeCompat() super.onCreate(savedInstanceState) - // Set the result to CANCELED. This will cause the widget host to cancel - // out of the widget placement if the user presses the back button. setResult(RESULT_CANCELED) - binding = WidgetStaticConfigureBinding.inflate(layoutInflater) - setContentView(binding.root) - binding.root.applySafeDrawingInsets() + val widgetId = intent.extras?.getInt( + AppWidgetManager.EXTRA_APPWIDGET_ID, + AppWidgetManager.INVALID_APPWIDGET_ID, + ) ?: AppWidgetManager.INVALID_APPWIDGET_ID - binding.addButton.setOnClickListener { - lifecycleScope.launch { - if (requestLauncherSetup) { - if ( - SdkVersion.isAtLeast(Build.VERSION_CODES.O) && - isValidServerId() - ) { - requestWidgetCreation() - } else { - showAddWidgetError() - } - } else { - updateWidget() - } - } - } - - // Find the widget id from the intent. - val intent = intent - val extras = intent.extras - if (extras != null) { - if (extras.containsKey(FOR_ENTITY)) { - binding.widgetTextConfigEntityId.setText(extras.getString(FOR_ENTITY)) - } - - appWidgetId = extras.getInt( - AppWidgetManager.EXTRA_APPWIDGET_ID, - AppWidgetManager.INVALID_APPWIDGET_ID, - ) - requestLauncherSetup = extras.getBoolean( - ManageWidgetsViewModel.CONFIGURE_REQUEST_LAUNCHER, - false, - ) - } - - // If this activity was started with an intent without an app widget ID, finish with an error. - if (appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID && !requestLauncherSetup) { + if (widgetId == AppWidgetManager.INVALID_APPWIDGET_ID && !requestLauncherSetup) { finish() return } - lifecycleScope.launch { - val staticWidget = dao.get(appWidgetId) - - if (staticWidget != null) { - binding.widgetTextConfigEntityId.setText(staticWidget.entityId) - binding.label.setText(staticWidget.label) - binding.textSize.setText(staticWidget.textSize.toInt().toString()) - binding.stateSeparator.setText(staticWidget.stateSeparator) - val entity = try { - serverManager.integrationRepository(staticWidget.serverId).getEntity(staticWidget.entityId) - } catch (e: Exception) { - Timber.e(e, "Unable to get entity information") - Toast.makeText(applicationContext, commonR.string.widget_entity_fetch_error, Toast.LENGTH_LONG) - .show() - null - } - - val attributeIds = staticWidget.attributeIds - if (!attributeIds.isNullOrEmpty()) { - binding.appendAttributeValueCheckbox.isChecked = true - appendAttributes = true - for (item in attributeIds.split(',')) { - selectedAttributeIds.add(item) - } - binding.widgetTextConfigAttribute.setText(attributeIds.replace(",", ", ")) - binding.attributeValueLinearLayout.visibility = VISIBLE - binding.attributeSeparator.setText(staticWidget.attributeSeparator) - } - if (entity != null) { - selectedEntity = entity - setupAttributes() - } - - val toggleable = entity?.domain in EntityExt.APP_PRESS_ACTION_DOMAINS - binding.tapAction.isVisible = toggleable - binding.tapActionList.setSelection( - if (toggleable && - staticWidget.tapAction == WidgetTapAction.TOGGLE - ) { - 0 - } else { - 1 - }, - ) - binding.textColor.visibility = - if (staticWidget.backgroundType == WidgetBackgroundType.TRANSPARENT) View.VISIBLE else View.GONE - binding.textColorWhite.isChecked = - staticWidget.textColor?.let { - it.toColorInt() == ContextCompat.getColor( - this@EntityWidgetConfigureActivity, - android.R.color.white, - ) - } - ?: true - binding.textColorBlack.isChecked = - staticWidget.textColor?.let { - it.toColorInt() == - ContextCompat.getColor( - this@EntityWidgetConfigureActivity, - commonR.color.colorWidgetButtonLabelBlack, - ) - } - ?: false - - binding.addButton.setText(commonR.string.update_widget) + viewModel.onSetup( + widgetId = widgetId, + defaultBackgroundType = if (DynamicColors.isDynamicColorAvailable()) { + WidgetBackgroundType.DYNAMICCOLOR } else { - binding.backgroundType.setSelection(0) - } - - setupServerSelect(staticWidget?.serverId) - } - - val tapActionValues = - listOf(getString(commonR.string.widget_tap_action_toggle), getString(commonR.string.refresh)) - binding.tapActionList.adapter = - ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, tapActionValues) - val backgroundTypeValues = WidgetUtils.getBackgroundOptionList(this) - binding.backgroundType.adapter = - ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, backgroundTypeValues) - - entityAdapter = SingleItemArrayAdapter(this) { it?.entityId ?: "" } - - binding.widgetTextConfigEntityId.setAdapter(entityAdapter) - binding.widgetTextConfigEntityId.onFocusChangeListener = dropDownOnFocus - binding.widgetTextConfigEntityId.onItemClickListener = entityDropDownOnItemClick - binding.widgetTextConfigAttribute.onFocusChangeListener = dropDownOnFocus - binding.widgetTextConfigAttribute.onItemClickListener = attributeDropDownOnItemClick - binding.widgetTextConfigAttribute.setOnClickListener { - if (!binding.widgetTextConfigAttribute.isPopupShowing) binding.widgetTextConfigAttribute.showDropDown() - } - - binding.appendAttributeValueCheckbox.setOnCheckedChangeListener { _, isChecked -> - binding.attributeValueLinearLayout.isVisible = isChecked - appendAttributes = isChecked - } - - binding.label.addTextChangedListener(labelTextChanged) - - binding.backgroundType.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { - binding.textColor.visibility = - if (parent?.adapter?.getItem(position) == - getString(commonR.string.widget_background_type_transparent) - ) { - View.VISIBLE - } else { - View.GONE - } - } + WidgetBackgroundType.DAYNIGHT + }, + textColors = EntityWidgetTextColors( + white = application.getHexForColor(android.R.color.white), + black = application.getHexForColor(commonR.color.colorWidgetButtonLabelBlack), + ), + ) - override fun onNothingSelected(parent: AdapterView<*>?) { - binding.textColor.visibility = View.GONE + setContent { + HATheme { + EntityWidgetConfigureScreen( + viewModel = viewModel, + dynamicColorAvailable = DynamicColors.isDynamicColorAvailable(), + onActionClick = ::onActionClick, + ) } } + } + private fun onActionClick() { lifecycleScope.launch { - serverManager.servers().forEach { server -> - launch { - try { - val fetchedEntities = serverManager.integrationRepository(server.id).getEntities().orEmpty() - entities[server.id] = fetchedEntities - if (server.id == selectedServerId) setAdapterEntities(server.id) - } catch (e: Exception) { - // If entities fail to load, it's okay to pass - // an empty map to the dynamicFieldAdapter - Timber.e(e, "Failed to query entities") - } + if (requestLauncherSetup) { + if (SdkVersion.isAtLeast(Build.VERSION_CODES.O) && viewModel.isValidSelection()) { + requestPinWidget() + } else { + showWidgetError(commonR.string.widget_creation_error) } + } else { + updateWidget() } } } - override fun onServerSelected(serverId: Int) { - selectedEntity = null - binding.widgetTextConfigEntityId.setText("") - setupAttributes() - setAdapterEntities(serverId) - } - - override val widgetClass: Class<*> = EntityWidget::class.java - - private fun setAdapterEntities(serverId: Int) { - entityAdapter?.let { adapter -> - adapter.clearAll() - if (entities[serverId] != null) { - adapter.addAll(entities[serverId].orEmpty().toMutableList()) - adapter.sort() - } - runOnUiThread { adapter.notifyDataSetChanged() } - } - } - - private val dropDownOnFocus = View.OnFocusChangeListener { view, hasFocus -> - if (hasFocus && view is AutoCompleteTextView) { - view.showDropDown() - } - } - - private val entityDropDownOnItemClick = - AdapterView.OnItemClickListener { parent, _, position, _ -> - selectedEntity = parent.getItemAtPosition(position) as Entity? - if (binding.label.text.isNullOrBlank() || labelFromEntity) { - selectedEntity?.friendlyName?.takeIf { it != selectedEntity?.entityId }?.let { name -> - binding.label.removeTextChangedListener(labelTextChanged) - binding.label.setText(name) - labelFromEntity = true - binding.label.addTextChangedListener(labelTextChanged) - } - } - setupAttributes() - } - - private val attributeDropDownOnItemClick = - AdapterView.OnItemClickListener { parent, _, position, _ -> - selectedAttributeIds.add(parent.getItemAtPosition(position) as String) - } - - private val labelTextChanged = object : TextWatcher { - override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { - // Not implemented - } - - override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { - // Not implemented - } - - override fun afterTextChanged(s: Editable?) { - labelFromEntity = false + @RequiresApi(Build.VERSION_CODES.O) + private suspend fun requestPinWidget() { + try { + viewModel.requestWidgetCreation(this) + finish() + } catch (_: IllegalStateException) { + showWidgetError(commonR.string.widget_creation_error) } } - private fun setupAttributes() { - val fetchedAttributes = selectedEntity?.attributes - val attributesAdapter = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line) - binding.widgetTextConfigAttribute.setAdapter(attributesAdapter) - attributesAdapter.addAll(*fetchedAttributes?.keys.orEmpty().toTypedArray()) - binding.widgetTextConfigAttribute.setTokenizer(CommaTokenizer()) - runOnUiThread { - val toggleable = selectedEntity?.domain in EntityExt.APP_PRESS_ACTION_DOMAINS - binding.tapAction.isVisible = toggleable - binding.tapActionList.setSelection(if (toggleable) 0 else 1) - attributesAdapter.notifyDataSetChanged() + private suspend fun updateWidget() { + try { + viewModel.updateWidgetConfiguration() + viewModel.updateWidget(this) + setResult( + RESULT_OK, + Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, viewModel.widgetId), + ) + finish() + } catch (_: IllegalStateException) { + showWidgetError(commonR.string.widget_update_error) } } - override suspend fun getPendingDaoEntity(): StaticWidgetEntity { - val serverId = checkNotNull(selectedServerId) { "Selected server ID is null" } - - val entity = if (selectedEntity == null) { - binding.widgetTextConfigEntityId.text.toString() - } else { - checkNotNull(selectedEntity?.entityId) { "Selected entity is null" } - } - - if (entity !in entities[serverId].orEmpty().map { it.entityId }) { - throw IllegalStateException("Selected entity is unknown on server") - } - - return StaticWidgetEntity( - id = appWidgetId, - serverId = serverId, - entityId = entity, - label = binding.label.text?.toString(), - textSize = binding.textSize.text?.toString()?.toFloatOrNull() ?: 30F, - stateSeparator = binding.stateSeparator.text?.toString() ?: "", - attributeIds = if (appendAttributes) { - if (selectedAttributeIds.isEmpty()) { - binding.widgetTextConfigAttribute.text.toString() - } else { - selectedAttributeIds.joinToString(",") - } - } else { - null - }, - attributeSeparator = if (appendAttributes) binding.attributeSeparator.text?.toString() ?: "" else "", - tapAction = when (binding.tapActionList.selectedItemPosition) { - 0 -> WidgetTapAction.TOGGLE - else -> WidgetTapAction.REFRESH - }, - backgroundType = when (binding.backgroundType.selectedItem as String?) { - getString(commonR.string.widget_background_type_dynamiccolor) -> WidgetBackgroundType.DYNAMICCOLOR - getString(commonR.string.widget_background_type_transparent) -> WidgetBackgroundType.TRANSPARENT - else -> WidgetBackgroundType.DAYNIGHT - }, - textColor = if (binding.backgroundType.selectedItem as String? == - getString(commonR.string.widget_background_type_transparent) - ) { - getHexForColor( - if (binding.textColorWhite.isChecked) { - android.R.color.white - } else { - commonR.color.colorWidgetButtonLabelBlack - }, - ) - } else { - null - }, - lastUpdate = dao.get(appWidgetId)?.lastUpdate ?: "", - ) + private fun showWidgetError(message: Int) { + Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() } } diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt new file mode 100644 index 00000000000..31ec5e0d4e0 --- /dev/null +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt @@ -0,0 +1,423 @@ +package io.homeassistant.companion.android.widgets.entity + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.FlowRow +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material.icons.filled.Close +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.InputChip +import androidx.compose.material3.InputChipDefaults +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.tooling.preview.Preview +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import io.homeassistant.companion.android.common.R as commonR +import io.homeassistant.companion.android.common.compose.composable.HAAccentButton +import io.homeassistant.companion.android.common.compose.composable.HACheckbox +import io.homeassistant.companion.android.common.compose.composable.HADropdownItem +import io.homeassistant.companion.android.common.compose.composable.HADropdownMenu +import io.homeassistant.companion.android.common.compose.composable.HATextField +import io.homeassistant.companion.android.common.compose.composable.HATopBar +import io.homeassistant.companion.android.common.compose.theme.HADimens +import io.homeassistant.companion.android.common.compose.theme.HATextStyle +import io.homeassistant.companion.android.common.compose.theme.HAThemeForPreview +import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.common.data.integration.EntityExt +import io.homeassistant.companion.android.database.server.Server +import io.homeassistant.companion.android.database.widget.WidgetBackgroundType +import io.homeassistant.companion.android.database.widget.WidgetTapAction +import io.homeassistant.companion.android.util.compose.ServerExposedDropdownMenu +import io.homeassistant.companion.android.util.compose.entity.EntityPicker +import io.homeassistant.companion.android.util.previewEntity1 +import io.homeassistant.companion.android.util.previewServer1 +import io.homeassistant.companion.android.util.previewServer2 + +@Composable +internal fun EntityWidgetConfigureScreen( + viewModel: EntityWidgetConfigureViewModel, + dynamicColorAvailable: Boolean, + onActionClick: () -> Unit, +) { + val servers by viewModel.servers.collectAsStateWithLifecycle(emptyList()) + val entities by viewModel.entities.collectAsStateWithLifecycle() + val selectedEntity = entities.firstOrNull { it.entityId == viewModel.selectedEntityId } + + EntityWidgetConfigureView( + servers = servers, + selectedServerId = viewModel.selectedServerId, + onServerSelected = viewModel::onServerSelected, + entities = entities, + selectedEntityId = viewModel.selectedEntityId, + onEntitySelected = viewModel::onEntitySelected, + availableAttributes = selectedEntity?.attributes?.keys.orEmpty().sorted(), + appendAttributes = viewModel.appendAttributes, + onAppendAttributesChanged = viewModel::onAppendAttributesChanged, + selectedAttributeIds = viewModel.selectedAttributeIds, + onAttributeAdded = viewModel::onAttributeAdded, + onAttributeRemoved = viewModel::onAttributeRemoved, + label = viewModel.label, + onLabelChanged = viewModel::onLabelChanged, + textSize = viewModel.textSize, + onTextSizeChanged = viewModel::onTextSizeChanged, + stateSeparator = viewModel.stateSeparator, + onStateSeparatorChanged = viewModel::onStateSeparatorChanged, + attributeSeparator = viewModel.attributeSeparator, + onAttributeSeparatorChanged = viewModel::onAttributeSeparatorChanged, + isToggleable = selectedEntity?.domain in EntityExt.APP_PRESS_ACTION_DOMAINS, + selectedTapAction = viewModel.selectedTapAction, + onTapActionSelected = viewModel::onTapActionSelected, + selectedBackgroundType = viewModel.selectedBackgroundType, + onBackgroundTypeSelected = viewModel::onBackgroundTypeSelected, + dynamicColorAvailable = dynamicColorAvailable, + selectedTextColor = viewModel.selectedTextColor, + onTextColorSelected = viewModel::onTextColorSelected, + isUpdateWidget = viewModel.isUpdateWidget, + onActionClick = onActionClick, + ) +} + +@Composable +private fun EntityWidgetConfigureView( + servers: List, + selectedServerId: Int, + onServerSelected: (Int) -> Unit, + entities: List, + selectedEntityId: String?, + onEntitySelected: (String?) -> Unit, + availableAttributes: List, + appendAttributes: Boolean, + onAppendAttributesChanged: (Boolean) -> Unit, + selectedAttributeIds: List, + onAttributeAdded: (String) -> Unit, + onAttributeRemoved: (String) -> Unit, + label: String, + onLabelChanged: (String) -> Unit, + textSize: String, + onTextSizeChanged: (String) -> Unit, + stateSeparator: String, + onStateSeparatorChanged: (String) -> Unit, + attributeSeparator: String, + onAttributeSeparatorChanged: (String) -> Unit, + isToggleable: Boolean, + selectedTapAction: WidgetTapAction, + onTapActionSelected: (WidgetTapAction) -> Unit, + selectedBackgroundType: WidgetBackgroundType, + onBackgroundTypeSelected: (WidgetBackgroundType) -> Unit, + dynamicColorAvailable: Boolean, + selectedTextColor: EntityWidgetTextColor, + onTextColorSelected: (EntityWidgetTextColor) -> Unit, + isUpdateWidget: Boolean, + onActionClick: () -> Unit, +) { + Scaffold( + topBar = { + HATopBar(title = { Text(stringResource(commonR.string.select_entity_to_display)) }) + }, + contentWindowInsets = WindowInsets.safeDrawing, + ) { contentPadding -> + Column( + modifier = Modifier + .verticalScroll(rememberScrollState()) + .padding(contentPadding) + .padding(HADimens.SPACE4), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), + ) { + if (servers.size > 1 || + (isUpdateWidget && servers.none { it.id == selectedServerId }) + ) { + ServerExposedDropdownMenu( + servers = servers, + current = selectedServerId, + onSelected = onServerSelected, + ) + } + + EntityPicker( + entities = entities, + selectedEntityId = selectedEntityId, + onEntitySelectedId = onEntitySelected, + onEntityCleared = { onEntitySelected(null) }, + ) + + CheckboxRow( + text = stringResource(commonR.string.entity_attribute_checkbox), + checked = appendAttributes, + onCheckedChange = onAppendAttributesChanged, + ) + + if (appendAttributes) { + AttributeSelector( + availableAttributes = availableAttributes, + selectedAttributeIds = selectedAttributeIds, + onAttributeAdded = onAttributeAdded, + onAttributeRemoved = onAttributeRemoved, + ) + HATextField( + value = attributeSeparator, + onValueChange = onAttributeSeparatorChanged, + label = { Text(stringResource(commonR.string.widget_attribute_separator_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, + maxLines = 1, + ) + } + + HATextField( + value = textSize, + onValueChange = onTextSizeChanged, + label = { Text(stringResource(commonR.string.widget_text_size_label)) }, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Number, + imeAction = ImeAction.Next, + ), + maxLines = 1, + ) + + HATextField( + value = stateSeparator, + onValueChange = onStateSeparatorChanged, + label = { Text(stringResource(commonR.string.widget_state_separator_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, + maxLines = 1, + ) + + HATextField( + value = label, + onValueChange = onLabelChanged, + label = { Text(stringResource(commonR.string.label_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_text_hint_label)) }, + maxLines = 1, + ) + + if (isToggleable) { + HADropdownMenu( + items = listOf( + HADropdownItem( + key = WidgetTapAction.TOGGLE, + label = stringResource(commonR.string.widget_tap_action_toggle), + ), + HADropdownItem( + key = WidgetTapAction.REFRESH, + label = stringResource(commonR.string.refresh), + ), + ), + selectedKey = selectedTapAction, + onItemSelected = onTapActionSelected, + label = stringResource(commonR.string.widget_tap_action_label), + ) + } + + HADropdownMenu( + items = buildList { + if (dynamicColorAvailable) { + add( + HADropdownItem( + key = WidgetBackgroundType.DYNAMICCOLOR, + label = stringResource(commonR.string.widget_background_type_dynamiccolor), + ), + ) + } + add( + HADropdownItem( + key = WidgetBackgroundType.DAYNIGHT, + label = stringResource(commonR.string.widget_background_type_daynight), + ), + ) + add( + HADropdownItem( + key = WidgetBackgroundType.TRANSPARENT, + label = stringResource(commonR.string.widget_background_type_transparent), + ), + ) + }, + selectedKey = selectedBackgroundType, + onItemSelected = onBackgroundTypeSelected, + label = stringResource(commonR.string.widget_background_type_label), + ) + + if (selectedBackgroundType == WidgetBackgroundType.TRANSPARENT) { + HADropdownMenu( + items = listOf( + HADropdownItem( + key = EntityWidgetTextColor.WHITE, + label = stringResource(commonR.string.widget_text_color_white), + ), + HADropdownItem( + key = EntityWidgetTextColor.BLACK, + label = stringResource(commonR.string.widget_text_color_black), + ), + ), + selectedKey = selectedTextColor, + onItemSelected = onTextColorSelected, + label = stringResource(commonR.string.widget_text_color_label), + ) + } + + HAAccentButton( + text = stringResource(if (isUpdateWidget) commonR.string.update_widget else commonR.string.add_widget), + onClick = onActionClick, + enabled = selectedEntityId != null, + modifier = Modifier.fillMaxWidth(), + ) + } + } +} + +@Composable +private fun CheckboxRow(text: String, checked: Boolean, onCheckedChange: (Boolean) -> Unit) { + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { onCheckedChange(!checked) }, + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + ) { + HACheckbox( + checked = checked, + onCheckedChange = onCheckedChange, + ) + Text( + text = text, + style = HATextStyle.Body, + color = LocalHAColorScheme.current.colorTextPrimary, + ) + } +} + +@Composable +private fun AttributeSelector( + availableAttributes: List, + selectedAttributeIds: List, + onAttributeAdded: (String) -> Unit, + onAttributeRemoved: (String) -> Unit, +) { + val unselectedAttributes = availableAttributes.filterNot(selectedAttributeIds::contains) + var customAttribute by rememberSaveable { mutableStateOf("") } + val addCustomAttributes = { + customAttribute + .split(',') + .map(String::trim) + .filter(String::isNotEmpty) + .forEach(onAttributeAdded) + customAttribute = "" + } + + Column(verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2)) { + HADropdownMenu( + items = unselectedAttributes.map { HADropdownItem(key = it, label = it) }, + selectedKey = null, + onItemSelected = onAttributeAdded, + label = stringResource(commonR.string.label_attribute), + placeholder = stringResource(commonR.string.widget_attribute_add), + enabled = unselectedAttributes.isNotEmpty(), + ) + + HATextField( + value = customAttribute, + onValueChange = { customAttribute = it }, + label = { Text(stringResource(commonR.string.widget_attribute_add)) }, + trailingIcon = { + IconButton( + onClick = addCustomAttributes, + enabled = customAttribute.isNotBlank(), + ) { + Icon( + imageVector = Icons.Default.Add, + contentDescription = stringResource(commonR.string.widget_attribute_add), + ) + } + }, + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), + keyboardActions = KeyboardActions(onDone = { addCustomAttributes() }), + maxLines = 1, + ) + + if (selectedAttributeIds.isNotEmpty()) { + FlowRow( + horizontalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + ) { + selectedAttributeIds.forEach { attributeId -> + InputChip( + selected = true, + onClick = { onAttributeRemoved(attributeId) }, + label = { Text(attributeId) }, + trailingIcon = { + Icon( + imageVector = Icons.Default.Close, + contentDescription = stringResource(commonR.string.search_clear_selection), + ) + }, + colors = InputChipDefaults.inputChipColors( + selectedContainerColor = LocalHAColorScheme.current.colorFillPrimaryNormalActive, + selectedLabelColor = LocalHAColorScheme.current.colorTextPrimary, + selectedTrailingIconColor = LocalHAColorScheme.current.colorTextSecondary, + ), + ) + } + } + } + } +} + +@Preview +@Composable +private fun EntityWidgetConfigureViewPreview() { + HAThemeForPreview { + EntityWidgetConfigureView( + servers = listOf(previewServer1, previewServer2), + selectedServerId = previewServer1.id, + onServerSelected = {}, + entities = listOf(previewEntity1), + selectedEntityId = previewEntity1.entityId, + onEntitySelected = {}, + availableAttributes = listOf("brightness", "friendly_name"), + appendAttributes = true, + onAppendAttributesChanged = {}, + selectedAttributeIds = listOf("brightness"), + onAttributeAdded = {}, + onAttributeRemoved = {}, + label = "Office light", + onLabelChanged = {}, + textSize = "30", + onTextSizeChanged = {}, + stateSeparator = " - ", + onStateSeparatorChanged = {}, + attributeSeparator = ", ", + onAttributeSeparatorChanged = {}, + isToggleable = true, + selectedTapAction = WidgetTapAction.TOGGLE, + onTapActionSelected = {}, + selectedBackgroundType = WidgetBackgroundType.TRANSPARENT, + onBackgroundTypeSelected = {}, + dynamicColorAvailable = true, + selectedTextColor = EntityWidgetTextColor.WHITE, + onTextColorSelected = {}, + isUpdateWidget = false, + onActionClick = {}, + ) + } +} diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt new file mode 100644 index 00000000000..14d92b824bc --- /dev/null +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt @@ -0,0 +1,312 @@ +package io.homeassistant.companion.android.widgets.entity + +import android.app.PendingIntent +import android.appwidget.AppWidgetManager +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.runtime.snapshotFlow +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import dagger.hilt.android.lifecycle.HiltViewModel +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.friendlyName +import io.homeassistant.companion.android.common.data.servers.ServerManager +import io.homeassistant.companion.android.database.widget.StaticWidgetDao +import io.homeassistant.companion.android.database.widget.StaticWidgetEntity +import io.homeassistant.companion.android.database.widget.WidgetBackgroundType +import io.homeassistant.companion.android.database.widget.WidgetTapAction +import io.homeassistant.companion.android.widgets.ACTION_APPWIDGET_CREATED +import io.homeassistant.companion.android.widgets.BaseWidgetProvider +import io.homeassistant.companion.android.widgets.EXTRA_WIDGET_ENTITY +import kotlin.time.Duration.Companion.milliseconds +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.WhileSubscribed +import kotlinx.coroutines.flow.distinctUntilChanged +import kotlinx.coroutines.flow.drop +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.flow.mapLatest +import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.flow.stateIn +import kotlinx.coroutines.launch +import timber.log.Timber + +internal data class EntityWidgetTextColors(val white: String, val black: String) + +internal enum class EntityWidgetTextColor { + WHITE, + BLACK, +} + +@HiltViewModel(assistedFactory = EntityWidgetConfigureViewModel.Factory::class) +class EntityWidgetConfigureViewModel @AssistedInject constructor( + private val staticWidgetDao: StaticWidgetDao, + private val serverManager: ServerManager, + @Assisted preselectedEntityId: String?, +) : ViewModel() { + + private lateinit var textColors: EntityWidgetTextColors + private var initialized = false + + internal var widgetId: Int = AppWidgetManager.INVALID_APPWIDGET_ID + private set + + val servers = serverManager.serversFlow + + var selectedServerId by mutableIntStateOf(ServerManager.SERVER_ID_ACTIVE) + private set + + @OptIn(ExperimentalCoroutinesApi::class) + val entities: StateFlow> = snapshotFlow { selectedServerId } + .distinctUntilChanged() + .mapLatest { serverId -> + if (!serverManager.isRegistered()) { + emptyList() + } else { + try { + serverManager.integrationRepository(serverId).getEntities().orEmpty() + } catch (e: CancellationException) { + throw e + } catch (e: Exception) { + Timber.e(e, "Failed to query entities") + emptyList() + } + } + }.stateIn( + scope = viewModelScope, + started = SharingStarted.WhileSubscribed(500.milliseconds), + initialValue = emptyList(), + ) + + var selectedEntityId by mutableStateOf(preselectedEntityId) + private set + var appendAttributes by mutableStateOf(false) + private set + var selectedAttributeIds by mutableStateOf>(emptyList()) + private set + var label by mutableStateOf("") + private set + var textSize by mutableStateOf(DEFAULT_TEXT_SIZE) + private set + var stateSeparator by mutableStateOf("") + private set + var attributeSeparator by mutableStateOf("") + private set + var selectedTapAction by mutableStateOf(WidgetTapAction.REFRESH) + private set + var selectedBackgroundType by mutableStateOf(WidgetBackgroundType.DAYNIGHT) + private set + internal var selectedTextColor by mutableStateOf(EntityWidgetTextColor.WHITE) + private set + var isUpdateWidget by mutableStateOf(false) + private set + + private var labelFromEntity = false + + internal fun onSetup( + widgetId: Int, + defaultBackgroundType: WidgetBackgroundType, + textColors: EntityWidgetTextColors, + ) { + if (initialized) return + initialized = true + + this.widgetId = widgetId + this.textColors = textColors + selectedBackgroundType = defaultBackgroundType + + initializeState(widgetId) + } + + private fun initializeState(widgetId: Int) = viewModelScope.launch { + val widget = if (widgetId != AppWidgetManager.INVALID_APPWIDGET_ID && selectedEntityId == null) { + staticWidgetDao.get(widgetId) + } else { + null + } + + if (widget != null) { + isUpdateWidget = true + selectedServerId = widget.serverId + selectedEntityId = widget.entityId + appendAttributes = !widget.attributeIds.isNullOrBlank() + selectedAttributeIds = widget.attributeIds + ?.split(',') + ?.map(String::trim) + ?.filter(String::isNotEmpty) + .orEmpty() + label = widget.label.orEmpty() + textSize = widget.textSize.toInt().toString() + stateSeparator = widget.stateSeparator + attributeSeparator = widget.attributeSeparator + selectedTapAction = widget.tapAction + selectedBackgroundType = widget.backgroundType + selectedTextColor = if (widget.textColor == textColors.black) { + EntityWidgetTextColor.BLACK + } else { + EntityWidgetTextColor.WHITE + } + } else { + selectedServerId = serverManager.getServer()?.id ?: ServerManager.SERVER_ID_ACTIVE + } + } + + fun onServerSelected(serverId: Int) { + if (serverId == selectedServerId) return + + selectedServerId = serverId + selectedEntityId = null + selectedAttributeIds = emptyList() + selectedTapAction = WidgetTapAction.REFRESH + } + + fun onEntitySelected(entityId: String?) { + selectedEntityId = entityId + selectedAttributeIds = emptyList() + + val entity = selectedEntity() + selectedTapAction = if (entity?.domain in EntityExt.APP_PRESS_ACTION_DOMAINS) { + WidgetTapAction.TOGGLE + } else { + WidgetTapAction.REFRESH + } + + if (label.isBlank() || labelFromEntity) { + val friendlyName = entity?.friendlyName?.takeIf { it != entity.entityId }.orEmpty() + label = friendlyName + labelFromEntity = friendlyName.isNotEmpty() + } + } + + fun onAppendAttributesChanged(append: Boolean) { + appendAttributes = append + } + + fun onAttributeAdded(attributeId: String) { + if (attributeId !in selectedAttributeIds) { + selectedAttributeIds = selectedAttributeIds + attributeId + } + } + + fun onAttributeRemoved(attributeId: String) { + selectedAttributeIds = selectedAttributeIds - attributeId + } + + fun onLabelChanged(value: String) { + label = value + labelFromEntity = false + } + + fun onTextSizeChanged(value: String) { + textSize = value.filter(Char::isDigit) + } + + fun onStateSeparatorChanged(value: String) { + stateSeparator = value + } + + fun onAttributeSeparatorChanged(value: String) { + attributeSeparator = value + } + + fun onTapActionSelected(action: WidgetTapAction) { + selectedTapAction = action + } + + fun onBackgroundTypeSelected(backgroundType: WidgetBackgroundType) { + selectedBackgroundType = backgroundType + } + + internal fun onTextColorSelected(textColor: EntityWidgetTextColor) { + selectedTextColor = textColor + } + + fun selectedEntity(): Entity? = entities.value.firstOrNull { it.entityId == selectedEntityId } + + suspend fun isValidSelection(): Boolean { + return serverManager.getServer(selectedServerId) != null && selectedEntity() != null + } + + suspend fun updateWidgetConfiguration() { + check(widgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { "Widget ID is invalid" } + staticWidgetDao.add(getPendingDaoEntity()) + } + + internal suspend fun getPendingDaoEntity(): StaticWidgetEntity { + check(isValidSelection()) { "Widget data is invalid" } + val entity = checkNotNull(selectedEntity()) { "Selected entity is unknown on server" } + + return StaticWidgetEntity( + id = widgetId, + serverId = selectedServerId, + entityId = entity.entityId, + attributeIds = selectedAttributeIds.takeIf { appendAttributes && it.isNotEmpty() }?.joinToString(","), + label = label, + textSize = textSize.toFloatOrNull() ?: DEFAULT_TEXT_SIZE.toFloat(), + stateSeparator = stateSeparator, + attributeSeparator = attributeSeparator.takeIf { appendAttributes }.orEmpty(), + tapAction = if (entity.domain in EntityExt.APP_PRESS_ACTION_DOMAINS) { + selectedTapAction + } else { + WidgetTapAction.REFRESH + }, + lastUpdate = staticWidgetDao.get(widgetId)?.lastUpdate.orEmpty(), + backgroundType = selectedBackgroundType, + textColor = if (selectedBackgroundType == WidgetBackgroundType.TRANSPARENT) { + when (selectedTextColor) { + EntityWidgetTextColor.WHITE -> textColors.white + EntityWidgetTextColor.BLACK -> textColors.black + } + } else { + null + }, + ) + } + + @RequiresApi(Build.VERSION_CODES.O) + suspend fun requestWidgetCreation(context: Context) { + staticWidgetDao.getWidgetCountFlow().drop(1).onStart { + AppWidgetManager.getInstance(context).requestPinAppWidget( + ComponentName(context, EntityWidget::class.java), + null, + PendingIntent.getBroadcast( + context, + System.currentTimeMillis().toInt(), + Intent(context, EntityWidget::class.java).apply { + action = ACTION_APPWIDGET_CREATED + putExtra(EXTRA_WIDGET_ENTITY, getPendingDaoEntity()) + }, + PendingIntent.FLAG_MUTABLE, + ), + ) + }.first() + } + + fun updateWidget(context: Context) { + context.applicationContext.sendBroadcast( + Intent(context.applicationContext, EntityWidget::class.java).apply { + action = BaseWidgetProvider.UPDATE_WIDGETS + }, + ) + } + + @AssistedFactory + interface Factory { + fun create(preselectedEntityId: String?): EntityWidgetConfigureViewModel + } +} + +private const val DEFAULT_TEXT_SIZE = "30" diff --git a/app/src/main/res/layout/widget_static_configure.xml b/app/src/main/res/layout/widget_static_configure.xml deleted file mode 100644 index f35956d3b0c..00000000000 --- a/app/src/main/res/layout/widget_static_configure.xml +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt new file mode 100644 index 00000000000..fc980a5c84a --- /dev/null +++ b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt @@ -0,0 +1,180 @@ +package io.homeassistant.companion.android.widgets.entity + +import app.cash.turbine.test +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.servers.ServerManager +import io.homeassistant.companion.android.database.server.Server +import io.homeassistant.companion.android.database.widget.StaticWidgetDao +import io.homeassistant.companion.android.database.widget.StaticWidgetEntity +import io.homeassistant.companion.android.database.widget.WidgetBackgroundType +import io.homeassistant.companion.android.database.widget.WidgetTapAction +import io.homeassistant.companion.android.testing.unit.MainDispatcherJUnit5Extension +import io.mockk.coEvery +import io.mockk.coVerify +import io.mockk.every +import io.mockk.mockk +import java.time.LocalDateTime +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.runTest +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse +import org.junit.jupiter.api.Assertions.assertTrue +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.extension.RegisterExtension + +@OptIn(ExperimentalCoroutinesApi::class) +private class EntityWidgetConfigureViewModelTest { + + @RegisterExtension + val mainDispatcherExtension = MainDispatcherJUnit5Extension(UnconfinedTestDispatcher()) + + private val dao = mockk(relaxUnitFun = true) + private val integrationRepository = mockk() + private val serverManager = mockk() + + private val widgetId = 42 + private val serverId = 1 + private val server = mockk { + every { id } returns serverId + } + private val entity = createEntity( + entityId = "light.office", + attributes = mapOf("friendly_name" to "Office light", "brightness" to 128), + ) + + @BeforeEach + fun setUp() { + every { serverManager.serversFlow } returns flowOf(emptyList()) + coEvery { serverManager.isRegistered() } returns true + coEvery { serverManager.integrationRepository(any()) } returns integrationRepository + coEvery { integrationRepository.getEntities() } returns listOf(entity) + coEvery { serverManager.getServer(any()) } returns server + coEvery { dao.get(any()) } returns null + } + + @Test + fun `Given an existing widget when setup completes then persisted configuration is restored`() = runTest(mainDispatcherExtension.testDispatcher) { + coEvery { dao.get(widgetId) } returns createWidgetEntity() + val viewModel = createViewModel() + + viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + + assertTrue(viewModel.isUpdateWidget) + assertEquals(serverId, viewModel.selectedServerId) + assertEquals(entity.entityId, viewModel.selectedEntityId) + assertTrue(viewModel.appendAttributes) + assertEquals(listOf("brightness", "friendly_name"), viewModel.selectedAttributeIds) + assertEquals("Office light", viewModel.label) + assertEquals("28", viewModel.textSize) + assertEquals(" - ", viewModel.stateSeparator) + assertEquals(", ", viewModel.attributeSeparator) + assertEquals(WidgetTapAction.TOGGLE, viewModel.selectedTapAction) + assertEquals(WidgetBackgroundType.TRANSPARENT, viewModel.selectedBackgroundType) + assertEquals(EntityWidgetTextColor.BLACK, viewModel.selectedTextColor) + } + + @Test + fun `Given setup is called again when state changed then current state is preserved`() = runTest(mainDispatcherExtension.testDispatcher) { + val viewModel = createViewModel(entity.entityId) + viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + viewModel.onBackgroundTypeSelected(WidgetBackgroundType.TRANSPARENT) + + viewModel.onSetup(widgetId, WidgetBackgroundType.DYNAMICCOLOR, TEXT_COLORS) + + assertEquals(WidgetBackgroundType.TRANSPARENT, viewModel.selectedBackgroundType) + coVerify(exactly = 0) { dao.get(widgetId) } + } + + @Test + fun `Given valid selections when configuration is saved then widget data is persisted`() = runTest(mainDispatcherExtension.testDispatcher) { + val viewModel = createViewModel() + viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + + viewModel.entities.test { + assertEquals(listOf(entity), awaitItem()) + + viewModel.onEntitySelected(entity.entityId) + viewModel.onAppendAttributesChanged(true) + viewModel.onAttributeAdded("brightness") + viewModel.onAttributeSeparatorChanged(", ") + viewModel.onStateSeparatorChanged(" - ") + viewModel.onTextSizeChanged("36sp") + viewModel.onTapActionSelected(WidgetTapAction.TOGGLE) + viewModel.onBackgroundTypeSelected(WidgetBackgroundType.TRANSPARENT) + viewModel.onTextColorSelected(EntityWidgetTextColor.BLACK) + + assertTrue(viewModel.isValidSelection()) + viewModel.updateWidgetConfiguration() + + coVerify { + dao.add( + StaticWidgetEntity( + id = widgetId, + serverId = serverId, + entityId = entity.entityId, + attributeIds = "brightness", + label = "Office light", + textSize = 36F, + stateSeparator = " - ", + attributeSeparator = ", ", + tapAction = WidgetTapAction.TOGGLE, + lastUpdate = "", + backgroundType = WidgetBackgroundType.TRANSPARENT, + textColor = TEXT_COLORS.black, + ), + ) + } + cancelAndIgnoreRemainingEvents() + } + } + + @Test + fun `Given a server change when an entity was selected then dependent state is cleared`() = runTest(mainDispatcherExtension.testDispatcher) { + val newServerId = serverId + 1 + val viewModel = createViewModel(entity.entityId) + viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + viewModel.onAttributeAdded("brightness") + viewModel.onTapActionSelected(WidgetTapAction.TOGGLE) + + viewModel.onServerSelected(newServerId) + + assertEquals(newServerId, viewModel.selectedServerId) + assertEquals(null, viewModel.selectedEntityId) + assertTrue(viewModel.selectedAttributeIds.isEmpty()) + assertEquals(WidgetTapAction.REFRESH, viewModel.selectedTapAction) + assertFalse(viewModel.isValidSelection()) + } + + private fun createViewModel(preselectedEntityId: String? = null) = EntityWidgetConfigureViewModel(dao, serverManager, preselectedEntityId) + + private fun createWidgetEntity() = StaticWidgetEntity( + id = widgetId, + serverId = serverId, + entityId = entity.entityId, + attributeIds = "brightness,friendly_name", + label = "Office light", + textSize = 28F, + stateSeparator = " - ", + attributeSeparator = ", ", + tapAction = WidgetTapAction.TOGGLE, + lastUpdate = "on", + backgroundType = WidgetBackgroundType.TRANSPARENT, + textColor = TEXT_COLORS.black, + ) + + companion object { + private val TEXT_COLORS = EntityWidgetTextColors(white = "#FFFFFF", black = "#000000") + + private fun createEntity(entityId: String, attributes: Map) = Entity( + entityId = entityId, + state = "on", + attributes = attributes, + lastChanged = LocalDateTime.MIN, + lastUpdated = LocalDateTime.MIN, + ) + } +} diff --git a/common/src/main/res/values/strings.xml b/common/src/main/res/values/strings.xml index 5dd05066d78..928b71b89db 100644 --- a/common/src/main/res/values/strings.xml +++ b/common/src/main/res/values/strings.xml @@ -997,6 +997,7 @@ WebView failed to initialize, please check and update your system WebView. Welcome to Home Assistant Companion! Separator between attributes: + Add attribute Select widget theme Widget theme: Light/dark theme From 574c79bf1cf027634eca7ee50db4ed1ba15017b7 Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 12 Jun 2026 03:49:49 +0300 Subject: [PATCH 2/8] Preserve entity widget validation behavior --- .../android/widgets/entity/EntityWidgetConfigureScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt index 31ec5e0d4e0..b41109fdc73 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt @@ -279,7 +279,6 @@ private fun EntityWidgetConfigureView( HAAccentButton( text = stringResource(if (isUpdateWidget) commonR.string.update_widget else commonR.string.add_widget), onClick = onActionClick, - enabled = selectedEntityId != null, modifier = Modifier.fillMaxWidth(), ) } From fc180e24cb248149a3f3f46259c19c681f87c27d Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Fri, 12 Jun 2026 20:08:28 +0300 Subject: [PATCH 3/8] Address entity widget review feedback --- .../widgets/entity/EntityWidgetConfigureViewModel.kt | 6 +++++- .../widgets/entity/EntityWidgetConfigureViewModelTest.kt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt index 14d92b824bc..bf8baf2a5e7 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt @@ -278,8 +278,11 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( @RequiresApi(Build.VERSION_CODES.O) suspend fun requestWidgetCreation(context: Context) { + val appWidgetManager = AppWidgetManager.getInstance(context) + check(appWidgetManager.isRequestPinAppWidgetSupported) { "Widget pinning is not supported" } + staticWidgetDao.getWidgetCountFlow().drop(1).onStart { - AppWidgetManager.getInstance(context).requestPinAppWidget( + val requestAccepted = appWidgetManager.requestPinAppWidget( ComponentName(context, EntityWidget::class.java), null, PendingIntent.getBroadcast( @@ -292,6 +295,7 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( PendingIntent.FLAG_MUTABLE, ), ) + check(requestAccepted) { "Widget pin request was rejected" } }.first() } diff --git a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt index fc980a5c84a..1c1385e26b9 100644 --- a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt +++ b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt @@ -27,7 +27,7 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.RegisterExtension @OptIn(ExperimentalCoroutinesApi::class) -private class EntityWidgetConfigureViewModelTest { +class EntityWidgetConfigureViewModelTest { @RegisterExtension val mainDispatcherExtension = MainDispatcherJUnit5Extension(UnconfinedTestDispatcher()) From 5641414319b7a4746858181a1ed37db4aa8bdf3f Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Sat, 13 Jun 2026 02:26:49 +0300 Subject: [PATCH 4/8] Fix widget API level lint findings --- .../android/widgets/entity/EntityWidgetConfigureActivity.kt | 2 -- .../android/widgets/entity/EntityWidgetConfigureViewModel.kt | 5 ++--- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt index 74a8e1745d1..bf624fc0d9b 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt @@ -8,7 +8,6 @@ import android.os.Bundle import android.widget.Toast import androidx.activity.compose.setContent import androidx.activity.viewModels -import androidx.annotation.RequiresApi import androidx.lifecycle.lifecycleScope import com.google.android.material.color.DynamicColors import dagger.hilt.android.AndroidEntryPoint @@ -103,7 +102,6 @@ class EntityWidgetConfigureActivity : BaseActivity() { } } - @RequiresApi(Build.VERSION_CODES.O) private suspend fun requestPinWidget() { try { viewModel.requestWidgetCreation(this) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt index bf8baf2a5e7..ee6d18f5c82 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt @@ -1,12 +1,11 @@ package io.homeassistant.companion.android.widgets.entity +import android.annotation.SuppressLint import android.app.PendingIntent import android.appwidget.AppWidgetManager import android.content.ComponentName import android.content.Context import android.content.Intent -import android.os.Build -import androidx.annotation.RequiresApi import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf @@ -276,7 +275,7 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( ) } - @RequiresApi(Build.VERSION_CODES.O) + @SuppressLint("NewApi") // The activity calls this only after its API 26 runtime check. suspend fun requestWidgetCreation(context: Context) { val appWidgetManager = AppWidgetManager.getInstance(context) check(appWidgetManager.isRequestPinAppWidgetSupported) { "Widget pinning is not supported" } From eca4235d22d1ad780fa183de6abba11dfdbcb3fd Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Sat, 20 Jun 2026 22:49:31 +0300 Subject: [PATCH 5/8] Address entity widget configure review feedback --- .../entity/EntityWidgetConfigureScreen.kt | 119 ++++++++++++------ .../entity/EntityWidgetConfigureViewModel.kt | 23 +++- .../EntityWidgetConfigureViewModelTest.kt | 46 +++++-- 3 files changed, 139 insertions(+), 49 deletions(-) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt index b41109fdc73..804f99a0c98 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt @@ -1,5 +1,6 @@ package io.homeassistant.companion.android.widgets.entity +import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -9,6 +10,7 @@ import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions @@ -23,6 +25,7 @@ import androidx.compose.material3.InputChipDefaults import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable @@ -45,12 +48,13 @@ import io.homeassistant.companion.android.common.compose.theme.HADimens import io.homeassistant.companion.android.common.compose.theme.HATextStyle import io.homeassistant.companion.android.common.compose.theme.HAThemeForPreview import io.homeassistant.companion.android.common.compose.theme.LocalHAColorScheme +import io.homeassistant.companion.android.common.compose.theme.MaxButtonWidth 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.friendlyName import io.homeassistant.companion.android.database.server.Server import io.homeassistant.companion.android.database.widget.WidgetBackgroundType import io.homeassistant.companion.android.database.widget.WidgetTapAction -import io.homeassistant.companion.android.util.compose.ServerExposedDropdownMenu import io.homeassistant.companion.android.util.compose.entity.EntityPicker import io.homeassistant.companion.android.util.previewEntity1 import io.homeassistant.companion.android.util.previewServer1 @@ -66,6 +70,10 @@ internal fun EntityWidgetConfigureScreen( val entities by viewModel.entities.collectAsStateWithLifecycle() val selectedEntity = entities.firstOrNull { it.entityId == viewModel.selectedEntityId } + LaunchedEffect(selectedEntity?.entityId, selectedEntity?.friendlyName) { + viewModel.onSelectedEntityLoaded(selectedEntity) + } + EntityWidgetConfigureView( servers = servers, selectedServerId = viewModel.selectedServerId, @@ -143,16 +151,26 @@ private fun EntityWidgetConfigureView( modifier = Modifier .verticalScroll(rememberScrollState()) .padding(contentPadding) - .padding(HADimens.SPACE4), + .padding(HADimens.SPACE4) + .fillMaxWidth(), + horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), ) { if (servers.size > 1 || (isUpdateWidget && servers.none { it.id == selectedServerId }) ) { - ServerExposedDropdownMenu( - servers = servers, - current = selectedServerId, - onSelected = onServerSelected, + HADropdownMenu( + items = servers.map { + HADropdownItem(key = it.id, label = it.friendlyName) + }, + selectedKey = selectedServerId.takeIf { serverId -> + servers.any { it.id == serverId } + }, + onItemSelected = onServerSelected, + label = stringResource(commonR.string.server_select), + placeholder = stringResource(commonR.string.server_select), + modifier = Modifier.formControlWidth(), + enabled = servers.isNotEmpty(), ) } @@ -161,28 +179,39 @@ private fun EntityWidgetConfigureView( selectedEntityId = selectedEntityId, onEntitySelectedId = onEntitySelected, onEntityCleared = { onEntitySelected(null) }, + modifier = Modifier.formControlWidth(), ) - CheckboxRow( - text = stringResource(commonR.string.entity_attribute_checkbox), - checked = appendAttributes, - onCheckedChange = onAppendAttributesChanged, - ) - - if (appendAttributes) { - AttributeSelector( - availableAttributes = availableAttributes, - selectedAttributeIds = selectedAttributeIds, - onAttributeAdded = onAttributeAdded, - onAttributeRemoved = onAttributeRemoved, - ) - HATextField( - value = attributeSeparator, - onValueChange = onAttributeSeparatorChanged, - label = { Text(stringResource(commonR.string.widget_attribute_separator_label)) }, - placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, - maxLines = 1, + Column( + modifier = Modifier.formControlWidth(), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + ) { + CheckboxRow( + text = stringResource(commonR.string.entity_attribute_checkbox), + checked = appendAttributes, + onCheckedChange = onAppendAttributesChanged, ) + + AnimatedVisibility(visible = appendAttributes) { + Column( + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), + ) { + AttributeSelector( + availableAttributes = availableAttributes, + selectedAttributeIds = selectedAttributeIds, + onAttributeAdded = onAttributeAdded, + onAttributeRemoved = onAttributeRemoved, + ) + HATextField( + value = attributeSeparator, + onValueChange = onAttributeSeparatorChanged, + label = { Text(stringResource(commonR.string.widget_attribute_separator_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, + maxLines = 1, + ) + } + } } HATextField( @@ -227,6 +256,7 @@ private fun EntityWidgetConfigureView( selectedKey = selectedTapAction, onItemSelected = onTapActionSelected, label = stringResource(commonR.string.widget_tap_action_label), + modifier = Modifier.formControlWidth(), ) } @@ -256,6 +286,7 @@ private fun EntityWidgetConfigureView( selectedKey = selectedBackgroundType, onItemSelected = onBackgroundTypeSelected, label = stringResource(commonR.string.widget_background_type_label), + modifier = Modifier.formControlWidth(), ) if (selectedBackgroundType == WidgetBackgroundType.TRANSPARENT) { @@ -273,18 +304,23 @@ private fun EntityWidgetConfigureView( selectedKey = selectedTextColor, onItemSelected = onTextColorSelected, label = stringResource(commonR.string.widget_text_color_label), + modifier = Modifier.formControlWidth(), ) } HAAccentButton( text = stringResource(if (isUpdateWidget) commonR.string.update_widget else commonR.string.add_widget), onClick = onActionClick, - modifier = Modifier.fillMaxWidth(), + modifier = Modifier.formControlWidth(), ) } } } +private fun Modifier.formControlWidth(): Modifier = this + .widthIn(max = MaxButtonWidth) + .fillMaxWidth() + @Composable private fun CheckboxRow(text: String, checked: Boolean, onCheckedChange: (Boolean) -> Unit) { Row( @@ -325,19 +361,11 @@ private fun AttributeSelector( } Column(verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2)) { - HADropdownMenu( - items = unselectedAttributes.map { HADropdownItem(key = it, label = it) }, - selectedKey = null, - onItemSelected = onAttributeAdded, - label = stringResource(commonR.string.label_attribute), - placeholder = stringResource(commonR.string.widget_attribute_add), - enabled = unselectedAttributes.isNotEmpty(), - ) - HATextField( value = customAttribute, onValueChange = { customAttribute = it }, label = { Text(stringResource(commonR.string.widget_attribute_add)) }, + placeholder = { Text(stringResource(commonR.string.label_attribute)) }, trailingIcon = { IconButton( onClick = addCustomAttributes, @@ -354,6 +382,27 @@ private fun AttributeSelector( maxLines = 1, ) + if (unselectedAttributes.isNotEmpty()) { + FlowRow( + horizontalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + ) { + unselectedAttributes.forEach { attributeId -> + InputChip( + selected = false, + onClick = { onAttributeAdded(attributeId) }, + label = { Text(attributeId) }, + trailingIcon = { + Icon( + imageVector = Icons.Default.Add, + contentDescription = stringResource(commonR.string.widget_attribute_add), + ) + }, + ) + } + } + } + if (selectedAttributeIds.isNotEmpty()) { FlowRow( horizontalArrangement = Arrangement.spacedBy(HADimens.SPACE2), diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt index ee6d18f5c82..fb0cfcaf863 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt @@ -184,9 +184,18 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( } if (label.isBlank() || labelFromEntity) { - val friendlyName = entity?.friendlyName?.takeIf { it != entity.entityId }.orEmpty() - label = friendlyName + updateLabelFromEntity(entity) + } + } + + internal fun onSelectedEntityLoaded(entity: Entity?) { + if (entity == null || entity.entityId != selectedEntityId) return + + val friendlyName = entity.friendlyName.takeIf { it != entity.entityId }.orEmpty() + if (label == friendlyName) { labelFromEntity = friendlyName.isNotEmpty() + } else if (label.isBlank() || labelFromEntity) { + updateLabelFromEntity(entity) } } @@ -299,13 +308,19 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( } fun updateWidget(context: Context) { - context.applicationContext.sendBroadcast( - Intent(context.applicationContext, EntityWidget::class.java).apply { + context.sendBroadcast( + Intent(context, EntityWidget::class.java).apply { action = BaseWidgetProvider.UPDATE_WIDGETS }, ) } + private fun updateLabelFromEntity(entity: Entity?) { + val friendlyName = entity?.friendlyName?.takeIf { it != entity.entityId }.orEmpty() + label = friendlyName + labelFromEntity = friendlyName.isNotEmpty() + } + @AssistedFactory interface Factory { fun create(preselectedEntityId: String?): EntityWidgetConfigureViewModel diff --git a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt index 1c1385e26b9..3d063ef5523 100644 --- a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt +++ b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt @@ -17,21 +17,19 @@ import io.mockk.mockk import java.time.LocalDateTime import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.flowOf -import kotlinx.coroutines.test.UnconfinedTestDispatcher +import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test -import org.junit.jupiter.api.extension.RegisterExtension +import org.junit.jupiter.api.extension.ExtendWith @OptIn(ExperimentalCoroutinesApi::class) +@ExtendWith(MainDispatcherJUnit5Extension::class) class EntityWidgetConfigureViewModelTest { - @RegisterExtension - val mainDispatcherExtension = MainDispatcherJUnit5Extension(UnconfinedTestDispatcher()) - private val dao = mockk(relaxUnitFun = true) private val integrationRepository = mockk() private val serverManager = mockk() @@ -57,11 +55,12 @@ class EntityWidgetConfigureViewModelTest { } @Test - fun `Given an existing widget when setup completes then persisted configuration is restored`() = runTest(mainDispatcherExtension.testDispatcher) { + fun `Given an existing widget when setup completes then persisted configuration is restored`() = runTest { coEvery { dao.get(widgetId) } returns createWidgetEntity() val viewModel = createViewModel() viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + advanceUntilIdle() assertTrue(viewModel.isUpdateWidget) assertEquals(serverId, viewModel.selectedServerId) @@ -78,24 +77,27 @@ class EntityWidgetConfigureViewModelTest { } @Test - fun `Given setup is called again when state changed then current state is preserved`() = runTest(mainDispatcherExtension.testDispatcher) { + fun `Given setup is called again when state changed then current state is preserved`() = runTest { val viewModel = createViewModel(entity.entityId) viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + advanceUntilIdle() viewModel.onBackgroundTypeSelected(WidgetBackgroundType.TRANSPARENT) viewModel.onSetup(widgetId, WidgetBackgroundType.DYNAMICCOLOR, TEXT_COLORS) + advanceUntilIdle() assertEquals(WidgetBackgroundType.TRANSPARENT, viewModel.selectedBackgroundType) coVerify(exactly = 0) { dao.get(widgetId) } } @Test - fun `Given valid selections when configuration is saved then widget data is persisted`() = runTest(mainDispatcherExtension.testDispatcher) { + fun `Given valid selections when configuration is saved then widget data is persisted`() = runTest { val viewModel = createViewModel() viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) viewModel.entities.test { - assertEquals(listOf(entity), awaitItem()) + advanceUntilIdle() + assertEquals(listOf(entity), expectMostRecentItem()) viewModel.onEntitySelected(entity.entityId) viewModel.onAppendAttributesChanged(true) @@ -133,10 +135,34 @@ class EntityWidgetConfigureViewModelTest { } @Test - fun `Given a server change when an entity was selected then dependent state is cleared`() = runTest(mainDispatcherExtension.testDispatcher) { + fun `Given a generated label when entity changes then label follows the selected entity`() = runTest { + val secondEntity = createEntity( + entityId = "switch.fan", + attributes = mapOf("friendly_name" to "Fan"), + ) + coEvery { integrationRepository.getEntities() } returns listOf(entity, secondEntity) + val viewModel = createViewModel() + + viewModel.entities.test { + advanceUntilIdle() + assertEquals(listOf(entity, secondEntity), expectMostRecentItem()) + + viewModel.onEntitySelected(entity.entityId) + assertEquals("Office light", viewModel.label) + + viewModel.onEntitySelected(secondEntity.entityId) + assertEquals("Fan", viewModel.label) + + cancelAndIgnoreRemainingEvents() + } + } + + @Test + fun `Given a server change when an entity was selected then dependent state is cleared`() = runTest { val newServerId = serverId + 1 val viewModel = createViewModel(entity.entityId) viewModel.onSetup(widgetId, WidgetBackgroundType.DAYNIGHT, TEXT_COLORS) + advanceUntilIdle() viewModel.onAttributeAdded("brightness") viewModel.onTapActionSelected(WidgetTapAction.TOGGLE) From 6691e0e269d34f4e7917d9de835aa7d49e055bef Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Sun, 21 Jun 2026 17:17:20 +0300 Subject: [PATCH 6/8] Address entity widget picker review feedback --- .../entity/EntityWidgetConfigureScreen.kt | 18 +++++ .../entity/EntityWidgetConfigureViewModel.kt | 70 ++++++++++++++++++- 2 files changed, 87 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt index 804f99a0c98..7498ae72bbd 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt @@ -52,6 +52,9 @@ import io.homeassistant.companion.android.common.compose.theme.MaxButtonWidth 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.friendlyName +import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse +import io.homeassistant.companion.android.common.data.websocket.impl.entities.DeviceRegistryResponse +import io.homeassistant.companion.android.common.data.websocket.impl.entities.EntityRegistryResponse import io.homeassistant.companion.android.database.server.Server import io.homeassistant.companion.android.database.widget.WidgetBackgroundType import io.homeassistant.companion.android.database.widget.WidgetTapAction @@ -68,6 +71,9 @@ internal fun EntityWidgetConfigureScreen( ) { val servers by viewModel.servers.collectAsStateWithLifecycle(emptyList()) val entities by viewModel.entities.collectAsStateWithLifecycle() + val entityRegistry by viewModel.entityRegistry.collectAsStateWithLifecycle() + val deviceRegistry by viewModel.deviceRegistry.collectAsStateWithLifecycle() + val areaRegistry by viewModel.areaRegistry.collectAsStateWithLifecycle() val selectedEntity = entities.firstOrNull { it.entityId == viewModel.selectedEntityId } LaunchedEffect(selectedEntity?.entityId, selectedEntity?.friendlyName) { @@ -81,6 +87,9 @@ internal fun EntityWidgetConfigureScreen( entities = entities, selectedEntityId = viewModel.selectedEntityId, onEntitySelected = viewModel::onEntitySelected, + entityRegistry = entityRegistry, + deviceRegistry = deviceRegistry, + areaRegistry = areaRegistry, availableAttributes = selectedEntity?.attributes?.keys.orEmpty().sorted(), appendAttributes = viewModel.appendAttributes, onAppendAttributesChanged = viewModel::onAppendAttributesChanged, @@ -116,6 +125,9 @@ private fun EntityWidgetConfigureView( entities: List, selectedEntityId: String?, onEntitySelected: (String?) -> Unit, + entityRegistry: List? = null, + deviceRegistry: List? = null, + areaRegistry: List? = null, availableAttributes: List, appendAttributes: Boolean, onAppendAttributesChanged: (Boolean) -> Unit, @@ -180,6 +192,9 @@ private fun EntityWidgetConfigureView( onEntitySelectedId = onEntitySelected, onEntityCleared = { onEntitySelected(null) }, modifier = Modifier.formControlWidth(), + entityRegistry = entityRegistry, + deviceRegistry = deviceRegistry, + areaRegistry = areaRegistry, ) Column( @@ -442,6 +457,9 @@ private fun EntityWidgetConfigureViewPreview() { entities = listOf(previewEntity1), selectedEntityId = previewEntity1.entityId, onEntitySelected = {}, + entityRegistry = null, + deviceRegistry = null, + areaRegistry = null, availableAttributes = listOf("brightness", "friendly_name"), appendAttributes = true, onAppendAttributesChanged = {}, diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt index fb0cfcaf863..c676df7d4a2 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt @@ -6,6 +6,8 @@ import android.appwidget.AppWidgetManager import android.content.ComponentName import android.content.Context import android.content.Intent +import android.os.Build +import android.os.RemoteException import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf @@ -21,6 +23,10 @@ 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.friendlyName import io.homeassistant.companion.android.common.data.servers.ServerManager +import io.homeassistant.companion.android.common.data.websocket.impl.entities.AreaRegistryResponse +import io.homeassistant.companion.android.common.data.websocket.impl.entities.DeviceRegistryResponse +import io.homeassistant.companion.android.common.data.websocket.impl.entities.EntityRegistryResponse +import io.homeassistant.companion.android.common.util.SdkVersion import io.homeassistant.companion.android.database.widget.StaticWidgetDao import io.homeassistant.companion.android.database.widget.StaticWidgetEntity import io.homeassistant.companion.android.database.widget.WidgetBackgroundType @@ -90,6 +96,60 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( initialValue = emptyList(), ) + @OptIn(ExperimentalCoroutinesApi::class) + val entityRegistry: StateFlow?> = snapshotFlow { selectedServerId } + .distinctUntilChanged() + .mapLatest { serverId -> + if (!serverManager.isRegistered()) { + null + } else { + try { + serverManager.webSocketRepository(serverId).getEntityRegistry() + } catch (e: CancellationException) { + throw e + } catch (e: Exception) { + Timber.e(e, "Failed to get entity registry") + null + } + } + }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(500.milliseconds), null) + + @OptIn(ExperimentalCoroutinesApi::class) + val deviceRegistry: StateFlow?> = snapshotFlow { selectedServerId } + .distinctUntilChanged() + .mapLatest { serverId -> + if (!serverManager.isRegistered()) { + null + } else { + try { + serverManager.webSocketRepository(serverId).getDeviceRegistry() + } catch (e: CancellationException) { + throw e + } catch (e: Exception) { + Timber.e(e, "Failed to get device registry") + null + } + } + }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(500.milliseconds), null) + + @OptIn(ExperimentalCoroutinesApi::class) + val areaRegistry: StateFlow?> = snapshotFlow { selectedServerId } + .distinctUntilChanged() + .mapLatest { serverId -> + if (!serverManager.isRegistered()) { + null + } else { + try { + serverManager.webSocketRepository(serverId).getAreaRegistry() + } catch (e: CancellationException) { + throw e + } catch (e: Exception) { + Timber.e(e, "Failed to get area registry") + null + } + } + }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(500.milliseconds), null) + var selectedEntityId by mutableStateOf(preselectedEntityId) private set var appendAttributes by mutableStateOf(false) @@ -286,8 +346,16 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( @SuppressLint("NewApi") // The activity calls this only after its API 26 runtime check. suspend fun requestWidgetCreation(context: Context) { + check(SdkVersion.isAtLeast(Build.VERSION_CODES.O)) { "Widget pinning is not supported" } + val appWidgetManager = AppWidgetManager.getInstance(context) - check(appWidgetManager.isRequestPinAppWidgetSupported) { "Widget pinning is not supported" } + val pinningSupported = try { + appWidgetManager.isRequestPinAppWidgetSupported + } catch (e: RemoteException) { + Timber.e(e, "Unable to read isRequestPinAppWidgetSupported") + false + } + check(pinningSupported) { "Widget pinning is not supported" } staticWidgetDao.getWidgetCountFlow().drop(1).onStart { val requestAccepted = appWidgetManager.requestPinAppWidget( From e483268a026b4afd7d5dafb0a5a1029607c9549b Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Sun, 21 Jun 2026 18:05:34 +0300 Subject: [PATCH 7/8] Address entity widget compose review --- .../entity/EntityWidgetConfigureActivity.kt | 11 +- .../entity/EntityWidgetConfigureScreen.kt | 525 +++++++++++------- .../entity/EntityWidgetConfigureViewModel.kt | 203 ++++--- .../EntityWidgetConfigureScreenshotTest.kt | 58 ++ ...idgetConfigureView_foldable_c908f502_0.png | Bin 0 -> 104841 bytes ...tyWidgetConfigureView_phone_e05166be_0.png | Bin 0 -> 94866 bytes ...nfigureView_phone_landscape_9e00b29d_0.png | Bin 0 -> 51681 bytes ...etConfigureView_small_phone_66e7bbf2_0.png | Bin 0 -> 48089 bytes ...yWidgetConfigureView_tablet_2f22c4ea_0.png | Bin 0 -> 100517 bytes ...figureView_tablet_landscape_62cae397_0.png | Bin 0 -> 74070 bytes .../entity/EntityWidgetConfigureScreenTest.kt | 141 +++++ .../EntityWidgetConfigureViewModelTest.kt | 25 + 12 files changed, 688 insertions(+), 275 deletions(-) create mode 100644 app/src/screenshotTest/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest.kt create mode 100644 app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_foldable_c908f502_0.png create mode 100644 app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_phone_e05166be_0.png create mode 100644 app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_phone_landscape_9e00b29d_0.png create mode 100644 app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_small_phone_66e7bbf2_0.png create mode 100644 app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_tablet_2f22c4ea_0.png create mode 100644 app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_tablet_landscape_62cae397_0.png create mode 100644 app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenTest.kt diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt index bf624fc0d9b..829c61aa5bb 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureActivity.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle -import android.widget.Toast import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.lifecycle.lifecycleScope @@ -94,7 +93,7 @@ class EntityWidgetConfigureActivity : BaseActivity() { if (SdkVersion.isAtLeast(Build.VERSION_CODES.O) && viewModel.isValidSelection()) { requestPinWidget() } else { - showWidgetError(commonR.string.widget_creation_error) + showWidgetError(EntityWidgetConfigureError.CREATE) } } else { updateWidget() @@ -107,7 +106,7 @@ class EntityWidgetConfigureActivity : BaseActivity() { viewModel.requestWidgetCreation(this) finish() } catch (_: IllegalStateException) { - showWidgetError(commonR.string.widget_creation_error) + showWidgetError(EntityWidgetConfigureError.CREATE) } } @@ -121,11 +120,11 @@ class EntityWidgetConfigureActivity : BaseActivity() { ) finish() } catch (_: IllegalStateException) { - showWidgetError(commonR.string.widget_update_error) + showWidgetError(EntityWidgetConfigureError.UPDATE) } } - private fun showWidgetError(message: Int) { - Toast.makeText(applicationContext, message, Toast.LENGTH_LONG).show() + private fun showWidgetError(error: EntityWidgetConfigureError) { + viewModel.onActionError(error) } } diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt index 7498ae72bbd..b9e16d90af3 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt @@ -23,15 +23,17 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.InputChip import androidx.compose.material3.InputChipDefaults import androidx.compose.material3.Scaffold +import androidx.compose.material3.SnackbarHost +import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.saveable.rememberSaveable -import androidx.compose.runtime.setValue +import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType @@ -62,6 +64,13 @@ import io.homeassistant.companion.android.util.compose.entity.EntityPicker import io.homeassistant.companion.android.util.previewEntity1 import io.homeassistant.companion.android.util.previewServer1 import io.homeassistant.companion.android.util.previewServer2 +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +internal const val ENTITY_WIDGET_CUSTOM_ATTRIBUTE_TAG = "entity_widget_custom_attribute" +internal const val ENTITY_WIDGET_ACTION_BUTTON_TAG = "entity_widget_action_button" + +private data class SelectedEntityData(val entity: Entity? = null, val availableAttributes: List = emptyList()) @Composable internal fun EntityWidgetConfigureScreen( @@ -74,7 +83,21 @@ internal fun EntityWidgetConfigureScreen( val entityRegistry by viewModel.entityRegistry.collectAsStateWithLifecycle() val deviceRegistry by viewModel.deviceRegistry.collectAsStateWithLifecycle() val areaRegistry by viewModel.areaRegistry.collectAsStateWithLifecycle() - val selectedEntity = entities.firstOrNull { it.entityId == viewModel.selectedEntityId } + val viewState = viewModel.viewState + val selectedEntityData by produceState( + initialValue = SelectedEntityData(), + entities, + viewState.selectedEntityId, + ) { + value = withContext(Dispatchers.Default) { + val entity = entities.firstOrNull { it.entityId == viewState.selectedEntityId } + SelectedEntityData( + entity = entity, + availableAttributes = entity?.attributes?.keys.orEmpty().sorted(), + ) + } + } + val selectedEntity = selectedEntityData.entity LaunchedEffect(selectedEntity?.entityId, selectedEntity?.friendlyName) { viewModel.onSelectedEntityLoaded(selectedEntity) @@ -82,81 +105,83 @@ internal fun EntityWidgetConfigureScreen( EntityWidgetConfigureView( servers = servers, - selectedServerId = viewModel.selectedServerId, + viewState = viewState, onServerSelected = viewModel::onServerSelected, entities = entities, - selectedEntityId = viewModel.selectedEntityId, onEntitySelected = viewModel::onEntitySelected, entityRegistry = entityRegistry, deviceRegistry = deviceRegistry, areaRegistry = areaRegistry, - availableAttributes = selectedEntity?.attributes?.keys.orEmpty().sorted(), - appendAttributes = viewModel.appendAttributes, + availableAttributes = selectedEntityData.availableAttributes, onAppendAttributesChanged = viewModel::onAppendAttributesChanged, - selectedAttributeIds = viewModel.selectedAttributeIds, onAttributeAdded = viewModel::onAttributeAdded, onAttributeRemoved = viewModel::onAttributeRemoved, - label = viewModel.label, + onCustomAttributeChanged = viewModel::onCustomAttributeChanged, + onCustomAttributesAdded = viewModel::onCustomAttributesAdded, onLabelChanged = viewModel::onLabelChanged, - textSize = viewModel.textSize, onTextSizeChanged = viewModel::onTextSizeChanged, - stateSeparator = viewModel.stateSeparator, onStateSeparatorChanged = viewModel::onStateSeparatorChanged, - attributeSeparator = viewModel.attributeSeparator, onAttributeSeparatorChanged = viewModel::onAttributeSeparatorChanged, isToggleable = selectedEntity?.domain in EntityExt.APP_PRESS_ACTION_DOMAINS, - selectedTapAction = viewModel.selectedTapAction, onTapActionSelected = viewModel::onTapActionSelected, - selectedBackgroundType = viewModel.selectedBackgroundType, onBackgroundTypeSelected = viewModel::onBackgroundTypeSelected, dynamicColorAvailable = dynamicColorAvailable, - selectedTextColor = viewModel.selectedTextColor, onTextColorSelected = viewModel::onTextColorSelected, - isUpdateWidget = viewModel.isUpdateWidget, + onErrorShown = viewModel::onErrorShown, onActionClick = onActionClick, ) } @Composable -private fun EntityWidgetConfigureView( +internal fun EntityWidgetConfigureView( servers: List, - selectedServerId: Int, + viewState: EntityWidgetConfigureViewState, onServerSelected: (Int) -> Unit, entities: List, - selectedEntityId: String?, onEntitySelected: (String?) -> Unit, entityRegistry: List? = null, deviceRegistry: List? = null, areaRegistry: List? = null, availableAttributes: List, - appendAttributes: Boolean, onAppendAttributesChanged: (Boolean) -> Unit, - selectedAttributeIds: List, onAttributeAdded: (String) -> Unit, onAttributeRemoved: (String) -> Unit, - label: String, + onCustomAttributeChanged: (String) -> Unit, + onCustomAttributesAdded: () -> Unit, onLabelChanged: (String) -> Unit, - textSize: String, onTextSizeChanged: (String) -> Unit, - stateSeparator: String, onStateSeparatorChanged: (String) -> Unit, - attributeSeparator: String, onAttributeSeparatorChanged: (String) -> Unit, isToggleable: Boolean, - selectedTapAction: WidgetTapAction, onTapActionSelected: (WidgetTapAction) -> Unit, - selectedBackgroundType: WidgetBackgroundType, onBackgroundTypeSelected: (WidgetBackgroundType) -> Unit, dynamicColorAvailable: Boolean, - selectedTextColor: EntityWidgetTextColor, onTextColorSelected: (EntityWidgetTextColor) -> Unit, - isUpdateWidget: Boolean, + onErrorShown: () -> Unit, onActionClick: () -> Unit, ) { + val snackbarHostState = remember { SnackbarHostState() } + val creationError = stringResource(commonR.string.widget_creation_error) + val updateError = stringResource(commonR.string.widget_update_error) + + LaunchedEffect(viewState.error) { + val error = viewState.error ?: return@LaunchedEffect + snackbarHostState.showSnackbar( + when (error) { + EntityWidgetConfigureError.CREATE -> creationError + EntityWidgetConfigureError.UPDATE -> updateError + }, + ) + onErrorShown() + } + Scaffold( topBar = { HATopBar(title = { Text(stringResource(commonR.string.select_entity_to_display)) }) }, + snackbarHost = { + SnackbarHost(hostState = snackbarHostState) + }, contentWindowInsets = WindowInsets.safeDrawing, ) { contentPadding -> Column( @@ -168,170 +193,281 @@ private fun EntityWidgetConfigureView( horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), ) { - if (servers.size > 1 || - (isUpdateWidget && servers.none { it.id == selectedServerId }) - ) { - HADropdownMenu( - items = servers.map { - HADropdownItem(key = it.id, label = it.friendlyName) - }, - selectedKey = selectedServerId.takeIf { serverId -> - servers.any { it.id == serverId } - }, - onItemSelected = onServerSelected, - label = stringResource(commonR.string.server_select), - placeholder = stringResource(commonR.string.server_select), - modifier = Modifier.formControlWidth(), - enabled = servers.isNotEmpty(), - ) - } - - EntityPicker( + ServerSelector( + servers = servers, + selectedServerId = viewState.selectedServerId, + isUpdateWidget = viewState.isUpdateWidget, + onServerSelected = onServerSelected, + ) + EntityPickerSection( entities = entities, - selectedEntityId = selectedEntityId, - onEntitySelectedId = onEntitySelected, - onEntityCleared = { onEntitySelected(null) }, - modifier = Modifier.formControlWidth(), + selectedEntityId = viewState.selectedEntityId, entityRegistry = entityRegistry, deviceRegistry = deviceRegistry, areaRegistry = areaRegistry, + onEntitySelected = onEntitySelected, + ) + AttributeSection( + viewState = viewState, + availableAttributes = availableAttributes, + onAppendAttributesChanged = onAppendAttributesChanged, + onAttributeAdded = onAttributeAdded, + onAttributeRemoved = onAttributeRemoved, + onCustomAttributeChanged = onCustomAttributeChanged, + onCustomAttributesAdded = onCustomAttributesAdded, + onAttributeSeparatorChanged = onAttributeSeparatorChanged, ) + TextOptionsSection( + viewState = viewState, + onTextSizeChanged = onTextSizeChanged, + onStateSeparatorChanged = onStateSeparatorChanged, + onLabelChanged = onLabelChanged, + ) + TapActionSection( + selectedTapAction = viewState.selectedTapAction, + isToggleable = isToggleable, + onTapActionSelected = onTapActionSelected, + ) + AppearanceSection( + selectedBackgroundType = viewState.selectedBackgroundType, + dynamicColorAvailable = dynamicColorAvailable, + selectedTextColor = viewState.selectedTextColor, + onBackgroundTypeSelected = onBackgroundTypeSelected, + onTextColorSelected = onTextColorSelected, + ) + ActionButton( + isUpdateWidget = viewState.isUpdateWidget, + enabled = viewState.isActionEnabled, + onActionClick = onActionClick, + ) + } + } +} + +@Composable +private fun ServerSelector( + servers: List, + selectedServerId: Int, + isUpdateWidget: Boolean, + onServerSelected: (Int) -> Unit, +) { + if (servers.size <= 1 && !(isUpdateWidget && servers.none { it.id == selectedServerId })) return + + HADropdownMenu( + items = servers.map { + HADropdownItem(key = it.id, label = it.friendlyName) + }, + selectedKey = selectedServerId.takeIf { serverId -> + servers.any { it.id == serverId } + }, + onItemSelected = onServerSelected, + label = stringResource(commonR.string.server_select), + placeholder = stringResource(commonR.string.server_select), + modifier = Modifier.formControlWidth(), + enabled = servers.isNotEmpty(), + ) +} + +@Composable +private fun EntityPickerSection( + entities: List, + selectedEntityId: String?, + entityRegistry: List? = null, + deviceRegistry: List? = null, + areaRegistry: List? = null, + onEntitySelected: (String?) -> Unit, +) { + EntityPicker( + entities = entities, + selectedEntityId = selectedEntityId, + onEntitySelectedId = onEntitySelected, + onEntityCleared = { onEntitySelected(null) }, + modifier = Modifier.formControlWidth(), + entityRegistry = entityRegistry, + deviceRegistry = deviceRegistry, + areaRegistry = areaRegistry, + ) +} + +@Composable +private fun AttributeSection( + viewState: EntityWidgetConfigureViewState, + availableAttributes: List, + onAppendAttributesChanged: (Boolean) -> Unit, + onAttributeAdded: (String) -> Unit, + onAttributeRemoved: (String) -> Unit, + onCustomAttributeChanged: (String) -> Unit, + onCustomAttributesAdded: () -> Unit, + onAttributeSeparatorChanged: (String) -> Unit, +) { + Column( + modifier = Modifier.formControlWidth(), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + ) { + CheckboxRow( + text = stringResource(commonR.string.entity_attribute_checkbox), + checked = viewState.appendAttributes, + onCheckedChange = onAppendAttributesChanged, + ) + AnimatedVisibility(visible = viewState.appendAttributes) { Column( - modifier = Modifier.formControlWidth(), - verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2), + modifier = Modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), ) { - CheckboxRow( - text = stringResource(commonR.string.entity_attribute_checkbox), - checked = appendAttributes, - onCheckedChange = onAppendAttributesChanged, + AttributeSelector( + availableAttributes = availableAttributes, + selectedAttributeIds = viewState.selectedAttributeIds, + customAttribute = viewState.customAttribute, + onAttributeAdded = onAttributeAdded, + onAttributeRemoved = onAttributeRemoved, + onCustomAttributeChanged = onCustomAttributeChanged, + onCustomAttributesAdded = onCustomAttributesAdded, + ) + HATextField( + value = viewState.attributeSeparator, + onValueChange = onAttributeSeparatorChanged, + label = { Text(stringResource(commonR.string.widget_attribute_separator_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, + maxLines = 1, ) - - AnimatedVisibility(visible = appendAttributes) { - Column( - modifier = Modifier.fillMaxWidth(), - verticalArrangement = Arrangement.spacedBy(HADimens.SPACE4), - ) { - AttributeSelector( - availableAttributes = availableAttributes, - selectedAttributeIds = selectedAttributeIds, - onAttributeAdded = onAttributeAdded, - onAttributeRemoved = onAttributeRemoved, - ) - HATextField( - value = attributeSeparator, - onValueChange = onAttributeSeparatorChanged, - label = { Text(stringResource(commonR.string.widget_attribute_separator_label)) }, - placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, - maxLines = 1, - ) - } - } } + } + } +} - HATextField( - value = textSize, - onValueChange = onTextSizeChanged, - label = { Text(stringResource(commonR.string.widget_text_size_label)) }, - keyboardOptions = KeyboardOptions( - keyboardType = KeyboardType.Number, - imeAction = ImeAction.Next, - ), - maxLines = 1, - ) +@Composable +private fun TextOptionsSection( + viewState: EntityWidgetConfigureViewState, + onTextSizeChanged: (String) -> Unit, + onStateSeparatorChanged: (String) -> Unit, + onLabelChanged: (String) -> Unit, +) { + HATextField( + value = viewState.textSize, + onValueChange = onTextSizeChanged, + label = { Text(stringResource(commonR.string.widget_text_size_label)) }, + keyboardOptions = KeyboardOptions( + keyboardType = KeyboardType.Number, + imeAction = ImeAction.Next, + ), + maxLines = 1, + ) - HATextField( - value = stateSeparator, - onValueChange = onStateSeparatorChanged, - label = { Text(stringResource(commonR.string.widget_state_separator_label)) }, - placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, - maxLines = 1, - ) + HATextField( + value = viewState.stateSeparator, + onValueChange = onStateSeparatorChanged, + label = { Text(stringResource(commonR.string.widget_state_separator_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_separator_input_hint)) }, + maxLines = 1, + ) - HATextField( - value = label, - onValueChange = onLabelChanged, - label = { Text(stringResource(commonR.string.label_label)) }, - placeholder = { Text(stringResource(commonR.string.widget_text_hint_label)) }, - maxLines = 1, - ) + HATextField( + value = viewState.label, + onValueChange = onLabelChanged, + label = { Text(stringResource(commonR.string.label_label)) }, + placeholder = { Text(stringResource(commonR.string.widget_text_hint_label)) }, + maxLines = 1, + ) +} - if (isToggleable) { - HADropdownMenu( - items = listOf( - HADropdownItem( - key = WidgetTapAction.TOGGLE, - label = stringResource(commonR.string.widget_tap_action_toggle), - ), - HADropdownItem( - key = WidgetTapAction.REFRESH, - label = stringResource(commonR.string.refresh), - ), - ), - selectedKey = selectedTapAction, - onItemSelected = onTapActionSelected, - label = stringResource(commonR.string.widget_tap_action_label), - modifier = Modifier.formControlWidth(), - ) - } +@Composable +private fun TapActionSection( + selectedTapAction: WidgetTapAction, + isToggleable: Boolean, + onTapActionSelected: (WidgetTapAction) -> Unit, +) { + if (!isToggleable) return - HADropdownMenu( - items = buildList { - if (dynamicColorAvailable) { - add( - HADropdownItem( - key = WidgetBackgroundType.DYNAMICCOLOR, - label = stringResource(commonR.string.widget_background_type_dynamiccolor), - ), - ) - } - add( - HADropdownItem( - key = WidgetBackgroundType.DAYNIGHT, - label = stringResource(commonR.string.widget_background_type_daynight), - ), - ) - add( - HADropdownItem( - key = WidgetBackgroundType.TRANSPARENT, - label = stringResource(commonR.string.widget_background_type_transparent), - ), - ) - }, - selectedKey = selectedBackgroundType, - onItemSelected = onBackgroundTypeSelected, - label = stringResource(commonR.string.widget_background_type_label), - modifier = Modifier.formControlWidth(), - ) + HADropdownMenu( + items = listOf( + HADropdownItem( + key = WidgetTapAction.TOGGLE, + label = stringResource(commonR.string.widget_tap_action_toggle), + ), + HADropdownItem( + key = WidgetTapAction.REFRESH, + label = stringResource(commonR.string.refresh), + ), + ), + selectedKey = selectedTapAction, + onItemSelected = onTapActionSelected, + label = stringResource(commonR.string.widget_tap_action_label), + modifier = Modifier.formControlWidth(), + ) +} - if (selectedBackgroundType == WidgetBackgroundType.TRANSPARENT) { - HADropdownMenu( - items = listOf( - HADropdownItem( - key = EntityWidgetTextColor.WHITE, - label = stringResource(commonR.string.widget_text_color_white), - ), - HADropdownItem( - key = EntityWidgetTextColor.BLACK, - label = stringResource(commonR.string.widget_text_color_black), - ), +@Composable +private fun AppearanceSection( + selectedBackgroundType: WidgetBackgroundType, + dynamicColorAvailable: Boolean, + selectedTextColor: EntityWidgetTextColor, + onBackgroundTypeSelected: (WidgetBackgroundType) -> Unit, + onTextColorSelected: (EntityWidgetTextColor) -> Unit, +) { + HADropdownMenu( + items = buildList { + if (dynamicColorAvailable) { + add( + HADropdownItem( + key = WidgetBackgroundType.DYNAMICCOLOR, + label = stringResource(commonR.string.widget_background_type_dynamiccolor), ), - selectedKey = selectedTextColor, - onItemSelected = onTextColorSelected, - label = stringResource(commonR.string.widget_text_color_label), - modifier = Modifier.formControlWidth(), ) } - - HAAccentButton( - text = stringResource(if (isUpdateWidget) commonR.string.update_widget else commonR.string.add_widget), - onClick = onActionClick, - modifier = Modifier.formControlWidth(), + add( + HADropdownItem( + key = WidgetBackgroundType.DAYNIGHT, + label = stringResource(commonR.string.widget_background_type_daynight), + ), ) - } + add( + HADropdownItem( + key = WidgetBackgroundType.TRANSPARENT, + label = stringResource(commonR.string.widget_background_type_transparent), + ), + ) + }, + selectedKey = selectedBackgroundType, + onItemSelected = onBackgroundTypeSelected, + label = stringResource(commonR.string.widget_background_type_label), + modifier = Modifier.formControlWidth(), + ) + + if (selectedBackgroundType == WidgetBackgroundType.TRANSPARENT) { + HADropdownMenu( + items = listOf( + HADropdownItem( + key = EntityWidgetTextColor.WHITE, + label = stringResource(commonR.string.widget_text_color_white), + ), + HADropdownItem( + key = EntityWidgetTextColor.BLACK, + label = stringResource(commonR.string.widget_text_color_black), + ), + ), + selectedKey = selectedTextColor, + onItemSelected = onTextColorSelected, + label = stringResource(commonR.string.widget_text_color_label), + modifier = Modifier.formControlWidth(), + ) } } +@Composable +private fun ActionButton(isUpdateWidget: Boolean, enabled: Boolean, onActionClick: () -> Unit) { + HAAccentButton( + text = stringResource( + if (isUpdateWidget) commonR.string.update_widget else commonR.string.add_widget, + ), + onClick = onActionClick, + modifier = Modifier + .formControlWidth() + .testTag(ENTITY_WIDGET_ACTION_BUTTON_TAG), + enabled = enabled, + ) +} + private fun Modifier.formControlWidth(): Modifier = this .widthIn(max = MaxButtonWidth) .fillMaxWidth() @@ -361,29 +497,24 @@ private fun CheckboxRow(text: String, checked: Boolean, onCheckedChange: (Boolea private fun AttributeSelector( availableAttributes: List, selectedAttributeIds: List, + customAttribute: String, onAttributeAdded: (String) -> Unit, onAttributeRemoved: (String) -> Unit, + onCustomAttributeChanged: (String) -> Unit, + onCustomAttributesAdded: () -> Unit, ) { val unselectedAttributes = availableAttributes.filterNot(selectedAttributeIds::contains) - var customAttribute by rememberSaveable { mutableStateOf("") } - val addCustomAttributes = { - customAttribute - .split(',') - .map(String::trim) - .filter(String::isNotEmpty) - .forEach(onAttributeAdded) - customAttribute = "" - } Column(verticalArrangement = Arrangement.spacedBy(HADimens.SPACE2)) { HATextField( value = customAttribute, - onValueChange = { customAttribute = it }, + onValueChange = onCustomAttributeChanged, + modifier = Modifier.testTag(ENTITY_WIDGET_CUSTOM_ATTRIBUTE_TAG), label = { Text(stringResource(commonR.string.widget_attribute_add)) }, placeholder = { Text(stringResource(commonR.string.label_attribute)) }, trailingIcon = { IconButton( - onClick = addCustomAttributes, + onClick = onCustomAttributesAdded, enabled = customAttribute.isNotBlank(), ) { Icon( @@ -393,7 +524,7 @@ private fun AttributeSelector( } }, keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), - keyboardActions = KeyboardActions(onDone = { addCustomAttributes() }), + keyboardActions = KeyboardActions(onDone = { onCustomAttributesAdded() }), maxLines = 1, ) @@ -452,37 +583,41 @@ private fun EntityWidgetConfigureViewPreview() { HAThemeForPreview { EntityWidgetConfigureView( servers = listOf(previewServer1, previewServer2), - selectedServerId = previewServer1.id, + viewState = EntityWidgetConfigureViewState( + selectedServerId = previewServer1.id, + selectedEntityId = previewEntity1.entityId, + appendAttributes = true, + selectedAttributeIds = listOf("brightness"), + label = "Office light", + textSize = "30", + stateSeparator = " - ", + attributeSeparator = ", ", + selectedTapAction = WidgetTapAction.TOGGLE, + selectedBackgroundType = WidgetBackgroundType.TRANSPARENT, + selectedTextColor = EntityWidgetTextColor.WHITE, + ), onServerSelected = {}, entities = listOf(previewEntity1), - selectedEntityId = previewEntity1.entityId, onEntitySelected = {}, entityRegistry = null, deviceRegistry = null, areaRegistry = null, availableAttributes = listOf("brightness", "friendly_name"), - appendAttributes = true, onAppendAttributesChanged = {}, - selectedAttributeIds = listOf("brightness"), onAttributeAdded = {}, onAttributeRemoved = {}, - label = "Office light", + onCustomAttributeChanged = {}, + onCustomAttributesAdded = {}, onLabelChanged = {}, - textSize = "30", onTextSizeChanged = {}, - stateSeparator = " - ", onStateSeparatorChanged = {}, - attributeSeparator = ", ", onAttributeSeparatorChanged = {}, isToggleable = true, - selectedTapAction = WidgetTapAction.TOGGLE, onTapActionSelected = {}, - selectedBackgroundType = WidgetBackgroundType.TRANSPARENT, onBackgroundTypeSelected = {}, dynamicColorAvailable = true, - selectedTextColor = EntityWidgetTextColor.WHITE, onTextColorSelected = {}, - isUpdateWidget = false, + onErrorShown = {}, onActionClick = {}, ) } diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt index c676df7d4a2..7d2c23d1cc1 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModel.kt @@ -9,7 +9,6 @@ import android.content.Intent import android.os.Build import android.os.RemoteException import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow @@ -36,6 +35,7 @@ import io.homeassistant.companion.android.widgets.BaseWidgetProvider import io.homeassistant.companion.android.widgets.EXTRA_WIDGET_ENTITY import kotlin.time.Duration.Companion.milliseconds import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow @@ -47,6 +47,7 @@ import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import timber.log.Timber internal data class EntityWidgetTextColors(val white: String, val black: String) @@ -56,6 +57,34 @@ internal enum class EntityWidgetTextColor { BLACK, } +internal enum class EntityWidgetConfigureError { + CREATE, + UPDATE, +} + +internal data class EntityWidgetConfigureViewState( + val selectedServerId: Int = ServerManager.SERVER_ID_ACTIVE, + val selectedEntityId: String? = null, + val appendAttributes: Boolean = false, + val selectedAttributeIds: List = emptyList(), + val customAttribute: String = "", + val label: String = "", + val textSize: String = DEFAULT_TEXT_SIZE, + val stateSeparator: String = "", + val attributeSeparator: String = "", + val selectedTapAction: WidgetTapAction = WidgetTapAction.REFRESH, + val selectedBackgroundType: WidgetBackgroundType = WidgetBackgroundType.DAYNIGHT, + val selectedTextColor: EntityWidgetTextColor = EntityWidgetTextColor.WHITE, + val isUpdateWidget: Boolean = false, + val error: EntityWidgetConfigureError? = null, +) { + val hasValidTextSize: Boolean + get() = textSize.toFloatOrNull()?.let { it.isFinite() && it > 0 } == true + + val isActionEnabled: Boolean + get() = selectedEntityId != null && hasValidTextSize +} + @HiltViewModel(assistedFactory = EntityWidgetConfigureViewModel.Factory::class) class EntityWidgetConfigureViewModel @AssistedInject constructor( private val staticWidgetDao: StaticWidgetDao, @@ -71,9 +100,22 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( val servers = serverManager.serversFlow - var selectedServerId by mutableIntStateOf(ServerManager.SERVER_ID_ACTIVE) + internal var viewState by mutableStateOf(EntityWidgetConfigureViewState(selectedEntityId = preselectedEntityId)) private set + val selectedServerId: Int get() = viewState.selectedServerId + val selectedEntityId: String? get() = viewState.selectedEntityId + val appendAttributes: Boolean get() = viewState.appendAttributes + val selectedAttributeIds: List get() = viewState.selectedAttributeIds + val label: String get() = viewState.label + val textSize: String get() = viewState.textSize + val stateSeparator: String get() = viewState.stateSeparator + val attributeSeparator: String get() = viewState.attributeSeparator + val selectedTapAction: WidgetTapAction get() = viewState.selectedTapAction + val selectedBackgroundType: WidgetBackgroundType get() = viewState.selectedBackgroundType + internal val selectedTextColor: EntityWidgetTextColor get() = viewState.selectedTextColor + val isUpdateWidget: Boolean get() = viewState.isUpdateWidget + @OptIn(ExperimentalCoroutinesApi::class) val entities: StateFlow> = snapshotFlow { selectedServerId } .distinctUntilChanged() @@ -150,29 +192,6 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( } }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(500.milliseconds), null) - var selectedEntityId by mutableStateOf(preselectedEntityId) - private set - var appendAttributes by mutableStateOf(false) - private set - var selectedAttributeIds by mutableStateOf>(emptyList()) - private set - var label by mutableStateOf("") - private set - var textSize by mutableStateOf(DEFAULT_TEXT_SIZE) - private set - var stateSeparator by mutableStateOf("") - private set - var attributeSeparator by mutableStateOf("") - private set - var selectedTapAction by mutableStateOf(WidgetTapAction.REFRESH) - private set - var selectedBackgroundType by mutableStateOf(WidgetBackgroundType.DAYNIGHT) - private set - internal var selectedTextColor by mutableStateOf(EntityWidgetTextColor.WHITE) - private set - var isUpdateWidget by mutableStateOf(false) - private set - private var labelFromEntity = false internal fun onSetup( @@ -185,7 +204,7 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( this.widgetId = widgetId this.textColors = textColors - selectedBackgroundType = defaultBackgroundType + viewState = viewState.copy(selectedBackgroundType = defaultBackgroundType) initializeState(widgetId) } @@ -198,53 +217,59 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( } if (widget != null) { - isUpdateWidget = true - selectedServerId = widget.serverId - selectedEntityId = widget.entityId - appendAttributes = !widget.attributeIds.isNullOrBlank() - selectedAttributeIds = widget.attributeIds - ?.split(',') - ?.map(String::trim) - ?.filter(String::isNotEmpty) - .orEmpty() - label = widget.label.orEmpty() - textSize = widget.textSize.toInt().toString() - stateSeparator = widget.stateSeparator - attributeSeparator = widget.attributeSeparator - selectedTapAction = widget.tapAction - selectedBackgroundType = widget.backgroundType - selectedTextColor = if (widget.textColor == textColors.black) { - EntityWidgetTextColor.BLACK - } else { - EntityWidgetTextColor.WHITE - } + viewState = viewState.copy( + selectedServerId = widget.serverId, + selectedEntityId = widget.entityId, + appendAttributes = !widget.attributeIds.isNullOrBlank(), + selectedAttributeIds = widget.attributeIds + ?.split(',') + ?.map(String::trim) + ?.filter(String::isNotEmpty) + .orEmpty(), + label = widget.label.orEmpty(), + textSize = widget.textSize.toInt().toString(), + stateSeparator = widget.stateSeparator, + attributeSeparator = widget.attributeSeparator, + selectedTapAction = widget.tapAction, + selectedBackgroundType = widget.backgroundType, + selectedTextColor = if (widget.textColor == textColors.black) { + EntityWidgetTextColor.BLACK + } else { + EntityWidgetTextColor.WHITE + }, + isUpdateWidget = true, + ) } else { - selectedServerId = serverManager.getServer()?.id ?: ServerManager.SERVER_ID_ACTIVE + val serverId = serverManager.getServer()?.id ?: ServerManager.SERVER_ID_ACTIVE + viewState = viewState.copy(selectedServerId = serverId) } } fun onServerSelected(serverId: Int) { if (serverId == selectedServerId) return - selectedServerId = serverId - selectedEntityId = null - selectedAttributeIds = emptyList() - selectedTapAction = WidgetTapAction.REFRESH + viewState = viewState.copy( + selectedServerId = serverId, + selectedEntityId = null, + selectedAttributeIds = emptyList(), + selectedTapAction = WidgetTapAction.REFRESH, + ) } fun onEntitySelected(entityId: String?) { - selectedEntityId = entityId - selectedAttributeIds = emptyList() - - val entity = selectedEntity() - selectedTapAction = if (entity?.domain in EntityExt.APP_PRESS_ACTION_DOMAINS) { - WidgetTapAction.TOGGLE - } else { - WidgetTapAction.REFRESH - } + val domain = entityId?.substringBefore('.') + viewState = viewState.copy( + selectedEntityId = entityId, + selectedAttributeIds = emptyList(), + selectedTapAction = if (domain in EntityExt.APP_PRESS_ACTION_DOMAINS) { + WidgetTapAction.TOGGLE + } else { + WidgetTapAction.REFRESH + }, + ) if (label.isBlank() || labelFromEntity) { - updateLabelFromEntity(entity) + updateLabelFromEntity(null) } } @@ -260,52 +285,82 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( } fun onAppendAttributesChanged(append: Boolean) { - appendAttributes = append + viewState = viewState.copy(appendAttributes = append) } fun onAttributeAdded(attributeId: String) { if (attributeId !in selectedAttributeIds) { - selectedAttributeIds = selectedAttributeIds + attributeId + viewState = viewState.copy(selectedAttributeIds = selectedAttributeIds + attributeId) } } fun onAttributeRemoved(attributeId: String) { - selectedAttributeIds = selectedAttributeIds - attributeId + viewState = viewState.copy(selectedAttributeIds = selectedAttributeIds - attributeId) + } + + fun onCustomAttributeChanged(value: String) { + viewState = viewState.copy(customAttribute = value) + } + + fun onCustomAttributesAdded() { + val attributes = viewState.customAttribute + .split(',') + .map(String::trim) + .filter(String::isNotEmpty) + + if (attributes.isEmpty()) return + + viewState = viewState.copy( + selectedAttributeIds = selectedAttributeIds + attributes.filterNot(selectedAttributeIds::contains), + customAttribute = "", + ) } fun onLabelChanged(value: String) { - label = value + viewState = viewState.copy(label = value) labelFromEntity = false } fun onTextSizeChanged(value: String) { - textSize = value.filter(Char::isDigit) + viewState = viewState.copy(textSize = value.filter(Char::isDigit)) } fun onStateSeparatorChanged(value: String) { - stateSeparator = value + viewState = viewState.copy(stateSeparator = value) } fun onAttributeSeparatorChanged(value: String) { - attributeSeparator = value + viewState = viewState.copy(attributeSeparator = value) } fun onTapActionSelected(action: WidgetTapAction) { - selectedTapAction = action + viewState = viewState.copy(selectedTapAction = action) } fun onBackgroundTypeSelected(backgroundType: WidgetBackgroundType) { - selectedBackgroundType = backgroundType + viewState = viewState.copy(selectedBackgroundType = backgroundType) } internal fun onTextColorSelected(textColor: EntityWidgetTextColor) { - selectedTextColor = textColor + viewState = viewState.copy(selectedTextColor = textColor) } - fun selectedEntity(): Entity? = entities.value.firstOrNull { it.entityId == selectedEntityId } + internal fun onActionError(error: EntityWidgetConfigureError) { + viewState = viewState.copy(error = error) + } + + internal fun onErrorShown() { + viewState = viewState.copy(error = null) + } + + private suspend fun selectedEntity(): Entity? = withContext(Dispatchers.Default) { + entities.value.firstOrNull { it.entityId == selectedEntityId } + } suspend fun isValidSelection(): Boolean { - return serverManager.getServer(selectedServerId) != null && selectedEntity() != null + return viewState.isActionEnabled && + serverManager.getServer(selectedServerId) != null && + selectedEntity() != null } suspend fun updateWidgetConfiguration() { @@ -385,7 +440,7 @@ class EntityWidgetConfigureViewModel @AssistedInject constructor( private fun updateLabelFromEntity(entity: Entity?) { val friendlyName = entity?.friendlyName?.takeIf { it != entity.entityId }.orEmpty() - label = friendlyName + viewState = viewState.copy(label = friendlyName) labelFromEntity = friendlyName.isNotEmpty() } diff --git a/app/src/screenshotTest/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest.kt b/app/src/screenshotTest/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest.kt new file mode 100644 index 00000000000..f4305519899 --- /dev/null +++ b/app/src/screenshotTest/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest.kt @@ -0,0 +1,58 @@ +package io.homeassistant.companion.android.widgets.entity + +import androidx.compose.runtime.Composable +import com.android.tools.screenshot.PreviewTest +import io.homeassistant.companion.android.common.compose.theme.HAThemeForPreview +import io.homeassistant.companion.android.database.widget.WidgetBackgroundType +import io.homeassistant.companion.android.database.widget.WidgetTapAction +import io.homeassistant.companion.android.util.compose.HAPreviews +import io.homeassistant.companion.android.util.previewEntity1 +import io.homeassistant.companion.android.util.previewServer1 +import io.homeassistant.companion.android.util.previewServer2 + +class EntityWidgetConfigureScreenshotTest { + + @PreviewTest + @HAPreviews + @Composable + fun `EntityWidgetConfigureView`() { + HAThemeForPreview { + EntityWidgetConfigureView( + servers = listOf(previewServer1, previewServer2), + viewState = EntityWidgetConfigureViewState( + selectedServerId = previewServer1.id, + selectedEntityId = previewEntity1.entityId, + appendAttributes = true, + selectedAttributeIds = listOf("brightness"), + label = "Office light", + textSize = "30", + stateSeparator = " - ", + attributeSeparator = ", ", + selectedTapAction = WidgetTapAction.TOGGLE, + selectedBackgroundType = WidgetBackgroundType.TRANSPARENT, + selectedTextColor = EntityWidgetTextColor.WHITE, + ), + onServerSelected = {}, + entities = listOf(previewEntity1), + onEntitySelected = {}, + availableAttributes = listOf("brightness", "friendly_name"), + onAppendAttributesChanged = {}, + onAttributeAdded = {}, + onAttributeRemoved = {}, + onCustomAttributeChanged = {}, + onCustomAttributesAdded = {}, + onLabelChanged = {}, + onTextSizeChanged = {}, + onStateSeparatorChanged = {}, + onAttributeSeparatorChanged = {}, + isToggleable = true, + onTapActionSelected = {}, + onBackgroundTypeSelected = {}, + dynamicColorAvailable = true, + onTextColorSelected = {}, + onErrorShown = {}, + onActionClick = {}, + ) + } + } +} diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_foldable_c908f502_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_foldable_c908f502_0.png new file mode 100644 index 0000000000000000000000000000000000000000..103d765a9e75cc670f6a9df9c800f594b253b74a GIT binary patch literal 104841 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ŷ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 X*12^RJR99X>vlX{{an^LB{Ts52Gl{O literal 0 HcmV?d00001 diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_phone_e05166be_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_phone_e05166be_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fc090a05c0460f8124e51b561f6844a3d1cabf71 GIT binary patch literal 94866 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

dDiPP2t+;? z^LvD9oQJH^r7}qOx6G3}-XN-z+Dxo2$GNp$wR&6F=P)Dx331 z1RWJ3Ui$0AyK^D`Di@|*Un@AS)m*EO0%x(_*Tj5TN*d(Ntv>Q){JQ{%H3)6@qAkx6 z9T_`_ARXLp6(4W3Tb48sw4{L#_yXt*kQzP8A%0k)YRnQ$>2Y*%@mr>91E)r$Q3+%s#ARvk;PK1OFY5t@5x&jgXk| z8U}tJdknsmx=r57u9X2sC~4IL3QPmo^ zAQ1qXIO3_ZW7i(}AE+o~tQQl|Kav{hxQyU`bfb7`lYF%`q(xw%`3N5#vrBaSa-an< zOt)}5mXPzu0FdDrp|SrhPz+agsDNDEHaR+yJC^O%NvdK)pCoh9Or27^AJSLy07%hA z;9uFz0j7_Ds(0}iN~}{UMbppcRX`=;_%Q_ThSDeiz{wK5U?&qLc3wq@KH&4V&R&K( zv1=)5oBW>W5xJdLA!=&@xyQzF_T8s4Z#_hKX}3h~3yn_E)%E_XGimkk!XFDwayW0W zL#hYgQK3U~r*l;?r%QM}ZqkkYW4Q6%opTtXZHQkxV-27xo(eg30%TN&uxXDg%q%}Q zUjY6u{Y>&onwwcg$%rji+KZWy75w{T?rcrR#%dI4vrRLVDocA(@7Q-0=Z$h1n75nb z=30i@fcE!<|0^;2aq$#5LXR;2o<{F^oYgJ$)h=c>H0ZSk2>bT)_1G?J_UfAyI$xO? zmfU*vDE|G~u7z701y4n+g9Y;dlmKyBYX;!p4fRy!4Cf$%HUvn>IC<~%dfu4?S?(Bf zpLDr{eVOm;#*PduS**=je4FcV;9#uT7h~Eu8&0;iL*(A4YLR9pbwCukMR%^6^ z#FGPr{l#S_P1y}J+oZ= z1g%+aq;8VWE*g58=7jb6e59cB=ub*sU2vHYP}GjT_RU8S?|U6rA_nZFY0LpM)Y&E_xouwx~G z5$$ezTeoq)Oo3jLQqkgj6m5BH?D;e**pyuI^=oz@AQ|s|4u$< zb;)kQA_~}%y7U%H$Q8>0s&Dfar)@VRwKB-aU}PgT;CW7-a1Fy$jkaG)_5S4wf@D-E ztjoz`im*jUg*m`YmPQl*h~S1QToF`@XDZ>>$qLn%X+SeQJShiGU#Zh6gWqAjbBOV0ls13Kw%F_17k*!+@2q)l1$b zI0GQYc!}G4lP-m=25IPHLUh#NA?G(mY$kRZ0ui04P3+liq@j-9cNEzIBvCgJ`9?D3n%apXEH9MHcytG>a>=m zeGN`s)kWFhe1=eg`+|UULyzXqv+84G(jX_n`Nn>Ge4O35BOE`L4wZ+b=FX)+Ha9cy ze%tfx;`s!cK+1q2pyBdA`72Hx`A6tGb?q_xKK<4%1jX_5(me!(l4GgO@rYpXa=(Z3 zaiFc(D;SSSAUUr68d&e3e*pi`fUE}r-@A{>{$`fY{eKW5`5ij^`f?~o`k!FKvmF`e zInFe6iy>t_aIW9P24H|*@NH{1at;vikNXxN>|`LfsS!F&2O?_W+)|O_-A@O*!v8Sr zK+tBiN$t`{py>ZO^xqqawk??;zFG{>n>R=S-)9QjV}k2t5_(-e`%?S@%7l044MUih z;|HLTi%4~T4&s#3f_wQ-{cAQ$CmG0OBQ~hRZ>cQX)k{QOHZ0gRN-TU)jza>UaZ12;7YTo$GL7 z%yuJS2GjifklCGf^Oj}Y~RcwG`W9YdLMpUHMkc)UwofvU;Qbx`W(@MX3px4fexo$HU<1? z>8VFZDCN;An|)Pt$Z@MPI+-o_g0UUW6YY6#d}@@sAI^5LC-*>WC#xF<*u=<9H(|V7 z*Vz;wKrTB?l>y}3A zXQ9p)5E4235M1jG?8QS}%OPw6l221`e&rIjYHSg?^+n*<&xi#>o%ZPH8k9;8O`XuJ zc(?<0`id1gBZE6N)~8WyIpv5+{^2Rvbi@@@SaSeoRCJTp>SB$W$Z%D}k*Le>tUsTl zu{jT*ZCrvtPnuTm=QOeB!r3IaXm-Dhiapv`UWc69o9P$9o^LsrLW7;?>~b=2mA>Kq zj&SZu%<#wF(B5#EjHwh0;2jS?4EzxwIAXCS#Z@!7k>~dV%XQTNu$zuLj&yqf^P}!Y zLyATVa?2d0NHV=a4U%N6Of4@zUgsBpYR=K%_OgNF6fxGIC6xH~?Ko&Y$J^D|P1!)L ziDVyaSA#JHKzCXFrOd7G5th!vL>qsDkc}8$pD|TEP4h0dU?+}#NoT`ou2F>69&(^= z0!HvWNPOh8hZX*d>FSo{*Ctr4$NP;sYKkKkgVLo?*x+=lWo6kzY2?|R479Fa=^o@f z7tY!XEkm6|OmiGJ!bY7t<*x?y%M~e!A67YeZ4dWa6ufklygdv~%p2s1oA;dDrtm^R z)|MQ7oF2<$fVxZ3@_RMv`^}LC1+m$=027@EX}Nn0lflUd1Ai`po`j68%ITY%LI(w%n17O}80u4Z#q zf556VGEiS+5h@{?KSl$NOT)?!3C5Z}V(6O%;F+*zcjP1j_hV__pXhzpKfZVe#6x1$ z8GnfVLMqdxU(c=1S**zvbr*Y#KkDZ)bJvF+U{AP`sZ#`hw@i!iMnc(S4b*J3y=@mF z=`13}p;(O1t&!(-)sHdF3lG%7Jf z@(PV|r0UpU@Y(T;_9Yg%5MSm@-F}BcA`hUeXpi*B^u9K+Ke+fIBRH-1K~Y6s&8&(#u?4kXo!BK-8i0zlagLr4XQ4qR4!L z_2?(l%@7Ga@FW;n=7#Q{>=-8M?svdf450^+tyut|Ns~nxlUnhYEl5vN#M?!FETA7X?C5?e30Ug++|cwi`CJXc{^jv} z0B;X0ZWc{=pzLRVvt7g9phHzWtw_5SVkU9i=-JcBv3`w2ccuuR__p+_Wl{2sAm9>9 z&z?leZ8K-rC)H_HpWSKfwNU!F> z3|T1em}*nlz!n~PCTEX3Y46MK=Z+pE8bK*Iln=c>yL;_=H4K`Qj#9_5e)95@wyi}d2^%I5KF6D&Oo1qJOw|H z{uZeb75>jNS%c$x`om3#!-mWPcL?ulZ^fd0SS-AV)p_7}m1GTn)Xlgj;2kLxO=`Du zL6E;Pofr<>exb7aa$O*%nNItq^7E<9{gJ;PYy|Ld*5_xl%*zy~8c(b8T4yw{y6uLq5|61(Ka3o> z|B5WW+9&>We6_2GW(MiEu%o?;RDhceEh=?WB7XDk(6Cn&uJ3UpfEd;eDF+(x;i<;Y zD8MzPLrY8c!mOmUR_dH9cJVPcCzZ5i&Iug1@RhzA-CBsb^?tj`MI`f#^Xy z!UA%IpD8~iz61yp^uYWqOpDPen*lBd)(Oi1>y78|L+!ns1cJpOHGhqXG=%-eEvX!3XgLFB0u*OwnC&=M6cex-$gR?YAxx0%n_iU zP))*bSD8KMq<(_qJ;fiB`w=!9f6=D%Da0jkEk28PwVFaY2N#A2z`Dyq9?kkK0LOn6 zaAmkIvFst=(zsx5_b0>(!u`4!6Kv$-qW8&qx>ql zK|6oS0o$5ryOH1d80ti}H%By0g}5ntMOC9Cicu?5ylD~(1mD?i11Ml<(_Oa9JD#7! zE<|22PT(58DH8((E5`bbK>aMw8Gm+X+gMi5FFF4iIra!WnRW~~KkS;4>Y@6)pck>N zdCCRj^A(a~Q5KH-A(i_PmW#^IBF#`skx7FM@=MJLo&*>k1bJgmS^(v_9uwAiL^MUN z_X;RsT5emXFQ;%zvJ$=w-|MwLLdxRyeDT2)bU`zv*bMBaTU&F8BOyjc(n7%v_28*v zn~bLISZ?Us>s@?(QzjxnSpC;DyeGGhGj%4VL)?Eht-gm#-UYYC`{PVz2g+971amv| zcAXCi3LI%xRpQg$Y;BJE$FvAyc8&u>R#2e%@^QQ0uRGMx@DShv|c@vj4AoBR5EIPmVZv_yAt~A`*~DGY!afXPZ{v+G5?$-?rcI@Uix7@~ExOAPW7`=)NYS zn|fFqij!7rm=FyAbOoF6KKNAgIa*loskWrT#M{aYM8mr;f`YeqB;tM5+2^{U?_mA8 z(*ykggtl#fg*2zDfHhhqTB_3zt!Fhe<=|Tq2hkX8i)GsL%yuJZ!zy^U_+rre z$pF{%S-~c|!|GV@xphZw0u6_+47RW^LwXr|C}@+yJj|`ljMdgh@>>M1bwR)pAVyzm z68Ed}-$D#rdv}+xlRt&aU*8P;SWT36!Ti1{TgY9Ou?Zl>#tf91QiN=N2Etwz!w_Se zE_B0^Mzb;CA>C-fFW1?#Fl~MdFZ|y*v_hDlT)CNDY`(In_H(;PAa|-Hb9h6cX6g`c zPPg5x=2T0e#C4UoJj7d{68c*RvxpIqKwc zih7{Gf~r(Yo9e!b~ko{q+JpJ(bEdJJBW`6ol(=SHYIWuje z|J3kMjZ7iqefoF)UwC?`5CF24i7dVV-m|XUS^8r!a@b9}(gf@%reChng;VCa=<>?% z=}*CX3_m2+y50oR`^}Mf#v0&FlU8pdO044(`d64nAj9I6L%~i#A00zVhh>!?u zw^#*@o{`^AH+MPnB}T_AJ4XnlJV;NKYTofXt2>p=T_pb~rEIwj%8teH^f4Ygmr$fH z;8?}0L~1X30#%ie(+0{h1wIGEv99#lDeW?tj{`y~RH~ zLx0WwJ5Po|^{|!n9iLW5NlUr@1HJ|df+aG|uUBuM=;Xf2??->Uy*jUq_|!m7CEUXe z-JQy|aAH8JJs=43sIJj{A_tJ)gAfNhAwJy?!Yvr~w))4~a~&@+}MmjfeIzA4EzV{ah$Y}U5^n{ zO_Zja->jY5x1irkkavpZ_j;Y@`MroIq<*jLA2z?2`@8zzHsEUV@1K29{k@!{alhC2 z0qXyph(53XSI20U{OXwbn2} z=c;fM(?Hl|k4;)R@Y!|7b%yafS9RHLg%;5a+;VtQxXhHcz2;W=J~kzocJV3DD{HwTQs;Im^4j=@^RnTBQ`K9V>n&LHlh6 z3A{_GXpIqo0UX+!7hlr9jt>-kRSjm^duFIw9ASS(#7K?(jYcf;ear_&#W%x|*f#kt zcWEl*ez{R8GTZ{u=_QJc3?eIawB8Fj7pCur1KRcSo$k`(kmQMNv_LqU?}X0!zE3_C zKPR@rU)*8nFVBjf)hX!LMheNqhrpu&sey0{G_(>P=*VC||>_=gMjKn8+hPj3=Fi|fFR`mqz2NW2@mfg3Pb8G_ob@l^ENDjfHo%dJUscA+ zF>p~-gP>@j7g))@zEeH)`%M4B;3GQZ2i-djC6(k z=Y32Oj95@O4~5phj?Yj7fklO|I)LWhAS5qNxq}K$fXlK#r_M^Zi%H||VG z3KC>*%nnxT=8i_jB&jFYX5i0X-^Cy;HMCsnJxA{75Q^AH9 z%%nI$3SktMRDjDPxF2E53jEyYO_XktFc^5mShI=S*&fG&-lyVMcqq2m$pB$TYac4P zfNN&BUR+m+oZAOviv421>F$H9kwX{L-Y&H~$n%iwP9C15n2r;j&!km64>}qzL!VzR6xxhaRUi)<0%8LNix4gtD+4?r zoTlUr+U^}{GZ3iQu6cK+?kg_JmGQH@&Kf3ptJp z%-}v&_06~m6YU8En!ejx#P*{;&+X%WKvS2SC+}qzX=x=cT1z=D4%#r}?#`Jr=MB2fWqO+q-mR7NkCt*%MK<`fC zF{4(3%v(_CmEnBbRdu_lqv=uxQ^cKZim%%s;m4OVwU@JL6u&I_sh-v9mXOVn7dhkC zK#~7VB2=N7`6Z=eZ5i}sZ0ZuKf9$!?!l=a})`xppGqN|(XcT{fhx@bb) z^4rMo5_kNt?bp^S%(ebUcaf}t2OM|{-TaWgTHc>_hgX|0_r?NJIc%J(uKtDhiadKB zsiBbuIY#@G#hgw@wuT<}4`gME87rrhRR`>f*qOXL$#nH9SGn>zA6N*h!Aj^3c4-$Me9;dZPXsTdNLg@n+vLK zxqf<}^^ig9_U!U#J>Aofs!p{}W!~he1Rg>?JSYAhyzf&1{U8F7b>t$ZA#u_`5oo*} zRAOIV6HTg-Q44zLk&gxzPMtLE)9;e&dc}2Tm4)I(a&-|zVr1D1@qiiFcq4gtAlIlW zt58)AailLfY!P&6B zGHmA&SaJ{l9$5hMT*s~z+6#A??_7IiVYcCwjnG}lGq1i><7^vMy)YWL!{y1b;(BXl z8c)X5fjZ{6k@HVj<+=_pM8-R(b!=4Wecjz-6=UW(su;ANNR!L3`HGU8;kZV|8n8mV zR72vAgY39#ubVyk29nCJ&4(y8YO8pB{jRxbo{WY1 zkwIG3<-Z13UD8h#j`* z7PksEx$aD{^8UsL?#VE7p8Gh3d997kAAdR_RrQ0lg`CK|E1laYdZBs5-Me-dOsxZF zJg}Xi!YZ1g1)Z*E$sVIuPr{TGClqk6L{s(V8u!4->7z9YkUK^kkQX^xP2F@{8Z@}_ zB2Y~<&(LXrr}5{pSa2+gjZ`6`;_INwB-TGL|9JGrpimk2K!7mLA1Ukbr$!b2yfNoN zam(n~3Z^bV{}bKRK^hyR80^aOeTqI=ub)Xc>FxRQYmn4%w4Z9(rFzn*ve8kFi(CVD zyau&|j*dRJw45oCGHFrV(-5?)Nc>dF-#;Bhu|GQMnVc7)bwl{8Jn}#9rwxpE2erp%JS&`hA!_T!kA}?rEj39=Af*ycj^Y`x z3Ho``^l765R@7wrz(LpsGRg>${7ZKU)6KB?TpK6#3N>_cDEW^eq_N0168$>;_jK8$ z(3Fm>QU#om7HS@5zSvUy<JYd)yh8?S1cJUDr^jU3@*->eZx@Y#&V; zj9snJ7kGUa1gEp`dKY|{NVA&{eh2`&!+r1X<&NK#Bj(ri%I+@rc|&pGINKgr>Jw;F zp{m^V%FtR?j|vWCXXlx<@d8{_C^C9w^+@C+;!dDE-vFT59j3ULod)6FEC5DWWDk^b5s`8voU7*kPsm+S!A>Nor4M|Cv& z8}Amnj3BL2CC39|abDma^8NM|5O#AB`av`nYwyEN4N{XQRE2ko9a4b!o-Zf4E)AEX7?4(VJ5a}81Zh4Kn};uQve3-Fq&u6ln)m|jbw2k7L!noSnHp2>YA{B7ktQ3JrYGw=vNws>pxh7OBL?M%MRzhq z7iOj{(^P?gDqOapv1GP&d;y?Z1L83(^4FdP)3LDU(1oNP(0%8!FJLiwKA~A1U=Hqc z4U08eUB`0J@Gu|kg|~CT}tI0iyip?{qK+x_p#Z$;BN2!SFMqn+PpcO6qV1NBU&=rm1HFc{sh+=bGGUfeN z65QA5t}uKxEX(m^1oy>R#eosoPH^J{s{IPt;EB*v;$<5i^n)R{pRm~3p|n-*+Q&G) zm$07UXOFyZU5k|MmWRp*4~ zgV(xXvhY!Bqp^-JeqV;?Wyb>yD9s&2y#h#UX&u-4{(YV5QQ3hJYmx18$cRZi8LCgV zNPs!#Fp9>+Jdj@sN59=W_*tY_g$g(=PaI)W+Qhz9;o6vr+N93Z{o zw4(f!z9E=<@Vd&o^;@9#w+ZQHHgmS#G3;)M38u$LwAb4dSmeg&pR&kn)}tXAxx^wf zR2zpWe2BKs-SS|ZL%|r@ouGsbj{Tu5rgnN^bO4faH~zjx`rDx!Xx^|bL406p5>WGN zPuKl)DKv!KVaPPHF-82OkLds9pAWCF$eTlaU4UHzWmDU4LeS*o)B#qBw`R*p7c(^;yf?gwOv+CjM8>}oq$ zJJl#04g2(rnIA#ZCyEraAl z|AG=-E+Pc!0EZ`cd^_+ep-~>9>I!-Kkn>apU_RXblV0+u?!!WqM#R?$n(#xlj))3J z)$@_K35<$azAMB{a^`$Ch7(ZA&iZo|faylQ<0d^foI0+>I~adiOIp92R4>{fDd~E+ zjQllG0KZv5gh~X7B~yNwxp^PXjMhrk+w(&<#Ih54EkW8hEATg3GODi%Kn!VMhfkWM zq84FdS+6IlP*W>G4gjX-d;-rSv5`pS=}!?cg;j3{Kr&Vrvlh(ETB+&>=6P`&U{9u6 z=25#V|rUX!PhX zEQ)?&_vgwDZ+GvM+lgDF_VoCXZPchgtbjofPCHM}!v5UuUq~yC^c@fusE;)QoIkk? z2S~@HU-prW013Q|H7j7OdK)R^1CC($*?y({3rmP};C17yXp59;-vVm5B{L6Gf}0C1 z*gZ|~z0|XBa>8pqq*2}37ouO6&)+0a%`nMc;sy$SEan+G-YEN~79aStb(zV%0{!Foa+IIC5``M^3P7b@@VdKG29 z5smi9)e1b6;hX2Z0e-+ob)N>E*Jg9Bn4%Z|&QhQgB2Z_Z#ljS*6oaex1JV^8Ico?~ zR6RfT?QH*!2zRVp*)}w?-@gV3i-jL3sKMAak-J_@2`4c}pz`{B0N6EzRhx5*;` zacmcO6ns?eA*2J-p5tGS?QY^#G%UCzzIzFvQ$M_LzehphM*s$;?aA-2eY=6e(E!Gp zinD~?P8~=)sIF2X3oI6p%sL*oN3u4E>KL6f^N}=BtjBzP^CzC(4(P6urpQAQWD)`%S?Wis+fJILL(6^&wM#QK>pX z!Ob{y%Do3N4w-G>;@MICfY=l3{Om2z;jQ8w^3%(Pkm&*|zLJ{%j1Ilk4lKNE>(L|8 zfF{(GM+K6aC-F$M;Q9ko5m^f3Oo2P)1Q`aG@vtb@9{j9pCemUBXkbqKaNgfr0n3dF z{bFdC7%Je|_8iYD{w+zR1a-&Y%NZv^PuUPukXMrSv*>jt{4 zK%lbQvDpV`A{@yOf%8qJ&LR*P5in-oDd%?~-!K{`9!4aI#g#VKS}yjO-=I`eMRz837&-0Fv8vY*K&I1p%WFsUW!gLU#ytmrr4#>%!2oyGs zm2QSPa4iK)zolg#^Ya!)1oG-=vr!Dh`NAhpVW{q8_l1QZr=Bw0wK8^zkg;`FUlI@G zZ7Nk!pwfiag8R;x0D4>rf~OdhG33T~iKp_bRz(>%)?}uwpDYdeh$AD=b;EHxdtYE8 z%6egv8zIYL;XC)nA}i61Z6WK_LdT;TG@26V(h*hx=LGiOb%OL65vKS>dP_#Y%$p{F zZlyqS=R3dy>-l&R-$tTkX$gDrMl&KSnxofQxJBN<44(D12)`nPa@3wyAEqhfy_MArwwl{A@v?-7BccOHQ62eQ7N zzL;a)<)x$c`10C&XkpG5-H>^)o@HFxJug5eVV z{o5c^?p}NcTX4XKP#G`Xt1`XLsrvA(wxd>ClMF6zl{Za;N)>~N=6aD^E7!5BxH<-f z8!Wn+Wp0N`7;8YLmd`>Nj!4KCnI-MGD%bm~&68s8DWo%a!dV>;(a7PSx9*_Uv(+Ay^*!|wt zhv5K=W+vWE1uOi;vx3c`JvW`Q1$}Lq%Wfj!E0m57quYut@2u|*dMCJE$nNJt<31}! zA{E8Z0)&xNGcN&M%hDB}CV0Qvs^aH)#Ka!ykvDyMUY3(7Vg#@Wjw`6_6fkLZL`5w8 zTY#{u8angHH~G$+sqIh^OF;!i%2{;k)qSM8eo`A0>)M|KjZxaq8xB^CXUWXS%X%_J zeA3Z^TYPps!SUcz*(dOK9J=@~alEEr>rYMC$s&#}48Re~v<`UP#ioKlc>n!uUtyC9 zh}%V~l6uY~*&8J5)ICv-eq76qXO77GrG34cWxaxq;7$GXSJJbQho#Iw3(2$2Jb-cFv8y$*tA5&aEOqUFirfFK;`TZm=zk}Y zU?dex!YgD)LZA)#P9#*02T&$z|FItogaxWFdch`xrm_wGNtn#l%p;g^9=mTwZq@Bl zq-SF)OcAG1>CD9cL!Y?mG8Y@X=)eP{6ud}yUb;wKKyB#+<8`hQ_M}fnRF`HzOF@b(`CjT;1zTjZ3kj87r8F{c*);ZF zwW$ga)~!G7kE*B=?6uKnFT$exxfxZ1Yu%-Oo<4+8>UAa{^Sl`2LJ+Sp+9u!WgckeL z>ZNjifQvW}q0_m`W!t!hK^<9zUUs(X_tJ~N^E!iNPG7eTPp!79=z{$~;G1v@PWZ`p zv&@$@FY(;YRa?(Du2;tKF2$p^^Gp$il3$?VIv-&#d~Mx0#YbFI>vc9j);KoFrEt`i z1eQ?ZB>|Q7pZOO-0etT70ysDNiyTlHt^osQ`PNl6R2W#G$S@Po&{~e6BmXXtyW;Ha zpD=B+ae~h(oU0J?K=zc|Ezl>e1~+oExM?e z)jAxEJ|q57Q%4PJ|GBRU(;lI_`iXo3`0Xt?0S{(U9 zIS^Rn(`o`>mVVNQ^a{%d#GRNw;fb0g+fNNZb@=tx?T(b=}otZqFz2N<};9sE+`;gJ%ExQfBlR2c4TQ&vQ;+8g5+yB!=fwXqPWD)fi z4#%BA5*S#5iDS`A+L|g9z4@q5K*QBo$~w^6}tn)V=dzjsQgsT6V_-`;r$nS#t{Y7FA_;Y_j9KMnL3yGPsEpV0n9BIVoi-J zp;8y7hc)??@+wlH$F4~pJ6M2P#fP_gO0{4-LFkX&y-%uYfxX8dAkT4tdppZZt1FADNVc71qrH$=Yp8aX zC2ke?Vfjf1Ii^5PFfSYj3#S`R*9TR{o)`ZrgP@d`de><2F|`(A9gnpL$Vr#bY)}Ta zRHPFENHVVP^ubY@V&hkH)CjU#@(e`^Loq6II(3jU6lKZD^~K;#NfE77R5ULf9_Syw znEZ!SL)nSG8N|%G&i{%dvW*_BZyDv@`-1AZW6Q#<4SL)($eJY*87!eSs(oobM$!Vxj><^x9{8Dua1uGq|R8mJxwG7eT!At@O#+@r+mtaj;7vWI?f$3n)==vg(P z_R<2G4m_aUdgWGd=RwDkXv;a>=BKU@*VUK$VVTlS3lC*qy90Qhy$&?G_|; zrtx1dfb~MXRgizMUcvpbecJ}1q2vMDV6ulvXZ7HrK~>bo0E6ywjHdPx^8KV@={@t2 z@6Yu;EapDN&Mj?Y2y_T0oOT|y6`q9k=0nPL6T-1o(A4>^%8hpdSe2)KVgp6B3FtyOenRin80 z2s7_s{$k9SZs-`?YRf$<{#Q+afcPOedRw+`Z@QrP>Yy5|f#P00u2ej$SOJ1uv3K8< z=KO^JB(^Xm&3cM!D6zc2Z_cfDcE*!e`@#kBxnRCXKuIjo3^($FuE^KBHGj281)WI1 zK>~PZ%s@1?8c-kPJ1Y=PRanxO?S-kUta>czj&H;c_LnoZIJ6L*mp8SIJ=^_%ly&A| zO=MXcZ^vo12h>Jnkwvf(abr;t$-{#sDKJl2t+~) zMjDJ@Aj%RICCwUT3kDbo7}9}|AR**CH~QJm%wIl_A(g7Sw{D$#-rspo%fFoCk3(+M zGYHp|wZ4sC@-n|**{)mB0p#z`ug7Qd5(;D6U(tGv@Oa7$zA3DoFH<&%?PP5#t!wwc zO9q|V^^Q$n=&`FDk23)_;bTK6IVGrrM5{#=*?sHqb@3b&7Dr>G`VJ7VnfasD_^2@E zP4p^ta-ZMh19G(spxISMAT&BIAXc6c^Ea0#d`R+O21765Vy=QxPk!3)#=RXwS_84) zG0V>8UfgehPVC>`@3e}P8OUEf{%QZXUbYD-)1M!z*;-1-$hF^N*q5Km ziFgt}^I~8}yaQ;f+c z)G{GgJHErSPhC#YyYgoWDYJN=op93K=QMMgES052GeEZg|8WeT*Xi_gleY&liW0{w*a=xF#Und;-u9^` z((thjd8GP89K(~|VMxj>;2$lR=cH3t&4&u{h^L>&uW&~9*WhuL&AGT$cFB9N4osb) z1k4{C*4l+SiF02cD)k?gs-lJJp^+#>#g}L7IaM9si3ERft&o%jumV-a>1&x?^!ZkL zlp#kPZN;#mdY!Qo>aZ-N@xDxCN@#f!4X_)0-OLI{5rv3Zg04vrdL2y|*i=Bc52Aw7 zyNJhq-AXj{vXRL%$eARm?*Zc3=;uEeiJmUncX=TXwDz49y~rWGm}+O)nqc6g7joOa zyDCd$=L@;U4A02hAKkKpMdoQE2Nc(3pgbX6F$`^yC;l3?7YJwwX50`1QPxDrQ%GmB zQu!-9&`Fl!(!G}#=D|v4^dt!|KQh&0-MF?FJ#Y=0od-{rGeOg2pS;oy&#r=V6k8`6 z+PTNR_IGCfe77BQu3h_{I2zOWQgr(Dj-}QMKFQKz8L*~)9lceZ&0c$lvpmM zSc&K%xc)JZwC;jAvg08sMsyM~wKmiAV4||37xA~)?49{^rr5>Eh3U2TUs-5`C zGq+D4AUb-F62-<`04x1}WQs+0?zpEk)=p)Av>9j;K8GMQU>4+}TcX!Dty|FQ5rel$ z8*wUU>U1R-xJjh%4lU3*Tun5bi@Y(vD(`G}iKWF~p+ZN4ogp_mp$*WHKi-n{ctXmR zH=-X_(|b2=Zb?G1E)zJOrf7v5mO^^erCDk!f{EDlBtaLQ|Z~$?+Um zEK3k@;aD8|(zVxb6{>J!jKHgO;e0iT8WQ|%dG9oZtJ6kR{kY3A5mx%0BT9B_-ba;e zmJgGS$fyj3YS$1oh};~4@;A2*9)RUuGf$Cu2f8B|-rOeqdwXW<29ICIwlkqsdSxUo z7Fu3fMcT(gVUSe@j4-2XmEy28>_2U5D{L4!&bFQgEhEmEun9CA|ig5Rsl( zx|KVHy<;7$W0ik5XWTpzrQz?TG<$J9^AN_J3P@I^HS9z`a|lpw5zx~nLvJn~tPjS= zL41}nyLif5xsPU}X`V7>k7fZ$nt{Y+__d!mHYQ*|pHDY`g>hD?PsPbo8s<8UcHHDn z3s1Mnm@e?M41pQ|hpe0YipCnyYdPM5B@+*b%vC-@Z)Or6? zdA%6AZk6rIn4Wx_UweGbVg*WqzG;BlmSu2B6ZptdKD6xqPhQ0aKGLFk%nCp+?tB}% zX35vD6)L`_1&qSg_l`fojfZ39V5{?9w!Zx4=N(7SuDSf)G3d*wWA<4Lne|RPpy1}e zaTNG|aasG-`lxSMl;wh0cFm=Nr=_OwX`(mX=*zK`FV0)2tguo<8bt&I!wSB)U2RwT z*38t)Rej#y)w4Jk6C!<74SP$wW-8AM(eK89* z7y&&FYCYic*whpT!KMwsYyt6evy&_Z+9!kqKgND+E033rbuoUjJ8nc>I|s%7ozr&? z2$$ccrGzPOhtP#dsU1ft2H7XHFS!8f;VGTRzk^C6v9NGnJSok8#kp7+##To=eIfFb z6WZ^EF5Q`_@R}$UcBk|=>k}lr?U>C<8Yba7aQdH7B82iBc_!}xt2ye35;egsL@#ue zLdnM)L5Hu)78&NPaW?OhR8yfIu3{Q0rMs+sjgT|KU`~nVj~AeF9X8LPnY}Ci9F?pq znx6ro7#U%aT1?&$w3|CO=9VPN$qP>r)NtzNgKqkoRDYA=?Y`XmvRZIOLaq*`si*=0L5-=XaylK)o%lsW$HjS2 zW6I{5WngGJ)s_2q>Y~hwzaiHe%M88jL=w{&sy;C3?1qOJFzpP}olG{!Sd02-JiesG zvxmC-sKFR`v4+Ekm25uDu|_EFs^Qos9=5cqL(<3MTm-~kgE-ScJ}JGx zRVA+d_nX`7SO?^%C`A30uy-b2r}@kTFA&yb$_8t-i;&PQ2 z(IK#>y<7`ehdZoNz+u5okzW-s7Jd=Oq0mkooeJqfgW^7OYdTvr%1Y7pE0!j?3r@gF z9i%a`ss(yWVO0bV+86H}#QRC4VDHg+D1j`!!Tr}&k@Byi1qJuofgjlHEGbPr{0!OE zc88gOyG|3~uxmVrKC5dD=1eEc!TS{huzpdz2iT;^fzs%2zDtlO@~w*ZpyoB)duw1S zpyLuRU;P4h^7ZH#D)fQ$B`x>(lx1I}e{L<=^ul{3J3H)AfM_b&XR5Pz&eRS*x`reA zZ0s#9PcheOgR%gpz?&)_`YsaJAVlG^@zBefXC39jk(kv9g6EbrFy0&JeR7ss3b&2o z)ZHktO-$56x{2k&Y1WVbk28Wt3z~S>HQ6UF3;nxKyzd>utK+I|lI0#Oh!}@pj+N3) zOy;{tTo!(x7r8e#RpO0L8&O0YkTk&6TsKs!PeWNsfK|YMFv1fsr$Z?bWc3yQV@L-{`jEpZjpUdj$nE z)!LD?dl0>z-%sB(>;#Jh7t#G6+2ug&JcqoOe_X_!PJp`A>St>QTc317T}xm)-sU{2 z>?ps|97yRQPXzBYt&=Ls#lB37E{lQW=H*=Fr0MKWFa{nEBwnf7zP|BY`Wn6Oq3Y*8 zy{yOEg*%ZkN)YCBS$hw_8lE$uYEcY84J3}k%F~@*1H@%c5!A$Xx%BE-_Vw=zjP#Nn z^QM zOx2(^3_x+tYy!u%gvgylB0UO==_T?pkZNhW1WV zs|9z}dy5F_Pl{k2uQCxNyBb1oQC4Sgh+1Z9-Uu}A0NhR0fl|)jGVu0LtsurN@{FAK z7LsOUxDwgyI4arrGWd?022c&0!Zb!!P0LhNTASg(_G=$aVnXKb^us~G1H75;;I9W!AtVf3FaDz^Kb`Uu4LJG>n-}zCn_@g)*R& z!KouyyFLv^e889XgBkP5a^BP?YF6&6xF7!Kb|kx6Q_8PsdlXAazGZ<2w2lvFz-1*URvC76Y!;}LUrJC7i|67m~;i+y}Gr%Q~72BEx4HqK`3==$RS zeE`-j&_Pr_{|r_y1xM@v?q>hjA7R&uE5%}jldAUD7vP}cuQMYKwPq5#KvHoLn|AR; zb;#(gu(A^RI5-U+#t7Zlg*vcCV{J5(I?bx$JS@UAFV*U;YnAq&7zY literal 0 HcmV?d00001 diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_phone_landscape_9e00b29d_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_phone_landscape_9e00b29d_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9d405fa07ffe555175c9b7b339fc1ef33d96de22 GIT binary patch literal 51681 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

GZ&*{x`T$g(n zUc4A3avbYrCu$<*K1H$j!j|74rv;o4tRD#DtR6iFTv||{UUlpcn3B0Hm&PQ;#IWKJ z#b-mgmE~MKVPUvXR$Mvkvd<&EJ65Cn)7i~uJV?FhwfbOTPR47!QTpR({(EZu(hTr;#He?IM{lV6T;iuoP1S0~e{H^^as1ZHwr;0@ zG)DYv-DF~kjJQ(pIgZA(+fLVVMo_<@)2@Zj36>p4O#|y)!e_ch`de=*4y(D=8PGi) zoa4jKW`$TRtj|ysS45xYcp2B$R*YeJ)g+o%2GT$A%2{a#R@5r!-B3kgVL<_)Oi&DjCz^8U453YBzg; zqq3qG4R}s!^O>^skBT;gFHSVGGq=~eYCJMay3MRqJ|;0m@jEurcc%GXWLB63@pe{- z4lp`jM6FD{Wt1{DnDYbu#7_|)I$GDMsVoh#fKGV(x%Y@%Hm={mc=f(+LNnFBkXpy9 z9orahID3{zD=tXCF{u{ZQ4{{!Ft*gFYP?OrT};`h2fyf6muOe z=h^P^nZF4Km2F2%Q0onwYNH(8^{c||nE|y3z3O_wCfqizJp&QbJb$(~eEg+&QC4vW zSE^%%>YCwS*QkzYrYtC)mh^EhvG0O(#nzx?K0Yr&N>mkCxXOd&bG&-ATlgDsspd(y z-9E~gzL6e&-YC_I-zFGO~ z?XU5g7k8xxyM=79eq1!Rl2EJP-l7A=aX2}M`Ieh{hEuy=Rho(GOatD3r1^TjZVlziGGxWu%Fhtz7Cu|3NnV?(^NsBb*id}ae zTewJI1EM>1EH&lOxhqlDauLKNpBK*pk?jtcw(o4Asxn5qW)~mVB&ZH%G9i zYa+Q0*oFs(z@ua=Rm>PEM0Bq6^1EgH;WmG>sS2(&*Klc$#cuQPWbtKS8JlH-Kx{H{ z!8~ZTGH9f$A2G>?W9&}nNB>GM2!51VU)=AWCP{X`gkMNWd=ClcKk+Cq)+E?h()h$8WukS z0-2zKIvsodETLRl;!4}ddD6H>t+L02xCV%~miF^zVHQovnncOFS;<=Th=cABM zi}~6N+IkRUi_sIs1#vxC5cfNd`q)#io(Y+Jv#Z=Mv8aA&p(tbCg|xnceXxZou|_lh z(xXkJ=LGl<8SX1BIK=-{s-Svd+|buH%}N%1W^K^%H;ljfkXbD;Fq zy7B6Mfj{0~2G=`cpW0G2yqoG0w1sN;q@Xdo#)TpoX^+Ho)mc)OX6XU4K1G#w_@dqZ zh4xv&Z8tXuCJxuQ+BQx$N+I?m(T;Ftf{)!Dx0~y6+4z}$M#55`sVdA=^Q! zCJtrBl=&qhBLp*S=JpLGrXhT*)L;3vyuMSi8FmseI7HWsnM7m>ak#*@_96&9$7Q+0 zK-{hP4WvOgiETJd2Bf<*_l&-fAFNVf;iEJY5+XQnL@8W4`y`1so$p)C#nbSaa#BH* z2fRJ7k;&njq#{iut{29ANiERr*cZ3tP!o(I<~zO;+!nD9sYYFD)WtBj78GBjw?4V@ zD29lC5tg5wO5m?@F9#k_WW}YKM*5uo8$w_gzZZVhyNp=HXYBsT9AX8pnsa zVC}ex%+VjCf;=Y8Z`Uwyx91Ye`r%j#Oz|1j^OG3H2ucDB)MZ@Apdxap9fB_4tMxynrMN( zSqH~f8;ZMrMUBk0DG(EL@-00|yqIHE5xy zY2*`Kr%`vy#VcYcJMGh24i=LPFWFL?M`!so^R6lF4Wb{bZu$~kw1%cO8>@i~hg}?_ z0Ng7s^~y=&Mc0CK`W&mmMPe!$JNjY}kM-;j6Qp4W(?IgJp7gFZ<*&73A?N6?RC7)D$9tiOFY}92h%I{yr^AXG@?WhlMzwXKtL6Qx&J!(LbfoF@!fm>~~x8OZBny+m=4=XLvfO8OPti=Ek?!)H_YQ zptQ1+QpSbxnN`st5qS!(G&r3NY>SsJ(P@Ra^pN30H%J9O?@5)rqHHnQ_5{A(P&@NP z$bOX8X`*ihf3zAGGwat^a}7+%A15w}k;=QNeWJu(js)rYt1()2U6J4m8Q#^R#edbXRhO6Ry6qoq@%bxT&rsl;5 zOvAmkZ5MAy9t5WA)HQx}C$N^`K6LF+QvIR_ap<_Mp?G6WRARx>X_eyl^tLA%?5s1G zwjmeQws*gOHCX_gI7f3Rf)Ov{)ffkbv@xD!A+I3aj%R3}OYBbhg>E?narNXXyfWl7JUe05&OQ1u03 znkXm6NCm}$7GmYxh|cYtNwtxjWY$v$5dHHOc)`VYobg#^W{hf!zgqP6`%$(tsco;I zxjO!6Yxh3H)LTso$uxIZPwtE1Gc>3Sz38zPM)RN1@87O0ZN`Yw3hCMu89VjiV1INj z)vj0MGJAe7Lv00FYE}$NokZg)Fs4JW(CmrP9q=Mz(ID#t_RWpnSNs|;&j@D4vNILM z7!C#};yp6LXWu-G-L(JgT~+<8;Vq}T&I6yMo&eIdgCLld(9|1?J9dxS8&KIGQzVU| znejg}Ws2D$FxUa)-!+rEIBZ|vf?sb4kSunl=t`;NXFNP`tNk!(>Tcgx=TZbRWMHM^ zS;~UlPK5npH&Mnn4cjm}LIur9@h9$~`^!*`M?K$>rw`YF&{EX8?Nxq0#rXbSelNA| zAtNb|Dl+aHk?|c^cO=S@E#AOoYL%5*V+oAF)<6Zj%BC$o6&Blj%~LZEAa&rRxQrt` zOJCxTW%%htTW_`S5}GI;sHHD$2tY1ovT0UdH&h)O4e!|qcF^r|g1_2uU`SWNr_NuJ zobRjZpTQXJvNe^P)qgU4)If(ln+5QRUC4@qs2>-nXEWtmBn!dXK(+@gX0KCF0dsl` zrAV_{)HvOBRsC(~+5F)L0vM%(eFS;hpUK;{6#OwSD{e0gckC(I({EY3gl(H$)z)32 zAAcOHnX>Tl`gBa*?*aFSnG-1Aoe(*=sYc}`b*F$%Om#Qo$%>n`sWoERQ6mea5~f4e zh<@ygLY|l5?XwX~yiyGMa8Gq1x#0RTz`h;|m#`9RV}o6vQ5NT?%0ZGQt$xfSMg{-c zU#);OO|WewgN!Q*l+jPlf@Hef&t_wipDsw49h3aemR&eOd{MV*Y|NiT*@0PbfeXUK zVPi_+EA<6XE41Tvd}{%|fZM!WT3=%i)voq5} z(*bw@D*IyKG`ei<+wkif|I}xI1efM_BuX*xEb*dWL7eaCz`_8-M$*^|WP0i0v$PiL z;2<9WnD`5>Q$cZ^=8xaCs(ZZt2xFjo5zpSi{v)628WFzZMt>Prtl?`#-t-2lGA*^9 zSeznf%<8|SASoKiz@7R753DT*Ak6eAId$l;yeSrAhDo5; zmFfOib&@z@ro~vN3goMc#DZDvXJ4^m;4Uj3L4rV>{f~)u81Y9E{B(%GcTkSTytq2( z*;)h;no0%R-V*)v1l{UJ8&jwm!{FFx-_;*_as%Y5aAKvN5qPlzxY*CIwE;hor#Ju8ibFFp{6Dy8EhD&BHUr?;#^TuV3*k zrqJh*ZPbasDcKo=0MsiVB3CW!(^^HGJ+k7W72Zsyu?>~S(VOq%)g}3DFPIW+H`>s_ zHEmq13EDtKmHi?B~CAYb>V*5>v(}z3%zJS=xkTC$yiqcBFr@pkEk}W#wT(7}+Bd2)v ztp+<&1xVKq?^|*C)1T<~n>B^0ge~uvz`1y9SRHK)Or{1B;|*QECuE{->X#AVKb3tQ7^Oy^vpy-TucZ#hw{;rzk6 zugR|`wD`_M+5@qa>0*(hdkb!;a4Go_qDy93e+(U>2@qi1$7rlK(OiuuKsVe;#np;WDjgi`4oc!3|IC?PL zrd^kH2dt!jd5H&dkV25+Jp_>+v@BXiO&kc@j}@-CgOj#Nk92|JQ;uqa)UH|CAe(bU zqe1ZtdI%#G>9qa)wo>CWtA02Vczx#tO20a+v&$DK-9*?NPUjg z>DvvrpnUlgS0{k6=fqIIfYR41Fa^K`(^=^Eb+*9A(IMSegP0KG%&I;vTIk$PPLwD4 z>kJRX|0E_bD_KwwFvhS+s=Z11efF7$fjgcMVt`Hg8X(`7awf7$MqY|5o5?EoriYFu zGc3^UdV|?9_!xc`%Fw!>->^QZ9K zivZHMlr8G&$T?L`-yg%faUM8tQ$r~3Dcr3})dtbO>&fCus(LZ1VDQ`{-t%=g-genJ z0bA&7^?oA`R!Ov&0qI)?yh<_r`zQ5I<=nrm5&)2h3kWC+fYC-s^llBUyx#XAGhOz$ zm<~m$g&v2oS2_xSE_zZH21% z&kGqKsVf+k_>n(WA5jWsyXT7vjbK0)wz{Oa21G@q!p}Hwl zzc|@Sn{5$Ogvj`>S@|)^NKht?`ih^Ut)y8-&tp`HyXjbmk<-OzFh}6RtFO0I?~X2W zU!bF95I-L%C~$fE?VV9a1C28?mZov+OheFTpq6ouuGC;d58UQbi{%x=#$U2CHQj)- zFWAqZF9%hs^9A;5atgKwZP&aK|Vp~SE;5UbZ zrlgwPv$OY9U8Aowl@IbxSx#}aKfW!G>Z2pQ05GW?=*3U(o`5Kq;T!6415TAfR-@Xb zPDpq0^Dg5zf!{p@5PhQ~@ZS?Ks7(*-Y@OMt({t{IZ|zWMKfkX5S9a$U6*N8sG(1Ry z@aTJcB#Gr!T6^MihP8^{vvC>es(lH1SHE1KM~5h$fn6Vs_#PAoAdz+7IWY6MQ)C=e zorj~4T#)SMp25hR>jgeDtyrHmjJ3c5v%i3cVQuvl82cta2aV~@9(2FVEa<6*%)Q>A1-HR4EFYsXQ9jbvmNkh2c5 zrm(7xdtF@Vkze5mP>gV|`OR2p_JTBA(nSc7Yw@p>Zo_yCr`Dbk-|x%CPYvw9UpKu5|1$ zd?=@s%Sj~N3l`{3zcVTKJAy*nl{7vH-p^jJlK6ue(#2BWQ$o#_iiD9%{gF#L(R}Sh zLO-_ptVg148T|wT$c_fbO)2J^o(?$={ z!Y1FanTc?psl}R`gyGk!NlqcwlU<1}6(H!%2x{yUXSR^YRCKO9WC}M-h%FT`mh3C< z5js{IL=4UWs8juXTYx9$=tPuBK;672aqfZJI%TS*1>xSoA!UU>Xw$2udS{i$Wxyto zFH5`5g`t`vANARg&Ub*j(4+6RmtheaI{Lzk=$KQGb*j~EUAN!I@xIWpjc|Azc(Sc{ zxd(=5P9;p9{Sz%3y}{C;lrw%1tAqumuovf{c~JOZ=dO&fGtbJ~^bY2l<@&g`cAKZ%7P;J&Ka!=ZeL3}MR!Y@PK7iX3i(EHlh%nGVK8TU$CR8dy zj8nhRRZ@nbhXRA4bnTU#N>(y8#BmbCS@QjlX3;GZHOd@HtyqS%M! zb4eg7I={^@uE*5Uk^sc{JCIP>T#J3(eZQ<);Gdsi zjG43U;;7UD?YNQAz?POd9##?4X+;ZcVWK~wkj;}`T#!FrVk}#w{7&^bBi`_Il!<}e7PZtJvOU&hEBn@D}7Jef_uGzRyheX2EX0cR%eWO~m9KoKO3W(Dhc ztmCE#w3gJw(!;)_3czwG#I$t>r@P&i9}7Z#_I6g&MdAwpARHAeZAtZ0TWa9^wpR5b zlCIa+&ys1H_|Qx~ocgl?(x@mYBf&+i!DB*mV`JAGBbwI{Y#GaIFr4k#?sTvyBMW#k z@;No8bOcdy0p18aR+TxpV~J;_pxDpV3@RWBG>+<&vsXh^PO0d}b<{<{pR#p#xeCw9 z<<>Q?KPrgM3UPaM*FT_#dAw5B?S*XP$bNsF|HS7^4`sz$Af6~>%iWPE)0`iz9&5*I zBX2nSpw_XlwL7mt&OD!kBP)wdmH?;vD>I<*{+5!eGn4#iyv~xi8k&c*a9I2OdG$2pZb;qAKrep*&Z?{l! z?aa>4jgQP%TW+ecN>G$;*GCa?g}dCX&$4uX@_gh&BN45UCYX2F+477^i#@bLfd3QZ zdG6l!)OEU`h6fIgyL2UK&Vku_ymiDX5n&0_`q zEEb8WJ?5dqKwF1sCaTuWF?|KQ(^>jUzjRn5>Ex&UjS&3(itnX)*4}bL?-O{7W=Rd*c{zV$(atHsRJ45z{?NNP9N(ZJU84s+3OcEglR7 z{Rezp-6=x(UQ3XXM#1w^VX`6Z`FgKPp^LSe1a$1RlVq@`{G@g&X#%^LEm*9Q%#9-{P`vnHUVR>rFMU zeSdk63q_Y3Ml8biUTIZ{0R^KfW4Z#k$0!hEJ)amqzfJxOvX&BzA^ULWOtKQLeRN<_ z*1Buy>N=B|>He%LyYc6ql+{i}<4H|OmGu6U#`E5DHzdmxqbM_JV_`VVw6y|K|3{Dt zx%fccWD9DQCCaeHpXyw6h6)y~t8^-{r&Jly8LIgCZL%h=3S_U8Hi>~7(nh=Ej24E9 z8;8!9#OUTF1C;z-c^_6lh&j?Kn6Lx z+XRyY=mRI6DSZ3-1>3-73U+~#fyb(`7M^oE1~OeDjE+qp)<@jkXqs4z@4Z9|#9d0X zwev=%=!m_(k=j>3Ec1>X+Ea6FDjMciIH{^E@s1lr)TSSOdXkaBMsYs_T8=io&xWLI z@JiXGGDg!pyET!dJRs?FaJ9Q-<^-AwTsN-)fXnx8S=Yqg0U(a$ZmT~_w@=Nn;?>%X zmlwO^CJ*0qZiJB?6rhrA1mM*rpYe5wf-K!k?P9+mkn&WB(aK+fP+Dc==NvOdj##>? z0UEvCf?HI>VpBO>t-=>{U+pb!vlSYZ0)S~#AN6%6F~$P6B`Nc0jM$bVoqiw%JE5Lm zLfbt?ZB?sJm9)*Q3Y^{{KXCO-^wX|Ns*6)9rrV+D6r=#WT+vfk1-35Rq(A>vL+PT# zVp{-~vS1j`Yt~)326!oK<_0yfE{&mhUj9|GApwr+P8sZp<@CT_Z@^gzmZV${tPfFy zlH86fQlG@p?+b4BGv$f?JP#6OW85=PJfKp48>;%QQ zBI=L|s^Bv^@24EVBzz9a**h=&kt3c?0ic}n`oy!K)$PL1fW(l z>TEukLX>a{Lun%F4JUm;0Z#(32Fo|^C*T4C!9=P6g-)aPotDt#CBU_fLGg?fnD(a*B^a~Qf|Mwo4Z1S z)22En6pQTugEaqrka5tL+yr9>2TwbIfE{DJ_(_@s;OFGx@667Fra{s9fZpx#2KQA@ zW(ZqWhYW$x0Z0t~ZTSy=72BZ`vXYsxcg~03D-`{cK{toXaErPYBCEI58Ue!hQh))386JhoQ)Zh!w zN;Dj~q&(Y{R6Knu8UE>s4l`N)Za3GXBjxHcV&~3mhD6n^Kw^^B?b@5``h4Xl_jeZc zM6GW;2R+&$)&SjMz{ML}GSHHC!*95sO*=C}zZI?ksr$p(8{v(tWozdDl;9j;hP z7KNHfkX++rfhvtSF$pUV{&x(HVa9~2D1Z@*tug>OZvd`UE?>9neVIpVnVR9sI#29#Dvf{T{ZvFwTl5@s>EId5{HoRtR8<7&a`8E^LL`B#leU-nH6N=P%|6( zj?g(d@J5OK#g+-!6ZcjI>bU%3r#jTA4i>ugX1(yIS*`2jA`gQNct@}_7F57nI!ijT z`WhL&i<`0pG~EhjTvrRWo|g2JaBf{rBR51MvG8+ApmMq3dTeEc`&y6PT)_h%hDN57 zyrVkQwh3Rg#m{1m`k+BL~8i_UEws}eztiBO}Bt|6f?C< zS|6&k)&&dY>+KmGt_eS-2ES?V(w|y_j%_P5%1&;xYJjFeRE+f2TUgb|16O3!p;~yo zj&VzgD=&YXY6RG2Xr3g5Uilo(p=Xbp2xrOio}V0GkIF+s=OBqgIdd@`)2D6<7uG}v z3V46CNhFdC5|`6#z&R$@om-t%4arCz%7azw0c zKz^qPw;M)ceqWt(c~6ok#D&HC99aFoeLfCS8&B6A!ryBplj;>un@(9Ae&qT`#neL=m9~vt747?gZ=@n^e%*A_3eB=?i+# zilW_R!2J*(8Ao6N|0>`DhkQY-VMRvyROksvogu{zwRPr0FpVNke>lZ038s#7Uw zRrxw;CW;7s?XdQ@`MvTD0A(HthE*klLsvL32fZ?PN=F8O=i)f>mL2(o6)*cZ_OGdV zUPWyg1pS3__qz*#U{9?2^4KRDuxLtx0oyM|r$4Mbn4Od4Nc}Eu*$7a=eSc8E{cb@p z9DZy78GU)=uCGL|vLvX$qU!LK7V5w@!FL)d)c{>bh{eKG_6dNRd$v~cK=(lg)B(zf zZu+IdqUaT7Lg0hV(2BUST|^@TfmNW7*B^S@&8+y7ou82bj&1n9D1h4^aTvg`|I;_w z$`jhZvM(W$e+}m3RCW1$^Ia6o{W?II0ULyVri{C9k+j+4Uqo772@dj-;xb!=DsWdTR#9) zu80fxSg|AkIx=Qn4>v1?KC5(bSg3)^AjM^u!9%(hY(?By9q_y{oRa#wF8CZqw{`|= z_XK(#EC1yhmQzH~R|?`!$&qJ(c61W!;U>ZaKxC>b8M6a?J(X+DgT!zKIDd7a)vU|R zs16+tul&r|-!{(&K5@}}cVeWR-2RZ=4RfFM9V?&F8&qz_f^O%&KtO4Tqx+A6ZlQ`2 zcJ7leqXM+7Fn!oijs3CP^CBi?|JoHyS9HYBLd4==;D^Vgv&NRyBW|~%5e_`{viNw zMypbCCDy_2CZG40QkPfi4p)RX$WTQ`2Y=|p#$0zdzR@oCI){F-q+jGRgWwtn7!)2H z3u>}gda~k6I$02XQxWP1=?W>3?w908D3B|#lPsYOhow_Qyd|Eg0nVkb{K{FkZhejC z{>x*GxH?rjK(URTc41`;;;>3QRsuW=$xToNT;G~3tZ~ER(d>?HOej6dY*!lk3}>hb zO*jfn#foysuG z*KHdtbe~o-00#%>{`_np^Y*Sl12PKj#lP2y>hDc59?r|sU#g`({bEDf69XSDiQ_h_ z&y6=q2S_TrzmqfFhcne|KCnV9t(_glf@QJMCY;G3TJrg^$ZItpTDU3izZ+mX zg>fFN;{)gvs}j+VRt&7fd6vwZfh!v7v02wCS)uOLsOb?vBkn9^_!Pg`2@a-6T%#wM z6ZFhr+F~=_{Uf4lHX~wbe&jgytPZl+SB895f2&H&b~J1*c#G1-1x^V8znMprB@GOQ|(Z)W&RRrzV z43%oI15(7}yc57HdDar2ZBRD2Cz6n}L^83sQ)E0ib}5aEAo% z?8v|OP(v#=Yb(Vg1i%l&v$AR~A5iqGgY9j24O>~)FjRAhwBht=yqQ*k$YljuZylq` zn0>&Tt?kXq>qIA80qcs?io0W;lw7c8?I!fIAb_rTwmu+vr_qyQw+B!>c5;ORT=>i1 zzJI{%eGVTGY(8|Uz%5yqSehi#1Mrca(oy)FiHfGJhOfWt7-;{IVVb%@0lgkHBM?gh z5RTw!p|*USopBpaSKSbM30i!;Js$0=6SriMbRuS(hlEXQuKstyHt;^DjmmU#NmgyB z9RV*~7N2E!sskBdcgK#_G8tAz7hcE0^>+6 zAS@C+_H_$gHRa#N z>;Yk~Pd~FPJXjkf4sjkGhuP{mH_G#b!%2N_sr%{o5qy*%Xk3?pLmfC^ed3O$mti;3 zt`tNAWQJDwm~u;Z{IMAW(?+S|tU3WW3pVE~n6);*@%VtMPwvjR^x}L0UuX{@f7wH6 z*(TFJa!v0xY1_6&M1Ww9SW=0@n-Mh37@+S?6imy!gZt$8x6k1Q4HtwwHTW>4LeK}4 z;tfh!esLB8EVRJ=P%oCqndNUXJ(RQ@4zj4iu((}<)zSXuzT`szeay+EsZ4Gmr**mm z91{DW(GUU%&xoaPK9{gO(hpOBd3c4Rrrmw0#YGb7xqLa+Som0Iq98l|KY+Ve zzR$HE@8^V%XLq+l!T31k8^kY0mip}MCikZl?X=Fdq8~kzkbw>Zp)UaEs7$+jCN%xF zi1&w=@bMr3QmbFht}Fm!NOg?2qEr=o73bhn^iCVvx}iC6 zH166&@mTO!z`~3j3CS238vuuI-gdw39@7(qn+F{V0f#&4s^Wt$0CG*gfVr$3uMr=# z4M%^#naQw(!?D&i=(Hy&ZH|VByf1-q?!-^l2BSJiO)GgF|7X6+q|ocFJ_r4JZRQtT z7fG%%mWDGn_!2uq;00Cs_2|!p^XtPn_l<$9M~}TuV{d)XL6~xZ-x+<_?;4{RSzV@0 zVV7qJMq>DPo-Wsg^UJioL4{oyrUs|1cuzc*tf{@#JgNui3QU{F8x>I_Rvb{rXOTn6 zprY8wUUQ^=7B~}GP!V78fH0sXDa+@Lk-KwAiur6Pu;!EP2X9B0pr*}U7j7^sIyVr$7H7xh@U3+Tm{_er6T-pqH&A z-gJDTdl^k7H-*|$uJ?2oImyS{s~V^4_m#>w4x{V2fOE!~n^5Yp3}bFc6ktK8ezy`h ztJ;EP1<3_1VTVkV3!VvRWb8w3ISs)5)(-NG&C_FU`Xpo_`Zi_}90Cn@;j zB1VP4ACEG24jb6#>OF$Enaif`s&)$QDzK#;gpVh)(pohdVokT;=oL;MUZ#v9_AVPX zk8M|4k6c=CUNj_sjzkL1cr zhLDf{B`&BgE=bm0W~@}u9#luE%F^gtlRD~^=@xEaSJj0qZDW?!z$dk`$7;=^irG{r z?Sy7E*?6zG>J!cUTGB@zOi-YYrTC3%Dy>N~D$^TALkgsi!;FiBA>;pBe94~088~T0TSR{!w&+TAkr+CUS7%FG?pGa zrgAe0waa_NxQ~=t%*mD$YrebyT)gihvN_aG$G1m)dvkJZ|5Y_xo^UF|KYeqrLNq9! z@J+o|k&>CfZ?jzmZ~COZS<#BGyx&RxX8b~+r~?h-7_(lQT`)9ioKo`t_?`%;JS#jL z7z!yX!8nd+&MGz^uRo~#kMXnfyA_rWro7oU4tS~#G#=cND@qRd=L>BXK1oNM-Tbco z^SY{Qg8{u^^&8~=G0WTzxYH(i(aY_J)V_JAQGgk=caw3@leYjFik|-NSJ=t!@Gd}t zJ4R@C@d?|;gM*fip`M`yVQc^SDvFup^L&t z)A!EYHhyGm6f+pW|Hlf>;LNqYuLBIi@|n@aG{=9)Tx$dTEubj7I1je>=ZpViJWWu| zA`>MsDM&yJ+<+B`8_yla8`rM;$L6+O*ueOYfeU#5U&bj!RUfl+4}3q{-v8#G(x>I6 z{p(6R3vb_S7+v%;{$}MvgYaz_e#TG&HT$(5z#M85D~b)r23@BtbBS~$k4v}z04jabwZSxdxN}cxHeQ-wmMjgILlAo}RfWx!vI6i4t<$y+FVymVwXsdSsv$$>F0{X}uLa%dnD# zTXLsgZLri51J@hi_~!ghoRRG_CxR+HN;tIk--kv)H2@}NDvkx4;sr-wK0LVM$JuJ6 zzuuVc>ZlI^YEO)O(0ndGHBSfd0M(?@Sp0AhhLVet^T2gBdi=Vbd$AcXLW0k@9X&Hq zo5L6C(cdgi;9LUAHUAGu;Cdn&{=IzP_)R9Do$Xy3mtMa7q57QhY-zkl&|q$k=*Rvg zZh!mi6u*9%PXY%I&(@4$N?Pl>M__VDcQKMasX8Ect{&u;txGk|27l@a`W!Lf9tIEk z!I-hB-#1w7#`1z9boh?bO*(ZNp|2{1E7th?ioKy4m=&BdB;P-G%>A9Ci@Zr6pu-ji zxB0jv6vYRv!SPj-q#{#D>$GQ+>+FLES`tYhY!CQ`PZ!wN4wIG_0h6e{3KX=_X^0>@ ze0-2p1blq}K6Wg;Ea_@@e(^P*oaCt?o-y~t9pc_mZ;Lt03aFj!ap86skYsBXPOFqb>x=K_Jxsq{o zg#GxbOOpC%57$%Vf1V|wW$D9VcVb?N_kyO_&z6Dpmz21DfMrNAyrhhqvG^wAf=?#gb0{0_agX<_*`Nz%8L@zi zaHN?orc<<6R@9dCH+2Duums-kxZkK&xoJuOr5JhSMDTCx zo@s>Uz>(U*X9&)-@-pF8|mH z$z#6#b>MQL74z=>E3H|00i*z!>UvJq;O-1x#u3uxX%Dqf2M=X%$=i9n>Ts0EcuV5G za@H%wcDDY?)15AV3&b;jLb@mWukm4b77QSZG7JmTcWuxXZw&hV@;3(1$WCd|j{-hV zHe#_k!r6h}O{lBvsSORn2WB!uQ`#AwLW@-SyF@*pl{;KGbb*mwi3_r3aX_uaHx%G# zo}9-(q`J}7Pblsyw`~z894jx`vJ79t&JhIGX^zkw{z?inGhputpMO!Me*q`Nd_G8~ z6oX2*?J+ZcX()a#y$0x{uf!!vW!r)WR1?r&2M3>)xFGmYA0lY5-E?A>P;W>d1&7cgP=Jf5g^xGgY7Ep8?gAlKl8;la3mv}U z3J6Bf3(#RVb;A4Z=>u28csAcLMu1*T415p~Xpi5b3)5l8A& zxl_R}4f^H+mS+RXxx0qpNM9N@Kk4gQG)xe=Tybsc%Lv~e7cmzVv3quuk-}X;GP374 zealRNOVfq?H^u9~y>a=m5_4YHez81&*U%o^Ol5Da1WMQjK%+BZppmrSWg^=CLceKw zu)%b{fYHA(-gqe(U;EF*x8$@GybQf^#ODs>MALMRRAq_9Q$mvW#(A(<| zP7thIOjumEFx)h@LrFHRSV#eYL7!E?>HlU$bUy^~O+|$%_nCmdtZ_x_P7HIunYOSN zIZ>z;ux+|y#uEHrHVm7{ z$;rJ|U2W}mrjWe!gqBQt_wIDywy(wEexp_qVf2?$)PI0HzB+N881j|X<$e0}Y2??h zD|85ZC@M_h@7%d_LH4IrQM4U1HKoJ{L5~Jk29}p^{g;6~&z;*^{phPWwRLqLVV{XY zV78y7lnfprR|yXJ1by_->4j1$z=;&SE3c%~uDW|gW$t%6#ooD-t;~TU0dl1`CbG)7 z5!5WpM%saKFYf8vmf&LZbp?}4u27RZK;TX(iLRK^{myEVmk#tU8a%FYO`>Aut!Ku* zOpu{F&7i16NlHq3$jSnXJqPX70!u(% z5RT{VA5Fdlo%iMvce_Lg)FjS1PL?Yk7pYI70S>@OGjV`Tuf&_1`AXP`MH0|$yQ62mG8TaGM z8#IzIr@!w>m@^ZDdOg6>=}Zk1_L^J5se6_HH42{AgsfNCEfUhwUa~*0t~SkJVRK|Y zOq*(1(StjytMZH?pM%a70O>v|3m$p*@#DEbtDjd^ke$58D0E`T3(AEFLf*I6-VGKv z4?(Sd**@9l3hBdav5MHZI8WK#tBUe$?(G^V7v>9M(c;nDG;*XcVSf zeRh@Q)EP}a3q7$0>wf!#$vNS`Y_GYs4Q4PAr)gykYOC+4nloDidBVG^*|JW^F3A_v zOvy$j101&Dj=Z9x3cLerw+MHj_H|41~UMBowK_W8@tiO#Dqo?7G)h_V?d^C z(>;*7JG^?^C~4(()hj|te(~w!t!?mypX+`hFC40k$1J}$cjtS^GX=~5xnX%N6^Q$S z>>=UoFe*lCH*em2!g!}hqywy#RMOU9*dVqFzb`m7L5pfO6jhgnN7J0B$0{l)yj2xi z%l(DQxo3@v_0Zd2fZl!iFf^1G^u3TJQKxD|zeU!C&K1LK8*ApTY%uM&WT`GtOh)5IZ3L;&qbVWg_R(eyKfHZ-CbVWd=NkS0<1VKvZ zy@e!uJi+&S*Sq(3{++YWxz1ksp%*hVb3S#nXN>#S=9>leU}q1Ja;RQFt7fw4gJmy zrJU(I+-{+G9+`KsXA5-Li!RTdWHQ2-=?7g}*f;mqTxtG9qeV?6T*u5EWP&eRKR(Mf zsk`stdQgdK5JT+Sw+Ve$_8BC*Zr7OGp*A2@W=0n;!{6xXufTF2H9JC&85Baq$Dg?-8iB7LA8rWm z+b1DrvKisHS9T%Ipa8=q#{KXj-ou*y%;6wh$JB3Rg8aojz9EiF2b5;ZmUwH>)iZ@i zZa%yJGuLYP0GcmFgxqsR9IgsmPsb@wuD(i|4s`hSamP6$_ySXmECmZmF_R@erSbgb zi}sBh;Hr-eNS?}cnEvyuk#w@#)3m)L3i?n+ZlJwA&b?`zrYuUT1!47=r@%3U%V7Sb$ z=9IwGQv&~f@z;c*QdDeT*NC7Iy3;HQ9=?<7?a%HCI$@c;fFHs(dELE_;VOJYkqX~p z&HZK59;$)V(rHYXn6@?VJ|(ph^zHW@Oh%ZR(_&XEO1u*trz|o27J||eQE{HACq^sK zL(cZB*UeT})cx@vv)AP$ec*2_KtB}LK)ttcw0ifW#pL(5b}p1p&oir2Ipj3S(?foF zPO&Y)rWZvuV=QZHO1Gg}37<&NJ7<(P`He0w4ISrM<-)iW(p|~V$6V+?da62#RYz(> z29+1(MX$u%rKj|<+vsb=(N$7<~i-T>hO|{d5C~n8uKrN z93BhJ^wu`Z(TE zLOm7#(J0SRzq`{lDN)ccjM`P5cVsoY$qqVvs)+Tr`=%y|VP{Gs<5 zOC<#vy?ePtFj=PBa=GG^$i(n{7R`;Xt*BP5!9O7fr`cAZ=k&`m4oT)xa`D}vtUI!p zxM5PAV@M)LfP)Zfgd<9(t?xNE&*(^ARPyLZoBM=LIJLe(E^jLBZ%?AS*3rgX{s_gW zwZGEy{N=I`V5zNzlbntVhA|8MpB}jI(L)$I_468ZD%S00)9XIcjeKEBWHgWG!26m* zZwTXNi8d_eCH6sHmc_mu^A!KUKwfX$QXkBnN_1RZc^tO8|8|o7#71bNk1A}5E9#4j zbOo|qx^8ins;71J!q|{XiCa~iRY}KN#vmn*b`++k7{+1<3uT(IZ5 zhk0vbUr1(?cAKLVS_3I~KkA`sf#`Tk58i3&>iCRx^Qk}wyFO!G54fFKkJL!G2zQtEGRj;AWSFcQIH%DpT z7A!+O*vX4dvxBQ5-wCpfAbVHA>!kwaJ?6D{oX1-E0&L&Kth%g_AF16U)?7JV?p(bh zTg{iHAL&`9+tuJnt?}%TOKk6%x{dRC<3(4@;3L+4m(-t~vD9k(VJ}zVs=QF3MN!k6 z`c-aKV)()6XAqsI>4H5QTI)Wlu-32SI()$tsaD56ub8He2#YZ%PZt!Gh)%2sc#pG+ zU#6;;x!6iy+2>jPer&NLopVXWT!I*EdO5jhr^}mh~k-0Fx241S5qE z@@i3E$b>z)|3VBcCf@7zY@ng{BG2giY&EP0U!iOJmFehkfrbT<)}vf#VQG-P-~EUi zFNrlND);gptvy``jfgEH$E&n>Q$JQ!*W9ci@YG|Y#~~cG@{8Ki93E!X5TZU&n63NF zdZ$Z%>gYx^&@i z13ZoDU8isK*vjCg7kFY_7yYcL%HC5`frg=t`UQ#aJxiE+RYPW52Z-on((4j=MJEQnv0>5_x5T*oO5A zC3o`jE*p5s-dlBE^?dikQ&>;B2eT9`E~mBXQEP;w{X9gu$UDwMt)@o5FBq6SrcWP? zuHnsB$n?w1WUh?ecZ?QGyLyU0^!4J*o{H4rcgbqzlu+po2wq>0@kJ^s0eLUitgx7g zqB%-jMx&QRMczz(^>U&UeJpF0jp*v=SS%7u`))?p;ttxTAi?Iy)BE@LbGbAeT!d^3K~wvzgEi*^CCHD%3vj^J^QWf#Vs=KTgXUB z>4z`GXM0ExCq`IX6}K0T6bd$xtfd)ace`-0=Yt$^NL*X)MJC_km$-8srfH@>BD2uR zLB<70S03oI8FGx)KJ4Ne9^D86m#NqLMu8}C5ESK$Om{~$uR^=7k3A!7V_s}9I1IP` z%mt~((42MZjOH}!s||&!dQl&=ohu4fTxqCFXCk;>vzLhy*C+DtKN~Y4-%};k9Q&c+ zdRYaob!|fJ3vKUtPlu447b4mE`rVb=^I-#ZSAkLsbYZVL*zTOXuF5;hGs&j9$TRs^b+LUC&DQS?)MCQf%$MvNZy-P|A9@qoRdIq+UXJf; zu4_Jm%KyG?y?Z1L78o$^32&nfec3lb#xdZmTp-K1u1LB6bxA{Tt$vsN;WZ09M( z)T_lbLwBrxZ>66{W-%*)RL>rV+G4Ac$*dkt-PtT6Z&TZi<mTxXS8uCjcek(4!p6A1wP8z)HRPd%Ckf zW6u`2b=^JIUFezc-kYiSE4@5kVrFs$Hus_}sj5AxMbEZNz8 z%+npewD7}H(a$k+S;#9J7_5EoWMQvpS**_@M{rWlaKXhnHq}_^XLRx)u{GXyN1{VX z-fiT=HyW#tA?H-hnZnZUZ2k93)$1mAk1pP%PtxCpNuqpq$E)$|7d9PMn6C6Cib`SdM_Ug8zcO-r z7O6;xs93@AchMm2r;vC5eD@{)iw$^?#P31%c(?YMN88Y8`0DCnu=D!!iw`Y$x@0xA z6{L4FOdp%+xDH2e`e-X3moJf=f7^WCzKgk1XctqrBXKAF*06WWK&y01f5^NeMQYdI zU*^uX7qjSKF5oFe`5-mET2PYLf1^-@_i_1j%~xJgo&tvc>&$GuGV8RhlluQ@1;?EH-dQEGJHo;{X}1@cQCb|B|MU6UMTu1o22hn`Vwr+H_% z+#3C6ErW;2lpxxau8kPO=#;CNnZj9hyJp^=mbL<@xWEaIm1QeRez<;t3^7ZP$C2r8 ztICRDdmjf=&-f~sdKL2@-Nnu12_=&{;c((aFYj%(k~h?Oe_C&myvOBE`Pj(7PPUke z^1JRh6|vv)2KLCS@mWK|qMRaR&RKWv4J;J%3zH{_M0g5})L@p()p)gb z|Bd!|gL~tLI^@1pPx5uAuvLE$|JxXxA~Mf>JRf_>pE1xaur>m{y)C@jM;{6Fkfe1* zTrV%~3=LClFW_QRKw8nh3CHxRKy8foL^;mH-P9;5E3}52vH176?4dUn@a0iyGaLI! zTlQ6br;i>Btti6w*t(Mz?px`DB+hKB?e1m|7JV6Vok}~#jZqtturR#w{xnhXgH}bA zRKBO(VObuu;VV(5>(hG+y|=LuZ#BrmXm7*^)E-QgZ>lJ{sctG9lNI~!NQqxSc>WT# zE62hRw~)AK`>pLlt|yCy{6b|)AEa#RPwRyXHMG5qzP%=nSYq{L4W!(b*|o7fhVCoR zdfbOr`gRNWRjaSckiAMoAmhA_eSafvxuGr$yT5r~+3c}U?KU-Yj7)5QQgu#IYsJUo z6KtyO?a5{SGJtjfW>zC==3dUMMRy;0?i<^h*ldNaI^vY`?Ts zCq|GQ`_rw)&lePH+u9Sm*(D06vzv}*GJXIPK zH)4N%zC^r$CT%+}F;gri(FgH#_&A~pzWOf_z^_qYwfM2-kTW5E=-aUcGfUz)!*rU| z7BXm==`OJhS=D9166P~kR{I31H%)Xtr7quO_(&&Zi%fF{o_dt_<+e=A_0Lmgf7-TW zuA3S;RN+haxaH+ylUEd2TQ><0h$dJ=D*8=*>Mi**pJy#u9Wj%($UaBtfdv9G=u;OKIirFX7DS555A6Fni zS7cJumlJitsLe}c26+2c+&w$**=Sp2tclAKyhmp^YNDtdu~XPgPVx9AD`KK&N*6!KwjjgDN6aX^~V=qQQ;AxMjtZWrIbc!M@MXschIud~=?htmhK%g=brVR#E1xS~1Fu;lQEkz%}RQnm7a+`yEazi<1(@ON67vTWQ6pG-mdf-Fp3b3i12npNut= zhvF_Li0)q!6OLGCd1lau{NMVz>nv75(E%##_*wrCFsGghQECOqJy1!dbsRL%pt~A z6q*|TL90sa_pDi?Gx8A0ipN|i>7DxEo>$fjjj8fexa@`cIE;?i9J?X9THSWvBj=z} z+4Y#bzAn@)Oc|1BlA;o)V3_A_-&QKqi%IOe!T5@b8YAg)yG8oJk$J6>keC;JU1)GH z)Ef9A?yg<_@i^HT?@~UUtKxwUjd8wy<>=cvc_s(~Yn9qK&>@sr`~5a-%Swg+iUMmNqYIxf{gS zxy}ED8uiz|d281jt@Yl=Z#xFrrtlGa_-|0D4V8>bK<#<}gFbkrA%j zc-_pmTD$)dx<7whvq67F z@;@)m8PZ*CPaLJLm)IUvKxAgG6w#*e6O zzYK6LEb>mQHySyJmZi~+Eo(25Ix$}nUm#Jk(s4R7fUahkeUiBlQq!!Wt#Kz<@$vv9 zZlQ5}2R!eEs#KaI)d1?1{@cfFX=U>!u57u#w~L8g<_cFrs1)SZ5mK(;Ut(OLkSa5B zYWaHJV0=Yril`Oc*m0{5pgwfwcf3pi5bt|z!WL z;h-_Eo2u7^l0ai4nrQs;<)0*|cvkM*xRvn`@7N8MEf@Z?6Z!OZQyUTGJ5 z56vRt*H6<)o(#YOC@HexsXDufr)8_L8W5!+ezkg3;q@2s>^uDuYzY9_U;jym48+cr z`Ve{A(il){*m}zMiCSk!V?rF<0fF2M@$=}BeoBN-(?TQ%BgPQ&hD`-^A4aI&0t89Ob@rAaTH^QeF-3XSaQ+#68en>jfF1^2NHk)p>+pxX6r8A;l3nWo;I z)nT)43dnz>Wg)S)1K1*B8luI8h)^i6N6ICw4vKd`aYyS))ibZ8cn$e>q8}^wrP=~7 z>PlKW!J6HHEj?(ac;Z5;X(L^3^umpJGPY0pRIIwb-aRUFC0UYZU@@7)Dc%+~w^=9> zNH3X_`mc)afXR*DyjgBOO>H;xz@a${3X~|`a2-eGvGWruT&FI$ZaJY5y_DJyQ=uwaD$IAqETIpvJubxp(b~JO!MJ+ zl(U*&J5w#>l{??zSG>M=bE+3WnVTc-88X!|eY0T6qtggHQQ0#k16AJ~8jTN+o7_Cx z&!s}Yn5aKJTZ+=-TLuAk^hEwwCGqz*a0 zB!%0Uje39}7j|Eh!hiDkN2Q@BM-NrrN%4f^Ol6M5 zvTLo9U!v1Si?!`(vqT!~!DuXb1gezy<`8Ec;i!gLU+1^zhftZ_Bo6B%@7!+z(2*6% z;+;6$1VA_1ob?8Puk&+0LN>}<_Cf9D&6H<;mt#Lwql$pcb#$9`pHbnG6^K~!;I@%2 zZ6Z8bdnBGj2N;o;o=_iiyll_zy1JR1G7LugrPBGc*X~pRI|=z{D)4)hPKvEUk&}EB zHIzOr|32HBI{GTF4Uw4_gk6YLt(WS8BKYuV=L9p=6wnLJq*O~2SYg|P!bE+K0QKy)j1zDv~k zMA;d?bpEyN>e zG&T7PlP2UwvCCumH|(Ug^EN#iQ{*}|z-P8Er71ml5#`kvJV?#=q%42dgfVPs-E4+yjTOJuKv>JsM70{27rAfJmaSAt~3-s_8ux-qGi>btDUPSyz}e1$a5H zjc}apKo~YxD|goRjL+@|UdoSiF6Fbac)7lNpLZ<$lJ~vMZLGFZ%c_oOUTrdBtN+Nc zs33nzEHz$nktQKrQ%i**#At&Uj4~sOmBaW?%<*C|joLRBb06B#@`B|L7J)j~Gq&rL z>(LV@Pdh(FDWqG{jB&Mtg(2urJO;VgwhkDzbtb-jeGOCP`TKTQ| zuWQnYk%4)mae6PP^O4$l^nv=B(JCz~hoj~+TwqVKa#_u+jPwVvKDLhINM4kDCGFV1 zQUF2NZDhGr(-Ous#)uGhbEql)@tn5dG8u_})ntyT* zWkmz!b54snROhNj@BU1ofi^c7-r00t#g}x=LmoeM_|D69j4IYn8XyJZ%{E4h+X{N} zn&2F{hLikQ+5O3ePUTI2N&DA!?OWH@O@Xy@J>KvYG$mu6a*%Y)EZ#*=s;u#hZG^)W z;3En}fWSEo2I2SR$Vo4@QrRSbJO z?O_Fn{0FJUtZxcPK$mP@obhc(K>3|XN0{eL7j(+4g_>5alzkt(jfiavj37rW1P_^L zr8yXSQ;4KXhRUaNB(H07~QPbnXi6^!PMb?)+c3$?%-Df3k9`EUFVOSm&=8OX~Lz0Tr^$&M%kv*&LO_)VY39}F?2+ML{kr2#YDeS-~E)fGYGqhfX zQ75q5in0L2&w*{ED2tK{)m3=PJpk8%5t}wJ8T2YwlOf?=6lZ1Hv-;GIBcXal9@)kx zST7PTRgrKT>kLm8@Fa~O@uI?iFOs(?#HWxrmMInyC2nibnRJ!w)I2v!O&-TA)l^|J zMI{<MuE)>t2lvHR<_cm4Xz6|WRhXyn$pPr^e9A*02HWUEoK7RGh>wg1*}WDyl+ zO{%b!~XU9#` zdUcp_92Q?3p#nEWr8wZsL6Us>9p=0Glz>~$2+jyVtMlE}ha1RaUvJfgB{y8UZzNy4 z^SMh-Tl#W zLrymf*ZL-fCGP4usEfVg)@Io{lVC04&TsZ?fHEhg0kyJZps(X+#nYjjRwcTir63y^ zP+or@JjAb=>5rd27(elK_N52YelY z(rj1k9dTbjf9t9_-a!w4i1$Yb?92N#OI!l!_7ZEEcIdk$_uRe~C;de}GtJbxDQy8J z9_5_~&5S>v3JNw3%l+T?gb?*)yDRP!>39l4RocV+u0()6io=((?1iB9I+GHO&!tQO z$ah{&aJq0pmS=U-j5Sio`Cs$d0NL#mR#kSsCI9P{`$nl4i7>zM!?7X~-7HnAW}=vo zKTm~-$La2?jmXw%lc1LuKe}f8eJaN~f>sqXdBp{@51)`VGOI##D$Yuu;~Fktbz>VT z&f2u2=|Q7y;hnw1o84!}O(F-4gGM^JYB8=c41GMmW6c}M*9bnfA+7-|5^{3Wi=e4& z4vU=a1;~ik{d)Yb6i4pdhfc>VN+LV8WyD3P{C=6Ll)Xo{j~&Cv0kqrJ@f5v3N?*Vs zcY$R)&Md0N1$;o--33(3>iABxRUm2WzX!WxvroUwP~ncVw~je&aI^M}^DWLAJ8J-x}i-e!sWg3FE{DNJpkJ=LN$JCP0L*#w9% z`AVqCVhKSB?_LxyAZ(z&qSaeaZJVR`xs4B~8!Evf(th0ypgi%|NG+aqb{pKM_j>d) z@gC>V%l=^Y4$vE`l+J?7j#_KsD`?W__gWq(5ccsU) zO!k@2aRSpfspKT*g)c9eO*QN4+X}LQE-CH183ro<-`Tcqpg`QF^&K%O{G8{@Dta^JcFaj%ub&eWN?C?* zK*Ijtp@fC2)Q6S*yJ!mP<3Pe8$Qls(CdJ)g3EYUN zJGMD^gixctVqC!$oca5=&fm{&dc|C=sLs3c-M^TbHF0yK93ZD~;OswcM9eC<0Lx#ga9uqj4n3&YroJoZ~3$+y;B?zI_-Stbff1>UD^ zzBB9F-G0MCrSsjf9SbSM6_5(gvC*fjzU&h1!hc*%zm+=L*$&?5joY*3i)BJkx2WG~ zb-QW<+M|eu{k48}-lkczlbDbudD#%Kg!rtr(&C?wWV>u)6aQD$S$&6PxW0mF~U9Pl+KJ)USUB%?BkyO%sdYJ#g`u)A%T0 z2^=p7Y;tY!+p>X>a6J7aW};;QKnm5OoxnqwLW~bTCV;yt7E4b5kH&-YOx0_Ybpn3Q zu!Tavl*-qw1HLGo+u8-!9FLVT|4TX=10SHxqeV{dq8U_asX-61ObY+Au+cJugeeM{ ztV@bvxZYvEtv%ms6$hrQ9#yD2h6xg&T;4xLW#xGzXRsUc6wL%IzU*q!A8Um$TC6qj zrahvK@3oBuT?!Eab3*_}+h(0OSrg1nNYMw|%~apKlWpf_=dDf|>w9zR1WR^xB7CFU zo=3|bnr4&{l(;C}O z8qhIbj(&B1dqg8Gm`f8=YSr-`k86U`@qAq+{sFE7&YgvN7k8U{n9FYhW<0QJ*Tg~< zl*l4~r&f0|ZB92|JvJ`9yX^$V1InH8W=DXPN&b4fQfHwCNV0m#xBbQY+koXk_qv<3 zA-nvlU1xHlRCcE7P(`%rxOpGt)b9=V+W;gBpYFcg+ky7mw}TN4>^6#a+^@TH`XYmt z$Grducd}^gcIs0yDkpXZ3pzz*8zN6@%ey^GMaA@vv9X#%YXb*E+c5QRo;MBC?=%O!{7UqGzx%GUww=fBTw7;1Mlqz%8*U?pMEZ+t zD|_LpHofdcRyI6YmipE-MDpnP)$Muf`=wt@&H`o%Sko2^TSYhkBXRQ6JHU07v+nt$ zmZR=h&Fs}#Pf%J-PO%$5Kymfe+k5jGrKyd#8HkK1YLmRkp}Bkbk#XZ$p7#0UpHH%p z-Gc%mm+V)|-p+Q8>>75~XkWZ_wGo9FL=}IB7>qMcZrJY+Ce0g8{!k;Vd=535w0hJU z`*ff#Je;|qKQbXL{ppE2fNpsEQFiXlQE&yW(}NR?z=IPk2rdSUVnPE4tdH#nE^IKg zAT4!30H!C(smOV}Q|sxzrsN=V8-ODt2^56pyncby1h7HnRTFOMCnA|_4jOy%`hCTR z{JF6J0U}6&2&4WTVwU>G%AWur%x^7!a)DQL&m=%5j3Iu@J%TrMt_MhEB9$L4q{Q@k zsozIKP4=`qLM^P_f7Y^4{tah7U3f@3=p@Fb9RjXl`u5ekHR5gSH`5Vd!yOJMfG~yM zl6PIN`J>dnr!Nn{_LN4sp5!c$=v0!j^(+h_G7CRlHf&Gao*|J$35)`C=+68M@TQ>k zS6~eP_|Gv^zs9vbR2fVyb(XGF-xkfL5uVQwYS;d;0ARfMqsdRn$j(>*hRgi9@|27S zCy7|8#nwIdD*;Eb8jp3$ME>8YB<`cz_Z`Nt?ch(&d!3qbJD%Alk;UiGTjeHep#q>` zeDxq|sZn+4eVrhmHD6}BF0czDqZY)*z9Flpqes?%Fers6X9o(;T&0uKH6+>vzHbB5 z5f@pSrFbCgiQ`_{TZ1sA#*EQUuEUtDS<0!2HO+KrO*4_-rt_>1)qs9910bg^XVL`r zjQry{$%I_~v2@Lht=4$E1Ak?@YV|qheeK*`=TpP~*#Ks~bh91;NeIJ<>w_(0p?~fz zO!HZ$UORC1GzF8RwD{e*L^J3h26uVMeFJ9CyYI+D&6(wh(+**}3x4?Z9B-LjzH+B{ z`N8J9pyMWAtqf!kujczMsD)<7GyEr_XemLHDg9)aZiu=0;-PZi*avm#0m(lO#VC8r z=_iN}GXiXG*YLNN`dv4v*A|?<2)s-y3Jq#gxL*Z(LLyLrd|`gG}cFfC6~e$>iobt+sdT^uGh1r5NQeMMMZKm=EM zS6*F2ngQ+&&<%u%BNoRAYJdJ9cg+D$_U5~NqJci*-Ky8>F*3iNo=aIz*P%(%SKc!9 z;sDJz#WJT5poq)?H)8o(QM*Oj%#Rw!K4}Mp`^mffMe!0fu~?Q@iUt4MbtKls)jls` z0A+$s4#%};ZT^PP;cf<&J&BBk6(n?tXr;ZO4%zE`VpbJ&M=dv@`#paSCA?6FB|HO= zCcAsi$@6hIo_f*Vmaxw5?I;D0&03rKf5plOfzvPiE?d0a&9t!NW|zlo10(*e57F`t z;K1wIDog<(Sp3ACrS|f-2=%>9KY|8so63ubTI0_@b_Q91GgGL|J^!8iBgv}CHLy2X zc2>gdU=3aIir5_y=~H3VA(2_g+a3LoNPVbOwGgk8D`U5+e%`ID6cBJN2=_|?!Z&kL zbG7-ROsx~(wRQAW2kNbxJ03i;PmEkVk&ZM4*mpsW* zi;R?z%h=!Z9BmL3FLkctf7@kp1#Pc!5M0MlEmEqlMUeGr0WhcSB3(7s@3U0ge5 zJmodQa%;4Uk?1Ad!7!$jXy~Gyu>Fkv^kFi(4flO6vMZ~Yzy^;UX0ZZkGjjOip za#8!S=;4@a=#(s%R&M6G;2l#?v?~gmOqc+xv_%H@1gG&B}m;@mZCd_{*?<$-6wCz=$6r3@OAy}dJfbf@A zkkq^~KPq5}lJu;enOr_xqhJzrxaN{c{o$~OsPP#kk z^Gs8A>C7cdEk?S0clG-wk+2y6cnho1?F$_>WnspwfT5otlwCn{bA}8H4x5VySq$>b zR60?)uFwAJAD31(Es8Mb*>o4@pTIbxo6UtPR_~It)eSwStMeHJ)=U8d@r3E{)(q{` z228?p7^Aq)!3wmRLve~b^BCpNoSB>sPjWd92xEL9-A6c6=gx8Os%fBfxW$dNx)=>7 z2^isnfU4EBA4rxyMFb5btQ$s&Cs|mVE*;lF+lLkC+`bdlclhiG6p7#rv>LAEZu^L1w6c5K*S}dW;6lnB%UxEd#dv2VrnP2RX|CqMSy*7y~}df{>EG1(OeX zBg4ap5xO|-u{lQXI?5L{TKGKcV;YnqYq0aaFvbzmLlSQG*91T6s1PcfyV}XfJBL+w+7o@;+ z8a_i^4$55}u@(VPoO`g^w!+HPZF+_#fYVgOjIh7rN$x((7qAenpu7;(?lbRn^NxBl z((-lpm}1ALqd5V7M+Sy_BQVGex3GQ&2&iYjTNNl0y|APb1k5{e(7gwUk$Hr<56-$S z88QYl3_t}Sadvb=e-kGgMice6=pOo;)4RqF^A=4- zWdjY|2;0q~zlCW*Ki5{t{b+;&;4^K`vdQNpYDAX| zx*>2!RERsXYAE zzkEEvdv^c7-j#EtM~44;{@d*VJdWSbTD;KJaQRbjk;Yk{*CZFsNI#HLL+l7R<0`*= z-6trOGU70~-cZyh5ce6Dxf?jD2}a5#_kaS|0Skn)e;wab0N|ViS z=TE1t-m*+f@wj}{L5LAU2aE4LuH@%^liXSt^es}0F-9X|0Y-Mah@7wB@W>27x@EXg zO*euVzz8czJ*v?A;L_NC40Gjw)Rt0UPjRu)C zhUO@O>)d>S;}**O8x1|W^2*C=N8`fDILny*rm5yUsT9s?$&p`xwfY5c{O~J@Pm4l; zOX1}hFd}>vtXQ3CYwC}zhb?tGS=74$BiMNrcHuBeTzDYxbMV0WCO|$c+rIt6R4We7 z_I4Q{i;&)NZ}X1M3lWii8W!UKhMu{dk7ehVwz7(|7pB~SN5M>fr8)G{WTwUi;SS{= z&On_JzM`s)I5EByK4WAxjYAHHd|~+uGVhUmKCifdv!VI=8;S^NTYdVay&y~KB`#7+ zhJym+;umq(1*ofiI_|sA-Ycf7iryo5&Rr$MCYEl_JT#?J*qqh}M9q+#paOD)>079} zE3;ikn6MvHr4eKQY!PP{c_GHzd4B5EVtWOxV9ITSb5%fxuSJfG{)MSUB8i5Z$}@lp zt3~m*fVM9cE$w1MF1xI~qt^xUDHV3GgqU!riD5$a;@~meswF6*JFbcVH4uu6{f(P974sSZ7y%5p8T`Y6&EVfqjZs0d>rD@%K`OH7LxbcoA1Es!8xU zzW%Lin>80d0@F->Dri{7*g@NOT;&B?y<{pCc7oN$s%2r(PKBv(=0$bL#5AzU=&rt6 zZb4VQZz7)fLxBr3WC=#Nt!z9XdfGOI3F>!7#ZtgrPl@K##l&PUH45qB-sQx)4o<+D z?cVB3SeTYeePN&|3I~G<_91=67roWaU*T;s^#Z<_ZPxvZwX4gs%9J2;9T4VKn>z72c|KMhwd;%4_zipbK}C*!V9%`#+H%82Q%svF>vuh>i7fe>rk}PBEcdV0NF@ zN2-PyMSsHkEI&PI@D2>@ zx&5XoRziNP%vHy6%_lH4IGc#ajzVgb-NTA9*ZEd$W#xxz;@e#RfJ5Qwm<4Z0YJp>t z9SOYPdOY$Hb)tf(2s_BoQ|g3TI}B$G5*0^DGN0dPE!!Pk-?P~*Bk626!lcHMPlgGG zMEWjUf5uXtG2iZ9pA6e9Naxfd053>gABc&Z*c&@t+T=mexh@&@Xb{7{ecw#1Ph zlGT$+3Hp9_*4_S$p?St!iBhRLZ(bL<@~k}6;6axdX2OL;=2buMzRYB7ZT%<0&ECFIq*~a8RuF`id7qYtrLIL9Ntu!8>;WpU62zDoJ(@n z*jxDZy@)yPyDe;#39>_jbl>AcTZzL?eo_!;Qj)uA-7Z0M#}9;V!ptB!C^kR%6No7I zAD-GVw(v)YLQ%w|3!Fx#sxY_$9+l^I*;K4-0aJx^IpDiBvbm7mBn#>Fj{^F?RVc2T za&J|>A_?aK_$!6Pp?Dn6B1WReu-x$B2Wr5pjWfieU(c1no5Fl|C0{1mQzw%GO>c8x zet`x)etV>$%D$FId-E-n@tv=v7#pVPHSkIsZ^m=MHEL44`#B+Yj-fu(1Cm`#k6Of} zLOkFY5q_f_@2=^z?ax`iEzCr)nUvUl2$LNs%P9ZrOQmf-{T(e9BxAm?xJ?)z0TnN+ z1FZT)I*)(*F@2iEI))2%cBk$BgE=baB9Uyj)*|~bu^pc)gKR_mQJz>hlzij`YyptM zk--@J;J+R^?f8p^1maj>{2!PKZKsWuNPio1=N@)>1#d*TC?nEVDA!#X*kdul;eMI@ zDr-gvtJtL9wYdBUu!LGv z&dXjwZ+JSf7NsUSD*Hfmi81DTe9#!AQ0AW^thf9!QFd9$$tRKC%W}D;R=+1&*hI^j z>(>OFY~)YOq%xaheQyV=55b{*oSpTk0479Onk1BU0t119U*|~9)fM;D2w;bB@*qvAQgTlM zh4hFBXWvU(x8pMP$7xyd^Yl8Cr)PTSD(O#pTvZMQ*Nd6M|LsWIltTz(fX zZUm#_6|YfHKtDeKBwR6EJ#+AMQrJ4 z=q#{QHpat=1;I>ze$B?}2IJz9=NO=2Lyp#l%EWCx?z-P(CQ&NQxC_t*LFo)R*I7?c z>NNMdDM(V)9&xW?6;Emak02_EVdLGwgCa>p(W(R`adz_60(3UenIuGJA-;w5ouk%T zc3t+hyF2M)=JItYYy?RKxu54CwM%1IeofgmpEw`X(OLF5MB`s(!g&UYE$AjGWieGA-w z6{p=jq|gykn(f2A(C$znKJQ>HSG^mLOWKJ1&M zf;73^a2$j_bNh+a*tzKd^*i6t$RbxO;e9`6cz6=-;iw)|CYQSS)q?zc~Rc!Hp&y-GIqHoqt5&zJ%$?))u{`a zdI1rdjpNnpCt!Yfws~e3k3fQ;HfV^Vjg{&OgrXgBz!1QC4{B%4e3* z&3WKLeFWcLhNAZMZ;;<8u1KLo2Q3;(BCvHASMAv5K{ zLRs+B@|BeM<#`TVTPcTP5H;U-3}>P}dow9z+ac-JP+-k~3{5t^RsKfBY=nD`#}d+` zPIP0(ur((zA+y}^7R8z5lb?tNnFeLW{dXG)nyDCEJI3{g!!84;K>MaURCaCEV0a(~ z9Gupf*R~}x;L=C^N27o+GI#suxt-e=-VpMx7{b{zWQ`sQm3a7i1L4sK1F6||mfkl_u*dgNfF?epRtAo7CIWiFrIfoUZ#x-zO#Pku80f&o*naJ}Ru1{nqT2YFBxQky)U&u7LT4<2j>L?7@IU<3QCNpLI~_C)UMd7e#Awx9a7S7CU z68>vAQuv$09Jq*uW|wR0$weW3>^u8rpA5W#4cn~D@HTJ$XLzUVPhgVci^EUR9kew(iYl^|Kc)a*Vo$uY#ofB^`6D?z@^b^G}<@5p2 zyTlpClJ4I(w2>VHXer$`sX*pz$83brnxjzrFzOkt_&W4}ce(}F1y-VGXJ_Gl?nX$f z3z&AjvG31=YHDg^0mdClo!ys@zL?vy)&P!?`Qp@zsByHjb+)!d5=l*n3BY-M!c|pO zOPLXza4+w*v}*x9gL89YWh{`ufiVcs-ePTQ%i;gzqtVlz^>9n2A*11^o4e2ZGht4^ zxMYtwN>$%~b3?Exg<#>vz~u2(aujuUcfVjr7(vD^c1?x-re23dsA?=aX*bFSH=o=`SAXc?HR&m)?904ZQUTvg;{zG_o1udC%#~&dzRLW?)O}j%vOw=I-UCN=JP=v(U#;-W+^h@vgHocJi_Tx96eeg7ZV` zF@~t|dNuvit4ghNyDuF4{h3)lU-$=4pqkaXDSen3uk-s<8=IQUgBAK43^xWoUi*BZ zKVeJmuxgavT_uE(uZ9`Ueyq*qBo(Wh(He#5489G#H`Y17_Q9TNesW&?4<04QBh8UF z3=LDAwqjN{uOZPv`;J1l*FKTL7&I>Mx%mkdv!l<`E&trOHWHZs2Zm>feS53GS=Ei3 RuA+A+T~Ixr^_S6u{{f*Q9qj-B literal 0 HcmV?d00001 diff --git a/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_tablet_2f22c4ea_0.png b/app/src/screenshotTestFullDebug/reference/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenshotTest/EntityWidgetConfigureView_tablet_2f22c4ea_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a222834f99e7d7bcd3c0a4335b4dc5abdd2820f7 GIT binary patch literal 100517 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

di2NCY?9OR_^kct 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 Dvf8pX literal 0 HcmV?d00001 diff --git a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenTest.kt b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenTest.kt new file mode 100644 index 00000000000..f832c17c75a --- /dev/null +++ b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreenTest.kt @@ -0,0 +1,141 @@ +package io.homeassistant.companion.android.widgets.entity + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.ui.test.assertIsNotEnabled +import androidx.compose.ui.test.junit4.v2.createAndroidComposeRule +import androidx.compose.ui.test.onAllNodesWithContentDescription +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.performClick +import androidx.compose.ui.test.performScrollTo +import androidx.compose.ui.test.performTextInput +import dagger.hilt.android.testing.HiltAndroidRule +import dagger.hilt.android.testing.HiltAndroidTest +import dagger.hilt.android.testing.HiltTestApplication +import io.homeassistant.companion.android.HiltComponentActivity +import io.homeassistant.companion.android.common.R as commonR +import io.homeassistant.companion.android.common.compose.theme.HATheme +import io.homeassistant.companion.android.common.data.integration.Entity +import io.homeassistant.companion.android.testing.unit.stringResource +import java.time.LocalDateTime +import org.junit.Rule +import org.junit.Test +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(application = HiltTestApplication::class) +@HiltAndroidTest +class EntityWidgetConfigureScreenTest { + + @get:Rule(order = 0) + val hiltRule = HiltAndroidRule(this) + + @get:Rule(order = 1) + val composeTestRule = createAndroidComposeRule() + + @Test + fun `Given custom attributes when add is clicked then custom attributes are selected`() { + var viewState by mutableStateOf( + EntityWidgetConfigureViewState( + selectedEntityId = ENTITY.entityId, + appendAttributes = true, + ), + ) + + composeTestRule.apply { + setContent { + HATheme { + EntityWidgetConfigureView( + servers = emptyList(), + viewState = viewState, + onServerSelected = {}, + entities = listOf(ENTITY), + onEntitySelected = {}, + availableAttributes = listOf("brightness"), + onAppendAttributesChanged = { viewState = viewState.copy(appendAttributes = it) }, + onAttributeAdded = { + viewState = viewState.copy(selectedAttributeIds = viewState.selectedAttributeIds + it) + }, + onAttributeRemoved = {}, + onCustomAttributeChanged = { viewState = viewState.copy(customAttribute = it) }, + onCustomAttributesAdded = { + val attributes = viewState.customAttribute.split(',').map(String::trim) + viewState = viewState.copy( + selectedAttributeIds = viewState.selectedAttributeIds + attributes, + customAttribute = "", + ) + }, + onLabelChanged = {}, + onTextSizeChanged = {}, + onStateSeparatorChanged = {}, + onAttributeSeparatorChanged = {}, + isToggleable = true, + onTapActionSelected = {}, + onBackgroundTypeSelected = {}, + dynamicColorAvailable = true, + onTextColorSelected = {}, + onErrorShown = {}, + onActionClick = {}, + ) + } + } + + onNodeWithTag(ENTITY_WIDGET_CUSTOM_ATTRIBUTE_TAG) + .performScrollTo() + .performTextInput("power, current") + onAllNodesWithContentDescription(stringResource(commonR.string.widget_attribute_add))[0].performClick() + + assertEquals(listOf("power", "current"), viewState.selectedAttributeIds) + } + } + + @Test + fun `Given no entity selected then action button is disabled`() { + composeTestRule.apply { + setContent { + HATheme { + EntityWidgetConfigureView( + servers = emptyList(), + viewState = EntityWidgetConfigureViewState(selectedEntityId = null), + onServerSelected = {}, + entities = listOf(ENTITY), + onEntitySelected = {}, + availableAttributes = emptyList(), + onAppendAttributesChanged = {}, + onAttributeAdded = {}, + onAttributeRemoved = {}, + onCustomAttributeChanged = {}, + onCustomAttributesAdded = {}, + onLabelChanged = {}, + onTextSizeChanged = {}, + onStateSeparatorChanged = {}, + onAttributeSeparatorChanged = {}, + isToggleable = false, + onTapActionSelected = {}, + onBackgroundTypeSelected = {}, + dynamicColorAvailable = false, + onTextColorSelected = {}, + onErrorShown = {}, + onActionClick = {}, + ) + } + } + + onNodeWithTag(ENTITY_WIDGET_ACTION_BUTTON_TAG).performScrollTo().assertIsNotEnabled() + } + } + + private companion object { + val ENTITY = Entity( + entityId = "light.office", + state = "on", + attributes = mapOf("friendly_name" to "Office light"), + lastChanged = LocalDateTime.MIN, + lastUpdated = LocalDateTime.MIN, + ) + } +} diff --git a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt index 3d063ef5523..04d6b82eb36 100644 --- a/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt +++ b/app/src/test/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureViewModelTest.kt @@ -100,6 +100,7 @@ class EntityWidgetConfigureViewModelTest { assertEquals(listOf(entity), expectMostRecentItem()) viewModel.onEntitySelected(entity.entityId) + viewModel.onSelectedEntityLoaded(entity) viewModel.onAppendAttributesChanged(true) viewModel.onAttributeAdded("brightness") viewModel.onAttributeSeparatorChanged(", ") @@ -148,9 +149,11 @@ class EntityWidgetConfigureViewModelTest { assertEquals(listOf(entity, secondEntity), expectMostRecentItem()) viewModel.onEntitySelected(entity.entityId) + viewModel.onSelectedEntityLoaded(entity) assertEquals("Office light", viewModel.label) viewModel.onEntitySelected(secondEntity.entityId) + viewModel.onSelectedEntityLoaded(secondEntity) assertEquals("Fan", viewModel.label) cancelAndIgnoreRemainingEvents() @@ -175,6 +178,28 @@ class EntityWidgetConfigureViewModelTest { assertFalse(viewModel.isValidSelection()) } + @Test + fun `Given custom attributes when attributes are added then input is parsed and cleared`() { + val viewModel = createViewModel(entity.entityId) + viewModel.onAttributeAdded("brightness") + viewModel.onCustomAttributeChanged("friendly_name, unit_of_measurement, brightness") + + viewModel.onCustomAttributesAdded() + + assertEquals(listOf("brightness", "friendly_name", "unit_of_measurement"), viewModel.selectedAttributeIds) + assertEquals("", viewModel.viewState.customAttribute) + } + + @Test + fun `Given an invalid text size when view state is read then action is disabled`() { + val viewModel = createViewModel(entity.entityId) + + viewModel.onTextSizeChanged("") + + assertFalse(viewModel.viewState.hasValidTextSize) + assertFalse(viewModel.viewState.isActionEnabled) + } + private fun createViewModel(preselectedEntityId: String? = null) = EntityWidgetConfigureViewModel(dao, serverManager, preselectedEntityId) private fun createWidgetEntity() = StaticWidgetEntity( From be29796c6a3c1bb95bffc2b7470a781b35a25de8 Mon Sep 17 00:00:00 2001 From: Himanshu Gupta Date: Mon, 22 Jun 2026 21:20:19 +0300 Subject: [PATCH 8/8] Fix entity widget compose lint --- .../android/widgets/entity/EntityWidgetConfigureScreen.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt index b9e16d90af3..94cd8a91056 100644 --- a/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt +++ b/app/src/main/kotlin/io/homeassistant/companion/android/widgets/entity/EntityWidgetConfigureScreen.kt @@ -139,9 +139,6 @@ internal fun EntityWidgetConfigureView( onServerSelected: (Int) -> Unit, entities: List, onEntitySelected: (String?) -> Unit, - entityRegistry: List? = null, - deviceRegistry: List? = null, - areaRegistry: List? = null, availableAttributes: List, onAppendAttributesChanged: (Boolean) -> Unit, onAttributeAdded: (String) -> Unit, @@ -158,6 +155,9 @@ internal fun EntityWidgetConfigureView( dynamicColorAvailable: Boolean, onTextColorSelected: (EntityWidgetTextColor) -> Unit, onErrorShown: () -> Unit, + entityRegistry: List? = null, + deviceRegistry: List? = null, + areaRegistry: List? = null, onActionClick: () -> Unit, ) { val snackbarHostState = remember { SnackbarHostState() }