pull/36300/head
Shane Smiskol 5 days ago
parent f076fe893c
commit 5a6e542123
  1. 4
      selfdrive/ui/layouts/settings/device.py
  2. 16
      system/ui/widgets/list_view.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 = 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._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, 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.set_description_opened_callback(self._update_calib_description)
items = [ items = [
text_item("Dongle ID", dongle_id), text_item("Dongle ID", dongle_id),

@ -260,15 +260,14 @@ class MultipleButtonAction(ItemAction):
class ListItem(Widget): class ListItem(Widget):
def __init__(self, title: str = "", icon: str | None = None, description: str | Callable[[], str] | None = None, 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, description_visible: bool = False, callback: Callable | None = None, action_item: ItemAction | None = None):
action_item: ItemAction | None = None):
super().__init__() super().__init__()
self.title = title self.title = title
self.set_icon(icon) self.set_icon(icon)
self._description = description self._description = description
self.description_visible = description_visible self.description_visible = description_visible
self.callback = callback self.callback = callback
self.description_opened_callback = description_opened_callback self.description_opened_callback: Callable | None = None
self.action_item = action_item self.action_item = action_item
self.set_rect(rl.Rectangle(0, 0, ITEM_BASE_WIDTH, ITEM_BASE_HEIGHT)) self.set_rect(rl.Rectangle(0, 0, ITEM_BASE_WIDTH, ITEM_BASE_HEIGHT))
@ -281,6 +280,9 @@ class ListItem(Widget):
# Cached properties for performance # Cached properties for performance
self._prev_description: str | None = self.description 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: def set_touch_valid_callback(self, touch_callback: Callable[[], bool]) -> None:
super().set_touch_valid_callback(touch_callback) super().set_touch_valid_callback(touch_callback)
if self.action_item: if self.action_item:
@ -304,7 +306,7 @@ class ListItem(Widget):
if self.description: if self.description:
self.description_visible = not self.description_visible self.description_visible = not self.description_visible
# do callback first in case consumer changes description # 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() self.description_opened_callback()
content_width = int(self._rect.width - ITEM_PADDING * 2) 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, 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, callback: Callable | None = None, enabled: bool | Callable[[], bool] = True) -> ListItem:
enabled: bool | Callable[[], bool] = True) -> ListItem:
action = ButtonAction(text=button_text, enabled=enabled) action = ButtonAction(text=button_text, enabled=enabled)
return ListItem(title=title, description=description, action_item=action, callback=callback, return ListItem(title=title, description=description, action_item=action, callback=callback)
description_opened_callback=description_opened_callback)
def text_item(title: str, value: str | Callable[[], str], description: str | Callable[[], str] | None = None, def text_item(title: str, value: str | Callable[[], str], description: str | Callable[[], str] | None = None,

Loading…
Cancel
Save