[6.7.0][工具箱] refactor: ToolKitDataManager 监听登录/登出 来初始化和反初始化(依赖车型和业务模式的切换);
refactor: 增加方法调用日志打 & 避免多次重复初始化;
This commit is contained in:
@@ -17,7 +17,6 @@ import com.mogo.eagle.core.function.hmi.bone.toolkit.ToolKitListDiffCallback
|
||||
import com.mogo.eagle.core.function.hmi.bone.toolkit.ToolKitViewModel
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.mogo.view.GridSpacingItemDecoration
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import kotlinx.android.synthetic.main.view_tool_kit_tab.view.recyclerView
|
||||
import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
|
||||
@@ -77,6 +76,6 @@ class ToolKitTabView @JvmOverloads constructor(
|
||||
result.dispatchUpdatesTo(adapter)
|
||||
}.also { observer = it })
|
||||
|
||||
context?.also { ToolKitDataManager.checkAndAddRomaItem(it) }
|
||||
context?.also { ToolKitDataManager.addItemDependOnFunctionBuildConfig(it) }
|
||||
}
|
||||
}
|
||||
@@ -12,17 +12,19 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
|
||||
import com.mogo.eagle.core.function.api.och.toolkit.IToolKitItemClickListener
|
||||
import com.mogo.eagle.core.function.api.och.toolkit.ToolKitCustomItemAddParam
|
||||
import com.mogo.eagle.core.function.api.och.toolkit.ToolKitDefaultItemAddParam
|
||||
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.hmi.CallerHmiManager
|
||||
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
|
||||
import com.mogo.eagle.core.function.hmi.R
|
||||
import com.mogo.eagle.core.function.hmi.bone.toolkit.custom.ToolDriverRomaView
|
||||
import com.mogo.eagle.core.function.hmi.bone.toolkit.custom.ToolRestartSystemView
|
||||
import com.mogo.eagle.core.function.hmi.bone.toolkit.custom.ToolStopServiceView
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.SopView
|
||||
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
|
||||
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.Logger
|
||||
import com.mogo.eagle.core.utilcode.util.ActivityUtils
|
||||
import com.mogo.eagle.core.utilcode.util.AppStateManager
|
||||
import com.mogo.eagle.core.utilcode.util.NetworkUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.biz.AIDataCollectWindow
|
||||
@@ -30,7 +32,7 @@ import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
object ToolKitDataManager : IToolKitItemClickListener {
|
||||
object ToolKitDataManager : IToolKitItemClickListener, IOrderListener {
|
||||
const val TAG = "ToolKitDataManager"
|
||||
|
||||
enum class ToolTypeEnum {
|
||||
@@ -50,6 +52,8 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
|
||||
val toolList = ArrayList<ToolKitBean>()
|
||||
|
||||
private var hasInit = false
|
||||
|
||||
fun addListener(tag: String, listener: IToolKitItemClickListener) {
|
||||
if (listeners.containsKey(tag)) {
|
||||
return
|
||||
@@ -62,9 +66,17 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
}
|
||||
|
||||
fun init(ctx: Context) {
|
||||
Logger.i(TAG, "init")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "init, 不是司机屏,跳过")
|
||||
return
|
||||
}
|
||||
if (hasInit) {
|
||||
Logger.i(TAG, "init, hasInit=$hasInit 跳过")
|
||||
return
|
||||
}
|
||||
// 注册登录/登出 监听
|
||||
CallerOrderListenerManager.addListener(TAG, this)
|
||||
// 添加默认的工具箱items
|
||||
toolList.also {
|
||||
it += ToolKitBean(
|
||||
@@ -102,8 +114,8 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
getDefaultItemView(ctx, "上报", R.drawable.icon_toolkit_item_ai_report)
|
||||
)
|
||||
}
|
||||
// 漫游
|
||||
checkAndAddRomaItem(ctx)
|
||||
// 依赖FunctionBuildConfig设置后判断才能添加的item放这里添加
|
||||
addItemDependOnFunctionBuildConfig(ctx)
|
||||
addListener(TAG, this)
|
||||
|
||||
kotlin.runCatching {
|
||||
@@ -111,14 +123,18 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
?: throw IllegalStateException("ctx: $ctx is a instance of ViewModelStoreOwner.")
|
||||
viewModel = ViewModelProvider(owner).get(ToolKitViewModel::class.java)
|
||||
}
|
||||
hasInit = true
|
||||
}
|
||||
|
||||
fun unInit() {
|
||||
Logger.i(TAG, "unInit")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "unInit, 不是司机屏, 跳过")
|
||||
return
|
||||
}
|
||||
removeListener(TAG)
|
||||
toolList.clear()
|
||||
hasInit = false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -207,10 +223,10 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
}
|
||||
|
||||
/**
|
||||
* ToolKitDataManager基于调用方调用时机可能会很早,FunctionBuildConfig里数据可能还没设置好,在view加载
|
||||
* 时在检查一次
|
||||
* ToolKitDataManager基于调用方调用时机可能会很早,有些item添加是需要根据当前车型、业务模式、项目判断后才能添加
|
||||
* 依赖FunctionBuildConfig在登录后的设置,这些工具Item 在view加载时再检查一次
|
||||
*/
|
||||
fun checkAndAddRomaItem(ctx: Context) {
|
||||
fun addItemDependOnFunctionBuildConfig(ctx: Context) {
|
||||
if (toolList.map { it.toolTag }.contains(ToolTypeEnum.ROMA.name)) {
|
||||
Logger.i(TAG, "checkAndAddRomaItem 已经添加 跳过")
|
||||
return
|
||||
@@ -247,6 +263,10 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
toolTags: Set<String>
|
||||
) {
|
||||
Logger.i(TAG, "invokeAddSingleToolKitDefaultItem, param=$param")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "invokeAddSingleToolKitDefaultItem, 不是司机屏, 跳过")
|
||||
return
|
||||
}
|
||||
if (toolTags.contains(param.toolTag)) {
|
||||
Logger.i(TAG, "invokeAddSingleToolKitDefaultItem, 重复的toolTag, 不执行添加")
|
||||
return
|
||||
@@ -265,6 +285,10 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
list: ArrayList<ToolKitDefaultItemAddParam>
|
||||
) {
|
||||
Logger.i(TAG, "invokeAddMultiToolKitDefaultItem, size=${list.size}")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "invokeAddMultiToolKitDefaultItem, 不是司机屏, 跳过")
|
||||
return
|
||||
}
|
||||
val toolTags = getToolKitTags()
|
||||
synchronized(toolList) {
|
||||
list.forEach {
|
||||
@@ -280,6 +304,10 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
toolTags: Set<String>
|
||||
) {
|
||||
Logger.i(TAG, "invokeAddSingleToolKitCustomItem, param=$param")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "invokeAddSingleToolKitCustomItem, 不是司机屏, 跳过")
|
||||
return
|
||||
}
|
||||
if (toolTags.contains(param.toolTag)) {
|
||||
Logger.i(TAG, "invokeAddSingleToolKitCustomItem, 重复的toolTag, 不执行添加")
|
||||
return
|
||||
@@ -298,6 +326,10 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
list: ArrayList<ToolKitCustomItemAddParam>
|
||||
) {
|
||||
Logger.i(TAG, "invokeAddMultiToolKitCustomItem, size=${list.size}")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "invokeAddMultiToolKitCustomItem, 不是司机屏, 跳过")
|
||||
return
|
||||
}
|
||||
val toolTags = getToolKitTags()
|
||||
synchronized(toolList) {
|
||||
list.forEach {
|
||||
@@ -308,10 +340,19 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
}
|
||||
|
||||
fun invokeGetToolkitAllTags(): Set<String> {
|
||||
Logger.i(TAG, "invokeGetToolkitAllTags")
|
||||
if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
Logger.i(TAG, "invokeGetToolkitAllTags, 不是司机屏, 返回空")
|
||||
return emptySet()
|
||||
}
|
||||
return getToolKitTags()
|
||||
}
|
||||
|
||||
fun invokeRemoveToolkitByTag(toolTagList: List<String>) {
|
||||
// if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
|
||||
// Logger.i(TAG, "invokeRemoveToolkitByTag, 不是司机屏, 跳过")
|
||||
// return
|
||||
// }
|
||||
// val defaultToolTags = ToolTypeEnum.values().map { it.name }
|
||||
// synchronized(toolList) {
|
||||
// val targetList = toolList.filter { !defaultToolTags.contains(it.toolTag) && toolTagList.contains(it.toolTag) }
|
||||
@@ -319,4 +360,16 @@ object ToolKitDataManager : IToolKitItemClickListener {
|
||||
// viewModel?.updateToolKitData(ArrayList<ToolKitBean>(toolList))
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onLoginStatusUpdate(isLogin: Boolean) {
|
||||
super.onLoginStatusUpdate(isLogin)
|
||||
Logger.i(TAG, "onLoginStatusUpdate isLogin=$isLogin")
|
||||
if (!isLogin) {
|
||||
unInit()
|
||||
} else {
|
||||
AppStateManager.currentActivity()?.also {
|
||||
init(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,7 +32,7 @@ class ToolKitListAdapter(var items: List<ToolKitBean>) :
|
||||
(it.parent as ViewGroup).removeView(it)
|
||||
}
|
||||
holder.containerView.addView(it)
|
||||
it.setOnClickListener(object : OnPreventFastClickListener(500L) {
|
||||
it.setOnClickListener(object : OnPreventFastClickListener(300L) {
|
||||
override fun onClickImpl(v: View?) {
|
||||
ToolKitDataManager.invokeItemClick(
|
||||
data.toolTag,
|
||||
|
||||
Reference in New Issue
Block a user