New apps Added

This commit is contained in:
2026-07-08 10:43:39 -04:00
parent 3b1f4bbd75
commit fefc2c8b5c
1114 changed files with 406637 additions and 154 deletions
+63
View File
@@ -0,0 +1,63 @@
"""Select platform — expose key choice TaskMate settings as entities (FEAT-9)."""
from __future__ import annotations
from homeassistant.components.select import SelectEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
from .coordinator import TaskMateCoordinator
# (setting_key, translation_key, options, default, icon)
_SELECTS = [
("streak_reset_mode", "streak_reset_mode", ["reset", "pause"], "reset", "mdi:restart"),
("card_design", "card_design", ["classic", "playroom", "console", "cleanpro"], "classic", "mdi:palette"),
]
async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None:
"""Set up the TaskMate setting-select entities."""
coordinator: TaskMateCoordinator = hass.data[DOMAIN][entry.entry_id]
async_add_entities(TaskMateSettingSelect(coordinator, entry, *cfg) for cfg in _SELECTS)
class TaskMateSettingSelect(CoordinatorEntity, SelectEntity):
"""A single choice TaskMate setting surfaced as a select entity."""
_attr_has_entity_name = True
def __init__(self, coordinator, entry, key, tkey, options, default, icon) -> None:
super().__init__(coordinator)
self._entry = entry
self._key = key
self._default = default
self._attr_translation_key = tkey
self._attr_unique_id = f"{entry.entry_id}_setting_{key}"
self._attr_options = options
self._attr_icon = icon
@property
def device_info(self) -> DeviceInfo:
return DeviceInfo(
identifiers={(DOMAIN, self._entry.entry_id)},
name="TaskMate",
manufacturer="TaskMate",
model="Family Chore Manager",
)
@property
def current_option(self) -> str:
val = str(self.coordinator.storage.get_setting(self._key, self._default))
return val if val in self._attr_options else self._default
async def async_select_option(self, option: str) -> None:
if option not in self._attr_options:
return
self.coordinator.storage.set_setting(self._key, option)
await self.coordinator.storage.async_save()
await self.coordinator.async_refresh()