[8.2.4][hmi][运营面板-车辆相关] 未连接域控时增加提示切不允许操作所有按钮

This commit is contained in:
xinfengkun
2025-09-16 14:59:30 +08:00
parent 6565b18108
commit f5a2ec0a57
2 changed files with 158 additions and 9 deletions

View File

@@ -1500,10 +1500,17 @@ class OperatePanelLayout : LinearLayout {
} }
// CallerAutoPilotControlManager // CallerAutoPilotControlManager
class VehiclesPreferenceFragmentCompat : OperatePanelDetailBase(), IMoGoAutopilotCarConfigListener, class VehiclesPreferenceFragmentCompat : OperatePanelDetailBase(), IMoGoAutopilotCarConfigListener,
ISopSettingListener, IViewControlListener, IMoGoGetParamResponseListener{ ISopSettingListener, IViewControlListener, IMoGoGetParamResponseListener, IMoGoAutopilotStatusListener{
private var v2xIsShow: Boolean = false
private var operatePaneIsShow = true
private var prevIpcConnectStatus = false
private var customToast: Toast? = null
companion object { companion object {
private const val TAG = "VehiclesPreferenceFragmentCompat" private const val TAG = "VehiclesPreferenceFragmentCompat"
private const val IS_CHECKED_DRIVING_STYLE = "is_checked_driving_style" private const val IS_CHECKED_DRIVING_STYLE = "is_checked_driving_style"
private const val WHAT_UPDATE_ENABLE = 0x00//更新按钮状态
private const val KEY_PNC_PARK_INTERSECTION_CAR = "pnc_park_intersection_car" private const val KEY_PNC_PARK_INTERSECTION_CAR = "pnc_park_intersection_car"
private const val KEY_PNC_PARK_OVERTAKE_CAR = "pnc_park_overtake_car" private const val KEY_PNC_PARK_OVERTAKE_CAR = "pnc_park_overtake_car"
private const val KEY_DETOUR_RETARD_PARK = "detour_retard_park" private const val KEY_DETOUR_RETARD_PARK = "detour_retard_park"
@@ -1530,6 +1537,8 @@ class OperatePanelLayout : LinearLayout {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
Logger.d(TAG, "--- onCreateView --- 1 ---") Logger.d(TAG, "--- onCreateView --- 1 ---")
prevIpcConnectStatus = AppConfigInfo.isConnectAutopilot
CallerAutoPilotStatusListenerManager.addListener(TAG, this)
CallerAutopilotGetParamResponseDispatcher.addListener(TAG, this) CallerAutopilotGetParamResponseDispatcher.addListener(TAG, this)
CallerAutopilotCarConfigListenerManager.addListener(TAG, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this)
CallerSopSettingManager.addListener(TAG, this) CallerSopSettingManager.addListener(TAG, this)
@@ -1565,9 +1574,136 @@ class OperatePanelLayout : LinearLayout {
CallerAutopilotCarConfigListenerManager.removeListener(TAG) CallerAutopilotCarConfigListenerManager.removeListener(TAG)
CallerSopSettingManager.removeListener(TAG) CallerSopSettingManager.removeListener(TAG)
CallerHmiViewControlListenerManager.removeListener(TAG) CallerHmiViewControlListenerManager.removeListener(TAG)
CallerAutoPilotStatusListenerManager.removeListener(TAG)
handler.removeCallbacksAndMessages(null)
super.onDestroyView() super.onDestroyView()
} }
override fun operatePanelDisplayStatus(isShow: Boolean) {
super.operatePanelDisplayStatus(isShow)
operatePaneIsShow = isShow
if (isShow) {
if (v2xIsShow) {
handler.sendEmptyMessage(WHAT_UPDATE_ENABLE)
}
} else {
handler.removeMessages(WHAT_UPDATE_ENABLE)
customToast?.cancel()
customToast = null
}
}
override fun onResume() {
super.onResume()
prevIpcConnectStatus = AppConfigInfo.isConnectAutopilot
v2xIsShow = true
if (operatePaneIsShow) {
handler.sendEmptyMessage(WHAT_UPDATE_ENABLE)
}
}
override fun onPause() {
super.onPause()
v2xIsShow = false
handler.removeMessages(WHAT_UPDATE_ENABLE)
customToast?.cancel()
customToast = null
}
private val handler = object : Handler(Looper.getMainLooper()) {
override fun handleMessage(msg: Message) {
super.handleMessage(msg)
if (msg.what == WHAT_UPDATE_ENABLE) {
if (this.hasMessages(WHAT_UPDATE_ENABLE)) {
this.removeMessages(WHAT_UPDATE_ENABLE)
}
setEnableStatus(AppConfigInfo.isConnectAutopilot)
if (AppConfigInfo.isConnectAutopilot) {
customToast?.cancel()
customToast = null
} else {
showConnectToast()
this.sendEmptyMessageDelayed(WHAT_UPDATE_ENABLE, 5000)
}
}
}
}
private fun showConnectToast() {
try {
AppStateManager.currentActivity()?.let {
val customToastView =
it.layoutInflater.inflate(R.layout.view_ipc_connect_status_toast, null)
customToast = Toast(MainMoGoApplication.getApp().applicationContext)
customToast!!.duration = Toast.LENGTH_SHORT
customToast!!.view = customToastView
customToast!!.setGravity(
Gravity.START,
AutoSizeUtils.dp2px(MainMoGoApplication.getApp().applicationContext, 280f),
0
)
customToast!!.show()
}
} catch (_: Exception) {
}
}
override fun onAutopilotIpcConnectStatusChanged(
status: AdasConstants.IpcConnectionStatus,
reason: String?
) {
if (prevIpcConnectStatus != AppConfigInfo.isConnectAutopilot) {
if (operatePaneIsShow && v2xIsShow) {
handler.sendEmptyMessage(WHAT_UPDATE_ENABLE)
}
}
prevIpcConnectStatus = AppConfigInfo.isConnectAutopilot
}
private fun setEnableStatus(isEnable: Boolean){
if(preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_PNC_PARK_INTERSECTION_CAR)?.isEnabled == isEnable){
return
}
//PNC-Park-会车
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_PNC_PARK_INTERSECTION_CAR)?.isEnabled = isEnable
//PNC-Park-超车
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_PNC_PARK_OVERTAKE_CAR)?.isEnabled = isEnable
//绕障减速停车
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_DETOUR_RETARD_PARK)?.isEnabled = isEnable
//雨天模式
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_RAIN_DAY)?.isEnabled = isEnable
//故障减速停车
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_FAULT_DECELERATION_PARK)?.isEnabled = isEnable
//弱网减速停车
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_WEAK_NET_DECELERATION_PARK)?.isEnabled = isEnable
//考试功能面板
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_EXAM_FUNCTION_PANEL)?.isEnabled = isEnable
//融合模式 - 全融合模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_ALL_MERGE_MODE)?.isEnabled = isEnable
//融合模式 - 盲区模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_BLIND_AREA_MODE)?.isEnabled = isEnable
//融合模式 - 超视距模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_BEYOND_VISUAL_RANGE_MODE)?.isEnabled = isEnable
//融合模式 - 透传模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_TRANSPARENT_TRANSFER_MODE)?.isEnabled = isEnable
//融合模式 - 纯路侧模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_PURE_OBU_MODE)?.isEnabled = isEnable
//AIP功能
preferenceScreen.findPreferenceReal<SwitchPreferenceCompat>(KEY_AIP_FUNCTION)?.isEnabled = isEnable
//驾驶模式 - 正常模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_DRIVING_STYLE_NORMAL)?.isEnabled = isEnable
//驾驶模式 - 安全模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_DRIVING_STYLE_SAFETY)?.isEnabled = isEnable
//驾驶模式 - 专业模式
preferenceScreen.findPreferenceReal<CheckBoxPreference>(KEY_DRIVING_STYLE_PROFESSIONAL)?.isEnabled = isEnable
//自动驾驶速度阈值
preferenceScreen.findPreferenceReal<PreferenceWithSpeedSetting>(KEY_AUTO_PILOT_SPEED_THRESHOLDS)?.isEnabled = isEnable
//变道速度阈值
preferenceScreen.findPreferenceReal<PreferenceWithSpeedSetting>(KEY_CHANGE_LANE_SPEED_THRESHOLDS)?.isEnabled = isEnable
//超车速度阈值
preferenceScreen.findPreferenceReal<PreferenceWithSpeedSetting>(KEY_OVERTAKE_SPEED_THRESHOLDSS)?.isEnabled = isEnable
}
override fun updateFuncMode(tag: String, boolean: Boolean) { override fun updateFuncMode(tag: String, boolean: Boolean) {
super.updateFuncMode(tag, boolean) super.updateFuncMode(tag, boolean)
if (tag == FUNC_MODE_RAIN) { if (tag == FUNC_MODE_RAIN) {

View File

@@ -92,8 +92,10 @@ class PreferenceWithSpeedSetting : Preference {
return@doAfterTextChanged return@doAfterTextChanged
} }
cur = temp cur = temp
btnOk.isEnabled = true btnOk.isEnabled = isEnabled
ll.isSelected = true // btnOk.isEnabled = true
ll.isSelected = isEnabled
// ll.isSelected = true
cache[key] = cur cache[key] = cur
enabled[key] = true enabled[key] = true
holder.itemView.isEnabled = false holder.itemView.isEnabled = false
@@ -102,9 +104,16 @@ class PreferenceWithSpeedSetting : Preference {
speedLimit?.text = cur.toString() speedLimit?.text = cur.toString()
} }
val minus = holder.findViewById(R.id.iv_speed_minus) val minus = holder.findViewById(R.id.iv_speed_minus)
btnOk.isEnabled = enabled[key] ?: false if (isEnabled) {
btnOk.isEnabled = enabled[key] ?: false
ll.isSelected = enabled[key] ?: false
} else {
btnOk.isEnabled = false
ll.isSelected = false
}
// btnOk.isEnabled = enabled[key] ?: false
holder.itemView.isEnabled = enabled[key] ?: false holder.itemView.isEnabled = enabled[key] ?: false
ll.isSelected = enabled[key] ?: false // ll.isSelected = enabled[key] ?: false
minus.setOnClickListener(null) minus.setOnClickListener(null)
minus.onClickWidthDuration(100) { minus.onClickWidthDuration(100) {
val minusAfter = cur - step val minusAfter = cur - step
@@ -113,8 +122,10 @@ class PreferenceWithSpeedSetting : Preference {
return@onClickWidthDuration return@onClickWidthDuration
} }
cur = minusAfter cur = minusAfter
btnOk.isEnabled = true btnOk.isEnabled = isEnabled
ll.isSelected = true // btnOk.isEnabled = true
ll.isSelected = isEnabled
// ll.isSelected = true
cache[key] = cur cache[key] = cur
enabled[key] = true enabled[key] = true
holder.itemView.isEnabled = false holder.itemView.isEnabled = false
@@ -135,8 +146,10 @@ class PreferenceWithSpeedSetting : Preference {
holder.itemView.isEnabled = false holder.itemView.isEnabled = false
cur = addAfter cur = addAfter
cache[key] = cur cache[key] = cur
ll.isSelected = true ll.isSelected = isEnabled
btnOk.isEnabled = true // ll.isSelected = true
btnOk.isEnabled = isEnabled
// btnOk.isEnabled = true
enabled[key] = true enabled[key] = true
if (speedLimit is EditText) { if (speedLimit is EditText) {
speedLimit.setText(addAfter.toString()) speedLimit.setText(addAfter.toString())