[dev_robotaxi-d_230412_2.15.0]增加订单回调+汇总消息过滤

This commit is contained in:
xuxinchao
2023-04-20 17:49:04 +08:00
parent c8de2a7622
commit a339ccfb1d
3 changed files with 63 additions and 5 deletions

View File

@@ -8,13 +8,16 @@ import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.enums.DataSourceType
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.data.msgbox.MsgBoxCountDownBean
import com.mogo.eagle.core.data.msgbox.MsgCategory
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxListener
import com.mogo.eagle.core.function.api.order.IOrderListener
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxListenerManager
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.function.hmi.ui.msgbox.adapter.DriverMsgBoxBubbleAdapter
import com.mogo.eagle.core.function.msgbox.MsgBoxConfig
@@ -30,7 +33,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener {
) : ConstraintLayout(context, attrs, defStyleAttr), IMsgBoxListener,IOrderListener {
init {
LayoutInflater.from(context).inflate(R.layout.layout_driver_msg_box_bubble, this, true)
@@ -42,6 +45,7 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
private val TAG = "DriverMsgBoxBubbleView"
private val dataList :ArrayList<MsgBoxCountDownBean> = ArrayList()
private var isShowData = true
private var isShowSummary = false //是否展示汇总消息
private fun initView() {
val linearLayoutManager = LinearLayoutManager(context)
@@ -92,10 +96,15 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
} else if(category == MsgCategory.SYS_INFO){
//todo 过滤MAP系统异常报警
} else{
clMsgBubbleLayout.visibility = View.VISIBLE
val msgBoxCountDownBean = MsgBoxCountDownBean(msgBoxBean)
dataList.add(msgBoxCountDownBean)
driverMsgBoxBubbleAdapter?.setData(dataList)
if(msgBoxBean.sourceType == DataSourceType.SUMMARY){
//在一次订单中汇总消息只展示一次
if(isShowSummary){
showData(msgBoxBean)
isShowSummary = false
}
}else{
showData(msgBoxBean)
}
}
}
}, UiThreadHandler.MODE.QUEUE)
@@ -104,11 +113,24 @@ class DriverMsgBoxBubbleView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
CallerMsgBoxListenerManager.addListener(TAG,this)
CallerOrderListenerManager.addListener(TAG,this)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
CallerMsgBoxListenerManager.removeListener(TAG)
CallerOrderListenerManager.removeListener(TAG)
}
override fun onUpdateOrderStatus(inOrder: Boolean) {
isShowSummary = inOrder
}
private fun showData(msgBoxBean: MsgBoxBean){
clMsgBubbleLayout.visibility = View.VISIBLE
val msgBoxCountDownBean = MsgBoxCountDownBean(msgBoxBean)
dataList.add(msgBoxCountDownBean)
driverMsgBoxBubbleAdapter?.setData(dataList)
}
}

View File

@@ -0,0 +1,15 @@
package com.mogo.eagle.core.function.api.order
/**
* @author XuXinChao
* @date 2023/4/20
* 订单事件监听回调
*/
interface IOrderListener {
/**
* 通知订单状态
* @param inOrder true:开始订单false:订单结束
*/
fun onUpdateOrderStatus(inOrder: Boolean)
}

View File

@@ -0,0 +1,21 @@
package com.mogo.eagle.core.function.call.order
import com.mogo.eagle.core.function.api.order.IOrderListener
import com.mogo.eagle.core.function.call.base.CallerBase
/**
* @author XuXinChao
* @date 2023/4/20
* 订单监听管理
*/
object CallerOrderListenerManager: CallerBase<IOrderListener>() {
fun invokeOrderStatus(inOrder: Boolean){
M_LISTENERS.forEach{
val tag = it.key
val listener = it.value
listener.onUpdateOrderStatus(inOrder)
}
}
}