From 657ff0f8ecd6de0c3a1b81657aa56b5fab907e2c Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Wed, 22 Oct 2025 00:09:10 -0400 Subject: [PATCH] ui: refine ICBM description handling and availability logic (#1414) * ui: refine ICBM description handling and availability logic * car -> platform * retain --- .../qt/offroad/settings/longitudinal_panel.cc | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc index 2cc59ea333..9c51ff8c67 100644 --- a/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc +++ b/selfdrive/ui/sunnypilot/qt/offroad/settings/longitudinal_panel.cc @@ -38,7 +38,7 @@ LongitudinalPanel::LongitudinalPanel(QWidget *parent) : QWidget(parent) { intelligentCruiseButtonManagement = new ParamControlSP( "IntelligentCruiseButtonManagement", tr("Intelligent Cruise Button Management (ICBM) (Alpha)"), - tr("When enabled, sunnypilot will attempt to manage the built-in cruise control buttons by emulating button presses for limited longitudinal control."), + "", "", this ); @@ -104,6 +104,8 @@ void LongitudinalPanel::hideEvent(QHideEvent *event) { } void LongitudinalPanel::refresh(bool _offroad) { + const QString icbm_description = tr("When enabled, sunnypilot will attempt to manage the built-in cruise control buttons by emulating button presses for limited longitudinal control."); + auto cp_bytes = params.get("CarParamsPersistent"); auto cp_sp_bytes = params.get("CarParamsSPPersistent"); if (!cp_bytes.empty() && !cp_sp_bytes.empty()) { @@ -120,9 +122,24 @@ void LongitudinalPanel::refresh(bool _offroad) { if (CP_SP.getIntelligentCruiseButtonManagementAvailable() && !has_longitudinal_control) { intelligentCruiseButtonManagement->setEnabled(offroad); + intelligentCruiseButtonManagement->setDescription(icbm_description); } else { params.remove("IntelligentCruiseButtonManagement"); intelligentCruiseButtonManagement->setEnabled(false); + + const QString icbm_unavaialble = tr("Intelligent Cruise Button Management is currently unavailable on this platform."); + + QString long_desc = icbm_unavaialble; + if (has_longitudinal_control) { + if (CP.getAlphaLongitudinalAvailable()) { + long_desc = icbm_unavaialble + " " + tr("Disable the openpilot Longitudinal Control (alpha) toggle to allow Intelligent Cruise Button Management."); + } else { + long_desc = icbm_unavaialble + " " + tr("openpilot Longitudinal Control is the default longitudinal control for this platform."); + } + } + + intelligentCruiseButtonManagement->setDescription("" + long_desc + "

" + icbm_description); + intelligentCruiseButtonManagement->showDescription(); } if (has_longitudinal_control || has_icbm) { @@ -151,6 +168,7 @@ void LongitudinalPanel::refresh(bool _offroad) { has_longitudinal_control = false; is_pcm_cruise = false; has_icbm = false; + intelligentCruiseButtonManagement->setDescription("" + tr("Start the vehicle to check vehicle compatibility.") + "
" + icbm_description); } QString accEnabledDescription = tr("Enable custom Short & Long press increments for cruise speed increase/decrease.");