From ebdfd507523a6035dc6f7cce251419fd1a96e091 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Sun, 27 Apr 2025 14:09:21 +0800 Subject: [PATCH] =?UTF-8?q?[8.0.0]PNCActions=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unmanned/passenger/ui/aiview/AiView.kt | 52 ++------------- .../ui/aiview/PNCActionsViewModel.kt | 64 +++++++++++++++++++ 2 files changed, 70 insertions(+), 46 deletions(-) create mode 100644 OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt index bddca4e95c..708fbdf71a 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/AiView.kt @@ -48,12 +48,12 @@ class AiView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 -) : MotionLayout(context, attrs, defStyleAttr), AIViewModel.AiViewCallback, - IMoGoAutopilotPlanningActionsListener{ +) : MotionLayout(context, attrs, defStyleAttr), AIViewModel.AiViewCallback{ private var viewModel:AIViewModel?=null + private var pncActionsModel:PNCActionsViewModel ?= null private var aiAnimator: BigFrameAnimatorContainer?=null private var aiAnimatorBg: BigFrameAnimatorContainer?=null @@ -226,7 +226,10 @@ class AiView @JvmOverloads constructor( ViewModelProvider(it).get(AIViewModel::class.java) } viewModel?.setViewCallback(this) - CallerPlanningActionsListenerManager.addListener(TAG, this) + pncActionsModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it)[PNCActionsViewModel::class.java] + } + pncActionsModel?.init() } private fun startListInfo(){ @@ -337,47 +340,4 @@ class AiView @JvmOverloads constructor( } } - override fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) { - try { - UiThreadHandler.post { - //TODO != - if (CallerAutoPilotStatusListenerManager.getState() != STATUS_AUTOPILOT_RUNNING) { - var actions: String? = null - var isPlanningFromServer = false - planningActionMsg.actionMsg?.let { - try { - if (it.drivingState.number == USING_RSI_LINK_VALUE) { - isPlanningFromServer = true - } - actions = PncActionsHelper.getAction( - it.drivingState.number, - it.drivingAction.number - ) - } catch (e: Exception) { - e.printStackTrace() - } - } - planningActionMsg.v2NActionMsgList?.forEach { v2nAction -> - if (v2nAction.drivingState.number == USING_RSI_LINK_VALUE) { - isPlanningFromServer = true - } - actions = PncActionsHelper.getAction( - v2nAction.drivingState.number, - v2nAction.drivingAction.number - ) - } - // update view - if(actions?.isNotEmpty() == true){ - val action = AIMessage.PNCAction(actions!!,actions!!) - AIMessageManager.post(action) - } - - } - } - } catch (e: Exception) { - e.printStackTrace() - } - } - - } \ No newline at end of file diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt new file mode 100644 index 0000000000..5df4483fa1 --- /dev/null +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/ui/aiview/PNCActionsViewModel.kt @@ -0,0 +1,64 @@ +package com.mogo.och.unmanned.passenger.ui.aiview + +import androidx.lifecycle.ViewModel +import com.mogo.eagle.core.data.autopilot.pnc.PncActionsHelper +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningActionsListener +import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener +import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerPlanningActionsListenerManager +import com.mogo.eagle.core.utilcode.util.UiThreadHandler +import com.mogo.och.unmanned.passenger.ui.aiview.bean.AIMessage +import mogo.telematics.pad.MessagePad + +class PNCActionsViewModel: ViewModel(), IMoGoAutopilotPlanningActionsListener { + + companion object{ + private const val TAG = "PNCActionsViewModel" + } + + fun init(){ + CallerPlanningActionsListenerManager.addListener(TAG, this) + } + + override fun pncActions(planningActionMsg: MessagePad.PlanningActionMsg) { + try { + UiThreadHandler.post { + if (CallerAutoPilotStatusListenerManager.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { + var actions: String? = null + var isPlanningFromServer = false + planningActionMsg.actionMsg?.let { + try { + if (it.drivingState.number == MessagePad.DrivingState.USING_RSI_LINK_VALUE) { + isPlanningFromServer = true + } + actions = PncActionsHelper.getAction( + it.drivingState.number, + it.drivingAction.number + ) + } catch (e: Exception) { + e.printStackTrace() + } + } + planningActionMsg.v2NActionMsgList?.forEach { v2nAction -> + if (v2nAction.drivingState.number == MessagePad.DrivingState.USING_RSI_LINK_VALUE) { + isPlanningFromServer = true + } + actions = PncActionsHelper.getAction( + v2nAction.drivingState.number, + v2nAction.drivingAction.number + ) + } + // update view + if(actions?.isNotEmpty() == true){ + val action = AIMessage.PNCAction(actions!!,actions!!) + AIMessageManager.post(action) + } + + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + +} \ No newline at end of file