From e680c485ecf07ff426b6845ab31c8e907d320794 Mon Sep 17 00:00:00 2001 From: aibingbing Date: Thu, 26 Sep 2024 17:54:44 +0800 Subject: [PATCH] =?UTF-8?q?[6.7.0][=E5=B7=A5=E5=85=B7=E7=AE=B1]=20refactor?= =?UTF-8?q?:=20ToolKitDataManager=20=E7=9B=91=E5=90=AC=E7=99=BB=E5=BD=95/?= =?UTF-8?q?=E7=99=BB=E5=87=BA=20=E6=9D=A5=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=92=8C=E5=8F=8D=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=88=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E8=BD=A6=E5=9E=8B=E5=92=8C=E4=B8=9A=E5=8A=A1=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E7=9A=84=E5=88=87=E6=8D=A2=EF=BC=89;=20refactor:=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B9=E6=B3=95=E8=B0=83=E7=94=A8=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=89=93=20&=20=E9=81=BF=E5=85=8D=E5=A4=9A=E6=AC=A1?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=88=9D=E5=A7=8B=E5=8C=96=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../function/hmi/bone/tab/ToolKitTabView.kt | 3 +- .../hmi/bone/toolkit/ToolKitDataManager.kt | 67 +++++++++++++++++-- .../hmi/bone/toolkit/ToolKitListAdapter.kt | 2 +- 3 files changed, 62 insertions(+), 10 deletions(-) diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ToolKitTabView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ToolKitTabView.kt index d00c3b496b..e05ad0f368 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ToolKitTabView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/tab/ToolKitTabView.kt @@ -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) } } } \ 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/bone/toolkit/ToolKitDataManager.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt index 31e17a63ae..3bed3e83df 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitDataManager.kt @@ -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() + 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 ) { 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 ) { 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 ) { 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 ) { 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 { + Logger.i(TAG, "invokeGetToolkitAllTags") + if (!AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + Logger.i(TAG, "invokeGetToolkitAllTags, 不是司机屏, 返回空") + return emptySet() + } return getToolKitTags() } fun invokeRemoveToolkitByTag(toolTagList: List) { +// 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(toolList)) // } } + + override fun onLoginStatusUpdate(isLogin: Boolean) { + super.onLoginStatusUpdate(isLogin) + Logger.i(TAG, "onLoginStatusUpdate isLogin=$isLogin") + if (!isLogin) { + unInit() + } else { + AppStateManager.currentActivity()?.also { + init(it) + } + } + } } \ 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/bone/toolkit/ToolKitListAdapter.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitListAdapter.kt index 6a087c3b50..ffd369ca41 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitListAdapter.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/bone/toolkit/ToolKitListAdapter.kt @@ -32,7 +32,7 @@ class ToolKitListAdapter(var items: List) : (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,