From 7e9de97596a19b829b82a25a9150ca439add545e Mon Sep 17 00:00:00 2001 From: rav4kumar Date: Sun, 22 Mar 2026 12:32:35 -0700 Subject: [PATCH] mapd pannel now onroad info --- .../ui/sunnypilot/mici/layouts/onroad.py | 18 +++++++---- .../{mapd_panel.py => onroad_info_panel.py} | 11 ++++--- .../mici/onroad/augmented_road_view.py | 30 +++++++++++++++++++ 3 files changed, 50 insertions(+), 9 deletions(-) rename selfdrive/ui/sunnypilot/mici/layouts/{mapd_panel.py => onroad_info_panel.py} (98%) create mode 100644 selfdrive/ui/sunnypilot/mici/onroad/augmented_road_view.py diff --git a/selfdrive/ui/sunnypilot/mici/layouts/onroad.py b/selfdrive/ui/sunnypilot/mici/layouts/onroad.py index 9db88c0018..5f48465497 100644 --- a/selfdrive/ui/sunnypilot/mici/layouts/onroad.py +++ b/selfdrive/ui/sunnypilot/mici/layouts/onroad.py @@ -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) diff --git a/selfdrive/ui/sunnypilot/mici/layouts/mapd_panel.py b/selfdrive/ui/sunnypilot/mici/layouts/onroad_info_panel.py similarity index 98% rename from selfdrive/ui/sunnypilot/mici/layouts/mapd_panel.py rename to selfdrive/ui/sunnypilot/mici/layouts/onroad_info_panel.py index 1cf4682f8a..f755c6f703 100644 --- a/selfdrive/ui/sunnypilot/mici/layouts/mapd_panel.py +++ b/selfdrive/ui/sunnypilot/mici/layouts/onroad_info_panel.py @@ -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") diff --git a/selfdrive/ui/sunnypilot/mici/onroad/augmented_road_view.py b/selfdrive/ui/sunnypilot/mici/onroad/augmented_road_view.py new file mode 100644 index 0000000000..21b9124534 --- /dev/null +++ b/selfdrive/ui/sunnypilot/mici/onroad/augmented_road_view.py @@ -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