From 0d9a6556ac808a5b1ca930b9e729feabc51ec846 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 12 Jul 2024 17:02:45 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0]=E5=B1=95=E7=A4=BA=E9=87=8D=E5=8F=A0?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BC=98=E5=8C=96:=E5=AE=89=E5=BF=83?= =?UTF-8?q?=E6=8E=A2=E6=9F=A5=E5=9C=A8=E6=9C=89=E4=BA=8B=E4=BB=B6=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E6=97=B6=EF=BC=8C=E5=BA=94=E5=8D=B3=E6=97=B6=E6=89=93?= =?UTF-8?q?=E6=96=AD=E5=B9=B6=E8=87=AA=E5=8A=A8=E5=85=B3=E9=97=AD=EF=BC=9B?= =?UTF-8?q?=20=E5=8F=A6=E5=B0=86=E7=81=AF=E6=80=81=E3=80=81=E8=B7=AF?= =?UTF-8?q?=E5=8F=A3=E7=9B=B8=E5=85=B3=E7=9A=84=E6=8F=90=E9=86=92=E4=B9=9F?= =?UTF-8?q?=E7=AE=97=E4=BD=9C=E4=BA=8B=E4=BB=B6=EF=BC=8C5=E5=88=86?= =?UTF-8?q?=E9=92=9F=E5=86=85=E6=97=A0=E4=BA=8B=E4=BB=B6=E5=86=8D=E8=A7=A6?= =?UTF-8?q?=E5=8F=91=E5=AE=89=E5=BF=83=E6=8E=A2=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rodedata/OchAutomaticExplorationView.kt | 10 ++++ .../exploration/AutomaticExplorationView.kt | 48 +++++++++++++++++-- .../hmi/ui/widget/FusionTrafficLightView.kt | 3 ++ 3 files changed, 57 insertions(+), 4 deletions(-) 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)