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 b9343903f9..0b68de836c 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 @@ -960,6 +960,8 @@ class OperatePanelLayout : LinearLayout { private const val KEY_OVERTAKE_SPEED_THRESHOLDSS = "overtake_speed_thresholds" } + private var prevCheckedKeyForFusionMode: String? = null + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { CallerAutopilotCarConfigListenerManager.addListener(TAG, this) CallerSopSettingManager.addListener(TAG, this) @@ -1038,19 +1040,39 @@ class OperatePanelLayout : LinearLayout { return FunctionBuildConfig.isFaultSlowDown } KEY_ALL_MERGE_MODE -> { - return FunctionBuildConfig.fusionMode == 1 + val checked = FunctionBuildConfig.fusionMode == 1 + if (checked) { + prevCheckedKeyForFusionMode = KEY_ALL_MERGE_MODE + } + return checked } KEY_BLIND_AREA_MODE -> { - return FunctionBuildConfig.fusionMode == 2 + val checked = FunctionBuildConfig.fusionMode == 2 + if (checked) { + prevCheckedKeyForFusionMode = KEY_BLIND_AREA_MODE + } + return checked } KEY_BEYOND_VISUAL_RANGE_MODE -> { - return FunctionBuildConfig.fusionMode == 3 + val checked = FunctionBuildConfig.fusionMode == 3 + if (checked) { + prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE + } + return checked } KEY_TRANSPARENT_TRANSFER_MODE -> { - return FunctionBuildConfig.fusionMode == 4 + val checked = FunctionBuildConfig.fusionMode == 4 + if (checked) { + prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE + } + return checked } KEY_PURE_OBU_MODE -> { - return FunctionBuildConfig.fusionMode == 5 + val checked = FunctionBuildConfig.fusionMode == 5 + if (checked) { + prevCheckedKeyForFusionMode = KEY_PURE_OBU_MODE + } + return checked } KEY_AUTO_PILOT_SPEED_THRESHOLDS -> { return listOf("0.0", "60.0", "${FunctionBuildConfig.maxSpeedLimit}", "5.0") @@ -1180,39 +1202,84 @@ class OperatePanelLayout : LinearLayout { return true } KEY_ALL_MERGE_MODE -> { - FunctionBuildConfig.fusionMode = 1 - hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) - clickEventAnalytics("融合模式", true) - CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) - return true + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + FunctionBuildConfig.fusionMode = 1 + prevCheckedKeyForFusionMode?.takeIf { it != KEY_ALL_MERGE_MODE }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + prevCheckedKeyForFusionMode = KEY_ALL_MERGE_MODE + changeValue(it, false) + } + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + return isChecked } KEY_BLIND_AREA_MODE -> { - FunctionBuildConfig.fusionMode = 2 - hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) - clickEventAnalytics("融合模式", true) - CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) - return true + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + FunctionBuildConfig.fusionMode = 2 + prevCheckedKeyForFusionMode?.takeIf { it != KEY_BLIND_AREA_MODE }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + prevCheckedKeyForFusionMode = KEY_BLIND_AREA_MODE + changeValue(it, false) + } + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + return isChecked } KEY_BEYOND_VISUAL_RANGE_MODE -> { - FunctionBuildConfig.fusionMode = 3 - hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) - clickEventAnalytics("融合模式", true) - CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) - return true + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + FunctionBuildConfig.fusionMode = 3 + prevCheckedKeyForFusionMode?.takeIf { it != KEY_BEYOND_VISUAL_RANGE_MODE }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + prevCheckedKeyForFusionMode = KEY_BEYOND_VISUAL_RANGE_MODE + changeValue(it, false) + } + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + return isChecked } KEY_TRANSPARENT_TRANSFER_MODE -> { - FunctionBuildConfig.fusionMode = 4 - hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) - clickEventAnalytics("融合模式", true) - CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) - return true + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + FunctionBuildConfig.fusionMode = 4 + prevCheckedKeyForFusionMode?.takeIf { it != KEY_TRANSPARENT_TRANSFER_MODE }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + prevCheckedKeyForFusionMode = KEY_TRANSPARENT_TRANSFER_MODE + changeValue(it, false) + } + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + return isChecked } KEY_PURE_OBU_MODE -> { - FunctionBuildConfig.fusionMode = 5 - hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) - clickEventAnalytics("融合模式", true) - CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) - return true + val isChecked = newValue as? Boolean ?: false + if (isChecked) { + FunctionBuildConfig.fusionMode = 5 + prevCheckedKeyForFusionMode?.takeIf { it != KEY_PURE_OBU_MODE }?.let { + preferenceScreen.findPreferenceReal(it) + }?.also { + prevCheckedKeyForFusionMode = KEY_PURE_OBU_MODE + changeValue(it, false) + } + hmiAction("SOP 融合模式, ", FunctionBuildConfig.fusionMode) + clickEventAnalytics("融合模式", true) + CallerAutoPilotControlManager.sendFusionMode(FunctionBuildConfig.fusionMode) + } + return isChecked } } return super.onPreferenceChange(preference, newValue) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/xml/operate_panel_preference_headers.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/xml/operate_panel_preference_headers.xml index dc020a7d7a..9d3a450447 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/xml/operate_panel_preference_headers.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/xml/operate_panel_preference_headers.xml @@ -31,10 +31,10 @@ android:key="mofang" android:layout="@layout/layout_operate_panel_preference_header" android:title="蘑方" /> - + + + + + \ No newline at end of file