From e43c62af1ec4e8a8adc4a0a1a1837e58e3e3b143 Mon Sep 17 00:00:00 2001 From: Joost Lekkerkerker Date: Fri, 1 Mar 2024 13:40:37 +0100 Subject: [PATCH] Add icon translations to Litterrobot (#111899) --- .../components/litterrobot/binary_sensor.py | 2 - .../components/litterrobot/button.py | 2 - .../components/litterrobot/icons.json | 45 +++++++++++++++++++ .../components/litterrobot/select.py | 2 - .../components/litterrobot/switch.py | 9 ---- tests/components/litterrobot/test_button.py | 3 +- 6 files changed, 46 insertions(+), 17 deletions(-) create mode 100644 homeassistant/components/litterrobot/icons.json diff --git a/homeassistant/components/litterrobot/binary_sensor.py b/homeassistant/components/litterrobot/binary_sensor.py index 6a588c36d6c..22e8bda8dfa 100644 --- a/homeassistant/components/litterrobot/binary_sensor.py +++ b/homeassistant/components/litterrobot/binary_sensor.py @@ -52,7 +52,6 @@ BINARY_SENSOR_MAP: dict[type[Robot], tuple[RobotBinarySensorEntityDescription, . RobotBinarySensorEntityDescription[LitterRobot]( key="sleeping", translation_key="sleeping", - icon="mdi:sleep", entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, is_on_fn=lambda robot: robot.is_sleeping, @@ -60,7 +59,6 @@ BINARY_SENSOR_MAP: dict[type[Robot], tuple[RobotBinarySensorEntityDescription, . RobotBinarySensorEntityDescription[LitterRobot]( key="sleep_mode", translation_key="sleep_mode", - icon="mdi:sleep", entity_category=EntityCategory.DIAGNOSTIC, entity_registry_enabled_default=False, is_on_fn=lambda robot: robot.sleep_mode_enabled, diff --git a/homeassistant/components/litterrobot/button.py b/homeassistant/components/litterrobot/button.py index de93ead5190..79a866333d8 100644 --- a/homeassistant/components/litterrobot/button.py +++ b/homeassistant/components/litterrobot/button.py @@ -61,14 +61,12 @@ class RobotButtonEntityDescription(ButtonEntityDescription, RequiredKeysMixin[_R LITTER_ROBOT_BUTTON = RobotButtonEntityDescription[LitterRobot3]( key="reset_waste_drawer", translation_key="reset_waste_drawer", - icon="mdi:delete-variant", entity_category=EntityCategory.CONFIG, press_fn=lambda robot: robot.reset_waste_drawer(), ) FEEDER_ROBOT_BUTTON = RobotButtonEntityDescription[FeederRobot]( key="give_snack", translation_key="give_snack", - icon="mdi:candy-outline", press_fn=lambda robot: robot.give_snack(), ) diff --git a/homeassistant/components/litterrobot/icons.json b/homeassistant/components/litterrobot/icons.json new file mode 100644 index 00000000000..333f309e9e8 --- /dev/null +++ b/homeassistant/components/litterrobot/icons.json @@ -0,0 +1,45 @@ +{ + "entity": { + "binary_sensor": { + "sleeping": { + "default": "mdi:sleep" + }, + "sleep_mode": { + "default": "mdi:sleep" + } + }, + "button": { + "reset_waste_drawer": { + "default": "mdi:delete-variant" + }, + "give_snack": { + "default": "mdi:candy-outline" + } + }, + "select": { + "cycle_delay": { + "default": "mdi:timer-outline" + }, + "meal_insert_size": { + "default": "mdi:scale" + } + }, + "switch": { + "night_light_mode": { + "default": "mdi:lightbulb-off", + "state": { + "on": "mdi:lightbulb-on" + } + }, + "panel_lockout": { + "default": "mdi:lock-open", + "state": { + "on": "mdi:lock" + } + } + } + }, + "services": { + "set_sleep_mode": "mdi:sleep" + } +} diff --git a/homeassistant/components/litterrobot/select.py b/homeassistant/components/litterrobot/select.py index 726cfaebaeb..8b5445269bd 100644 --- a/homeassistant/components/litterrobot/select.py +++ b/homeassistant/components/litterrobot/select.py @@ -51,7 +51,6 @@ ROBOT_SELECT_MAP: dict[type[Robot], RobotSelectEntityDescription] = { LitterRobot: RobotSelectEntityDescription[LitterRobot, int]( # type: ignore[type-abstract] # only used for isinstance check key="cycle_delay", translation_key="cycle_delay", - icon="mdi:timer-outline", unit_of_measurement=UnitOfTime.MINUTES, current_fn=lambda robot: robot.clean_cycle_wait_time_minutes, options_fn=lambda robot: robot.VALID_WAIT_TIMES, @@ -72,7 +71,6 @@ ROBOT_SELECT_MAP: dict[type[Robot], RobotSelectEntityDescription] = { FeederRobot: RobotSelectEntityDescription[FeederRobot, float]( key="meal_insert_size", translation_key="meal_insert_size", - icon="mdi:scale", unit_of_measurement="cups", current_fn=lambda robot: robot.meal_insert_size, options_fn=lambda robot: robot.VALID_MEAL_INSERT_SIZES, diff --git a/homeassistant/components/litterrobot/switch.py b/homeassistant/components/litterrobot/switch.py index 84e6fa2be67..aa4a18c1840 100644 --- a/homeassistant/components/litterrobot/switch.py +++ b/homeassistant/components/litterrobot/switch.py @@ -22,7 +22,6 @@ from .hub import LitterRobotHub class RequiredKeysMixin(Generic[_RobotT]): """A class that describes robot switch entity required keys.""" - icons: tuple[str, str] set_fn: Callable[[_RobotT, bool], Coroutine[Any, Any, bool]] @@ -37,13 +36,11 @@ ROBOT_SWITCHES = [ RobotSwitchEntityDescription[LitterRobot | FeederRobot]( key="night_light_mode_enabled", translation_key="night_light_mode", - icons=("mdi:lightbulb-on", "mdi:lightbulb-off"), set_fn=lambda robot, value: robot.set_night_light(value), ), RobotSwitchEntityDescription[LitterRobot | FeederRobot]( key="panel_lock_enabled", translation_key="panel_lockout", - icons=("mdi:lock", "mdi:lock-open"), set_fn=lambda robot, value: robot.set_panel_lockout(value), ), ] @@ -59,12 +56,6 @@ class RobotSwitchEntity(LitterRobotEntity[_RobotT], SwitchEntity): """Return true if switch is on.""" return bool(getattr(self.robot, self.entity_description.key)) - @property - def icon(self) -> str: - """Return the icon.""" - icon_on, icon_off = self.entity_description.icons - return icon_on if self.is_on else icon_off - async def async_turn_on(self, **kwargs: Any) -> None: """Turn the switch on.""" await self.entity_description.set_fn(self.robot, True) diff --git a/tests/components/litterrobot/test_button.py b/tests/components/litterrobot/test_button.py index 9a4145dd224..17efd21c76e 100644 --- a/tests/components/litterrobot/test_button.py +++ b/tests/components/litterrobot/test_button.py @@ -4,7 +4,7 @@ from unittest.mock import MagicMock from freezegun import freeze_time from homeassistant.components.button import DOMAIN as BUTTON_DOMAIN, SERVICE_PRESS -from homeassistant.const import ATTR_ENTITY_ID, ATTR_ICON, STATE_UNKNOWN, EntityCategory +from homeassistant.const import ATTR_ENTITY_ID, STATE_UNKNOWN, EntityCategory from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er @@ -21,7 +21,6 @@ async def test_button( state = hass.states.get(BUTTON_ENTITY) assert state - assert state.attributes.get(ATTR_ICON) == "mdi:delete-variant" assert state.state == STATE_UNKNOWN entry = entity_registry.async_get(BUTTON_ENTITY)