From 61f9ec5f09c217b26bf400f19544b03233b449bc Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Wed, 25 Dec 2024 18:07:53 +0800 Subject: [PATCH] =?UTF-8?q?[6.9.0]=E6=B6=88=E6=81=AF=E7=9B=92=E5=AD=90?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0NDE=E8=BD=A6=E9=BE=99=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hmi/bone/tab/adapter/MsgBoxTabAdapter.kt | 25 +++++++ .../adapter/DriverMsgBoxBubbleAdapter.kt | 26 ++++++- .../msgbox/adapter/DriverMsgBoxListAdapter.kt | 25 ++++++- .../ui/msgbox/adapter/MsgBoxToastAdapter.kt | 23 +++++++ .../src/main/res/layout/item_msg_box_nde.xml | 65 ++++++++++++++++++ .../main/res/layout/item_msg_bubble_nde.xml | 65 ++++++++++++++++++ .../main/res/layout/item_msg_toast_nde.xml | 45 ++++++++++++ .../src/main/res/layout/item_tab_nde.xml | 55 +++++++++++++++ .../src/main/res/values/strings.xml | 1 + .../drawable-xhdpi/icon_nde.png | Bin 0 -> 19673 bytes 10 files changed, 328 insertions(+), 2 deletions(-) create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_nde.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_nde.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_nde.xml create mode 100644 core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_nde.xml create mode 100644 core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_nde.png diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt index 8e3841c05e..df5ad368e8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/adapter/MsgBoxTabAdapter.kt @@ -46,6 +46,7 @@ class MsgBoxTabAdapter(private val activity: Activity) : private val ssm: Int = 9 //SSM连接消息 private val autopilot = 20 //工控机连接消息 private val fsm = 21 //fsm消息 + private val nde = 22 //NDE消息车龙 private val none = -1 @@ -143,6 +144,12 @@ class MsgBoxTabAdapter(private val activity: Activity) : .inflate(R.layout.item_tab_fsm,parent,false) return MsgBoxFSM(view) } + //NDE消息 + nde -> { + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_tab_nde,parent,false) + return MsgBoxNDE(view) + } //V2X消息 else -> { val view = LayoutInflater.from(parent.context) @@ -542,6 +549,15 @@ class MsgBoxTabAdapter(private val activity: Activity) : holder.tvFSMTime.text = TimeUtils.millis2String(fsmMsg.timestamp,getHourMinFormat()) } } + //NDE车龙消息 + is MsgBoxNDE ->{ + data?.let { + val ndeMsg = it[position].bean as NDEMsg + holder.tvNdeTitle.text = ndeMsg.title + holder.tvNdeContent.text = ndeMsg.des + holder.tvNdeTime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + } + } } } @@ -584,6 +600,8 @@ class MsgBoxTabAdapter(private val activity: Activity) : autopilot } else if(data!![position].type == MsgBoxType.FSM){ fsm + } else if(data!![position].type == MsgBoxType.NDE){ + nde } else if(data!![position].type == MsgBoxType.V2X || data!![position].type == MsgBoxType.OBU){ v2x } else { @@ -692,4 +710,11 @@ class MsgBoxTabAdapter(private val activity: Activity) : var tvFSMContent: TextView = itemView.findViewById(R.id.tvFSMContent) } + //NDE车龙 + class MsgBoxNDE(itemView: View) : RecyclerView.ViewHolder(itemView){ + var tvNdeTitle: TextView = itemView.findViewById(R.id.tvNdeTitle) + var tvNdeTime: TextView = itemView.findViewById(R.id.tvNdeTime) + var tvNdeContent: TextView = itemView.findViewById(R.id.tvNdeContent) + } + } \ 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/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt index c2981cf00d..b418bbc97e 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxBubbleAdapter.kt @@ -48,6 +48,7 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A private val autopilot: Int = 8 private val fsm: Int = 9 private val none: Int = 10 + private val nde: Int = 11 private var changeViewListener: ChangeViewListener?=null @@ -108,6 +109,10 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_fsm,parent,false) return BubbleFSMHolder(view) } + nde -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_nde,parent,false) + return BubbleNDEHolder(view) + } else -> { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_v2x,parent,false) return BubbleV2XHolder(view) @@ -327,6 +332,15 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A holder.tvFSMTime.text = TimeUtils.millis2String(fsmMsg.timestamp,getHourMinFormat()) } } + //NDE消息 + is BubbleNDEHolder ->{ + data?.let { + val ndeMsg = it[position].msgBoxBean.bean as NDEMsg + holder.tvNDETitle.text = ndeMsg.title + holder.tvNDEContent.text = ndeMsg.des + holder.tvNDETime.text = TimeUtils.millis2String(it[position].msgBoxBean.timestamp,getHourMinFormat()) + } + } } val msgBoxBean: MsgBoxCountDownBean = data!![position] @@ -382,7 +396,10 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A autopilot }else if(data!![position].msgBoxBean.type == MsgBoxType.FSM){ fsm - } else { + }else if(data!![position].msgBoxBean.type == MsgBoxType.NDE){ + nde + } + else { v2x } } @@ -473,6 +490,13 @@ class DriverMsgBoxBubbleAdapter(private val activity: Activity) : RecyclerView.A var tvFSMContent: TextView = itemView.findViewById(R.id.tvFSMContent) } + //NDE车龙消息 + class BubbleNDEHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvNDETitle: TextView = itemView.findViewById(R.id.tvNDETitle) + var tvNDETime: TextView = itemView.findViewById(R.id.tvNDETime) + var tvNDEContent: TextView = itemView.findViewById(R.id.tvNDEContent) + } + fun setChangeListener(listener: ChangeViewListener){ changeViewListener = listener } diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt index 2974aad26c..b5037002c0 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/DriverMsgBoxListAdapter.kt @@ -49,7 +49,7 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : private val ssm: Int = 9 //SSM连接消息 private val autopilot = 20 //工控机连接消息 private val fsm = 21 //fsm消息 - + private val nde = 22 //NDE消息 private val none = -1 @@ -137,6 +137,11 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : .inflate(R.layout.item_msg_box_fsm,parent,false) return MsgBoxFSM(view) } + nde ->{ + val view = LayoutInflater.from(parent.context) + .inflate(R.layout.item_msg_box_nde,parent,false) + return MsgBoxNde(view) + } else -> { val view = LayoutInflater.from(parent.context) .inflate(R.layout.item_msg_box_v2x, parent, false) @@ -711,6 +716,15 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : holder.tvFSMTime.text = TimeUtils.millis2String(fsmMsg.timestamp,getHourMinFormat()) } } + //NDE消息 + is MsgBoxNde ->{ + data?.let { + val ndeMsg = it[position].bean as NDEMsg + holder.tvNDETitle.text = ndeMsg.title + holder.tvNDEContent.text = ndeMsg.des + holder.tvNDETime.text = TimeUtils.millis2String(it[position].timestamp,getHourMinFormat()) + } + } } } @@ -753,6 +767,8 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : autopilot } else if(data!![position].type == MsgBoxType.FSM){ fsm + } else if(data!![position].type == MsgBoxType.NDE){ + nde } else if(data!![position].type == MsgBoxType.V2X || data!![position].type == MsgBoxType.OBU){ v2x } else { @@ -877,4 +893,11 @@ class DriverMsgBoxListAdapter(private val activity: Activity) : var tvFSMContent: TextView = itemView.findViewById(R.id.tvFSMContent) } + //NDE + class MsgBoxNde(itemView: View) : RecyclerView.ViewHolder(itemView){ + var tvNDETitle: TextView = itemView.findViewById(R.id.tvNDETitle) + var tvNDETime: TextView = itemView.findViewById(R.id.tvNDETime) + var tvNDEContent: TextView = itemView.findViewById(R.id.tvNDEContent) + } + } \ 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/msgbox/adapter/MsgBoxToastAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/MsgBoxToastAdapter.kt index 35440e2897..765c8065c7 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/MsgBoxToastAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/msgbox/adapter/MsgBoxToastAdapter.kt @@ -20,6 +20,7 @@ import com.mogo.eagle.core.data.msgbox.FSMMsg import com.mogo.eagle.core.data.msgbox.MsgBoxCountDownBean import com.mogo.eagle.core.data.msgbox.MsgBoxType import com.mogo.eagle.core.data.msgbox.MsgFmData +import com.mogo.eagle.core.data.msgbox.NDEMsg import com.mogo.eagle.core.data.msgbox.NoticeFrCloudMsg import com.mogo.eagle.core.data.msgbox.OperationMsg import com.mogo.eagle.core.data.msgbox.SSMMsg @@ -46,6 +47,7 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter< private val notice: Int = 1 private val v2x: Int = 2 private val report: Int = 3 + private val nde: Int = 4 fun setData(data: ArrayList){ @@ -66,6 +68,10 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter< val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_bubble_notice,parent,false) BubbleNoticeHolder(view) } + nde -> { + val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_toast_nde,parent,false) + BubbleNDEHolder(view) + } else -> { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_msg_toast_v2x,parent,false) BubbleV2XHolder(view) @@ -132,6 +138,14 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter< } } } + //NDE消息 + is BubbleNDEHolder ->{ + data?.let { + val ndeMsg = it[position].msgBoxBean.bean as NDEMsg + holder.tvNdeTitle.text = ndeMsg.title + holder.tvNdeContent.text = ndeMsg.des + } + } //V2X消息 is BubbleV2XHolder -> { data?.let { @@ -306,6 +320,9 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter< MsgBoxType.NOTICE -> { notice } + MsgBoxType.NDE ->{ + nde + } else -> { v2x } @@ -344,4 +361,10 @@ class MsgBoxToastAdapter(private val activity: Activity) : RecyclerView.Adapter< var clV2XLayout: ConstraintLayout = itemView.findViewById(R.id.clV2XLayout) } + //NDE + class BubbleNDEHolder(itemView: View): RecyclerView.ViewHolder(itemView){ + var tvNdeTitle: TextView = itemView.findViewById(R.id.tvNdeTitle) + var tvNdeContent: TextView = itemView.findViewById(R.id.tvNdeContent) + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_nde.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_nde.xml new file mode 100644 index 0000000000..894b67f435 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_box_nde.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_nde.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_nde.xml new file mode 100644 index 0000000000..de353aac66 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_bubble_nde.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_nde.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_nde.xml new file mode 100644 index 0000000000..420454ab7e --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_msg_toast_nde.xml @@ -0,0 +1,45 @@ + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_nde.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_nde.xml new file mode 100644 index 0000000000..fdd976c7f6 --- /dev/null +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/item_tab_nde.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml index 9e99cd8be8..fb0ef99aa8 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/values/strings.xml @@ -206,6 +206,7 @@ 域控制器连接状态图标 FSM图标 V2X图标 + NDE图标 故障发生时间减少 故障发生时间增加 diff --git a/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_nde.png b/core/mogo-core-res/src/main/function-hmi-res/drawable-xhdpi/icon_nde.png new file mode 100644 index 0000000000000000000000000000000000000000..bedbcedd07037aab7cf4804367efa2c52b4e159f GIT binary patch literal 19673 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