diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/rodedata/OchAutomaticExplorationView.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/rodedata/OchAutomaticExplorationView.kt index 595b23a56f..1341df2bfe 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/rodedata/OchAutomaticExplorationView.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/rodedata/OchAutomaticExplorationView.kt @@ -21,34 +21,44 @@ class OchAutomaticExplorationView @JvmOverloads constructor( override fun onCurrentOrderStatusChanged(order: BaseOrderBean?) { if(order==null){ cancelTimer() + currentOrderStatus(false) }else { when (order.orderStatus) { TaxiOrderStatusEnum.None.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.OnTheWayToStart.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.ArriveAtStart.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.UserArriveAtStart.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.OnTheWayToEnd.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.ArriveAtEnd.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.JourneyCompleted.code -> { startShowTimer() + currentOrderStatus(true) } TaxiOrderStatusEnum.Cancel.code -> { cancelTimer() + currentOrderStatus(false) } else -> { cancelTimer() + currentOrderStatus(false) } } } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt index 19982583ca..965db0320d 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/notice/exploration/AutomaticExplorationView.kt @@ -20,6 +20,8 @@ import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.MsgCategory import com.mogo.eagle.core.data.notice.AutoExplorationEntity import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener +import com.mogo.eagle.core.function.api.hmi.view.IViewControlListener +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -34,7 +36,7 @@ open class AutomaticExplorationView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener { +) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener, IViewControlListener { private var user = 0 private var ivClose: ImageView ?= null //关闭按钮 @@ -44,6 +46,7 @@ open class AutomaticExplorationView @JvmOverloads constructor( private var rotationAnim: ObjectAnimator ?= null private var showViewTimer: CountDownTimer ?= null //展示自动探查倒计时 private var isCountingDown: Boolean = false //是否处于倒计时中 + private var hasOrder: Boolean = false // 车当前是否有订单 companion object { private const val TAG = "AutomaticExplorationView" @@ -66,6 +69,7 @@ open class AutomaticExplorationView @JvmOverloads constructor( } initEvent() CallerMsgBoxListenerManager.addListener(TAG,this) + CallerHmiViewControlListenerManager.addListener(TAG,this) } private fun showAutoExploration(){ @@ -82,6 +86,11 @@ open class AutomaticExplorationView @JvmOverloads constructor( ivClose?.setOnClickListener { rotationAnim?.cancel() this.visibility = View.GONE + //重新开始下一轮展示倒计时 + cancelTimer() + if(hasOrder){ + startShowTimer() + } } rvExplorationList = findViewById(R.id.rvExplorationList) val linearLayoutManager = LinearLayoutManager(context) @@ -115,6 +124,14 @@ open class AutomaticExplorationView @JvmOverloads constructor( } } + /** + * 设置当前订单状态 + * @param orderStatus true有订单;false没有订单 + */ + fun currentOrderStatus(orderStatus: Boolean){ + hasOrder = orderStatus + } + private fun initData() { val dataList = ArrayList(7) dataList.add(AutoExplorationEntity("当前道路事件分析",2000L,false)) @@ -153,8 +170,10 @@ open class AutomaticExplorationView @JvmOverloads constructor( ThreadUtils.runOnUiThread { this@AutomaticExplorationView.visibility = View.GONE } - //重新开始下一轮展示倒计时 - startShowTimer() + if(hasOrder){ + //重新开始下一轮展示倒计时 + startShowTimer() + } } } hideViewTimer.start() @@ -186,6 +205,7 @@ open class AutomaticExplorationView @JvmOverloads constructor( override fun onDetachedFromWindow() { super.onDetachedFromWindow() CallerMsgBoxListenerManager.removeListener(TAG) + CallerHmiViewControlListenerManager.removeListener(TAG) cancelTimer() } @@ -197,7 +217,9 @@ open class AutomaticExplorationView @JvmOverloads constructor( if(msgBoxList.type == MsgBoxType.V2X){ //重置倒计时时长 cancelTimer() - startShowTimer() + if(hasOrder){ + startShowTimer() + } } } } @@ -211,4 +233,22 @@ open class AutomaticExplorationView @JvmOverloads constructor( isCountingDown = false } + + override fun v2xEventVisible(v: Int) { + super.v2xEventVisible(v) + if(v == View.VISIBLE){ + //如果当前探查是出于显示状态,则取消动画,并且隐藏 + if(this@AutomaticExplorationView.visibility == View.VISIBLE){ + rotationAnim?.cancel() + this@AutomaticExplorationView.visibility = View.GONE + } + //重新开始下一轮展示倒计时 + cancelTimer() + if(hasOrder){ + startShowTimer() + } + } + } + + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt index b654cac633..9d4d157fa8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/widget/FusionTrafficLightView.kt @@ -12,6 +12,7 @@ import com.mogo.eagle.core.data.autopilot.AutopilotSummaryInfo import com.mogo.eagle.core.data.enums.DataSourceType import com.mogo.eagle.core.data.enums.TrafficLightEnum import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener +import com.mogo.eagle.core.function.call.hmi.CallerHmiViewControlListenerManager import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.utilcode.util.ThreadUtils @@ -80,6 +81,7 @@ class FusionTrafficLightView @JvmOverloads constructor( UiThreadHandler.post{ mCurrentLightId = TrafficLightEnum.BLACK this@FusionTrafficLightView.visibility = GONE + CallerHmiViewControlListenerManager.invokeV2XEvent(TAG, View.GONE) } } @@ -105,6 +107,7 @@ class FusionTrafficLightView @JvmOverloads constructor( //如果当前红绿灯视图为隐藏状态则设置为显示状态 if(this@FusionTrafficLightView.visibility == View.GONE){ this@FusionTrafficLightView.visibility = View.VISIBLE + CallerHmiViewControlListenerManager.invokeV2XEvent(TAG, View.VISIBLE) AutopilotSummaryInfo.lightServicesNum++ //首次展示,需要将当前、下一、下二灯态的时间占比绘制出来,只绘制一次 val proportionList = intArrayOf(0, 0, 0)