From 3946e643f68fdb5784a2b42839162903a5f4a592 Mon Sep 17 00:00:00 2001 From: nayan Date: Sat, 15 Nov 2025 20:24:20 -0500 Subject: [PATCH] optimizations --- system/ui/sunnypilot/lib/styles.py | 31 +++++++++++--------- system/ui/sunnypilot/widgets/list_view.py | 5 +--- system/ui/sunnypilot/widgets/toggle.py | 35 ++++++++++------------- 3 files changed, 34 insertions(+), 37 deletions(-) diff --git a/system/ui/sunnypilot/lib/styles.py b/system/ui/sunnypilot/lib/styles.py index 851a52817d..28d50f48d7 100644 --- a/system/ui/sunnypilot/lib/styles.py +++ b/system/ui/sunnypilot/lib/styles.py @@ -2,19 +2,7 @@ import pyray as rl from dataclasses import dataclass @dataclass -class Default: - # Base Colors - BASE_BG_COLOR = rl.Color(57, 57, 57, 255) # Grey - ON_BG_COLOR = rl.Color(28, 101, 186, 255) # Blue - OFF_BG_COLOR = BASE_BG_COLOR - ON_HOVER_BG_COLOR = rl.Color(17, 78, 150, 255) # Dark Blue - OFF_HOVER_BG_COLOR = rl.Color(21, 21, 21, 255) # Dark gray - DISABLED_ON_BG_COLOR = rl.Color(37, 70, 107, 255) # Dull Blue - DISABLED_OFF_BG_COLOR = rl.Color(39, 39, 39, 255) # Grey - ITEM_TEXT_COLOR = rl.WHITE - ITEM_DISABLED_TEXT_COLOR = rl.Color(88, 88, 88, 255) - ITEM_DESC_TEXT_COLOR = rl.Color(128, 128, 128, 255) - +class Base: # Widget/Control Base Dimensions ITEM_BASE_HEIGHT = 170 ITEM_PADDING = 20 @@ -27,9 +15,26 @@ class Default: TOGGLE_WIDTH = int(TOGGLE_HEIGHT * 1.75) TOGGLE_BG_HEIGHT = TOGGLE_HEIGHT - 20 +@dataclass +class SP_Default(Base): + # Base Colors + BASE_BG_COLOR = rl.Color(57, 57, 57, 255) # Grey + ON_BG_COLOR = rl.Color(28, 101, 186, 255) # Blue + OFF_BG_COLOR = BASE_BG_COLOR + ON_HOVER_BG_COLOR = rl.Color(17, 78, 150, 255) # Dark Blue + OFF_HOVER_BG_COLOR = rl.Color(21, 21, 21, 255) # Dark gray + DISABLED_ON_BG_COLOR = rl.Color(37, 70, 107, 255) # Dull Blue + DISABLED_OFF_BG_COLOR = rl.Color(39, 39, 39, 255) # Grey + ITEM_TEXT_COLOR = rl.WHITE + ITEM_DISABLED_TEXT_COLOR = rl.Color(88, 88, 88, 255) + ITEM_DESC_TEXT_COLOR = rl.Color(128, 128, 128, 255) + + # Toggle Control TOGGLE_ON_COLOR = ON_BG_COLOR TOGGLE_OFF_COLOR = OFF_BG_COLOR TOGGLE_KNOB_COLOR = rl.WHITE TOGGLE_DISABLED_ON_COLOR = DISABLED_ON_BG_COLOR TOGGLE_DISABLED_OFF_COLOR = DISABLED_OFF_BG_COLOR TOGGLE_DISABLED_KNOB_COLOR = rl.Color(88, 88, 88, 255) # Lighter Grey + +style = SP_Default diff --git a/system/ui/sunnypilot/widgets/list_view.py b/system/ui/sunnypilot/widgets/list_view.py index c7043db531..6020ab71cb 100644 --- a/system/ui/sunnypilot/widgets/list_view.py +++ b/system/ui/sunnypilot/widgets/list_view.py @@ -4,10 +4,7 @@ from collections.abc import Callable from openpilot.system.ui.lib.text_measure import measure_text_cached from openpilot.system.ui.sunnypilot.widgets.toggle import ToggleSP from openpilot.system.ui.widgets.list_view import ListItem, ToggleAction, ItemAction - - -import openpilot.system.ui.sunnypilot.lib.styles as styles -style = styles.Default +from openpilot.system.ui.sunnypilot.lib.styles import style class ToggleActionSP(ToggleAction): diff --git a/system/ui/sunnypilot/widgets/toggle.py b/system/ui/sunnypilot/widgets/toggle.py index a62e51d758..7d3847d3f0 100644 --- a/system/ui/sunnypilot/widgets/toggle.py +++ b/system/ui/sunnypilot/widgets/toggle.py @@ -2,9 +2,11 @@ import pyray as rl from openpilot.common.params import Params from openpilot.system.ui.lib.application import MousePos from openpilot.system.ui.widgets.toggle import Toggle -import openpilot.system.ui.sunnypilot.lib.styles as styles +from openpilot.system.ui.sunnypilot.lib.styles import style -style = styles.Default +KNOB_PADDING = 5 +KNOB_RADIUS = style.TOGGLE_BG_HEIGHT / 2 - KNOB_PADDING +SYMBOL_SIZE = KNOB_RADIUS / 2 class ToggleSP(Toggle): def __init__(self, initial_state=False, param: str | None = None): @@ -44,30 +46,24 @@ class ToggleSP(Toggle): # Draw actual background rl.draw_rectangle_rounded(bg_rect, 1.0, 10, bg_color) - # Draw knob to sit inside the background - knob_padding = 5 - knob_radius = style.TOGGLE_BG_HEIGHT / 2 - knob_padding + left_edge = bg_rect.x + KNOB_PADDING + right_edge = bg_rect.x + bg_rect.width - KNOB_PADDING - left_edge = bg_rect.x + knob_padding - right_edge = bg_rect.x + bg_rect.width - knob_padding - - knob_travel_distance = right_edge - left_edge - 2 * knob_radius - min_knob_x = left_edge + knob_radius + knob_travel_distance = right_edge - left_edge - 2 * KNOB_RADIUS + min_knob_x = left_edge + KNOB_RADIUS knob_x = min_knob_x + knob_travel_distance * self._progress knob_y = self._rect.y + style.TOGGLE_BG_HEIGHT / 2 - rl.draw_circle(int(knob_x), int(knob_y), knob_radius, knob_color) - - symbol_size = knob_radius / 2 + rl.draw_circle(int(knob_x), int(knob_y), KNOB_RADIUS, knob_color) if self._state and (self._enabled or self._progress > 0.5): # Draw checkmark when toggle is ON - start_x = knob_x - symbol_size * 0.8 + start_x = knob_x - SYMBOL_SIZE * 0.8 start_y = knob_y - mid_x = knob_x - symbol_size * 0.1 - mid_y = knob_y + symbol_size * 0.6 - end_x = knob_x + symbol_size * 0.8 - end_y = knob_y - symbol_size * 0.5 + mid_x = knob_x - SYMBOL_SIZE * 0.1 + mid_y = knob_y + SYMBOL_SIZE * 0.6 + end_x = knob_x + SYMBOL_SIZE * 0.8 + end_y = knob_y - SYMBOL_SIZE * 0.5 rl.draw_line_ex( rl.Vector2(int(start_x), int(start_y)), @@ -83,8 +79,7 @@ class ToggleSP(Toggle): ) else: # Draw X when toggle is OFF - x_size_factor = 0.65 - x_offset = symbol_size * x_size_factor + x_offset = SYMBOL_SIZE * 0.65 rl.draw_line_ex( rl.Vector2(int(knob_x - x_offset), int(knob_y - x_offset)),