From 70e0d7e2986587632ed1b22caf99739dcc085394 Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 9 Oct 2024 15:51:09 +0800 Subject: [PATCH] =?UTF-8?q?[6.7.0][=E8=BF=90=E8=90=A5=E9=9D=A2=E6=9D=BF]?= =?UTF-8?q?=20=E7=A7=BB=E9=99=A4=E6=AC=A2=E8=BF=8E=E8=AF=AD=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=85=A5=E5=8F=A3;=20=E8=9E=8D=E5=90=88=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=BA=E5=8D=95=E9=80=89=E6=A1=86=E4=B8=8D=E6=98=AF?= =?UTF-8?q?=E5=A4=8D=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmi/ui/operate/OperatePanelLayout.kt | 127 +++++++++++++----- .../xml/operate_panel_preference_headers.xml | 10 +- 2 files changed, 102 insertions(+), 35 deletions(-) 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