[Taxi无人化] refactor: task抽取 step 2
This commit is contained in:
@@ -142,12 +142,12 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
override fun onChangeOperationStatus() {
|
||||
super.onChangeOperationStatus()
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.onOperationStatusChanged()
|
||||
taskTabFragment!!.get()!!.onCarTakeOrderStatusChanged()
|
||||
}
|
||||
|
||||
fun updateNextTaskFragment(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.updateOrderChanged(taskAndOrder)
|
||||
taskTabFragment!!.get()!!.onTaskDataChanged(taskAndOrder)
|
||||
}
|
||||
|
||||
fun switchVRFlatMode(isVRMode: Boolean) {
|
||||
@@ -209,7 +209,7 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
fun onNaviToEnd(isAmap: Boolean, isShow: Boolean) {
|
||||
if (isAmap) {
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.onNaviToEndAMap(isShow)
|
||||
taskTabFragment!!.get()!!.onNaviToEndStationByAMap(isShow)
|
||||
} else if (isShow) { //使用routing数据
|
||||
showRoutingToStationFragment(true)
|
||||
} else {
|
||||
@@ -245,7 +245,7 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
|
||||
fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long) {
|
||||
if (null == taskTabFragment || taskTabFragment!!.get() == null) return
|
||||
taskTabFragment!!.get()!!.onCurrentOrderDistToEndChanged(meters, timeInSecond)
|
||||
taskTabFragment!!.get()!!.onCurrentTaskTripInfoChanged(meters, timeInSecond)
|
||||
}
|
||||
|
||||
private fun testRouteInfoUpload() {
|
||||
|
||||
@@ -5,9 +5,9 @@ import android.graphics.Color
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.Html
|
||||
import android.view.View
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.text.HtmlCompat
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@@ -16,17 +16,15 @@ import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02
|
||||
import com.mogo.eagle.core.function.main.MainMoGoApplication
|
||||
import com.mogo.eagle.core.network.utils.GsonUtil
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel
|
||||
import com.mogo.och.common.module.map.ICommonNaviChangedCallback
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import com.mogo.och.common.module.wigets.OCHCommitDialog
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.OrderDetail
|
||||
@@ -41,13 +39,14 @@ import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_O
|
||||
import com.mogo.och.taxi.model.TaxiModel
|
||||
import com.mogo.och.taxi.ui.base.TaxiFragment
|
||||
import com.mogo.och.taxi.ui.task.TaxiCurrentTaskViewModel
|
||||
import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState
|
||||
import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState
|
||||
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
|
||||
import com.mogo.och.taxi.utils.MapMakerManager
|
||||
import com.mogo.och.taxi.utils.TaskUtils
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endPoint
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.endStationName
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToStart
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.noTaskData
|
||||
@@ -60,9 +59,6 @@ import kotlinx.android.synthetic.main.task_fragment_current.taskStatus
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.taskTypeTv
|
||||
import kotlinx.android.synthetic.main.taxi_no_data_common_view.noOrderDataTv
|
||||
import kotlinx.coroutines.flow.map
|
||||
import java.util.Calendar
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
@@ -95,7 +91,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
override fun getTagName(): String {
|
||||
return "TaxiCurrentTaskFragment"
|
||||
return this.javaClass.simpleName
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
@@ -116,7 +112,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
/**
|
||||
* 是否有正在进行的订单,进行UI显示
|
||||
*
|
||||
* @param being
|
||||
* @param hasCurrentTask
|
||||
*/
|
||||
private fun initContainerView(hasCurrentTask: Boolean) {
|
||||
d(
|
||||
@@ -126,11 +122,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
try {
|
||||
if (hasCurrentTask) {
|
||||
noTaskData.visibility = View.GONE
|
||||
mBeingOrderLayout.visibility = View.VISIBLE
|
||||
mCurrentTaskLayout.visibility = View.VISIBLE
|
||||
} else {
|
||||
noTaskData.visibility = View.VISIBLE
|
||||
noOrderDataTv.text = "暂无进行中订单"
|
||||
mBeingOrderLayout.visibility = View.GONE
|
||||
mCurrentTaskLayout.visibility = View.GONE
|
||||
}
|
||||
} catch (e: NullPointerException) { //可能会出现订单信息已经轮询回来,但进行中页面控件还未初始化完成的情况
|
||||
TaxiModel.clearCurrentOCHOrder()
|
||||
@@ -158,17 +154,17 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
//监听返回的数据状态
|
||||
lifecycleScope.launchWhenStarted {
|
||||
mViewModel.uiStateFlow.map { it.taskAndOrderUiState }.collect { taskAndOrderUiState ->
|
||||
mViewModel.uiStateFlow.map { it.taskWithOrderUIState }.collect { taskAndOrderUiState ->
|
||||
d(TAG, "uiStateFlow-initViewModelObserver: $taskAndOrderUiState")
|
||||
when (taskAndOrderUiState) {
|
||||
is TaskAndOrderUiState.INIT -> {
|
||||
is TaskWithOrderUIState.Init -> {
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.TASKANDORDER -> {
|
||||
mDriveToNearestStationTask = taskAndOrderUiState.untruthTask
|
||||
mCurrentTaskWithOrder = taskAndOrderUiState.taskAndOrder
|
||||
is TaskWithOrderUIState.TaskWithOrder -> {
|
||||
mDriveToNearestStationTask = taskAndOrderUiState.driveToNearestStationTask
|
||||
mCurrentTaskWithOrder = taskAndOrderUiState.taskWithOrder
|
||||
|
||||
if ((taskAndOrderUiState.untruthTask == null
|
||||
if ((taskAndOrderUiState.driveToNearestStationTask == null
|
||||
&& mCurrentTaskWithOrder != null
|
||||
&& mCurrentTaskWithOrder!!.endSite == null)
|
||||
|| mCurrentTaskWithOrder == null
|
||||
@@ -178,15 +174,15 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
return@collect
|
||||
}
|
||||
|
||||
if (taskAndOrderUiState.untruthTask != null) {
|
||||
updateDriveToNearestStationTaskView(taskAndOrderUiState.untruthTask)
|
||||
if (taskAndOrderUiState.driveToNearestStationTask != null) {
|
||||
updateViewByDriveToNearestStationTask(taskAndOrderUiState.driveToNearestStationTask)
|
||||
} else {
|
||||
updateNextTaskFragment(taskAndOrderUiState.taskAndOrder)
|
||||
updateCurrentTaskAndOrderStatusChanged(taskAndOrderUiState.taskAndOrder)
|
||||
updateNextTaskFragment(taskAndOrderUiState.taskWithOrder)
|
||||
updateViewByCurrentTaskWithOrder(taskAndOrderUiState.taskWithOrder)
|
||||
}
|
||||
}
|
||||
|
||||
is TaskAndOrderUiState.UPDATEORDERMILEANDDUR -> {
|
||||
is TaskWithOrderUIState.UpdateTaskTripInfo -> {
|
||||
taskOtherInfo.text =
|
||||
QueryCurrentTaskRespBean.Result.getCurrentTaskTotalAndDurationHtml(
|
||||
taskAndOrderUiState.mileage,
|
||||
@@ -198,10 +194,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDriveToNearestStationTaskView(driveToNearestStationTask: StartServiceRespBean.Result?) {
|
||||
private fun updateViewByDriveToNearestStationTask(driveToNearestStationTask: StartServiceRespBean.Result?) {
|
||||
if (driveToNearestStationTask == null) return
|
||||
initContainerView(true)
|
||||
// DriverToNearestStationTask 更新
|
||||
// DriverToNearestStationTask 任务更新
|
||||
taskStatus.visibility = View.VISIBLE
|
||||
taskTypeTv.visibility = View.GONE
|
||||
cancelOrder.visibility = View.GONE
|
||||
@@ -244,8 +240,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
fun onOperationStatusChanged() {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseReceivingOrder)
|
||||
fun onCarTakeOrderStatusChanged() {
|
||||
mViewModel.sendUiIntent(UnmannedIntent.StartOrPauseTakeOrder)
|
||||
}
|
||||
|
||||
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
|
||||
@@ -272,10 +268,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
/**
|
||||
* 任务和订单信息
|
||||
* 更新当前任务和订单信息
|
||||
*/
|
||||
@SuppressLint("SetTextI18n", "UseCompatLoadingForDrawables")
|
||||
fun updateCurrentTaskAndOrderStatusChanged(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) {
|
||||
if (taskAndOrder == null) return
|
||||
if ((taskAndOrder.endSite == null || taskAndOrder.currentStatus == TaskStatusEnum.CompleteTask.code)
|
||||
&& taskAndOrder.order == null
|
||||
@@ -293,15 +289,39 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
* 当前任务是接驾任务,显示订单状态+运营单 订单显示在进行中, 任务不再显示
|
||||
*/
|
||||
val taskType = taskAndOrder.taskType // 任务类型
|
||||
val order = taskAndOrder.order // 订单
|
||||
val startSite = taskAndOrder.startSite //进行的任务
|
||||
val endSite = taskAndOrder.endSite //进行的任务
|
||||
val currentStatus = taskAndOrder.currentStatus // 任务的状态
|
||||
|
||||
updateUIShowStatus(taskType, currentStatus, order)
|
||||
val order = taskAndOrder.order // 订单信息
|
||||
val startSite = taskAndOrder.startSite // 起点
|
||||
val endSite = taskAndOrder.endSite // 终点
|
||||
val currentStatus = taskAndOrder.currentStatus // 任务的状态 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
|
||||
when (taskType) {
|
||||
TaskTypeEnum.None.code -> {
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> { //演练任务
|
||||
cancelOrder.visibility = View.GONE
|
||||
orderPhoneAndNum.visibility = View.GONE
|
||||
taskClickBtn.visibility = View.GONE
|
||||
|
||||
naviToStart.visibility = View.GONE
|
||||
taskTypeTv.visibility = View.VISIBLE
|
||||
naviToEnd.visibility =
|
||||
if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE
|
||||
taskOtherInfo.visibility =
|
||||
if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 接驾任务 或 送驾任务
|
||||
order.also {
|
||||
handleOrderView(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
when (taskType) {
|
||||
TaskTypeEnum.VirtualTask.code -> {// 演练任务
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
updateOrderUI(order)
|
||||
@@ -331,7 +351,6 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
updateMapMarkers()
|
||||
|
||||
updateRemainDistanceAndTime(false)
|
||||
}
|
||||
|
||||
@@ -394,14 +413,18 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
} else {
|
||||
d(
|
||||
M_TAXI + TAG,
|
||||
"CurrentTaskAndOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder)
|
||||
"CurrentTaskWithOrder == " + GsonUtil.jsonFromObject(mCurrentTaskWithOrder)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateOrderUI(order: OrderDetail) {
|
||||
taskTypeTv.text = resources.getString(R.string.task_order)
|
||||
taskTypeTv.background = resources.getDrawable(R.drawable.task_order_type_btn_bg, null)
|
||||
taskTypeTv.background =
|
||||
ContextCompat.getDrawable(
|
||||
MainMoGoApplication.getApp().applicationContext,
|
||||
R.drawable.task_order_type_btn_bg
|
||||
)
|
||||
orderPhoneAndNum.text = HtmlCompat.fromHtml(
|
||||
"<font color=\"#FFFFFF\"> " + order.bookingUserPhone + "</font>" +
|
||||
"<font color=\"#6473B2\"> | </font>" +
|
||||
@@ -414,24 +437,25 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
when (order.orderStatus) {
|
||||
TaxiOrderStatusEnum.None.code -> { //无
|
||||
initContainerView(false)
|
||||
removeAllMapMarker()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.ArriveAtEnd.code -> { //到达目的地
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_end),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
hideNavi()
|
||||
hideNaviBtns()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToEnd.code -> { //送驾中
|
||||
taskStatus.text = resources.getString(R.string.task_start_end_site)
|
||||
updateStartAndEndStationPointByStatus(true)
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_close),
|
||||
Color.parseColor("#FFFFFF"),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
@@ -440,10 +464,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.UserArriveAtStart.code, TaxiOrderStatusEnum.ArriveAtStart.code -> {
|
||||
//乘客到达上车点,验证成功 ; 到达乘客上车点
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
//乘客到达上车点, 验证成功 ; 到达乘客上车点
|
||||
taskStatus.text = resources.getString(R.string.arrived_start_site)
|
||||
updateOrderBottomBtn(
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
updateTaskContainerBottomBtn(
|
||||
if (order.orderStatus == TaxiOrderStatusEnum.UserArriveAtStart.code)
|
||||
getString(R.string.module_och_taxi_order_server_start)
|
||||
else getString(R.string.module_och_taxi_order_server_start_wait_check),
|
||||
@@ -451,14 +475,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
Color.parseColor("#FF1D5EF3"),
|
||||
true
|
||||
)
|
||||
updateOtherInfo()
|
||||
hideNavi()
|
||||
hideNaviBtns()
|
||||
taskOtherInfo.text = TaskUtils.getWaitTimeHtml()
|
||||
}
|
||||
|
||||
TaxiOrderStatusEnum.OnTheWayToStart.code -> { //前往上车地点
|
||||
taskStatus.text = resources.getString(R.string.task_start_start_site)
|
||||
updateStartAndEndStationPointByStatus(false)
|
||||
updateOrderBottomBtn(
|
||||
updateTaskContainerBottomBtn(
|
||||
getString(R.string.module_och_taxi_order_server_start),
|
||||
Color.parseColor("#4DFFFFFF"),
|
||||
Color.parseColor("#4D1D5EF3"),
|
||||
@@ -468,60 +492,6 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateOtherInfo() {
|
||||
val currentCale = DateTimeUtils.getCurrentDateTime()
|
||||
val currentDay =
|
||||
DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd)
|
||||
|
||||
currentCale.add(Calendar.MINUTE, 10)
|
||||
val strHtml13: String = if (currentDay == DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.yyyy_MM_dd
|
||||
)
|
||||
) {
|
||||
("<font color=\"#CAD6FF\">免费等待至 </font>"
|
||||
+ "<b><font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.HH_mm
|
||||
) + "</big></b></font>")
|
||||
} else {
|
||||
("<font color=\"#CAD6FF\">免费等待至</font>"
|
||||
+ "<font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.MM_dd_HH_mm
|
||||
) + "</big></font>")
|
||||
}
|
||||
taskOtherInfo.text = HtmlCompat.fromHtml(strHtml13, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
private fun updateUIShowStatus(taskType: Int, currentStatus: Int, order: OrderDetail?) {
|
||||
when (taskType) {
|
||||
TaskTypeEnum.None.code -> {
|
||||
if (order != null && currentStatus == TaskStatusEnum.CompleteTask.code) {
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
|
||||
TaskTypeEnum.VirtualTask.code -> { //演练任务
|
||||
cancelOrder.visibility = View.GONE
|
||||
orderPhoneAndNum.visibility = View.GONE
|
||||
taskClickBtn.visibility = View.GONE
|
||||
// currentStatus 0:空闲 1:获取任务 2:开始任务 3:到达目的地
|
||||
naviToStart.visibility = View.GONE
|
||||
taskTypeTv.visibility = View.VISIBLE
|
||||
naviToEnd.visibility =
|
||||
if (currentStatus >= TaskStatusEnum.StartTask.code) View.VISIBLE else View.GONE
|
||||
taskOtherInfo.visibility =
|
||||
if (currentStatus == TaskStatusEnum.GetTask.code) View.GONE else View.VISIBLE
|
||||
}
|
||||
|
||||
TaskTypeEnum.ToOrderEndTask.code, TaskTypeEnum.ToOrderStartTask.code -> {// 运营单(接驾任务、送驾任务)
|
||||
if (order == null) return
|
||||
handleOrderView(order)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleOrderView(order: OrderDetail?) {
|
||||
if (order == null) return
|
||||
cancelOrder.visibility = View.VISIBLE
|
||||
@@ -542,13 +512,12 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
|
||||
private fun hideNavi() {
|
||||
private fun hideNaviBtns() {
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.GONE
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(false)
|
||||
mTaxiFragment?.showRoutingToStationFragment(false)
|
||||
requireParentFragment()
|
||||
}
|
||||
|
||||
private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) {
|
||||
@@ -568,40 +537,18 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
/**
|
||||
* 剩余里程和剩余时间
|
||||
* @param meters m
|
||||
* @param meters 米
|
||||
* @param timeInSecond 秒
|
||||
*/
|
||||
fun updateDistanceAndTime(meters: Long, timeInSecond: Long) {
|
||||
// CallerLogger.INSTANCE.d(M_TAXI + TAG,"meters = "+meters+"timeInSecond ="+timeInSecond);
|
||||
fun updateCurrentTaskTripInfo(meters: Long, timeInSecond: Long) {
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
if (mCurrentTaskWithOrder!!.endSite == null && mDriveToNearestStationTask == null) return
|
||||
|
||||
var dis = "0"
|
||||
var disUnit = "公里"
|
||||
if (meters > 0) {
|
||||
if (meters / 1000 < 1) {
|
||||
disUnit = "米"
|
||||
dis = meters.toFloat().roundToInt().toString()
|
||||
} else {
|
||||
disUnit = "公里"
|
||||
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
|
||||
}
|
||||
}
|
||||
val min = ceil(timeInSecond.toDouble() / 60f).toInt()
|
||||
val strHtml2 =
|
||||
("<font color=\"#CAD6FF\">里程 </font>" + "<b><font color=\"#FFFFFF\">" + dis + "</font></b>" + "<font color=\"#CAD6FF\"> " + disUnit + "</font>"
|
||||
+ "<font color=\"#CAD6FF\">,剩余 </font>" + "<b><font color=\"#FFFFFF\">" + min + "</font></b>" + "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
|
||||
taskOtherInfo.text = HtmlCompat.fromHtml(strHtml2, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
taskOtherInfo.text = TaskUtils.getCurrentTaskTripHtml(meters, timeInSecond)
|
||||
}
|
||||
|
||||
// private fun speekVoice200mTipsOnce() {
|
||||
// showNotice(resources.getString(R.string.module_och_taxi_order_arrive_end_200m_tip))
|
||||
// }
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
super.onDestroyView()
|
||||
}
|
||||
|
||||
private fun startOrEndService() {
|
||||
@@ -677,7 +624,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
@RequiresApi(Build.VERSION_CODES.N)
|
||||
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
|
||||
updateDistanceAndTime(meters.toLong(), timeInSecond)
|
||||
updateCurrentTaskTripInfo(meters.toLong(), timeInSecond)
|
||||
}
|
||||
|
||||
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
|
||||
@@ -710,7 +657,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}, 3000)
|
||||
}
|
||||
|
||||
fun onNaviToEndAmap(isShow: Boolean) {
|
||||
fun onNaviToEndStationByAmap(isShow: Boolean) {
|
||||
if (mCurrentTaskWithOrder == null) return
|
||||
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(
|
||||
@@ -745,7 +692,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
MapMakerManager.removeAllMapMarkerByOwner(TYPE_MARKER_TAXI_ORDER)
|
||||
}
|
||||
|
||||
private fun updateOrderBottomBtn(
|
||||
private fun updateTaskContainerBottomBtn(
|
||||
txt: String?,
|
||||
txtColorId: Int,
|
||||
bgColorId: Int,
|
||||
|
||||
@@ -36,7 +36,7 @@ import com.mogo.och.taxi.network.CarServiceManager
|
||||
import com.mogo.och.taxi.network.CarServiceManager.cancelOrder
|
||||
import com.mogo.och.taxi.network.CarServiceManager.contrailList
|
||||
import com.mogo.och.taxi.network.CarServiceManager.queryCarOrderByOrderNo
|
||||
import com.mogo.och.taxi.ui.unmanned.TaskAndOrderUiState
|
||||
import com.mogo.och.taxi.ui.unmanned.TaskWithOrderUIState
|
||||
import com.mogo.och.taxi.ui.unmanned.UnmannedIntent
|
||||
import com.mogo.och.taxi.ui.unmanned.UnmannedState
|
||||
import io.reactivex.Observable
|
||||
@@ -59,7 +59,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
private var mContext : Context = AbsMogoApplication.getApp().applicationContext
|
||||
|
||||
override fun initUiState(): UnmannedState {
|
||||
return UnmannedState(TaskAndOrderUiState.INIT)
|
||||
return UnmannedState(TaskWithOrderUIState.Init)
|
||||
}
|
||||
|
||||
override fun handleIntent(intent: IUiIntent) {
|
||||
@@ -69,7 +69,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
startOrStopOrderLoop(true)
|
||||
}
|
||||
|
||||
is UnmannedIntent.StartOrPauseReceivingOrder -> {//开始、暂停接单
|
||||
is UnmannedIntent.StartOrPauseTakeOrder -> {//开始、暂停接单
|
||||
updateCarStatus()
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
sendUiState {
|
||||
copy(
|
||||
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder,
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(mCurrentTaskAndOrder,
|
||||
TaxiModel.getCurUntruthTask()
|
||||
)
|
||||
)
|
||||
@@ -249,7 +249,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
sendUiState {
|
||||
copy(
|
||||
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(mCurrentTaskAndOrder,
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(mCurrentTaskAndOrder,
|
||||
untruthTask)
|
||||
)
|
||||
}
|
||||
@@ -258,7 +258,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
private fun updateNoTaskAndOrderUi() {
|
||||
sendUiState {
|
||||
copy(
|
||||
taskAndOrderUiState = TaskAndOrderUiState.TASKANDORDER(null,
|
||||
taskWithOrderUIState = TaskWithOrderUIState.TaskWithOrder(null,
|
||||
TaxiModel.getCurUntruthTask()
|
||||
)
|
||||
)
|
||||
@@ -428,7 +428,7 @@ class TaxiCurrentTaskViewModel : BaseViewModel<UnmannedState, UnmannedIntent>(){
|
||||
|
||||
sendUiState {
|
||||
copy(
|
||||
taskAndOrderUiState = TaskAndOrderUiState.UPDATEORDERMILEANDDUR(mileage,
|
||||
taskWithOrderUIState = TaskWithOrderUIState.UpdateTaskTripInfo(mileage,
|
||||
duration)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ 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.mBeingOrderLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.mCurrentTaskLayout
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToEnd
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.naviToStart
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.noTaskData
|
||||
@@ -111,12 +111,12 @@ class TaxiNextTaskFragment : BaseFragment() {
|
||||
|
||||
private fun showNoOrderView() {
|
||||
noTaskData.visibility = View.VISIBLE
|
||||
mBeingOrderLayout.visibility = View.GONE
|
||||
mCurrentTaskLayout.visibility = View.GONE
|
||||
}
|
||||
|
||||
private fun showOrderView() {
|
||||
noTaskData.visibility = View.GONE
|
||||
mBeingOrderLayout.visibility = View.VISIBLE
|
||||
mCurrentTaskLayout.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
@@ -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
|
||||
@@ -28,6 +28,8 @@ import me.jessyan.autosize.utils.AutoSizeUtils
|
||||
* @desc: 司机端任务fragment 容器,展示了“进行中”和“待服务”的任务信息
|
||||
* 任务:可以理解为对应的是一个自动驾驶任务
|
||||
* 任务类型:演练任务 / 接驾任务 / 送驾任务
|
||||
* DriveToNearestStationTask: 一种特殊任务,人工驾驶去最近的站点任务。每次 开启接单 后后端都会返回离当前最近的站点,车辆需要
|
||||
* 开到此站点后才能进入无人化接单的整体流程
|
||||
* 订单:是面向C端小程序的一个概念,用户下单后产生的是一个订单,后端会将一个订单分解成 接驾任务和送驾任务 并派发到
|
||||
* 车端来执行
|
||||
* 任务和订单的对应:1.如果是一个演练任务,是后端自动生成的,没有和C端订单挂钩
|
||||
@@ -37,6 +39,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()
|
||||
@@ -45,42 +51,42 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
private val mTabTitles = arrayOf("进行中", "待服务")
|
||||
private val mFragments: MutableList<Fragment> = 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)
|
||||
changeTabLayoutUI(tab, false)
|
||||
nextTaskFragment = TaxiNextTaskFragment.newInstance(
|
||||
activity
|
||||
)
|
||||
@@ -92,15 +98,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,
|
||||
@@ -115,37 +122,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<View>(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
|
||||
) :
|
||||
@@ -171,23 +181,23 @@ 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
|
||||
nextTaskFragment!!.updateOrderChanged(model)
|
||||
nextTaskFragment!!.updateOrderChanged(result)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import com.mogo.och.taxi.base.IUiIntent
|
||||
sealed class UnmannedIntent: IUiIntent{
|
||||
|
||||
//开始接单 、 暂停接单
|
||||
object StartOrPauseReceivingOrder : UnmannedIntent()
|
||||
object StartOrPauseTakeOrder : UnmannedIntent()
|
||||
|
||||
object StartTaskOrOrderLooper : UnmannedIntent()
|
||||
|
||||
|
||||
@@ -5,11 +5,18 @@ import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.bean.StartServiceRespBean
|
||||
|
||||
|
||||
data class UnmannedState(val taskAndOrderUiState: TaskAndOrderUiState) : IUiState
|
||||
data class UnmannedState(val taskWithOrderUIState: TaskWithOrderUIState) : IUiState
|
||||
|
||||
sealed class TaskAndOrderUiState {
|
||||
object INIT : TaskAndOrderUiState()
|
||||
data class TASKANDORDER(val taskAndOrder: QueryCurrentTaskRespBean.Result?, val untruthTask: StartServiceRespBean.Result?) : TaskAndOrderUiState()//演练任务、接驾、送驾任务
|
||||
sealed class TaskWithOrderUIState {
|
||||
object Init : TaskWithOrderUIState()
|
||||
|
||||
data class UPDATEORDERMILEANDDUR(val mileage: Float, val duration: Int): TaskAndOrderUiState()
|
||||
/**
|
||||
* 演练任务、接驾任务、送驾任务
|
||||
*/
|
||||
data class TaskWithOrder(
|
||||
val taskWithOrder: QueryCurrentTaskRespBean.Result?,
|
||||
val driveToNearestStationTask: StartServiceRespBean.Result?
|
||||
) : TaskWithOrderUIState()
|
||||
|
||||
data class UpdateTaskTripInfo(val mileage: Float, val duration: Int) : TaskWithOrderUIState()
|
||||
}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.mogo.och.taxi.utils
|
||||
|
||||
import android.text.Spanned
|
||||
import androidx.core.text.HtmlCompat
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.NumberFormatUtil
|
||||
import java.util.Calendar
|
||||
import kotlin.math.ceil
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
object TaskUtils {
|
||||
|
||||
/**
|
||||
* 剩余里程和剩余时间 html
|
||||
*/
|
||||
fun getCurrentTaskTripHtml(meters: Long, timeInSecond: Long): Spanned {
|
||||
var dis = "0"
|
||||
var disUnit = "公里"
|
||||
if (meters > 0) {
|
||||
if (meters / 1000 < 1) {
|
||||
disUnit = "米"
|
||||
dis = meters.toFloat().roundToInt().toString()
|
||||
} else {
|
||||
disUnit = "公里"
|
||||
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
|
||||
}
|
||||
}
|
||||
val min = ceil(timeInSecond.toDouble() / 60f).toInt()
|
||||
val strHtml =
|
||||
("<font color=\"#CAD6FF\">里程 </font>"
|
||||
+ "<b><font color=\"#FFFFFF\">"
|
||||
+ dis + "</font></b>"
|
||||
+ "<font color=\"#CAD6FF\"> "
|
||||
+ disUnit + "</font>"
|
||||
+ "<font color=\"#CAD6FF\">,剩余 </font>"
|
||||
+ "<b><font color=\"#FFFFFF\">"
|
||||
+ min + "</font></b>"
|
||||
+ "<font color=\"#CAD6FF\"> 分钟</font>")
|
||||
return HtmlCompat.fromHtml(strHtml, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
|
||||
fun getWaitTimeHtml(): Spanned {
|
||||
val currentCale = DateTimeUtils.getCurrentDateTime()
|
||||
val currentDay =
|
||||
DateTimeUtil.formatCalendarToString(currentCale, DateTimeUtil.yyyy_MM_dd)
|
||||
currentCale.add(Calendar.MINUTE, 10)
|
||||
val strHtml13: String = if (currentDay == DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.yyyy_MM_dd
|
||||
)
|
||||
) {
|
||||
("<font color=\"#CAD6FF\">免费等待至 </font>"
|
||||
+ "<b><font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.HH_mm
|
||||
) + "</big></b></font>")
|
||||
} else {
|
||||
("<font color=\"#CAD6FF\">免费等待至</font>"
|
||||
+ "<font color=\"#FFFFFF\"><big>" + DateTimeUtil.formatCalendarToString(
|
||||
currentCale,
|
||||
DateTimeUtil.MM_dd_HH_mm
|
||||
) + "</big></font>")
|
||||
}
|
||||
return HtmlCompat.fromHtml(strHtml13, HtmlCompat.FROM_HTML_MODE_LEGACY)
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/mBeingOrderLayout"
|
||||
android:id="@+id/mCurrentTaskLayout"
|
||||
android:layout_width="@dimen/module_och_taxi_panel_width"
|
||||
android:layout_height="match_parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
|
||||
Reference in New Issue
Block a user