diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt index 891208987a..f07a7ca796 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/bean/UnmannedTaskBean.kt @@ -1,7 +1,5 @@ package com.mogo.och.taxi.bean -import android.text.Spanned -import androidx.core.text.HtmlCompat import com.mogo.eagle.core.data.BaseData /** @@ -73,16 +71,6 @@ data class QueryCurrentTaskRespBean(var data: Result?) : BaseData() { var startSite: Site?, var endSite: Site?, var order: OrderDetail? ) { - companion object { - @JvmStatic - fun getCurrentTaskTotalAndDurationHtml(mileage: Float, duration: Int): Spanned { - val strHtml = - ("全程 " + " $mileage " + " 公里 " - + ",总用时 " + " $duration " + " 分钟") - return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY) - } - } - // servingStatus = 0 //暂停接单 = 1 //开始接单 //taskType = 1 //虚拟任务 = 2 //接驾任务 = 3 //送驾任务 //currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt index cb5d39a442..f0b9751e52 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiCurrentTaskFragment.kt @@ -187,7 +187,7 @@ class TaxiCurrentTaskFragment : BaseFragment(), is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> { taskOtherInfo.text = - QueryCurrentTaskRespBean.Result.getCurrentTaskTotalAndDurationHtml( + TaskUtils.getCurrentTaskTotalAndDurationHtml( taskAndOrderUiState.mileage, taskAndOrderUiState.duration ) diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt index 7a4809e47d..40bec78b41 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiNextTaskFragment.kt @@ -1,7 +1,6 @@ package com.mogo.och.taxi.ui import android.annotation.SuppressLint -import android.app.Activity import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.os.Bundle @@ -12,7 +11,6 @@ import com.mogo.och.taxi.R import com.mogo.och.taxi.bean.OrderDetail import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.taxi.constant.TaskTypeEnum -import com.mogo.och.taxi.ui.base.TaxiFragment import kotlinx.android.synthetic.main.task_fragment_current.endStationName import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd @@ -29,10 +27,15 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv * @date: 2023/7/24 */ class TaxiNextTaskFragment : BaseFragment() { - private val mData: MutableList = ArrayList() + companion object { + const val TAG = "TaxiNextTaskFragment" - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + fun newInstance(): TaxiNextTaskFragment { + val args = Bundle() + val fragment = TaxiNextTaskFragment() + fragment.arguments = args + return fragment + } } override fun getLayoutId(): Int { @@ -40,32 +43,30 @@ class TaxiNextTaskFragment : BaseFragment() { } override fun getTagName(): String { - return "TaxiNextTaskFragment" + return javaClass.simpleName } override fun initViews() { - showNoOrderView() + showNoTaskView() } - fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) { + fun onTaskDataChanged(model: QueryCurrentTaskRespBean.Result?) { if (model?.order == null) { - showNoOrderView() + showNoTaskView() return } if (model.taskType == TaskTypeEnum.VirtualTask.code) { val order = model.order - updateOrderUI(order!!) - + updateTaskUI(order!!) } else { - showNoOrderView() + showNoTaskView() } - } @SuppressLint("SetTextI18n") - private fun updateOrderUI(order: OrderDetail) { - showOrderView() + private fun updateTaskUI(order: OrderDetail) { + showTaskView() taskOtherInfo.visibility = View.GONE naviToStart.visibility = View.GONE naviToEnd.visibility = View.GONE @@ -77,7 +78,6 @@ class TaxiNextTaskFragment : BaseFragment() { HtmlCompat.FROM_HTML_MODE_LEGACY ) - order.orderStartSite?.let { startStationName.text = it.siteName } @@ -88,7 +88,7 @@ class TaxiNextTaskFragment : BaseFragment() { taskTypeTv.text = resources.getString(R.string.task_order) taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null) - updateOrderBottomBtn( + updateTaskContainerBottomBtn( getString(R.string.waiting_server), Color.parseColor("#4DFFFFFF"), Color.parseColor("#4D1D5EF3"), @@ -96,7 +96,7 @@ class TaxiNextTaskFragment : BaseFragment() { ) } - private fun updateOrderBottomBtn( + private fun updateTaskContainerBottomBtn( txt: String?, txtColorId: Int, bgColorId: Int, @@ -110,33 +110,13 @@ class TaxiNextTaskFragment : BaseFragment() { taskClickBtn.isClickable = isClickable } - private fun showNoOrderView() { + private fun showNoTaskView() { noTaskData.visibility = View.VISIBLE mCurrentTaskLayout.visibility = View.GONE } - private fun showOrderView() { + private fun showTaskView() { noTaskData.visibility = View.GONE mCurrentTaskLayout.visibility = View.VISIBLE } - - companion object { - - const val TAG = "TaxiNextTaskFragment" - - @SuppressLint("StaticFieldLeak") - private var mTaxiFragment: TaxiFragment? = null - - @SuppressLint("StaticFieldLeak") - private var mActivity: Activity? = null - fun newInstance( - activity: Activity?, - ): TaxiNextTaskFragment { - mActivity = activity - val args = Bundle() - val fragment = TaxiNextTaskFragment() - fragment.arguments = args - return fragment - } - } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt index 053f6d8641..4e3d63ef1c 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/task/TaxiTaskTabFragment.kt @@ -1,12 +1,12 @@ package com.mogo.och.taxi.ui -import android.annotation.SuppressLint import android.graphics.Color import android.graphics.Typeface import android.os.Bundle import android.util.TypedValue import android.view.View import android.widget.TextView +import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentPagerAdapter @@ -32,6 +32,8 @@ import me.jessyan.autosize.utils.AutoSizeUtils * @desc: 司机端任务fragment 容器,展示了“进行中”和“待服务”的任务信息 * 任务:可以理解为对应的是一个自动驾驶任务 * 任务类型:演练任务 / 接驾任务 / 送驾任务 + * DriveToNearestStationTask: 一种特殊任务,人工驾驶去最近的站点任务。每次 开启接单 后后端都会返回离当前最近的站点,车辆需要 + * 开到此站点后才能进入无人化接单的整体流程 * 订单:是面向C端小程序的一个概念,用户下单后产生的是一个订单,后端会将一个订单分解成 接驾任务和送驾任务 并派发到 * 车端来执行 * 任务和订单的对应:1.如果是一个演练任务,是后端自动生成的,没有和C端订单挂钩 @@ -41,6 +43,10 @@ class TaxiTaskTabFragment : BaseFragment() { companion object { const val TAG = "TaxiTaskTabFragment" + const val TAB_POSITION_CURRENT = 0 + const val TAB_POSITION_NEXT = 1 + val mTabTitles = arrayOf("进行中", "待服务") + fun newInstance(): TaxiTaskTabFragment { val args = Bundle() val fragment = TaxiTaskTabFragment() @@ -49,45 +55,43 @@ class TaxiTaskTabFragment : BaseFragment() { } } - private val mTabTitles = arrayOf("进行中", "待服务") private val mFragments: MutableList = ArrayList() private var currentTaskFragment: TaxiCurrentTaskFragment? = null private var nextTaskFragment: TaxiNextTaskFragment? = null + override fun getLayoutId(): Int { return R.layout.taxi_server_orders_panel } override fun getTagName(): String { - return "TaxiTaskTabFragment" + return this.javaClass.simpleName } override fun initViews() { - initOrderTab() + initTaskTab() } - private fun initOrderTab() { - for (i in mTabTitles.indices) { + private fun initTaskTab() { + for (position in mTabTitles.indices) { val tab = module_och_taxi_tab.newTab() tab.view.setBackgroundColor(Color.parseColor("#00000000")) val tabView = View.inflate(activity, R.layout.taxi_tab_item_custom, null) as TextView - tabView.text = mTabTitles[i] + tabView.text = mTabTitles[position] tabView.height = AutoSizeUtils.dp2px(context, 120f) tab.customView = tabView - if (0 == i) { + if (TAB_POSITION_CURRENT == position) { module_och_taxi_tab.addTab(tab, true) - changeTabLayoutTabUI(tab, true) + changeTabLayoutUI(tab, true) currentTaskFragment = TaxiCurrentTaskFragment.newInstance( parentFragment as TaxiFragment? ) mFragments.add(currentTaskFragment!!) - } else if (1 == i) { + } else if (TAB_POSITION_NEXT == position) { module_och_taxi_tab.addTab(tab) - changeTabLayoutTabUI(tab, false) - nextTaskFragment = TaxiNextTaskFragment.newInstance( - activity - ) + changeTabLayoutUI(tab, false) + nextTaskFragment = TaxiNextTaskFragment.newInstance() mFragments.add(nextTaskFragment!!) } } @@ -96,15 +100,16 @@ class TaxiTaskTabFragment : BaseFragment() { module_och_taxi_tab.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) { module_och_taxi_view_pager.currentItem = tab.position - changeTabLayoutTabUI(tab, true) + changeTabLayoutUI(tab, true) } override fun onTabUnselected(tab: TabLayout.Tab) { - changeTabLayoutTabUI(tab, false) + changeTabLayoutUI(tab, false) } override fun onTabReselected(tab: TabLayout.Tab) {} }) + module_och_taxi_view_pager.addOnPageChangeListener(object : OnPageChangeListener { override fun onPageScrolled( position: Int, @@ -119,37 +124,40 @@ class TaxiTaskTabFragment : BaseFragment() { override fun onPageScrollStateChanged(state: Int) {} }) - module_och_taxi_view_pager.adapter = OrdersFragmentAdapter( + + module_och_taxi_view_pager.adapter = TaskTabFragmentAdapter( childFragmentManager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ) } - @SuppressLint("UseCompatLoadingForDrawables") - private fun changeTabLayoutTabUI(tab: TabLayout.Tab, isSelected: Boolean) { + private fun changeTabLayoutUI(tab: TabLayout.Tab, isSelected: Boolean) { val textView = tab.customView!!.findViewById(R.id.tab_title) as TextView if (isSelected) { - textView.background = activity?.getDrawable(R.drawable.taxi_driver_tab_item_bg) + textView.background = + ContextCompat.getDrawable(requireContext(), R.drawable.taxi_driver_tab_item_bg) textView.setTextSize( TypedValue.COMPLEX_UNIT_PX, AutoSizeUtils.dp2px(context, 40f).toFloat() ) - d(SceneConstant.M_TAXI + TAG, "SelectTv = " + textView.text) textView.typeface = Typeface.defaultFromStyle(Typeface.BOLD) textView.setTextColor(Color.parseColor("#FFFFFF")) + + d(SceneConstant.M_TAXI + TAG, "SelectTv = " + textView.text) } else { textView.background = null textView.setTextSize( TypedValue.COMPLEX_UNIT_PX, - AutoSizeUtils.dp2px(getContext(), 36f).toFloat() + AutoSizeUtils.dp2px(context, 36f).toFloat() ) - d(SceneConstant.M_TAXI + TAG, "unSelectTv = " + textView.text) textView.typeface = Typeface.defaultFromStyle(Typeface.NORMAL) textView.setTextColor(Color.parseColor("#CCD4F5")) + + d(SceneConstant.M_TAXI + TAG, "unSelectTv = " + textView.text) } } - internal inner class OrdersFragmentAdapter( + internal inner class TaskTabFragmentAdapter( fragmentManager: FragmentManager, behavior: Int ) : @@ -175,31 +183,31 @@ class TaxiTaskTabFragment : BaseFragment() { } } - fun onNaviToEndAMap(isShow: Boolean) { + fun onNaviToEndStationByAMap(isShow: Boolean) { if (null == currentTaskFragment) return - currentTaskFragment!!.onNaviToEndAmap(isShow) + currentTaskFragment!!.onNaviToEndStationByAmap(isShow) } - fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) { + fun onCurrentTaskTripInfoChanged(meters: Long, timeInSecond: Long) { if (null == currentTaskFragment) return - currentTaskFragment!!.updateDistanceAndTime(meters, timeInSecond) + currentTaskFragment!!.updateCurrentTaskTripInfo(meters, timeInSecond) } - fun onOperationStatusChanged() { + fun onCarTakeOrderStatusChanged() { if (null == currentTaskFragment) return - currentTaskFragment!!.onOperationStatusChanged() + currentTaskFragment!!.onCarTakeOrderStatusChanged() } - fun updateOrderChanged(model: QueryCurrentTaskRespBean.Result?) { + fun onTaskDataChanged(result: QueryCurrentTaskRespBean.Result?) { if (null == nextTaskFragment) return - if (model != null && model.taskType == TaskTypeEnum.VirtualTask.code - && model.order != null) { + if (result != null && result.taskType == TaskTypeEnum.VirtualTask.code + && result.order != null + ) { VoiceNotice.showNotice("已为您提前接到下一订单,待完成当前任务后服务") wait_order_num.visibility = View.VISIBLE } else { wait_order_num.visibility = View.GONE } - - nextTaskFragment!!.updateOrderChanged(model) + nextTaskFragment!!.onTaskDataChanged(result) } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt index 8b209c6749..e850610b71 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/utils/TaskUtils.kt @@ -64,4 +64,11 @@ object TaskUtils { } return HtmlCompat.fromHtml(strHtml13, HtmlCompat.FROM_HTML_MODE_LEGACY) } + + fun getCurrentTaskTotalAndDurationHtml(mileage: Float, duration: Int): Spanned { + val strHtml = + ("全程 " + " $mileage " + " 公里 " + + ",总用时 " + " $duration " + " 分钟") + return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY) + } } \ No newline at end of file