diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt index 1f61b0b8de..2c7eb802e3 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/OperatePanelLayout.kt @@ -1500,10 +1500,17 @@ class OperatePanelLayout : LinearLayout { } // CallerAutoPilotControlManager 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 { private const val TAG = "VehiclesPreferenceFragmentCompat" 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_OVERTAKE_CAR = "pnc_park_overtake_car" 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 { Logger.d(TAG, "--- onCreateView --- 1 ---") + prevIpcConnectStatus = AppConfigInfo.isConnectAutopilot + CallerAutoPilotStatusListenerManager.addListener(TAG, this) CallerAutopilotGetParamResponseDispatcher.addListener(TAG, this) CallerAutopilotCarConfigListenerManager.addListener(TAG, this) CallerSopSettingManager.addListener(TAG, this) @@ -1565,9 +1574,136 @@ class OperatePanelLayout : LinearLayout { CallerAutopilotCarConfigListenerManager.removeListener(TAG) CallerSopSettingManager.removeListener(TAG) CallerHmiViewControlListenerManager.removeListener(TAG) + CallerAutoPilotStatusListenerManager.removeListener(TAG) + handler.removeCallbacksAndMessages(null) 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(KEY_PNC_PARK_INTERSECTION_CAR)?.isEnabled == isEnable){ + return + } + //PNC-Park-会车 + preferenceScreen.findPreferenceReal(KEY_PNC_PARK_INTERSECTION_CAR)?.isEnabled = isEnable + //PNC-Park-超车 + preferenceScreen.findPreferenceReal(KEY_PNC_PARK_OVERTAKE_CAR)?.isEnabled = isEnable + //绕障减速停车 + preferenceScreen.findPreferenceReal(KEY_DETOUR_RETARD_PARK)?.isEnabled = isEnable + //雨天模式 + preferenceScreen.findPreferenceReal(KEY_RAIN_DAY)?.isEnabled = isEnable + //故障减速停车 + preferenceScreen.findPreferenceReal(KEY_FAULT_DECELERATION_PARK)?.isEnabled = isEnable + //弱网减速停车 + preferenceScreen.findPreferenceReal(KEY_WEAK_NET_DECELERATION_PARK)?.isEnabled = isEnable + //考试功能面板 + preferenceScreen.findPreferenceReal(KEY_EXAM_FUNCTION_PANEL)?.isEnabled = isEnable + //融合模式 - 全融合模式 + preferenceScreen.findPreferenceReal(KEY_ALL_MERGE_MODE)?.isEnabled = isEnable + //融合模式 - 盲区模式 + preferenceScreen.findPreferenceReal(KEY_BLIND_AREA_MODE)?.isEnabled = isEnable + //融合模式 - 超视距模式 + preferenceScreen.findPreferenceReal(KEY_BEYOND_VISUAL_RANGE_MODE)?.isEnabled = isEnable + //融合模式 - 透传模式 + preferenceScreen.findPreferenceReal(KEY_TRANSPARENT_TRANSFER_MODE)?.isEnabled = isEnable + //融合模式 - 纯路侧模式 + preferenceScreen.findPreferenceReal(KEY_PURE_OBU_MODE)?.isEnabled = isEnable + //AIP功能 + preferenceScreen.findPreferenceReal(KEY_AIP_FUNCTION)?.isEnabled = isEnable + //驾驶模式 - 正常模式 + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_NORMAL)?.isEnabled = isEnable + //驾驶模式 - 安全模式 + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_SAFETY)?.isEnabled = isEnable + //驾驶模式 - 专业模式 + preferenceScreen.findPreferenceReal(KEY_DRIVING_STYLE_PROFESSIONAL)?.isEnabled = isEnable + //自动驾驶速度阈值 + preferenceScreen.findPreferenceReal(KEY_AUTO_PILOT_SPEED_THRESHOLDS)?.isEnabled = isEnable + //变道速度阈值 + preferenceScreen.findPreferenceReal(KEY_CHANGE_LANE_SPEED_THRESHOLDS)?.isEnabled = isEnable + //超车速度阈值 + preferenceScreen.findPreferenceReal(KEY_OVERTAKE_SPEED_THRESHOLDSS)?.isEnabled = isEnable + } + override fun updateFuncMode(tag: String, boolean: Boolean) { super.updateFuncMode(tag, boolean) if (tag == FUNC_MODE_RAIN) { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt index f990d1e229..48228ab1b2 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/operate/preferences/PreferenceWithSpeedSetting.kt @@ -92,8 +92,10 @@ class PreferenceWithSpeedSetting : Preference { return@doAfterTextChanged } cur = temp - btnOk.isEnabled = true - ll.isSelected = true + btnOk.isEnabled = isEnabled +// btnOk.isEnabled = true + ll.isSelected = isEnabled +// ll.isSelected = true cache[key] = cur enabled[key] = true holder.itemView.isEnabled = false @@ -102,9 +104,16 @@ class PreferenceWithSpeedSetting : Preference { speedLimit?.text = cur.toString() } 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 - ll.isSelected = enabled[key] ?: false +// ll.isSelected = enabled[key] ?: false minus.setOnClickListener(null) minus.onClickWidthDuration(100) { val minusAfter = cur - step @@ -113,8 +122,10 @@ class PreferenceWithSpeedSetting : Preference { return@onClickWidthDuration } cur = minusAfter - btnOk.isEnabled = true - ll.isSelected = true + btnOk.isEnabled = isEnabled +// btnOk.isEnabled = true + ll.isSelected = isEnabled +// ll.isSelected = true cache[key] = cur enabled[key] = true holder.itemView.isEnabled = false @@ -135,8 +146,10 @@ class PreferenceWithSpeedSetting : Preference { holder.itemView.isEnabled = false cur = addAfter cache[key] = cur - ll.isSelected = true - btnOk.isEnabled = true + ll.isSelected = isEnabled +// ll.isSelected = true + btnOk.isEnabled = isEnabled +// btnOk.isEnabled = true enabled[key] = true if (speedLimit is EditText) { speedLimit.setText(addAfter.toString())