From cff56a1267bd5fe6b0bf0ae3e1ac3be9443116a4 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Mon, 30 Dec 2024 18:03:24 +0800 Subject: [PATCH] =?UTF-8?q?[6.9.0]=20[fea]=20[taxi]=20[=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=96=B0=E7=9A=84=E6=A0=87=E5=AE=9A=E7=AB=99=E7=82=B9]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/manager/loop/BizLoopManager.kt | 6 + .../module/wigets}/TaskBottomDecoration.kt | 11 +- .../common/src/main/res/values/colors.xml | 2 +- .../common/src/main/res/values/strings.xml | 2 + .../mogo/och/data/bean/BusStationBean.java | 4 + .../com/mogo/och/data/bean/SiteIntroduce.java | 3 + OCH/facade/script/och.gradle | 8 +- .../ui/switchtask/SwitchLineTaskAdapter.kt | 5 - .../weaknet/ui/switchtask/SwitchTaskView.kt | 5 +- .../taxi/bean/TaxiDriverCarServiceBean.kt | 10 + .../network/TaxiTaskWithOrderServiceApi.kt | 9 + .../TaxiTaskWithOrderServiceManager.kt | 15 +- .../unmanned/taxi/ui/task/TaxiTaskModel.kt | 20 +- .../itinerarycurrent/ItineraryCurrentView.kt | 74 +++-- .../itinerayswitch/ItinerarySwitchModel.kt | 11 +- .../itinerayswitch/ItinerarySwitchView.kt | 51 +++- .../ui/task/siteswitch/SwitchSiteAdapter.kt | 126 +++++++++ .../taxi/ui/task/siteswitch/SwitchSiteView.kt | 267 ++++++++++++++++++ .../ui/task/siteswitch/SwtichSiteModel.kt | 87 ++++++ ...switch_site_submit_text_color_selector.xml | 6 + .../res/drawable-nodpi/site_item_head.png | Bin 0 -> 610 bytes .../taxi_autopilot_bg_selector.xml | 7 - .../taxi_autopilot_status_bg.xml | 16 -- .../taxi_switch_site_bottom.png | Bin 0 -> 1877 bytes .../res/drawable/taxi_autopilot_status_bg.xml | 16 -- .../res/drawable/taxi_switch_site_normal.xml | 6 + .../drawable/taxi_switch_site_selected.xml | 6 + .../drawable/taxi_switch_site_selector.xml} | 6 +- .../taxi_switch_site_submit_normal.xml | 6 + .../taxi_switch_site_submit_selected.xml | 6 + .../taxi_switch_site_submit_selector.xml | 8 + .../main/res/layout/taxi_site_list_item.xml | 52 ++++ .../src/main/res/layout/taxi_switch_site.xml | 139 +++++++++ .../res/layout/unmanned_itinerary_current.xml | 11 + .../res/layout/unmanned_switch_itinerary.xml | 17 +- .../src/main/res/values/strings.xml | 5 + app/build.gradle | 2 +- 37 files changed, 917 insertions(+), 108 deletions(-) rename OCH/{shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask => common/common/src/main/java/com/mogo/och/common/module/wigets}/TaskBottomDecoration.kt (81%) create mode 100644 OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteAdapter.kt create mode 100644 OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteView.kt create mode 100644 OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwtichSiteModel.kt create mode 100644 OCH/taxi/unmanned-driver/src/main/res/color/taxi_switch_site_submit_text_color_selector.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/site_item_head.png delete mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_bg_selector.xml delete mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_status_bg.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_switch_site_bottom.png delete mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_autopilot_status_bg.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_normal.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selected.xml rename OCH/{offline/driver/src/main/res/drawable/offline_task_running_selector.xml => taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selector.xml} (66%) create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_normal.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selected.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selector.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/layout/taxi_site_list_item.xml create mode 100644 OCH/taxi/unmanned-driver/src/main/res/layout/taxi_switch_site.xml diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/loop/BizLoopManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/loop/BizLoopManager.kt index 582aefe573..05e3e2bbdb 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/loop/BizLoopManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/loop/BizLoopManager.kt @@ -122,6 +122,12 @@ object BizLoopManager { } } + fun runInMainThreadDelay(delay:Long,function:Runnable){ + ThreadUtils.runOnUiThreadDelayed({ + function.run() + },delay,ThreadUtils.MODE.QUEUE) + } + fun runInIoThread(runable:Runnable){ if(ThreadUtils.isMainThread()){ ThreadUtils.getIoPool().submit(runable) diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/TaskBottomDecoration.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/TaskBottomDecoration.kt similarity index 81% rename from OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/TaskBottomDecoration.kt rename to OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/TaskBottomDecoration.kt index 22f631e6a0..3ee657043a 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/TaskBottomDecoration.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/wigets/TaskBottomDecoration.kt @@ -1,15 +1,14 @@ -package com.mogo.och.weaknet.ui.switchtask +package com.mogo.och.common.module.wigets import android.graphics.Rect import android.view.View -import android.widget.LinearLayout import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS -class TaskBottomDecoration(val distance: Int) : RecyclerView.ItemDecoration() { +class TaskBottomDecoration(val distance: Int,val norDistance:Int) : RecyclerView.ItemDecoration() { private val TAG = M_BUS + "TaskBottomDecoration" @@ -42,6 +41,12 @@ class TaskBottomDecoration(val distance: Int) : RecyclerView.ItemDecoration() { } else { outRect.bottom = distance } + }else if(layoutManager is LinearLayoutManager){ + if(pos==itemCount-1) { + outRect.bottom = distance + }else{ + outRect.bottom = norDistance + } } //super.getItemOffsets(outRect, view, parent, state) } diff --git a/OCH/common/common/src/main/res/values/colors.xml b/OCH/common/common/src/main/res/values/colors.xml index d21dae923a..d89d53bd4a 100644 --- a/OCH/common/common/src/main/res/values/colors.xml +++ b/OCH/common/common/src/main/res/values/colors.xml @@ -46,6 +46,6 @@ #3B3D44 #2E323A #ffffffff - + #2EACFF \ No newline at end of file diff --git a/OCH/common/common/src/main/res/values/strings.xml b/OCH/common/common/src/main/res/values/strings.xml index 5ab5149b97..7845234bd0 100644 --- a/OCH/common/common/src/main/res/values/strings.xml +++ b/OCH/common/common/src/main/res/values/strings.xml @@ -39,4 +39,6 @@ 确认 取消 + 返回 + \ No newline at end of file diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java index 9d3d67b970..53ea4f8222 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/BusStationBean.java @@ -1,5 +1,6 @@ package com.mogo.och.data.bean; +import com.google.gson.annotations.SerializedName; import com.mogo.eagle.core.data.map.MogoLocation; import org.jetbrains.annotations.NotNull; @@ -14,12 +15,15 @@ import java.util.Objects; */ public class BusStationBean { private int siteId; + @SerializedName(value = "name",alternate = {"siteName"}) private String name; private String nameKr; private int seq; private double gcjLon; //高德 private double gcjLat; //高德 + @SerializedName(value = "lon",alternate = {"wgs84Lon"}) private double lon; //高精坐标 + @SerializedName(value = "lat",alternate = {"wgs84Lat"}) private double lat; //高精坐标 private int drivingStatus;//行驶信息,0初始值;1已经过;2当前站;3未到站 private boolean leaving;// 为出发false 出发true diff --git a/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java b/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java index 375769d687..431b895403 100644 --- a/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java +++ b/OCH/common/data/src/main/java/com/mogo/och/data/bean/SiteIntroduce.java @@ -2,6 +2,9 @@ package com.mogo.och.data.bean; import java.util.Objects; +/** + * 站点视频 + */ public class SiteIntroduce { private int type; private String url; diff --git a/OCH/facade/script/och.gradle b/OCH/facade/script/och.gradle index c49beba858..4c8554f943 100644 --- a/OCH/facade/script/och.gradle +++ b/OCH/facade/script/och.gradle @@ -4,11 +4,12 @@ project.dependencies { if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { } else { - + if(isDriver()){ + implementation project.project(':OCH:offline:driver') + } if (isCurrentDriver("C1")) { implementation project.project(':OCH:sweeper:driver') } else if (isCurrentDriver("B1")) { - implementation project.project(':OCH:offline:driver') implementation project.project(':OCH:shuttle:driver_weaknet') } else if (isCurrentPassenger("B1")) { implementation project.project(':OCH:shuttle:passenger_weaknet') @@ -21,7 +22,6 @@ project.dependencies { } else if (isCurrentPassenger("M1")) { implementation project.project(':OCH:shuttle:passenger_weaknet') } else if (isCurrentDriver("B2")) { - implementation project.project(':OCH:offline:driver') implementation project.project(':OCH:shuttle:driver_weaknet') } else if (isCurrentPassenger("B2")) { implementation project.project(':OCH:shuttle:passenger_weaknet') @@ -30,7 +30,6 @@ project.dependencies { } else if (isCurrentPassenger("T1T2")) { implementation project.project(':OCH:taxi:unmanned-passenger') } else if (isCurrentDriver("ALL")) { - implementation project.project(':OCH:offline:driver') implementation project.project(':OCH:taxi:unmanned-driver') implementation project.project(':OCH:charter:driver') implementation project.project(':OCH:sweeper:driver') @@ -41,7 +40,6 @@ project.dependencies { implementation project.project(':OCH:shuttle:passenger_weaknet') } else { - implementation project.project(':OCH:offline:driver') implementation project.project(':OCH:charter:driver') implementation project.project(':OCH:charter:passenger') implementation project.project(':OCH:sweeper:driver') diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt index 42638d5aca..31ea7bed83 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchLineTaskAdapter.kt @@ -68,7 +68,6 @@ class SwitchLineTaskAdapter( if(checkTask==task){ checkTask = null }else { - resetOther() mData.forEachIndexed { index, result -> if(checkTask == result){ checkTask = null @@ -85,10 +84,6 @@ class SwitchLineTaskAdapter( } } - private fun resetOther() { - - } - override fun getItemCount(): Int { return mData.size } diff --git a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt index af90f37929..0d33f106bc 100644 --- a/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt +++ b/OCH/shuttle/driver_weaknet/src/main/java/com/mogo/och/weaknet/ui/switchtask/SwitchTaskView.kt @@ -12,6 +12,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_ import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.utils.ResourcesUtils +import com.mogo.och.common.module.wigets.TaskBottomDecoration import com.mogo.och.common.module.wigets.WindowRelativeLayout import com.mogo.och.shuttle.weaknet.R import com.mogo.och.data.db.bean.LineDataBean @@ -65,9 +66,7 @@ class SwitchTaskView: WindowRelativeLayout, SwtichTaskModel.SwtichLineViewCallba mAdapter = SwitchLineTaskAdapter(context,null, mutableListOf()) rv_switch_task.setAdapter(mAdapter) rv_switch_task.addItemDecoration( - TaskBottomDecoration( - AutoSizeUtils.dp2px(context, 174f) - ) + TaskBottomDecoration(AutoSizeUtils.dp2px(context, 174f),0) ) actv_submit_task.onClick { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/bean/TaxiDriverCarServiceBean.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/bean/TaxiDriverCarServiceBean.kt index 7d8c004e0d..633a27349a 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/bean/TaxiDriverCarServiceBean.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/bean/TaxiDriverCarServiceBean.kt @@ -1,6 +1,7 @@ package com.mogo.och.unmanned.taxi.bean import com.mogo.eagle.core.data.BaseData +import com.mogo.och.data.bean.BusStationBean /** * @author: wangmingjun @@ -32,4 +33,13 @@ data class StartServiceRespBean(var data: Result?) : BaseData() { var wgs84Lon: Double, var wgs84Lat: Double ) +} + +data class StartServiceRespBeans(var data:List):BaseData() + + +data class StartStationBean(var distance2Current:Float):BusStationBean() { + fun toResult(): StartServiceRespBean.Result { + return StartServiceRespBean.Result(siteId.toLong(),name,gcjLat,gcjLon,lon,lat) + } } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceApi.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceApi.kt index eadf266293..7f8f56fe3c 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceApi.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceApi.kt @@ -16,6 +16,7 @@ import com.mogo.och.unmanned.taxi.bean.PrepareTaskRespBean import com.mogo.och.unmanned.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.unmanned.taxi.bean.StartServiceReqBean import com.mogo.och.unmanned.taxi.bean.StartServiceRespBean +import com.mogo.och.unmanned.taxi.bean.StartServiceRespBeans import com.mogo.och.unmanned.taxi.bean.StartTaskReqBean import io.reactivex.Observable import retrofit2.http.Body @@ -159,4 +160,12 @@ interface TaxiTaskWithOrderServiceApi { @Query("sn") sn: String? = OchSPManager.getSn() ): Observable + @Headers("Content-type:application/json;charset=UTF-8") + @GET("/och-taxi-cabin/api/business/v1/queryStartSiteListBySn") + fun queryStartSiteListBySn( + @Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId, + @Header("ticket") ticket: String = SharedPrefsMgr.getInstance().token, + @Query("sn") sn: String? = OchSPManager.getSn() + ): Observable + } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceManager.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceManager.kt index 96ee447e95..5625f74946 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceManager.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/network/TaxiTaskWithOrderServiceManager.kt @@ -7,6 +7,7 @@ import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.mogo.och.common.module.constant.OchCommonConst import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.common.module.network.OchCommonSubscribeImpl +import com.mogo.och.common.module.network.interceptor.transformIoTry import com.mogo.och.common.module.network.interceptor.transformTry import com.mogo.och.data.taxi.QueryCarOrderByNoReqBean import com.mogo.och.data.taxi.QueryCarOrderByNoRespBean @@ -19,6 +20,7 @@ import com.mogo.och.unmanned.taxi.bean.PrepareTaskRespBean import com.mogo.och.unmanned.taxi.bean.QueryCurrentTaskRespBean import com.mogo.och.unmanned.taxi.bean.StartServiceReqBean import com.mogo.och.unmanned.taxi.bean.StartServiceRespBean +import com.mogo.och.unmanned.taxi.bean.StartServiceRespBeans import com.mogo.och.unmanned.taxi.bean.StartTaskReqBean import com.mogo.och.unmanned.taxi.bean.TrajectoryListRespBean @@ -158,7 +160,7 @@ object TaxiTaskWithOrderServiceManager { } /** - * 服务完成 + * 取消虚拟任务并暂停接单 */ @JvmStatic fun resetInit( @@ -168,6 +170,17 @@ object TaxiTaskWithOrderServiceManager { .subscribe(OchCommonSubscribeImpl(context, callback, "orderCompleted")) } + /** + * 查询开始站点 + */ + @JvmStatic + fun queryStartSiteListBySn( + context: Context, callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryStartSiteListBySn().transformIoTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "orderCompleted")) + } + /** * 取消订单 diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt index eb2bd03738..64b9420e48 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/TaxiTaskModel.kt @@ -51,6 +51,7 @@ import com.mogo.och.common.module.manager.socket.cloud.action.OperateAction2 import com.mogo.och.common.module.map.AmapNaviToDestinationModel import com.mogo.och.common.module.network.OchCommonServiceCallback import com.mogo.och.bridge.utils.CoordinateCalculateRouteUtil.coordinateConverterWgsToGcjLocations +import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.utils.OCHThreadPoolManager import com.mogo.och.common.module.utils.RxUtils import com.mogo.och.common.module.voice.VoiceNotice @@ -1163,12 +1164,7 @@ object TaxiTaskModel { return } } - mDriveToNearestStationTask = data.data - mLastArrivedSiteId = -1L //开始标定站点任务时, 到达站点标志位需复位 - mTaxiCarServiceCallback?.onCarStartServiceSuccess( - mDriveToNearestStationTask, - mCurrentTaskWithOrder - ) + setCalibrationSite(data.data) } override fun onFail(code: Int, msg: String) { @@ -1183,6 +1179,17 @@ object TaxiTaskModel { }) } + fun setCalibrationSite(data: StartServiceRespBean.Result?) { + BizLoopManager.runInMainThread{ + mDriveToNearestStationTask = data + mLastArrivedSiteId = -1L //开始标定站点任务时, 到达站点标志位需复位 + mTaxiCarServiceCallback?.onCarStartServiceSuccess( + mDriveToNearestStationTask, + mCurrentTaskWithOrder + ) + } + } + /** * 以当前订单为基础,开启自动驾驶 */ @@ -1192,7 +1199,6 @@ object TaxiTaskModel { nodeAliasCode = ChainConstant.CHAIN_CODE_OCH_TAXI_START_AUTOPILOT, paramIndexes = [-1] ) - fun startAutopilotByClick() { //订单状态流转成功, 点击了开启自驾按钮, 启动自驾 if (QueryCurrentTaskRespBean.isTaskStartTaskType(mCurrentTaskWithOrder)) { diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerarycurrent/ItineraryCurrentView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerarycurrent/ItineraryCurrentView.kt index fb88a7f362..fdfe62a1d8 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerarycurrent/ItineraryCurrentView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerarycurrent/ItineraryCurrentView.kt @@ -17,7 +17,6 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListener import com.mogo.eagle.core.function.hmi.ui.widget.ItinerarySummaryDialog import com.mogo.eagle.core.network.utils.GsonUtil import com.mogo.eagle.core.utilcode.kotlin.onClick -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.i import com.mogo.eagle.core.utilcode.util.ClickUtils @@ -51,6 +50,7 @@ import com.mogo.och.unmanned.taxi.ui.task.TaskUiIntent import com.mogo.och.unmanned.taxi.ui.task.TaskWithOrderUIState import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel import com.mogo.och.unmanned.taxi.ui.task.cancleorder.CancleOrderView +import com.mogo.och.unmanned.taxi.ui.task.itinerayswitch.ItinerarySwitchModel import com.mogo.och.unmanned.taxi.utils.TaskUtils //演练单标识 import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.aciv_task_type_exercise @@ -75,6 +75,7 @@ import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_order import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.orderPhoneAndNum // 运营单标识 import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.aciv_task_type_order +import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.actv_switch_site // 取消订单 import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.cancelOrder import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.currentTaskStation @@ -103,6 +104,13 @@ import kotlinx.android.synthetic.main.unmanned_itinerary_current.view.trajectory import kotlinx.coroutines.flow.map +/** + * 1、标定单 + * 2、虚拟单 + * 3、运营单 + * 4、没有接单 + * 5、接单中拉去倒计时 + */ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineViewCallback, View.OnClickListener, ICommonNaviChangedCallback { @@ -125,6 +133,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi private var dialog: ItinerarySummaryDialog? = null private var viewModel: ItineraryCurrentModel?=null + private var viewModelSwitch: ItinerarySwitchModel?=null private var fragment: LifecycleOwner?=null @@ -202,6 +211,9 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi ViewModelProvider(it).get(ItineraryCurrentModel::class.java) } viewModel?.setDistanceCallback(this) + viewModelSwitch = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(ItinerarySwitchModel::class.java) + } initOnClickListener() initTaskDebugViewListener() initViewModelObserver() @@ -209,7 +221,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun initOnClickListener() { - CallerLogger.d(TAG,"initOnClickListener") + d(TAG,"initOnClickListener") naviToStart.setOnClickListener(this) naviToEnd.setOnClickListener(this) cancelTask.setOnClickListener(this) @@ -228,6 +240,9 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi actv_end_order.onClick { startOrEndService() } + actv_switch_site.onClick { + viewModelSwitch?.switchSite() + } } override fun onClick(v: View?) { @@ -278,7 +293,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi * 更新拉取任务倒计时 */ private fun updatePrepareTaskDelayUI(millisInFuture: Long, isStart: Boolean) { - CallerLogger.d(TAG,"updatePrepareTaskDelayUI") + d(TAG,"updatePrepareTaskDelayUI") DebugView.printInfoMsg("距离任务获取还有 ${DateTimeUtil.second2MMSS(millisInFuture / 1000)}") if (!isStart) { prepareTaskCountdownTv.visibility = View.GONE @@ -328,7 +343,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi * 更新当前任务和订单信息 */ private fun updateViewByCurrentTaskWithOrder(taskAndOrder: QueryCurrentTaskRespBean.Result?) { - CallerLogger.d(TAG,"updateViewByCurrentTaskWithOrder") + d(TAG,"updateViewByCurrentTaskWithOrder") if (taskAndOrder == null) return /** * 根据任务类型判断任务显示, @@ -383,7 +398,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi // 第一个特殊任务 也是虚拟任务 private fun updateViewByDriveToNearestStationTask(driveToNearestStationTask: StartServiceRespBean.Result?) { - CallerLogger.d(TAG,"updateViewByDriveToNearestStationTask 标定单") + d(TAG,"updateViewByDriveToNearestStationTask 标定单") if (driveToNearestStationTask == null) return initContainerView(true) // DriverToNearestStationTask 任务更新 @@ -395,6 +410,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi startStationName.text = resources.getString(R.string.task_current_loc) endStationName.text = driveToNearestStationTask.siteName aciv_task_type_exercise.setImageResource(R.drawable.taxi_task_calibration) + actv_switch_site.visibility = View.VISIBLE naviToStart.visibility = GONE setOrRemoveMapMaker( true, @@ -413,9 +429,10 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun showEmptyView() { - CallerLogger.d(TAG,"showEmptyView") + d(TAG,"showEmptyView") gourp_order.visibility = GONE aciv_task_type_exercise.visibility = GONE + actv_switch_site.visibility = View.GONE group_itinerary_info.visibility = GONE include_empty.visibility = VISIBLE prepareTaskCountdownTv.visibility = GONE @@ -429,7 +446,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun initTaskDebugViewListener() { - CallerLogger.d(TAG,"initTaskDebugViewListener") + d(TAG,"initTaskDebugViewListener") fragment?.let { fr-> aciv_task_type_exercise.setOnLongClickListener { FlowBus.with(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW) @@ -445,7 +462,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun startOrEndService() { - CallerLogger.d(TAG,"startOrEndService") + d(TAG,"startOrEndService") val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() if (currentTaskWithOrder?.order == null) return val order = currentTaskWithOrder.order @@ -468,7 +485,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun closeOrderDialog() { - CallerLogger.d(TAG,"closeOrderDialog") + d(TAG,"closeOrderDialog") val builder = CommonDialogStatus.Builder() val closeOrderDialog = builder .title(ResourcesUtils.getString(R.string.dialog_order_close_title)) @@ -495,7 +512,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi * @param isShow */ private fun showNaviToEndStationFragment() { - CallerLogger.d(TAG,"showNaviToEndStationFragment") + d(TAG,"showNaviToEndStationFragment") fragment?.let { TaxiTaskModel.startNaviToEndStation(true); } @@ -507,7 +524,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi * @param hasCurrentTask */ private fun initContainerView(hasCurrentTask: Boolean) { - CallerLogger.d(TAG,"initContainerView") + d(TAG,"initContainerView") d( TAG, "hasCurrentTask = $hasCurrentTask" @@ -530,6 +547,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi pathwayPoint.visibility = View.GONE // 演练单标识 aciv_task_type_exercise.visibility = View.GONE + actv_switch_site.visibility = View.GONE // 轨迹标识 trajectoryType.visibility = View.GONE cancelTask.visibility = View.GONE @@ -543,12 +561,12 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun removeAllMapMarker() { - CallerLogger.d(TAG,"removeAllMapMarker") + d(TAG,"removeAllMapMarker") MapMakerManager.removeAllMapMarkerByOwner(TYPE_MARKER_TAXI_ORDER) } private fun updateNextTaskFragment(result: QueryCurrentTaskRespBean.Result?) { - CallerLogger.d(TAG,"updateNextTaskFragment") + d(TAG,"updateNextTaskFragment") fragment?.let { FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED) .post(it.lifecycleScope, result) @@ -570,12 +588,13 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun updateOrderUI(order: OrderDetail) { - CallerLogger.d(TAG,"updateOrderUI") + d(TAG,"updateOrderUI") gourp_order.visibility = View.VISIBLE cancelOrder.visibility = if (order.orderStatus == TaxiOrderStatusEnum.ArriveAtEnd.code ) View.GONE else View.VISIBLE group_itinerary_info.visibility = View.VISIBLE aciv_task_type_exercise.visibility = View.GONE + actv_switch_site.visibility = View.GONE // orderStatus: 0 订单创建(为派单), 10 已派上司机(司机去往上车点), 20 司机到达上车点, // 30 乘客到达上车点, 40 服务中(去往目的地), 50 到达目的地, 60 已完成, 70 已取消 naviToStart.visibility = if (order.orderStatus @@ -676,7 +695,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi //展示虚拟订单 private fun updateVirtualTaskUI(taskAndOrder: QueryCurrentTaskRespBean.Result?) { - CallerLogger.d(TAG,"updateVirtualTaskUI") + d(TAG,"updateVirtualTaskUI") if (taskAndOrder == null) return val startSite = taskAndOrder.startSite // 起点 @@ -698,6 +717,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi pathwayPoint.visibility = View.GONE // 演练单标识 aciv_task_type_exercise.visibility = View.VISIBLE + actv_switch_site.visibility = View.GONE actv_end_order.visibility = GONE commonSlideViewStartServer.visibility = GONE @@ -724,7 +744,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun updatePathwayPoint(taskType: Int, endSiteName: String?) { - CallerLogger.d(TAG,"updatePathwayPoint") + d(TAG,"updatePathwayPoint") if (TextUtils.isEmpty(endSiteName)) return pathwayPoint.visibility = if (taskType == TaskTypeEnum.ToOrderStartTask.code) View.VISIBLE else View.GONE @@ -732,7 +752,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun updateMapMarkers(taskAndOrder: QueryCurrentTaskRespBean.Result?) { - CallerLogger.d(TAG,"updateMapMarkers") + d(TAG,"updateMapMarkers") if (taskAndOrder?.startSite != null && taskAndOrder.endSite != null ) { @@ -805,7 +825,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi isAdd: Boolean, uuid: String, lat: Double, lon: Double, resourceId: Int ) { - CallerLogger.d(TAG,"setOrRemoveMapMaker") + d(TAG,"setOrRemoveMapMaker") if (isAdd) { MapMakerManager.addMapMaker(TYPE_MARKER_TAXI_ORDER, uuid, lat, lon, resourceId) } else { @@ -817,7 +837,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi * 根据任务状态计算剩余历程和时间 */ private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) { - CallerLogger.d(TAG,"updateRemainDistanceAndTime") + d(TAG,"updateRemainDistanceAndTime") val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return d(TAG, "updateRemainDistanceAndTime ${currentTaskWithOrder.currentStatus}") if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) { @@ -838,7 +858,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) { - CallerLogger.d(TAG,"startNaviToStation") + d(TAG,"startNaviToStation") AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() val gcJ02Location = OchLocationManager.getGCJ02Location() val mCurLatitude = gcJ02Location.latitude @@ -852,7 +872,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun showDialog(){ - CallerLogger.d(TAG,"showDialog") + d(TAG,"showDialog") if(dialog==null&&context!=null){ } @@ -870,7 +890,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun dismissDialog(){ - CallerLogger.d(TAG,"dismissDialog") + d(TAG,"dismissDialog") dialog?.let { if(it.isShowing){ it.dismiss() @@ -880,7 +900,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } private fun hideNaviBtns() { - CallerLogger.d(TAG,"hideNaviBtns") + d(TAG,"hideNaviBtns") naviToStart.visibility = View.GONE naviToEnd.visibility = View.GONE AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi() @@ -894,12 +914,12 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) { - CallerLogger.d(TAG,"onCurrentNaviDistAndTimeChanged") + d(TAG,"onCurrentNaviDistAndTimeChanged") actv_distance_end.text = TaskUtils.getCurrentTaskDistance(meters.toLong())+" "+TaskUtils.getCurrentTaskTime(timeInSecond) } override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) { - CallerLogger.d(TAG,"reInitNaviAmap") + d(TAG,"reInitNaviAmap") d(TAG, "isPlay = $isPlay, isRestart=$isRestart") if (!isRestart) { fragment?.let { @@ -933,7 +953,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } fun onNaviToEndStationByAMap(isShow: Boolean) { - CallerLogger.d(TAG,"onNaviToEndStationByAMap") + d(TAG,"onNaviToEndStationByAMap") val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return fragment?.let { if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) @@ -953,7 +973,7 @@ class ItineraryCurrentView: ConstraintLayout, ItineraryCurrentModel.SwtichLineVi } override fun onStartTaskFail() { - CallerLogger.d(TAG,"onStartTaskFail") + d(TAG,"onStartTaskFail") commonSlideViewStartServer.reset() } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt index e1c02a084e..acfaf26933 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchModel.kt @@ -27,8 +27,17 @@ class ItinerarySwitchModel : ViewModel() { this.viewCallback = viewCallback } - interface SwtichLineViewCallback { + fun switchSite() { + this.viewCallback?.showSwitchSite() + } + fun showItinerary() { + this.viewCallback?.showItinerary() + } + + interface SwtichLineViewCallback { + fun showSwitchSite() + fun showItinerary() } } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt index 4ea5a879d4..bfcb95da91 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/itinerayswitch/ItinerarySwitchView.kt @@ -11,6 +11,7 @@ import androidx.lifecycle.findViewTreeViewModelStoreOwner import com.mogo.commons.module.status.MogoStatusManager import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.manager.loop.BizLoopManager import com.mogo.och.common.module.utils.FlowBus import com.mogo.och.unmanned.taxi.R import com.mogo.och.unmanned.taxi.TaxiUnmannedDriverProvider @@ -20,27 +21,37 @@ import com.mogo.och.unmanned.taxi.wigets.TaxiSelectViewGroup import kotlinx.android.synthetic.main.unmanned_switch_itinerary.view.currentItinerary import kotlinx.android.synthetic.main.unmanned_switch_itinerary.view.nextItinerary import kotlinx.android.synthetic.main.unmanned_switch_itinerary.view.order_operation_change +import kotlinx.android.synthetic.main.unmanned_switch_itinerary.view.switch_site_view import kotlinx.android.synthetic.main.unmanned_switch_itinerary.view.taxiServerSelector -class ItinerarySwitchView: ConstraintLayout, ItinerarySwitchModel.SwtichLineViewCallback { +class ItinerarySwitchView : ConstraintLayout, ItinerarySwitchModel.SwtichLineViewCallback { constructor(context: Context) : super(context) constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) - constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr) + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) - constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) + constructor( + context: Context, + attributeSet: AttributeSet, + defStyleAttr: Int, + defStyleRes: Int + ) : super(context, attributeSet, defStyleAttr, defStyleRes) companion object { const val TAG = "SwitchBizView" } - private var viewModel: ItinerarySwitchModel?=null + private var viewModel: ItinerarySwitchModel? = null - private var fragment: LifecycleOwner?=null + private var fragment: LifecycleOwner? = null init { @@ -49,27 +60,29 @@ class ItinerarySwitchView: ConstraintLayout, ItinerarySwitchModel.SwtichLineView initEventBus() } - private fun initView(){ + private fun initView() { fragment = TaxiUnmannedDriverProvider.getFragmentInfo() order_operation_change.onClick { if (MogoStatusManager.getInstance().isTaxiUnmanedDriverLineRoutingVerifyMode) { ToastUtils.showLong("退出验证模式后再接单吧") return@onClick } - viewModel?.changeOperationStatus() + viewModel?.changeOperationStatus() } - taxiServerSelector.checkChangeListener = object : TaxiSelectViewGroup.CheckChangeListener{ + taxiServerSelector.checkChangeListener = object : TaxiSelectViewGroup.CheckChangeListener { override fun changeCheck(newCheck: TaxiSelectViewGroup.ServerType?) { when (newCheck) { TaxiSelectViewGroup.ServerType.currentItinerary -> { currentItinerary.visibility = View.VISIBLE nextItinerary.visibility = View.GONE } + TaxiSelectViewGroup.ServerType.nextItinerary -> { currentItinerary.visibility = View.GONE nextItinerary.visibility = View.VISIBLE } - else ->{ + + else -> { currentItinerary.visibility = View.GONE nextItinerary.visibility = View.GONE } @@ -83,7 +96,7 @@ class ItinerarySwitchView: ConstraintLayout, ItinerarySwitchModel.SwtichLineView fragment?.let { FlowBus.with(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT) .register(it) { show -> - taxiServerSelector.setNextItineraryRedBagVisable( if (show) View.VISIBLE else View.GONE) + taxiServerSelector.setNextItineraryRedBagVisable(if (show) View.VISIBLE else View.GONE) } } @@ -98,5 +111,23 @@ class ItinerarySwitchView: ConstraintLayout, ItinerarySwitchModel.SwtichLineView viewModel?.setDistanceCallback(this) } + override fun showSwitchSite() { + BizLoopManager.runInMainThread { + currentItinerary.visibility = View.GONE + nextItinerary.visibility = View.GONE + taxiServerSelector.visibility = View.GONE + order_operation_change.visibility = View.GONE + switch_site_view.visibility = View.VISIBLE + } + } + + override fun showItinerary() { + currentItinerary.visibility = View.VISIBLE + taxiServerSelector.visibility = View.VISIBLE + order_operation_change.visibility = View.VISIBLE + switch_site_view.visibility = View.GONE + nextItinerary.visibility = View.GONE + } + } diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteAdapter.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteAdapter.kt new file mode 100644 index 0000000000..8500091ed1 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteAdapter.kt @@ -0,0 +1,126 @@ +package com.mogo.och.unmanned.taxi.ui.task.siteswitch + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.widget.AppCompatTextView +import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.DiffUtil.Callback +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.och.unmanned.taxi.R +import com.mogo.och.unmanned.taxi.bean.StartStationBean +import com.mogo.och.unmanned.taxi.utils.TaskUtils +import me.jessyan.autosize.AutoSizeCompat + +class SwitchSiteAdapter( + private val mContext: Context, + var checkStationBean: StartStationBean?, + val mData: MutableList +) : RecyclerView.Adapter() { + companion object{ + const val TAG = M_BUS+"SwitchLineAdapter" + } + // RecyclerView设置点击事件 + private var mItemClickListener: LineItemClickListener? = null + + fun setDataList(dataList: List) { + + val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.mData, dataList)) + this.mData.clear() + this.mData.addAll(dataList) + diffResult.dispatchUpdatesTo(this) + } + + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): SwitchSiteViewHolder { + val view = LayoutInflater.from(mContext).inflate( + R.layout.taxi_site_list_item, parent, false + ) + return SwitchSiteViewHolder(view) + } + + override fun onBindViewHolder(holder: SwitchSiteViewHolder, position: Int) { + val currentPosition = holder.bindingAdapterPosition + AutoSizeCompat.autoConvertDensityOfGlobal(holder.itemView.resources) + val site = mData[currentPosition] + + holder.lineName.text = site.name + holder.lineEndName.text = TaskUtils.getCurrentTaskDistance(site.distance2Current.toLong()) + + if(site==checkStationBean) { + holder.itemView.setBackgroundResource(R.drawable.taxi_switch_site_selected) + }else { + holder.itemView.setBackgroundResource(R.drawable.taxi_switch_site_normal) + } + + holder.itemView.setOnClickListener { + var preCheckIndex = -1 + if(checkStationBean==null){ + checkStationBean = site + }else{ + if(checkStationBean==site){ + checkStationBean = null + }else { + mData.forEachIndexed { index, result -> + if(checkStationBean == result){ + checkStationBean = null + preCheckIndex = index + } + } + checkStationBean = site + } + } + notifyItemChanged(currentPosition) + if(preCheckIndex>=0){ + notifyItemChanged(preCheckIndex) + } + mItemClickListener?.onItemClick(checkStationBean) + } + + } + + override fun getItemCount(): Int { + return mData.size + } + + fun setOnLineItemClickListener(itemClickListener: LineItemClickListener?) { + mItemClickListener = itemClickListener + } + + class SwitchSiteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val lineName: AppCompatTextView = itemView.findViewById(R.id.switch_line_name)//线路名称 + val lineEndName: AppCompatTextView = itemView.findViewById(R.id.switch_line_end_station) //终点 + } + + interface LineItemClickListener { + fun onItemClick(data: StartStationBean?) + } + + inner class MyDiffCallback(private val oldData:List, private val newData:List): + Callback(){ + override fun getOldListSize(): Int { + return oldData.size + } + + override fun getNewListSize(): Int { + return newData.size + } + + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + val oldItem = oldData[oldItemPosition] + val newItem = newData[newItemPosition] + return oldItem == newItem + } + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + val oldItem = oldData[oldItemPosition] + val newItem = newData[newItemPosition] + return oldItem == newItem + } + + } +} \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteView.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteView.kt new file mode 100644 index 0000000000..84eb7123d0 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwitchSiteView.kt @@ -0,0 +1,267 @@ +package com.mogo.och.unmanned.taxi.ui.task.siteswitch + +import android.content.Context +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.findViewTreeViewModelStoreOwner +import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.common.module.manager.loop.BizLoopManager +import com.mogo.och.common.module.wigets.TaskBottomDecoration +import com.mogo.och.common.module.wigets.WindowRelativeLayout +import com.mogo.och.common.module.wigets.WrapContentLinearLayoutManager +import com.mogo.och.common.module.wigets.commonview.ErrorView +import com.mogo.och.unmanned.taxi.R +import com.mogo.och.unmanned.taxi.bean.StartStationBean +import com.mogo.och.unmanned.taxi.ui.task.itinerayswitch.ItinerarySwitchModel +import kotlinx.android.synthetic.main.taxi_switch_site.view.aciv_bottom_shadow +import kotlinx.android.synthetic.main.taxi_switch_site.view.actv_cancle_task +import kotlinx.android.synthetic.main.taxi_switch_site.view.actv_cancle_task_nodata +import kotlinx.android.synthetic.main.taxi_switch_site.view.cl_submit_task +import kotlinx.android.synthetic.main.taxi_switch_site.view.include_empty +import kotlinx.android.synthetic.main.taxi_switch_site.view.include_errorview +import kotlinx.android.synthetic.main.taxi_switch_site.view.site_switch_loading_biz +import kotlinx.android.synthetic.main.taxi_switch_site.view.switch_site_rv +import me.jessyan.autosize.utils.AutoSizeUtils + + +class SwitchSiteView : WindowRelativeLayout, SwtichSiteModel.SiteSwtichViewCallback { + + + constructor(context: Context?) : super(context) + + constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) + + constructor( + context: Context?, + attributeSet: AttributeSet, + defStyleAttr: Int, + defStyleRes: Int + ) : super(context, attributeSet, defStyleAttr, defStyleRes) + + + companion object { + const val TAG = "${M_BUS}SwitchSiteView" + } + + private var viewModel: SwtichSiteModel? = null + private var viewModelSwitch: ItinerarySwitchModel? = null + + private lateinit var mAdapter: SwitchSiteAdapter + + private lateinit var linearLayoutManager: WrapContentLinearLayoutManager + + init { + LayoutInflater.from(context).inflate(R.layout.taxi_switch_site, this, true) + initView() + } + + private fun initView() { + linearLayoutManager = WrapContentLinearLayoutManager(context) + switch_site_rv.setLayoutManager(linearLayoutManager) + mAdapter = SwitchSiteAdapter(context, null, mutableListOf()) + switch_site_rv.addItemDecoration( + TaskBottomDecoration( + AutoSizeUtils.dp2px(context, 174f), + AutoSizeUtils.dp2px(context, 20f), + ) + ) + switch_site_rv.setAdapter(mAdapter) + //设置item 点击事件 + mAdapter.setOnLineItemClickListener(object : SwitchSiteAdapter.LineItemClickListener { + override fun onItemClick(data: StartStationBean?) { + CallerLogger.d(TAG, "选择站点 站点信息:${data}") + } + }) + + include_errorview.reloadLIstener = object : ErrorView.ReloadLIstener { + override fun reload() { + loadingDatas() + } + } + + cl_submit_task.onClick { + CallerLogger.d(TAG, "确定站点 站点信息:${mAdapter.checkStationBean}") + if (mAdapter.checkStationBean == null) { + ToastUtils.showShort("请选择新的标定单") + return@onClick + } + viewModel?.selectNewSite(mAdapter.checkStationBean!!) + } + actv_cancle_task.onClick { + viewModelSwitch?.showItinerary() + } + } + + override fun onVisibilityAggregated(isVisible: Boolean) { + super.onVisibilityAggregated(isVisible) + if (isVisible) { + // 加载数据 + loadingDatas() + } + } + + /** + * 初始化数据 + */ + private fun loadingDatas() { + CallerLogger.d(TAG, "加载站点去") + showLoadingView() + viewModel?.querySiteList(true) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + viewModel = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(SwtichSiteModel::class.java) + } + viewModel?.setSwitchSiteCallback(this) + viewModelSwitch = findViewTreeViewModelStoreOwner()?.let { + ViewModelProvider(it).get(ItinerarySwitchModel::class.java) + } + CallerLogger.d(TAG, "onAttachedToWindow") + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + CallerLogger.d(TAG, "onDetachedFromWindow") + } + + var startLoading = System.currentTimeMillis() + + /** + * 展示loading页面 + */ + private fun showLoadingView() { + startLoading = System.currentTimeMillis() + CallerLogger.d(TAG, "开始展示 lading 时间:${startLoading}") + BizLoopManager.runInMainThread { + // 加载中view + site_switch_loading_biz.visibility = VISIBLE + // 站点列表 + switch_site_rv.visibility = GONE + // 确认站点 + cl_submit_task.visibility = GONE + // 有站点不更改返回 + actv_cancle_task.visibility = GONE + // 底部背景 + aciv_bottom_shadow.visibility = GONE + // 空view + include_empty.visibility = GONE + // 没有站点不更改返回 + actv_cancle_task_nodata.visibility = GONE + // 错误页面 + include_errorview.visibility = GONE + } + } + + + /** + * + * 展示空数据 + */ + private fun showNoData() { + val endLoading = System.currentTimeMillis() + val dex = (100 - (endLoading - startLoading)).takeIf { it >= 0 } ?: 0 + CallerLogger.d(TAG, "展示展示站点空数据 lading 展示了 ${dex}毫秒") + BizLoopManager.runInMainThreadDelay(dex) { + // 加载中view + site_switch_loading_biz.visibility = GONE + // 站点列表 + switch_site_rv.visibility = GONE + // 确认站点 + cl_submit_task.visibility = GONE + // 有站点不更改返回 + actv_cancle_task.visibility = GONE + // 底部背景 + aciv_bottom_shadow.visibility = VISIBLE + // 空view + include_empty.visibility = VISIBLE + // 没有站点不更改返回 + actv_cancle_task_nodata.visibility = VISIBLE + // 错误页面 + include_errorview.visibility = GONE + } + } + + /** + * 展示错误类型 + */ + private fun showErrorData() { + val endLoading = System.currentTimeMillis() + val dex = (100 - (endLoading - startLoading)).takeIf { it >= 0 } ?: 0 + CallerLogger.d(TAG, "展示展示站点错误数据 lading 展示了 ${dex}毫秒") + BizLoopManager.runInMainThreadDelay(dex) { + // 加载中view + site_switch_loading_biz.visibility = GONE + // 站点列表 + switch_site_rv.visibility = GONE + // 确认站点 + cl_submit_task.visibility = GONE + // 有站点不更改返回 + actv_cancle_task.visibility = GONE + // 底部背景 + aciv_bottom_shadow.visibility = VISIBLE + // 空view + include_empty.visibility = GONE + // 没有站点不更改返回 + actv_cancle_task_nodata.visibility = VISIBLE + // 错误页面 + include_errorview.visibility = VISIBLE + } + } + + private fun showSitesView() { + val endLoading = System.currentTimeMillis() + val dex = (100 - (endLoading - startLoading)).takeIf { it >= 0 } ?: 0 + CallerLogger.d(TAG, "展示展示站点数据 lading 展示了 ${dex}毫秒") + BizLoopManager.runInMainThreadDelay(dex) { + // 加载中view + site_switch_loading_biz.visibility = GONE + // 站点列表 + switch_site_rv.visibility = VISIBLE + // 确认站点 + cl_submit_task.visibility = VISIBLE + // 有站点不更改返回 + actv_cancle_task.visibility = VISIBLE + // 底部背景 + aciv_bottom_shadow.visibility = VISIBLE + // 空view + include_empty.visibility = GONE + // 没有站点不更改返回 + actv_cancle_task_nodata.visibility = GONE + // 错误页面 + include_errorview.visibility = GONE + } + } + + override fun setData(startList: List) { + if (startList.isEmpty()) { + showNoData() + } else { + BizLoopManager.runInMainThread{ + mAdapter.setDataList(startList) + } + showSitesView() + } + } + + override fun showErrorView() { + showErrorData() + } + + override fun showCalibrationSite() { + viewModelSwitch?.showItinerary() + } + + +} diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwtichSiteModel.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwtichSiteModel.kt new file mode 100644 index 0000000000..921428cf87 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/ui/task/siteswitch/SwtichSiteModel.kt @@ -0,0 +1,87 @@ +package com.mogo.och.unmanned.taxi.ui.task.siteswitch + +import androidx.lifecycle.ViewModel +import com.mogo.commons.AbsMogoApplication +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.eagle.core.utilcode.util.CoordinateUtils +import com.mogo.och.bridge.autopilot.location.OchLocationManager +import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.unmanned.taxi.bean.StartServiceRespBeans +import com.mogo.och.unmanned.taxi.bean.StartStationBean +import com.mogo.och.unmanned.taxi.network.TaxiTaskWithOrderServiceManager +import com.mogo.och.unmanned.taxi.ui.debug.DebugView +import com.mogo.och.unmanned.taxi.ui.task.TaxiTaskModel + + +class SwtichSiteModel : ViewModel() { + + private val TAG = M_BUS+SwtichSiteModel::class.java.simpleName + + private var viewCallback:SiteSwtichViewCallback?=null + + + override fun onCleared() { + d(TAG,"onCleared") + } + + fun setSwitchSiteCallback(viewCallback:SiteSwtichViewCallback){ + this.viewCallback = viewCallback + } + + fun querySiteList(loading:Boolean) { + DebugView.printInfoMsg("[查询标定点] 准备发送请求") + TaxiTaskWithOrderServiceManager.queryStartSiteListBySn( + AbsMogoApplication.getApp().applicationContext, + object : OchCommonServiceCallback { + override fun onSuccess(data: StartServiceRespBeans?) { + DebugView.printInfoMsg("[查询标定点] 请求success") + data?.data?.let { + calculateDistance(it) + } + } + + override fun onFail(code: Int, msg: String?) { + DebugView.printInfoMsg("[查询标定点] 请求fail, code=$code, msg=$msg") + d(TAG, "journeyCompleted onFail: code=$code, msg=$msg") + viewCallback?.showErrorView() + } + }) + } + + private fun calculateDistance(startList: List) { + OchLocationManager.getGCJ02Location().let {currentLocation-> + if (currentLocation.latitude == 0.0 && currentLocation.longitude == 0.0) { + DebugView.printInfoMsg("[查询标定点] 当前无定位坐标") + this.viewCallback?.setData(startList) + return + } + startList.forEach { + val distance = CoordinateUtils.calculateLineDistance( + currentLocation.longitude, + currentLocation.latitude, + it.gcjLon, + it.gcjLat + ) + it.distance2Current = distance + } + val finalData = startList.toMutableList().sortedBy { it.distance2Current } + DebugView.printInfoMsg("[查询标定点] ${finalData}") + this.viewCallback?.setData(finalData) + } + + } + + fun selectNewSite(checkStationBean: StartStationBean) { + TaxiTaskModel.setCalibrationSite( checkStationBean.toResult()) + this.viewCallback?.showCalibrationSite() + } + + interface SiteSwtichViewCallback{ + fun setData(startList: List) + fun showErrorView() + fun showCalibrationSite() + } + +} + diff --git a/OCH/taxi/unmanned-driver/src/main/res/color/taxi_switch_site_submit_text_color_selector.xml b/OCH/taxi/unmanned-driver/src/main/res/color/taxi_switch_site_submit_text_color_selector.xml new file mode 100644 index 0000000000..c01d3d19a6 --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/color/taxi_switch_site_submit_text_color_selector.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/site_item_head.png b/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/site_item_head.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c4edba60b650806f01199ef6cfd4e261572337 GIT binary patch literal 610 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TG9|C+rT!FOY_NS7q-z8sNmTdc> zFyX&s(Lc$*XC%x2NX~sHdFhVik8_gMza*!8l)QaI^7A>6?8fIH1wh7{SCU5_O8z?| z(e_>9)g`Iozf#LzOP#nU_4kZa`CqAPx1@fam3(kr^793$;{Q^M-btOgEA{`3!u|US z|MyECcqF;+k<`pjQqw<3E_w?xYS&ZA{f|Kgp1mhI_dUq!>$fEPzerB`B)RpOvz#mW1U z6@MkSJ(E0fPqO^4)rRGVfqvF03GxeO_}tnW%<=j2OCWdz1UGNq+z$jRR`dWtSy@?d zuniD!aNN9ER#s^jz8I+QtEY=&h{pNa)9rc94gxF}7@Mo#@16c--h{NGPT}Khv;X|R zpVGSKv*M0wsZ4im-oCWERhAPquJ1N((P5hzuV);gkPz~NQ=>J)-$c9@EKIo_UG4oaJizH|(88{7m$pad)r7F*`sj(MIlS`IVttUaH)?%N zh{hpX_Jn8iREpF(K58T$SiaxwQsIS){tFDt>)T!kNZfqiu%?k=^YoIkbA692>QBz= moKUzrsONb1)N2xV?6>t#t8-tuXb&&|7(8A5T-G@yGywp2U@QIr literal 0 HcmV?d00001 diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_bg_selector.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_bg_selector.xml deleted file mode 100644 index 8ba3d1a9d8..0000000000 --- a/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_bg_selector.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_status_bg.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_status_bg.xml deleted file mode 100644 index e323eca4c3..0000000000 --- a/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_autopilot_status_bg.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_switch_site_bottom.png b/OCH/taxi/unmanned-driver/src/main/res/drawable-nodpi/taxi_switch_site_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..07eae67fbe4e79720cdc52c9cc428e1e7140a739 GIT binary patch literal 1877 zcmbW0X;hQf7KXnNhA;%7Qbh(~RTpin7f}NVWZ(-^f}f&>H%l8Pck2$(`7fC(3_5t1-eBKHOZ_cQ+NTK&5}}w(jX*ntPIwO@>F8l+R|4tCAuIt)Bx8wQpr^23K^6{9xFdd{2Qhf4-JKlh zOe8}ZO2BbE=uPtS#}K@Z`iJ}aM>^u%AxCFdGQHMt}uE#{ffyC482r5`uqG?)bh@Ks|UC1p9nKN1>~?$+0@uXk%9YD^gp77_L}JZU-4J>?FR73hHGXMihX zbXU<&##xEK3avqYzqtcp*s^# zc)CGI%WPc}FWI;BnTV-|^|1GqZ%U9F)lSg-y!zXjisq6zYYm|yO?FInYI!_=AYP5} z?!2b4(fefcIm1EJ9NaTL5-h4%dY2R&s=-%4WQGg}Jl3{UF8)B@d`^^w+HcJmYQ|ZC z<{TKJhQ_ISP3>rtC9!5SJ(Z$IMC;h}wY9a8*Ka=u&39XwP_luTjAYQZs6sW@+bo|h z{^*=&WLua6Lp;fYYsCYfAX{}akT7!EGqbxIXoZP{3OMy6D~C%(BA!E@wia(W}e zbJ4oSpFPECq;GT4W1T%~x7t*DIFaJl13Hvb65D`_K)jLF-U5Bfb{gB~XejL%pLMAQ zve-Djdtq_YMx%UrenYgb{$=+Ewt8SSyhVsvAA@PSEKBX~PItZ%=9IB#lnqnM>K=hi zsUSfA^siQwoSUnumu@BQx!3TwmqFHg+e?bs)tEJLKPd=Zja{)voGe7F>b_CiG;xD_ z&iu}rmyd-luLO9GPj38)sELaQnO%}>?DQt}M^Asb0V|hFT|lPH zN+<5z%_6|p>6~Tt;F%>YbQkXs$fO6u%A3yFR1aoHYN0O-`ZDY=DEQgY(~+or)Sbbc zpQ-S6Z1eAQ#*SNMB7@PBje%3Ju%wWN5jYy#a-Qaa(Y6^rX^a`WQnuq=h>k z!@-j@*`GJ(9xi`tl!8a<ob#v0jq!pXSddVtX5^@){TR_J#S>DIZG~hn(L;DQ36^mqD|uvsw3&OkIj86?@}i zPHU6ecZs*SqW08OpLDetXJwqSYe^^gMwFv9b|&*0v@E6RGZcX)Hk4k z>qCpR0d**8f*&8o?9M(vVMfyuPO!GV1cR1j6R2EN8LvR~mUp`w-rN0XZJ_)4?ZAJ< urYyV19cZ~5pDEeq=)2n8KD&}uu7JDW>7-uVmErU8wRn3{J?^_jU;aOKCwN`} literal 0 HcmV?d00001 diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_autopilot_status_bg.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_autopilot_status_bg.xml deleted file mode 100644 index e323eca4c3..0000000000 --- a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_autopilot_status_bg.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_normal.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_normal.xml new file mode 100644 index 0000000000..5121d1a6be --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_normal.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selected.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selected.xml new file mode 100644 index 0000000000..07ce82f3ab --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selected.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/offline/driver/src/main/res/drawable/offline_task_running_selector.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selector.xml similarity index 66% rename from OCH/offline/driver/src/main/res/drawable/offline_task_running_selector.xml rename to OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selector.xml index 6f1e2e2037..60055d4e2c 100644 --- a/OCH/offline/driver/src/main/res/drawable/offline_task_running_selector.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_selector.xml @@ -1,6 +1,6 @@ - - - + + + diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_normal.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_normal.xml new file mode 100644 index 0000000000..5121d1a6be --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_normal.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selected.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selected.xml new file mode 100644 index 0000000000..7b95fb492d --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selected.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selector.xml b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selector.xml new file mode 100644 index 0000000000..4aab992fab --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/drawable/taxi_switch_site_submit_selector.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_site_list_item.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_site_list_item.xml new file mode 100644 index 0000000000..7dc56ffb4b --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_site_list_item.xml @@ -0,0 +1,52 @@ + + + + + + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_switch_site.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_switch_site.xml new file mode 100644 index 0000000000..7ba04a463c --- /dev/null +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/taxi_switch_site.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_itinerary_current.xml b/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_itinerary_current.xml index 70044e1a21..4a4a29e437 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_itinerary_current.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/layout/unmanned_itinerary_current.xml @@ -76,6 +76,17 @@ android:layout_width="@dimen/dp_120" android:layout_height="@dimen/dp_50"/> + + - + + + - + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/res/values/strings.xml b/OCH/taxi/unmanned-driver/src/main/res/values/strings.xml index 119795d1c3..751251ebe6 100644 --- a/OCH/taxi/unmanned-driver/src/main/res/values/strings.xml +++ b/OCH/taxi/unmanned-driver/src/main/res/values/strings.xml @@ -59,6 +59,11 @@ 乘客已取消 待服务 + 切换站点 + 站点名称 + 62m + 切换 + 确认切换 查看 diff --git a/app/build.gradle b/app/build.gradle index 5603bbbcb4..6a4c1e1206 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,7 +9,7 @@ apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: ly.count.android.plugins.UploadSymbolsPlugin -apply from: rootProject.file('gradle/bytex/bytex.gradle') +//apply from: rootProject.file('gradle/bytex/bytex.gradle') Properties properties = new Properties() properties.load(project.rootProject.file("gradle.properties").newDataInputStream())