mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 08:14:00 +08:00
BigUI WIP: Pagination/Page Turning UX
This commit is contained in:
@@ -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)])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user