From 5a6e542123cb0f8e713371b57c7d9740828e1a4e Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Fri, 10 Oct 2025 03:54:05 -0700 Subject: [PATCH] way better --- selfdrive/ui/layouts/settings/device.py | 4 ++-- system/ui/widgets/list_view.py | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/selfdrive/ui/layouts/settings/device.py b/selfdrive/ui/layouts/settings/device.py index 9d5a6ca642..cb22db2c86 100644 --- a/selfdrive/ui/layouts/settings/device.py +++ b/selfdrive/ui/layouts/settings/device.py @@ -49,8 +49,8 @@ class DeviceLayout(Widget): self._pair_device_btn = button_item("Pair Device", "PAIR", DESCRIPTIONS['pair_device'], callback=self._pair_device) self._pair_device_btn.set_visible(lambda: not ui_state.prime_state.is_paired()) - self._reset_calib_btn = button_item("Reset Calibration", "RESET", DESCRIPTIONS['reset_calibration'], callback=self._reset_calibration_prompt, - description_opened_callback=self._update_calib_description) + self._reset_calib_btn = button_item("Reset Calibration", "RESET", DESCRIPTIONS['reset_calibration'], callback=self._reset_calibration_prompt) + self._reset_calib_btn.set_description_opened_callback(self._update_calib_description) items = [ text_item("Dongle ID", dongle_id), diff --git a/system/ui/widgets/list_view.py b/system/ui/widgets/list_view.py index 6e7b853037..7f5096aac3 100644 --- a/system/ui/widgets/list_view.py +++ b/system/ui/widgets/list_view.py @@ -260,15 +260,14 @@ class MultipleButtonAction(ItemAction): class ListItem(Widget): def __init__(self, title: str = "", icon: str | None = None, description: str | Callable[[], str] | None = None, - description_visible: bool = False, callback: Callable | None = None, description_opened_callback: Callable | None = None, - action_item: ItemAction | None = None): + description_visible: bool = False, callback: Callable | None = None, action_item: ItemAction | None = None): super().__init__() self.title = title self.set_icon(icon) self._description = description self.description_visible = description_visible self.callback = callback - self.description_opened_callback = description_opened_callback + self.description_opened_callback: Callable | None = None self.action_item = action_item self.set_rect(rl.Rectangle(0, 0, ITEM_BASE_WIDTH, ITEM_BASE_HEIGHT)) @@ -281,6 +280,9 @@ class ListItem(Widget): # Cached properties for performance self._prev_description: str | None = self.description + def set_description_opened_callback(self, callback: Callable) -> None: + self.description_opened_callback = callback + def set_touch_valid_callback(self, touch_callback: Callable[[], bool]) -> None: super().set_touch_valid_callback(touch_callback) if self.action_item: @@ -304,7 +306,7 @@ class ListItem(Widget): if self.description: self.description_visible = not self.description_visible # do callback first in case consumer changes description - if self.description_visible and self.description_opened_callback: + if self.description_visible and self.description_opened_callback is not None: self.description_opened_callback() content_width = int(self._rect.width - ITEM_PADDING * 2) @@ -416,11 +418,9 @@ def toggle_item(title: str, description: str | Callable[[], str] | None = None, def button_item(title: str, button_text: str | Callable[[], str], description: str | Callable[[], str] | None = None, - callback: Callable | None = None, description_opened_callback: Callable | None = None, - enabled: bool | Callable[[], bool] = True) -> ListItem: + callback: Callable | None = None, enabled: bool | Callable[[], bool] = True) -> ListItem: action = ButtonAction(text=button_text, enabled=enabled) - return ListItem(title=title, description=description, action_item=action, callback=callback, - description_opened_callback=description_opened_callback) + return ListItem(title=title, description=description, action_item=action, callback=callback) def text_item(title: str, value: str | Callable[[], str], description: str | Callable[[], str] | None = None,