BigUI WIP: Pagination/Page Turning UX

This commit is contained in:
firestarsdog
2026-06-16 02:54:55 -04:00
parent 49126f29ae
commit ba76832979
4 changed files with 12 additions and 34 deletions
@@ -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))
@@ -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":
@@ -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(
@@ -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)])