From ba76832979475f453243f0c3c81cc8f7b77c69c9 Mon Sep 17 00:00:00 2001 From: firestarsdog <229254897+firestarsdog@users.noreply.github.com> Date: Tue, 16 Jun 2026 02:54:55 -0400 Subject: [PATCH] BigUI WIP: Pagination/Page Turning UX --- .../layouts/settings/starpilot/aethergrid.py | 7 +++++++ .../layouts/settings/starpilot/appearance.py | 21 ++----------------- .../settings/starpilot/system_settings.py | 14 ++----------- .../ui/layouts/settings/starpilot/vehicle.py | 4 +--- 4 files changed, 12 insertions(+), 34 deletions(-) diff --git a/selfdrive/ui/layouts/settings/starpilot/aethergrid.py b/selfdrive/ui/layouts/settings/starpilot/aethergrid.py index 7cc1e4ac8..2f90d748e 100644 --- a/selfdrive/ui/layouts/settings/starpilot/aethergrid.py +++ b/selfdrive/ui/layouts/settings/starpilot/aethergrid.py @@ -613,6 +613,13 @@ class PanelManagerView(AetherInteractiveMixin, Widget): def _has_pagination(self) -> bool: return self._page_count > 1 + def register_page_grid(self, grid: TileGrid) -> None: + self._page_grid = grid + if grid not in self._children: + self._child(grid) + grid.set_touch_valid_callback(lambda: self._scroll_panel.is_touch_valid() and not getattr(self, '_page_drag_active', False)) + + def _set_toggle_pages(self, pages: list[list]) -> None: self._toggle_pages = pages self._page_count = max(1, len(pages)) diff --git a/selfdrive/ui/layouts/settings/starpilot/appearance.py b/selfdrive/ui/layouts/settings/starpilot/appearance.py index fcab28dc7..d7d5aa7d5 100644 --- a/selfdrive/ui/layouts/settings/starpilot/appearance.py +++ b/selfdrive/ui/layouts/settings/starpilot/appearance.py @@ -205,7 +205,7 @@ class AppearanceManagerView(AetherSettingsView): ) ) - self._page_grid = self._toggle_grid + self.register_page_grid(self._toggle_grid) self._set_toggle_pages([toggles[i:i+6] for i in range(0, len(toggles), 6)]) def _init_adjustors(self): @@ -242,24 +242,7 @@ class AppearanceManagerView(AetherSettingsView): color=self._panel_style.accent, ) self._adjustor.set_enabled(ol) - - def _handle_mouse_press(self, mouse_pos): - super()._handle_mouse_press(mouse_pos) - if self._active_tab_key == "widgets": - self._adjustor._handle_mouse_press(mouse_pos) - self._toggle_grid._handle_mouse_press(mouse_pos) - - def _handle_mouse_release(self, mouse_pos): - super()._handle_mouse_release(mouse_pos) - if self._active_tab_key == "widgets": - self._adjustor._handle_mouse_release(mouse_pos) - self._toggle_grid._handle_mouse_release(mouse_pos) - - def _handle_mouse_event(self, mouse_event): - super()._handle_mouse_event(mouse_event) - if self._active_tab_key == "widgets": - self._adjustor._handle_mouse_event(mouse_event) - self._toggle_grid._handle_mouse_event(mouse_event) + self._child(self._adjustor) def _measure_content_height(self, width: float) -> float: if self._active_tab_key == "widgets": diff --git a/selfdrive/ui/layouts/settings/starpilot/system_settings.py b/selfdrive/ui/layouts/settings/starpilot/system_settings.py index a1298048b..5f96bfcdc 100644 --- a/selfdrive/ui/layouts/settings/starpilot/system_settings.py +++ b/selfdrive/ui/layouts/settings/starpilot/system_settings.py @@ -298,19 +298,9 @@ class SystemSettingsManagerView(PanelManagerView): self._connectivity_tile_grid = TileGrid(columns=2, padding=12) for toggle_def in self._toggle_defs: - tile = ToggleTile( - title=toggle_def["title"], - get_state=toggle_def["get"], - set_state=toggle_def["set"], - bg_color=PANEL_STYLE.accent, - desc=toggle_def["subtitle"], - is_enabled=toggle_def.get("is_enabled"), - disabled_label=toggle_def.get("disabled_label", ""), - ) + tile = self._make_toggle_tile(toggle_def) self._connectivity_tile_grid.add_tile(tile) - self._connectivity_tile_grid.set_touch_valid_callback(lambda: self._scroll_panel.is_touch_valid()) - self._child(self._connectivity_tile_grid) - self._page_grid = self._connectivity_tile_grid + self.register_page_grid(self._connectivity_tile_grid) self._set_toggle_pages([self._toggle_defs[i:i+4] for i in range(0, len(self._toggle_defs), 4)]) self._drive_mode_control = self._child( diff --git a/selfdrive/ui/layouts/settings/starpilot/vehicle.py b/selfdrive/ui/layouts/settings/starpilot/vehicle.py index 21aecc524..f5ca83c5f 100644 --- a/selfdrive/ui/layouts/settings/starpilot/vehicle.py +++ b/selfdrive/ui/layouts/settings/starpilot/vehicle.py @@ -103,8 +103,7 @@ class VehicleSettingsManagerView(PanelManagerView): self._shell_rect = rl.Rectangle(0, 0, 0, 0) self._toggle_grid = TileGrid(columns=2, padding=12, min_tile_width=100) - self._toggle_grid.set_touch_valid_callback(lambda: self._scroll_panel.is_touch_valid()) - self._child(self._toggle_grid) + self.register_page_grid(self._toggle_grid) self._last_make = "" self._last_model = "" @@ -212,7 +211,6 @@ class VehicleSettingsManagerView(PanelManagerView): return toggles def _rebuild_toggle_grid(self): - self._page_grid = self._toggle_grid defs = self._build_driving_toggles() self._set_toggle_pages([defs[i:i+6] for i in range(0, len(defs), 6)])