[2.13.2]消息盒子全程点击事件分发给业务侧进行后续处理

This commit is contained in:
xuxinchao
2023-01-16 14:53:55 +08:00
parent 8438d5307d
commit b91382d7c9
4 changed files with 85 additions and 2 deletions

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.data.enums.EventTypeEnumNew
import com.mogo.eagle.core.data.msgbox.*
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
@@ -112,7 +113,8 @@ class PassengerMsgBoxBubbleAdapter(private val activity: Activity): RecyclerView
holder.tvPassengerSummaryContent.text = summaryMsg.content
holder.tvPassengerSummaryCheck.setOnClickListener {
//跳转全览模式
CallerHmiManager.showSmallFragment()
// CallerHmiManager.showSmallFragment()
CallerMsgBoxEventListenerManager.invokeListener()
}
}
}

View File

@@ -10,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.data.enums.EventTypeEnumNew
import com.mogo.eagle.core.data.msgbox.*
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.glide.GlideApp
import com.mogo.eagle.core.utilcode.mogo.glide.transform.GlideRoundedCornersTransform
@@ -104,7 +105,8 @@ class PassengerMsgBoxListAdapter(private val activity: Activity): RecyclerView.A
holder.tvPassengerSummaryContent.text = summaryMsg.content
holder.tvPassengerSummaryCheck.setOnClickListener {
//跳转全览模式
CallerHmiManager.showSmallFragment()
// CallerHmiManager.showSmallFragment()
CallerMsgBoxEventListenerManager.invokeListener()
}
}
}

View File

@@ -0,0 +1,9 @@
package com.mogo.eagle.core.function.api.msgbox
/**
* @author XuXinChao
* @date 2023/1/16
* 消息盒子事件监听回调
*/
interface IMsgBoxEventListener {
fun onSummaryClickEvent()
}

View File

@@ -0,0 +1,70 @@
package com.mogo.eagle.core.function.call.msgbox
import androidx.annotation.Nullable
import com.mogo.eagle.core.function.api.msgbox.IMsgBoxEventListener
import com.mogo.eagle.core.function.call.base.CallerBase
import java.util.concurrent.ConcurrentHashMap
/**
* @author XuXinChao
* @date 2023/1/16
* 消息盒子事件监听管理
*/
object CallerMsgBoxEventListenerManager: CallerBase() {
private val statusListeners: ConcurrentHashMap<String, IMsgBoxEventListener> =
ConcurrentHashMap()
/**
* 添加数据监听
* @param tag 标记,用来注销监听使用
* @param listener 监听回调
*/
fun addListener(@Nullable tag: String,@Nullable listener: IMsgBoxEventListener){
if (statusListeners.containsKey(tag)) {
return
}
statusListeners[tag] = listener
}
/**
* 删除状态监听
* @param tag 标记,用来注销监听使用
*/
fun removeListener(@Nullable tag: String) {
if (!statusListeners.containsKey(tag)) {
return
}
statusListeners.remove(tag)
}
/**
* 删除状态监听
* @param listener 要删除的监听对象
*/
fun removeListener(@Nullable listener: IMsgBoxEventListener){
if (!statusListeners.containsValue(listener)) {
return
}
var tag = ""
statusListeners.forEach {
if (it.value == listener) {
tag = it.key
statusListeners.remove(it.key)
}
}
}
/**
* 触发监听
*/
fun invokeListener(){
statusListeners.forEach {
val tag = it.key
val listener = it.value
listener.onSummaryClickEvent()
}
}
}