mapd pannel now onroad info

This commit is contained in:
rav4kumar
2026-03-22 12:32:35 -07:00
parent 21ab8c9daf
commit 7e9de97596
3 changed files with 50 additions and 9 deletions
+13 -5
View File
@@ -8,32 +8,36 @@ import pyray as rl
from openpilot.system.ui.widgets.scroller import Scroller
from openpilot.system.ui.lib.application import gui_app
from openpilot.selfdrive.ui.mici.onroad.augmented_road_view import AugmentedRoadView
from openpilot.selfdrive.ui.sunnypilot.mici.layouts.mapd_panel import MapdInfoPanel
if gui_app.sunnypilot_ui():
from openpilot.selfdrive.ui.sunnypilot.mici.onroad.augmented_road_view import AugmentedRoadViewSP as AugmentedRoadView
from openpilot.selfdrive.ui.sunnypilot.mici.layouts.onroad_info_panel import OnroadInfoPanel
class OnroadViewContainerSP(Scroller):
def __init__(self, bookmark_callback=None):
super().__init__(horizontal=False, snap_items=True, spacing=0, pad=0, scroll_indicator=False, edge_shadows=False)
self.road_view = AugmentedRoadView(bookmark_callback=bookmark_callback)
self.mapd_panel = MapdInfoPanel(bookmark_callback=bookmark_callback)
self.onroad_info_panel = OnroadInfoPanel(bookmark_callback=bookmark_callback)
self._scroller.add_widgets([
self.road_view,
self.mapd_panel,
self.onroad_info_panel,
])
self._scroller.set_reset_scroll_at_show(False)
def set_rect(self, rect: rl.Rectangle):
super().set_rect(rect)
self.road_view.set_rect(rect)
self.mapd_panel.set_rect(rect)
self.onroad_info_panel.set_rect(rect)
return self
def is_swiping_left(self):
return self.road_view.is_swiping_left() or abs(self._scroller.scroll_panel.get_offset()) > 5
return self.road_view.is_swiping_left() or self.onroad_info_panel.is_swiping_left()
def set_click_callback(self, callback):
self.road_view.set_click_callback(callback)
self.onroad_info_panel.set_click_callback(callback)
def _render(self, rect: rl.Rectangle):
if abs(self.rect.x) > gui_app.width / 2:
@@ -41,4 +45,8 @@ class OnroadViewContainerSP(Scroller):
self._scroller.set_scrolling_enabled(lambda: abs(self.rect.x) < 5)
vertical_offset = self._scroller.scroll_panel.get_offset()
show_ball = abs(vertical_offset) < rect.height * 0.4
self.road_view.set_show_confidence_ball(show_ball)
super()._render(rect)
@@ -22,7 +22,7 @@ METER_TO_MILE = 0.000621371
@dataclass(frozen=True)
class MapdPanelColors:
class OnroadInfoPanelColors:
white: rl.Color = rl.WHITE
black: rl.Color = rl.BLACK
red: rl.Color = rl.Color(255, 0, 0, 255)
@@ -34,10 +34,10 @@ class MapdPanelColors:
card_bg: rl.Color = rl.Color(50, 50, 50, 200)
COLORS = MapdPanelColors()
COLORS = OnroadInfoPanelColors()
class MapdInfoPanel(Widget):
class OnroadInfoPanel(Widget):
def __init__(self, bookmark_callback=None):
super().__init__()
self.speed_limit: float = 0.0
@@ -67,6 +67,9 @@ class MapdInfoPanel(Widget):
self._bookmark_icon = BookmarkIcon(bookmark_callback)
def is_swiping_left(self) -> bool:
return self._bookmark_icon.is_swiping_left()
def _update_state(self) -> None:
sm = ui_state.sm
speed_conv = CV.MS_TO_KPH if ui_state.is_metric else CV.MS_TO_MPH
@@ -103,7 +106,7 @@ class MapdInfoPanel(Widget):
left_x = rect.x + margin
if self.cruise_enabled:
unit = tr("SET")
unit = tr("MAX")
display_speed = self.set_speed
else:
unit = tr("km/h") if ui_state.is_metric else tr("MPH")
@@ -0,0 +1,30 @@
"""
Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors.
This file is part of sunnypilot and is licensed under the MIT License.
See the LICENSE.md file in the root directory for more details.
"""
import pyray as rl
from openpilot.selfdrive.ui.mici.onroad.augmented_road_view import AugmentedRoadView
class AugmentedRoadViewSP(AugmentedRoadView):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self._show_confidence_ball: bool = True
self._real_confidence_ball = self._confidence_ball
self._confidence_ball = _ConfidenceBall()
def set_show_confidence_ball(self, show: bool) -> None:
self._show_confidence_ball = show
def _render(self, rect: rl.Rectangle) -> None:
super()._render(rect)
if self._show_confidence_ball:
self._real_confidence_ball.render(self.rect)
class _ConfidenceBall:
def render(self, *_):
pass