1 """Button support for Bravia TV."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Coroutine
6 from dataclasses
import dataclass
11 ButtonEntityDescription,
17 from .
import BraviaTVConfigEntry
18 from .coordinator
import BraviaTVCoordinator
19 from .entity
import BraviaTVEntity
22 @dataclass(frozen=True, kw_only=True)
24 """Bravia TV Button description."""
26 press_action: Callable[[BraviaTVCoordinator], Coroutine]
29 BUTTONS: tuple[BraviaTVButtonDescription, ...] = (
32 device_class=ButtonDeviceClass.RESTART,
33 entity_category=EntityCategory.CONFIG,
34 press_action=
lambda coordinator: coordinator.async_reboot_device(),
38 translation_key=
"terminate_apps",
39 entity_category=EntityCategory.CONFIG,
40 press_action=
lambda coordinator: coordinator.async_terminate_apps(),
47 config_entry: BraviaTVConfigEntry,
48 async_add_entities: AddEntitiesCallback,
50 """Set up the Bravia TV Button entities."""
52 coordinator = config_entry.runtime_data
53 unique_id = config_entry.unique_id
54 assert unique_id
is not None
57 BraviaTVButton(coordinator, unique_id, config_entry.title, description)
58 for description
in BUTTONS
63 """Representation of a Bravia TV Button."""
65 entity_description: BraviaTVButtonDescription
69 coordinator: BraviaTVCoordinator,
72 description: BraviaTVButtonDescription,
74 """Initialize the button."""
75 super().
__init__(coordinator, unique_id, model)
80 """Trigger the button action."""