[6.1.0] refactor: 使用FlowBus解耦TaxiFragment和TaxiCurrentTaskFragment ;
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package com.mogo.och.taxi.constant;
|
||||
|
||||
public interface TaxiDriverEventConst {
|
||||
|
||||
interface TaxiFragmentEvent {
|
||||
String EVENT_TYPE_SHOW_DEBUG_VIEW = "event_type_taxi_fragment_show_debug_view";
|
||||
String EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT = "event_type_taxi_fragment_show_amap_navi_to_station_fragment";
|
||||
String EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT = "event_type_taxi_fragment_show_routing_to_station_fragment";
|
||||
String EVENT_TYPE_START_NAVI_TO_END_STATION = "event_type_taxi_fragment_start_navi_to_end_station";
|
||||
}
|
||||
|
||||
interface TabFragmentEvent {
|
||||
String EVENT_TYPE_SHOW_RED_POINT = "event_type_tab_fragment_show_red_point";
|
||||
String EVENT_TYPE_TASK_WITH_ORDER_CHANGED = "event_type_tab_fragment_task_with_order_changed";
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
package com.mogo.och.taxi.constant
|
||||
|
||||
object TaxiDriverEventConst {
|
||||
val EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT = "event_type_tab_fragment_show_red_point"
|
||||
val EVENT_TYPE_TAB_FRAGMENT_TASK_WITH_ORDER_CHANGED = "event_type_tab_fragment_task_with_order_changed"
|
||||
}
|
||||
@@ -15,7 +15,9 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.provider.LoginService
|
||||
import com.mogo.och.common.module.utils.FlowBus
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.constant.TaxiDriverEventConst
|
||||
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.network.TaxiDriverLoginImpl
|
||||
import com.mogo.och.taxi.ui.personal.TaxiPersonalDialogFragment
|
||||
@@ -115,6 +117,7 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
|
||||
override fun initViews() {
|
||||
super.initViews()
|
||||
initFlowEvent()
|
||||
initFragment()
|
||||
hideDebugPanel()
|
||||
switchVRFlatMode(MogoStatusManager.getInstance().isVrMode)
|
||||
@@ -122,6 +125,25 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
|
||||
initOrderDebugView()
|
||||
}
|
||||
|
||||
private fun initFlowEvent() {
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW)
|
||||
.register(this) { _ ->
|
||||
clickOrderDebugView()
|
||||
}
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
|
||||
.register(this) { show ->
|
||||
showAmapNaviToStationFragment(show)
|
||||
}
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT)
|
||||
.register(this) { show ->
|
||||
showRoutingToStationFragment(show)
|
||||
}
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_START_NAVI_TO_END_STATION)
|
||||
.register(this) { show ->
|
||||
startNaviToEndStation(show)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initFragment() {
|
||||
taskTabFragment = WeakReference(TaxiTaskTabFragment.newInstance())
|
||||
val transaction: FragmentTransaction = childFragmentManager.beginTransaction()
|
||||
|
||||
@@ -41,7 +41,6 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER
|
||||
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER
|
||||
import com.mogo.och.taxi.ui.base.TaxiFragment
|
||||
import com.mogo.och.taxi.utils.MapMakerManager
|
||||
import com.mogo.och.taxi.utils.TaskUtils
|
||||
import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder
|
||||
@@ -76,10 +75,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
companion object {
|
||||
const val TAG = M_TAXI + "TaxiCurrentTaskFragment"
|
||||
private var mTaxiFragment: TaxiFragment? = null
|
||||
|
||||
fun newInstance(taxiFragment: TaxiFragment?): TaxiCurrentTaskFragment {
|
||||
mTaxiFragment = taxiFragment
|
||||
fun newInstance(): TaxiCurrentTaskFragment {
|
||||
val args = Bundle()
|
||||
val fragment = TaxiCurrentTaskFragment()
|
||||
fragment.arguments = args
|
||||
@@ -146,7 +143,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
|
||||
private fun initTaskDebugViewListener() {
|
||||
taskStatus.setOnLongClickListener {
|
||||
mTaxiFragment?.clickOrderDebugView()
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW)
|
||||
.post(this.lifecycleScope, true)
|
||||
false
|
||||
}
|
||||
}
|
||||
@@ -296,7 +294,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
}
|
||||
|
||||
private fun updateNextTaskFragment(result: QueryCurrentTaskRespBean.Result?) {
|
||||
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_TASK_WITH_ORDER_CHANGED)
|
||||
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED)
|
||||
.post(this.lifecycleScope, result)
|
||||
|
||||
if (result != null
|
||||
@@ -305,10 +303,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
&& result.currentStatus != TaskStatusEnum.CompleteTask.code
|
||||
) {
|
||||
VoiceNotice.showNotice("已为您提前接到下一订单,待完成当前任务后服务")
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT)
|
||||
.post(this.lifecycleScope, true)
|
||||
} else {
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT)
|
||||
.post(this.lifecycleScope, false)
|
||||
}
|
||||
}
|
||||
@@ -327,7 +325,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
|
||||
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
|
||||
d(TAG, "updateRemainDistanceAndTime ${currentTaskWithOrder.currentStatus}")
|
||||
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code){
|
||||
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) {
|
||||
if (currentTaskWithOrder.endSite != null) {
|
||||
startNaviToStation(
|
||||
isVoicePlay, currentTaskWithOrder.endSite!!.gcjLat,
|
||||
@@ -335,10 +333,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
)
|
||||
}
|
||||
|
||||
}else if(currentTaskWithOrder.currentStatus == TaskStatusEnum.CompleteTask.code &&
|
||||
currentTaskWithOrder.taskType <= TaskTypeEnum.ToOrderStartTask.code){
|
||||
} else if (currentTaskWithOrder.currentStatus == TaskStatusEnum.CompleteTask.code &&
|
||||
currentTaskWithOrder.taskType <= TaskTypeEnum.ToOrderStartTask.code
|
||||
) {
|
||||
taskOtherInfo.text = "已到达 ${currentTaskWithOrder.endSite?.siteName}"
|
||||
}else {
|
||||
} else {
|
||||
taskOtherInfo.text = "距离 -- 公里, 用时 -- 分钟"
|
||||
}
|
||||
}
|
||||
@@ -588,8 +587,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
naviToStart.visibility = View.GONE
|
||||
naviToEnd.visibility = View.GONE
|
||||
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(false)
|
||||
mTaxiFragment?.showRoutingToStationFragment(false)
|
||||
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
|
||||
.post(this.lifecycleScope, false)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT)
|
||||
.post(this.lifecycleScope, false)
|
||||
}
|
||||
|
||||
private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) {
|
||||
@@ -713,7 +715,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
* @param isShow
|
||||
*/
|
||||
private fun showNaviToEndStationFragment(isShow: Boolean) {
|
||||
mTaxiFragment?.startNaviToEndStation(isShow)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_START_NAVI_TO_END_STATION)
|
||||
.post(this.lifecycleScope, isShow)
|
||||
}
|
||||
|
||||
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
|
||||
@@ -723,7 +726,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
|
||||
d(TAG, "isPlay = $isPlay, isRestart=$isRestart")
|
||||
if (!isRestart) {
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(false)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
|
||||
.post(this.lifecycleScope, false)
|
||||
return
|
||||
}
|
||||
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
|
||||
@@ -753,10 +757,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
|
||||
fun onNaviToEndStationByAmap(isShow: Boolean) {
|
||||
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
|
||||
|
||||
mTaxiFragment?.showAmapNaviToStationFragment(
|
||||
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
isShow else true
|
||||
)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
|
||||
.post(
|
||||
this.lifecycleScope,
|
||||
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
isShow
|
||||
else
|
||||
true
|
||||
)
|
||||
updateRemainDistanceAndTime(
|
||||
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
|
||||
isShow else true
|
||||
|
||||
@@ -19,7 +19,6 @@ import com.mogo.och.common.module.utils.FlowBus
|
||||
import com.mogo.och.taxi.R
|
||||
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
|
||||
import com.mogo.och.taxi.constant.TaxiDriverEventConst
|
||||
import com.mogo.och.taxi.ui.base.TaxiFragment
|
||||
import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_tab
|
||||
import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_view_pager
|
||||
import kotlinx.android.synthetic.main.taxi_server_orders_panel.wait_order_num
|
||||
@@ -84,9 +83,7 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
if (TAB_POSITION_CURRENT == position) {
|
||||
module_och_taxi_tab.addTab(tab, true)
|
||||
changeTabLayoutUI(tab, true)
|
||||
currentTaskFragment = TaxiCurrentTaskFragment.newInstance(
|
||||
parentFragment as TaxiFragment?
|
||||
)
|
||||
currentTaskFragment = TaxiCurrentTaskFragment.newInstance()
|
||||
mFragments.add(currentTaskFragment!!)
|
||||
} else if (TAB_POSITION_NEXT == position) {
|
||||
module_och_taxi_tab.addTab(tab)
|
||||
@@ -184,11 +181,11 @@ class TaxiTaskTabFragment : BaseFragment() {
|
||||
}
|
||||
|
||||
private fun initEventBus() {
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT)
|
||||
FlowBus.with<Boolean>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT)
|
||||
.register(this) { show ->
|
||||
wait_order_num.visibility = if (show) View.VISIBLE else View.GONE
|
||||
}
|
||||
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_TASK_WITH_ORDER_CHANGED)
|
||||
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED)
|
||||
.register(this) { taskWithOrder ->
|
||||
nextTaskFragment?.onTaskDataChanged(taskWithOrder)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user