better toggle

This commit is contained in:
royjr
2026-07-14 15:39:14 -04:00
parent 4134e1a056
commit 1ec4b02c15
4 changed files with 30 additions and 6 deletions
+2 -1
View File
@@ -32,7 +32,8 @@ class MiciMainLayout(Scroller):
self._home_layout = MiciHomeLayout()
self._alerts_layout = MiciOffroadAlerts()
self._settings_layout = SettingsLayout()
self._car_onroad_layout = AugmentedRoadView(bookmark_callback=self._on_bookmark_clicked)
self._car_onroad_layout = AugmentedRoadView(bookmark_callback=self._on_bookmark_clicked,
radar_tracks_settings_callback=self._settings_layout.open_toggles)
self._body_onroad_layout = BodyLayout()
# Initialize widget rects
@@ -19,9 +19,9 @@ class SettingsLayout(NavScroller):
super().__init__()
self._params = Params()
toggles_panel = TogglesLayoutMici()
self._toggles_panel = TogglesLayoutMici()
toggles_btn = SettingsBigButton("toggles", "", gui_app.texture("icons_mici/settings.png", 64, 64))
toggles_btn.set_click_callback(lambda: gui_app.push_widget(toggles_panel))
toggles_btn.set_click_callback(lambda: gui_app.push_widget(self._toggles_panel))
network_panel = NetworkLayoutMici()
network_btn = SettingsBigButton("network", "", gui_app.texture("icons_mici/settings/network/wifi_strength_full.png", 76, 56))
@@ -50,3 +50,8 @@ class SettingsLayout(NavScroller):
])
self._font_medium = gui_app.font(FontWeight.MEDIUM)
def open_toggles(self) -> None:
if not gui_app.widget_in_stack(self):
gui_app.push_widget(self)
gui_app.push_widget(self._toggles_panel)
@@ -134,9 +134,13 @@ class BookmarkIcon(Widget):
class AugmentedRoadView(CameraView):
def __init__(self, bookmark_callback=None, stream_type: VisionStreamType = VisionStreamType.VISION_STREAM_ROAD):
def __init__(self, bookmark_callback=None, stream_type: VisionStreamType = VisionStreamType.VISION_STREAM_ROAD,
radar_tracks_settings_callback=None):
super().__init__("camerad", stream_type)
self._bookmark_callback = bookmark_callback
self._radar_tracks_settings_callback = radar_tracks_settings_callback
self._radar_tracks_settings_prompt = False
self._radar_status_rect = rl.Rectangle()
self._set_placeholder_color(rl.BLACK)
self.device_camera: DeviceCameraConfig | None = None
@@ -181,10 +185,16 @@ class AugmentedRoadView(CameraView):
super()._update_state()
if ui_state.sm.updated["liveTracks"]:
status = format_radar_tracks_onroad_columns(ui_state.sm["liveTracks"]) if ui_state.sm.valid["liveTracks"] else ("", "none")
live_tracks = ui_state.sm["liveTracks"]
self._radar_tracks_settings_prompt = bool(live_tracks.radarTracksAvailable and ui_state.hyundai_radar_mode != 2)
if self._radar_tracks_settings_prompt:
status = ("", "radar tracks detected")
else:
status = format_radar_tracks_onroad_columns(live_tracks) if ui_state.sm.valid["liveTracks"] else ("", "none")
self._radar_ranges_label.set_text(status[0])
self._radar_counts_label.set_text(status[1])
elif not ui_state.sm.alive["liveTracks"]:
self._radar_tracks_settings_prompt = False
self._radar_ranges_label.set_text("")
self._radar_counts_label.set_text("none")
@@ -197,6 +207,11 @@ class AugmentedRoadView(CameraView):
self._offroad_label.set_text("start the car to\nuse sunnypilot")
def _handle_mouse_release(self, mouse_pos: MousePos):
if (self._radar_tracks_settings_prompt and self._radar_tracks_settings_callback is not None and
rl.check_collision_point_rec(mouse_pos, self._radar_status_rect)):
self._radar_tracks_settings_callback()
return
# Don't trigger click callback if bookmark was triggered
if not self._bookmark_icon.interacting():
super()._handle_mouse_release(mouse_pos)
@@ -254,12 +269,13 @@ class AugmentedRoadView(CameraView):
self._radar_ranges_label.get_content_height(max(radar_range_width, 1)) + 10,
self._radar_counts_label.get_content_height(radar_count_width) + 10,
)
radar_status_rect = rl.Rectangle(
self._radar_status_rect = rl.Rectangle(
self._content_rect.x + self._content_rect.width - radar_status_width - 12,
self._content_rect.y + 8,
radar_status_width,
radar_status_height,
)
radar_status_rect = self._radar_status_rect
rl.draw_rectangle_rounded(radar_status_rect, 0.5, 8, rl.Color(0, 0, 0, 170))
self._radar_ranges_label.render(rl.Rectangle(
radar_status_rect.x + radar_horizontal_padding,
+2
View File
@@ -43,6 +43,7 @@ class UIStateSP:
self.custom_interactive_timeout: int = 0
self.developer_ui = None
self.hide_v_ego_ui: bool = False
self.hyundai_radar_mode: int = self.params.get("HyundaiRadar", return_default=True)
self.onroad_brightness: int = 0
self.onroad_brightness_timer: int = 0
self.onroad_brightness_timer_param: int = 0
@@ -151,6 +152,7 @@ class UIStateSP:
self.custom_interactive_timeout = self.params.get("InteractivityTimeout", return_default=True)
self.developer_ui = self.params.get("DevUIInfo")
self.hide_v_ego_ui = self.params.get_bool("HideVEgoUI")
self.hyundai_radar_mode = self.params.get("HyundaiRadar", return_default=True)
self.onroad_brightness = int(float(self.params.get("OnroadScreenOffBrightness", return_default=True)))
self.onroad_brightness_timer_param = self.params.get("OnroadScreenOffTimer", return_default=True)
self.rainbow_path = self.params.get_bool("RainbowMode")