diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
index 50c2ead876..7a6bdf1fcd 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt
@@ -422,8 +422,8 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener {
/**
* 展示考试车辆控制窗口
*/
- override fun showExamControlWindow(view: View) {
- ExamControlManager.showExamControlWindow(view)
+ override fun showExamControlWindow(view: View,isShow: Boolean) {
+ ExamControlManager.showExamControlWindow(view,isShow)
}
override fun onReceiveBadCaseRecord(
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt
index 47590f0190..be003629c4 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlManager.kt
@@ -1,7 +1,9 @@
package com.zhjt.mogo_core_function_devatools.exam
+import android.annotation.SuppressLint
import android.view.View
import androidx.fragment.app.FragmentActivity
+import com.mogo.eagle.core.function.call.setting.CallerSopSettingManager
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
@@ -12,43 +14,31 @@ import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
*/
internal object ExamControlManager {
+ @SuppressLint("StaticFieldLeak")
+ var examControlWindow: ExamControlWindow ?= null
+
/**
* 开启考试车辆控制窗口
*/
- fun showExamControlWindow(view: View){
+ fun showExamControlWindow(view: View,isShow: Boolean){
val activity = view.context as? FragmentActivity
?: throw IllegalStateException("please ensure context is FragmentActivity.")
- view.setOnClickListener{
- if (ClickUtils.isFastClick()){
- if (NetworkUtils.isConnected()){
-
- //TODO
- val examControlWindow = ExamControlWindow(activity)
- examControlWindow.setClickListener(object: ExamControlWindow.ClickListener{
- override fun closeWindow() {
- examControlWindow.hideWindow()
- }
- })
- examControlWindow.showWindow()
-
-
- if (BadCaseConfig.dockerVersion != null){
- val examControlWindow = ExamControlWindow(activity)
- examControlWindow.setClickListener(object: ExamControlWindow.ClickListener{
- override fun closeWindow() {
- examControlWindow.hideWindow()
- }
- })
- examControlWindow.showWindow()
- }else{
- ToastUtils.showShort("工控机连接状态异常")
- }
- }else{
- ToastUtils.showShort("网络异常,请检查网络")
+ if(examControlWindow == null){
+ examControlWindow = ExamControlWindow(activity)
+ }
+ if(isShow){
+ examControlWindow?.setClickListener(object: ExamControlWindow.ClickListener{
+ override fun closeWindow() {
+ examControlWindow?.hideWindow()
+ examControlWindow = null
+ //通知运营面板关闭按钮
+ CallerSopSettingManager.invokeExamControlListener(false)
}
- }else{
- ToastUtils.showShort("请勿连续点击,稍后再试")
- }
+ })
+ examControlWindow?.showWindow()
+ }else{
+ examControlWindow?.hideWindow()
+ examControlWindow = null
}
}
diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlWindow.kt
index 9983b3880e..5cf94909c9 100644
--- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlWindow.kt
+++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/exam/ExamControlWindow.kt
@@ -115,7 +115,7 @@ class ExamControlWindow constructor(activity: Activity): View.OnTouchListener{
ivEmergencyStop = mFloatLayout.findViewById(R.id.ivEmergencyStop)
//关闭按钮
ivCloseExam.setOnClickListener {
- hideWindow()
+ clickListener?.closeWindow()
}
//绕障开关
tbLaneChange.isChecked = SPUtils.getInstance().getBoolean("lane_change",false)
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt
index d093a91be3..fd70e350cf 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt
+++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/SOPSettingView.kt
@@ -61,6 +61,7 @@ import kotlinx.android.synthetic.main.view_sop_setting.view.scCarUnionTrafficLig
import kotlinx.android.synthetic.main.view_sop_setting.view.scConnectionSwitch
import kotlinx.android.synthetic.main.view_sop_setting.view.scDemoMode
import kotlinx.android.synthetic.main.view_sop_setting.view.scDrawPointCloudData
+import kotlinx.android.synthetic.main.view_sop_setting.view.scExamControl
import kotlinx.android.synthetic.main.view_sop_setting.view.scFaultSlowDown
import kotlinx.android.synthetic.main.view_sop_setting.view.scGreenWaveSop
import kotlinx.android.synthetic.main.view_sop_setting.view.scIPCReport
@@ -593,6 +594,15 @@ internal class SOPSettingView @JvmOverloads constructor(
hmiAction("SOP 故障减速停车, ", isChecked)
clickEventAnalytics("故障减速停车",isChecked)
}
+ //考试功能面板
+ scExamControl.isChecked = FunctionBuildConfig.isShowExamWindow
+ scExamControl.setOnCheckedChangeListener { _, isChecked ->
+ FunctionBuildConfig.isShowExamWindow = isChecked
+ CallerDevaToolsManager.showExamControlWindow(this,isChecked)
+ hmiAction("SOP 考试功能面板, ", isChecked)
+ clickEventAnalytics("考试功能面板",isChecked)
+ }
+
//融合模式
rgFusionMode.setOnCheckedChangeListener { _, p1 ->
when (p1) {
@@ -1082,6 +1092,13 @@ internal class SOPSettingView @JvmOverloads constructor(
scRainMode.isChecked = status
}
+ /**
+ * 考试功能面板
+ */
+ override fun onExamControlClickEvent(status: Boolean) {
+ scExamControl.isChecked = status
+ }
+
/**
* 点云模式
*/
diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml
index f94f9a8ae7..7991eff6d9 100644
--- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml
+++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_sop_setting.xml
@@ -493,6 +493,22 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="@id/vehicleGuideLine"
app:layout_constraintTop_toBottomOf="@id/scRainMode" />
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/scExamControl">
() {
}
}
+ fun invokeExamControlListener(status: Boolean){
+ M_LISTENERS.forEach {
+ val listener = it.value
+ listener.onExamControlClickEvent(status)
+ }
+ }
+
/**
* 触发点云事件监听
*/