[清扫车]UI相关展示问题修改
This commit is contained in:
@@ -14,7 +14,7 @@ interface ISweeperTaskCallback {
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?)
|
||||
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?,refresh:Boolean)
|
||||
|
||||
/**
|
||||
* 获取子任务列表
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.mogo.eagle.core.data.map.MogoLocation
|
||||
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.util.ClickUtils
|
||||
import com.mogo.eagle.core.utilcode.util.ToastUtils
|
||||
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.bean.SubInfo
|
||||
@@ -168,11 +169,11 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
//列表任务刷新
|
||||
ivTaskListRefresh.setOnClickListener {
|
||||
mPresenter?.getMainTaskList()
|
||||
mPresenter?.getMainTaskList(true)
|
||||
}
|
||||
//无任务时刷新
|
||||
ivNoTaskRefresh.setOnClickListener {
|
||||
mPresenter?.getMainTaskList()
|
||||
mPresenter?.getMainTaskList(true)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -210,7 +211,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
/**
|
||||
* 设置当前主任务列表数据
|
||||
*/
|
||||
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?) {
|
||||
fun setMainTaskList(mainTaskBeanList: MutableList<SweeperMainTaskBean>?,refresh: Boolean) {
|
||||
setShowCurrentTaskPanelView(false)
|
||||
setShowTaskListPanelView(true)
|
||||
sweeper_cl_work_mode.visibility = View.GONE
|
||||
@@ -222,6 +223,9 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
noTaskDataView.visibility = View.VISIBLE
|
||||
sweeperListCl.visibility = View.GONE
|
||||
}
|
||||
if (refresh){
|
||||
ToastUtils.showLong("已刷新")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -259,7 +263,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
fun updateSubTaskStatus(typeEnum: TaskStatusEnum, isLastSubTask: Boolean) {
|
||||
if (isLastSubTask) {
|
||||
showAmapNaviToStationFragment(false)
|
||||
mPresenter?.getMainTaskList()
|
||||
mPresenter?.getMainTaskList(false)
|
||||
clearAllMarkerAndPolyline()
|
||||
//整个大任务结束,则删除它相关的贴边数据缓存
|
||||
lifecycleScope.launch(Dispatchers.IO) {
|
||||
@@ -327,7 +331,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
fun setMainTaskReset(isSuccess: Boolean) {
|
||||
if (isSuccess) {
|
||||
//任务重置后,重新拉取任务列表数据
|
||||
mPresenter?.getMainTaskList()
|
||||
mPresenter?.getMainTaskList(false)
|
||||
//清除任务全览图的marker和路线
|
||||
clearAllMarkerAndPolyline()
|
||||
showOrHideOverMapViewFragment(false)
|
||||
@@ -348,7 +352,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mSubTaskType = if (it[mCurrentSubPosition].taskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE.code)
|
||||
SubTaskTypeEnum.AUTOPILOT_SUBTYPE else SubTaskTypeEnum.MANUAL_DRIVING_SUBTYPE
|
||||
//设置当前子任务信息
|
||||
presenter?.setSubtask(isFirstSubTask(), isLastSubTask(), it[mCurrentSubPosition].taskId)
|
||||
presenter?.setSubtask(isFirstSubTask(), isLastSubTask(), it[mCurrentSubPosition].taskId,it[mCurrentSubPosition].taskType)
|
||||
}
|
||||
/**
|
||||
* 计算任务的进度
|
||||
@@ -408,7 +412,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mSubInfo?.apply {
|
||||
val builder = SweeperManualDrivingDialog.Builder()
|
||||
val endConfirmDialog = builder
|
||||
.tips("前方子任务${taskName}手动驾驶至${endSiteName}")
|
||||
.tips("前方子任务${taskName}请人工驾驶至(${endSiteName})")
|
||||
.confirmStr("确认")
|
||||
.build(requireContext())
|
||||
endConfirmDialog?.setClickListener(object : SweeperManualDrivingDialog.ClickListener {
|
||||
|
||||
@@ -96,6 +96,8 @@ public class SweeperTaskModel {
|
||||
private boolean mIsLastSubtask = false;
|
||||
//当前任务是否是第一个
|
||||
private boolean mIsFirstSubtask = false;
|
||||
//当前任务是否是第一个
|
||||
private int mSubTaskType=0; //1自动驾驶 2.人工驾驶
|
||||
//0: 代表没有启动过 1代表是启动第一次,当>=1 代表是重试 每次子任务结束/主任务结束清空置为0
|
||||
private volatile int firstStartAutopilot = 0;
|
||||
//自动驾驶状态
|
||||
@@ -195,10 +197,11 @@ public class SweeperTaskModel {
|
||||
|
||||
};
|
||||
|
||||
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId) {
|
||||
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId,int subTaskType) {
|
||||
this.mIsLastSubtask = isLastSubtask;
|
||||
this.mIsFirstSubtask = isFirstSubtask;
|
||||
this.mSubTaskId = subTaskId;
|
||||
this.mSubTaskType=subTaskType;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -287,6 +290,9 @@ public class SweeperTaskModel {
|
||||
if (mControllerStatusCallback != null) {
|
||||
mControllerStatusCallback.onCarLocationChanged(gnssInfo);
|
||||
}
|
||||
if (mSubTaskType==2){//人工驾驶子任务需要手动跳过,不能自动结束
|
||||
return;
|
||||
}
|
||||
//子任务完成的围栏判断 子任务正在执行中,还未到达子任务终点
|
||||
if (mIsSubTaskWorking&&!isArriveSubTaskEndSite) {
|
||||
judgeArrivedStation(gnssInfo);
|
||||
@@ -306,7 +312,9 @@ public class SweeperTaskModel {
|
||||
+ " to " + mCurrentSubTaskDetail.getEndSiteName());
|
||||
Log.d(TAG, "行程日志-judgeArrivedStation() distance = " + distance
|
||||
+ " to " + mCurrentSubTaskDetail.getEndSiteName());
|
||||
onArriveTaskEnd(null); //无自动驾驶到终点信息传null
|
||||
isArriveSubTaskEndSite=true;
|
||||
//到达子任务终点 结束子任务
|
||||
subTaskEnd(mIsFirstSubtask, mIsLastSubtask, mSubTaskId); //无自动驾驶到终点信息传null
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -388,7 +396,7 @@ public class SweeperTaskModel {
|
||||
Log.d(M_SWEEPER + TAG, "MAP到站通知:"+mCurrentSubTaskDetail.getEndSiteName()+"经度:"
|
||||
+data.getEndLocation().getLongitude()+"纬度:"+data.getEndLocation().getLongitude());
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "MAP到站通知:"+mCurrentSubTaskDetail.getEndSiteName()+"经度:"
|
||||
+data.getEndLocation().getLongitude()+"纬度:"+data.getEndLocation().getLongitude());
|
||||
+data.getEndLocation().getLongitude()+"纬度:"+data.getEndLocation().getLatitude());
|
||||
String latitude = NumberFormatUtil.cutOutNumber(data.getEndLocation().getLatitude(), 5); //wgs
|
||||
String longitude = NumberFormatUtil.cutOutNumber(data.getEndLocation().getLongitude(), 5);
|
||||
String arriveLat = NumberFormatUtil.cutOutNumber(mCurrentSubTaskDetail.getEndSiteWgs64Lat(), 5);
|
||||
@@ -398,6 +406,9 @@ public class SweeperTaskModel {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (mSubTaskType==2){//人工驾驶子任务需要手动跳过,不能自动结束
|
||||
return;
|
||||
}
|
||||
if (isArriveSubTaskEndSite) return;
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "行程日志-当前==subTaskId="
|
||||
+ mSubTaskId);
|
||||
@@ -482,7 +493,7 @@ public class SweeperTaskModel {
|
||||
if (sweeperSubTaskBean != null && sweeperSubTaskBean.getSubList() != null && sweeperSubTaskBean.getSubList().size() > 0) {
|
||||
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean, true);
|
||||
} else {
|
||||
getMainTaskList();
|
||||
getMainTaskList(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -512,14 +523,14 @@ public class SweeperTaskModel {
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
public void getMainTaskList() {
|
||||
public void getMainTaskList(boolean refresh) {
|
||||
SweeperServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback<BaseResponse<List<SweeperMainTaskBean>>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<List<SweeperMainTaskBean>> data) {
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "getMainTaskList:" + GsonUtil.jsonFromObject(data));
|
||||
if (mSweeperTaskCallback != null && data != null && data.getCode() == 0) {
|
||||
List<SweeperMainTaskBean> list = data.getData();
|
||||
mSweeperTaskCallback.setMainTaskList(list);
|
||||
mSweeperTaskCallback.setMainTaskList(list,refresh);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -559,7 +570,7 @@ public class SweeperTaskModel {
|
||||
sweeperSubTaskBean.setSubList(list);
|
||||
mSweeperTaskCallback.setSubTaskBean(sweeperSubTaskBean, false);
|
||||
} else {
|
||||
getMainTaskList();
|
||||
getMainTaskList(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,6 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
if (autopilotStatusInfo == null) return;
|
||||
CallerLogger.INSTANCE.d(M_SWEEPER + TAG, "onAutopilotStatusResponse state:" + autopilotStatusInfo.getState());
|
||||
SweeperTaskModel.getInstance().setAutopilotState(autopilotStatusInfo.getState());
|
||||
|
||||
ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(autopilotStatusInfo.getState()));
|
||||
switch (autopilotStatusInfo.getState()) {
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
|
||||
@@ -190,9 +189,9 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
/**
|
||||
* 设置当前子任务信息
|
||||
*/
|
||||
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId) {
|
||||
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId,int subTaskType) {
|
||||
this.mSubTaskId = subTaskId;
|
||||
SweeperTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId);
|
||||
SweeperTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId,subTaskType);
|
||||
}
|
||||
public void setWorking(boolean isWorking){
|
||||
SweeperTaskModel.getInstance().setWorking(isWorking);
|
||||
@@ -364,8 +363,8 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
public void getMainTaskList() {
|
||||
SweeperTaskModel.getInstance().getMainTaskList();
|
||||
public void getMainTaskList(boolean refresh) {
|
||||
SweeperTaskModel.getInstance().getMainTaskList(refresh);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -415,8 +414,8 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMainTaskList(List<SweeperMainTaskBean> mainTaskBeanList) {
|
||||
mView.setMainTaskList(mainTaskBeanList);
|
||||
public void setMainTaskList(List<SweeperMainTaskBean> mainTaskBeanList,boolean refresh) {
|
||||
mView.setMainTaskList(mainTaskBeanList,refresh);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.och.sweeper.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@@ -104,17 +105,20 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
* 设置准备就绪按钮时都可以点击
|
||||
*/
|
||||
fun setEnableClickBtn(isWorking: Boolean) {
|
||||
readyTaskBtn.isSelected = isWorking
|
||||
readyTaskBtn.isClickable=!isWorking
|
||||
presenter?.setWorking(isWorking)
|
||||
if (isWorking) {
|
||||
tvTaskState.text = "正在作业"
|
||||
readyTaskBtn.text="任务中"
|
||||
readyTaskBtn.setTextColor(Color.parseColor("#FFFFFFFF"))
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_working)
|
||||
readyTaskBtn.setBackgroundResource(R.drawable.sweeper_task_working)
|
||||
} else {
|
||||
tvTaskState.text = "暂未准备"
|
||||
readyTaskBtn.text="开始任务"
|
||||
readyTaskBtn.setTextColor(Color.parseColor("#66FFFFFF"))
|
||||
tvTaskState.setBackgroundResource(R.drawable.bg_shape_task_state_not_ready)
|
||||
readyTaskBtn.setBackgroundResource(R.drawable.sweeper_task_not_working)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -125,19 +129,23 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
when (autopilotState) {
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE -> {
|
||||
tvStartAuto.text="自动驾驶"
|
||||
tvStartAuto.isSelected=false
|
||||
tvStartAuto.setTextColor(Color.parseColor("#66FFFFFF"))
|
||||
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_not_running)
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE -> {
|
||||
tvStartAuto.text="自动驾驶"
|
||||
tvStartAuto.isSelected=false
|
||||
tvStartAuto.setTextColor(Color.parseColor("#66FFFFFF"))
|
||||
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_not_running)
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING -> {
|
||||
tvStartAuto.text="自动驾驶"
|
||||
tvStartAuto.isSelected=true
|
||||
tvStartAuto.setTextColor(Color.parseColor("#FFFFFFFF"))
|
||||
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_running)
|
||||
}
|
||||
IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING -> {
|
||||
tvStartAuto.text="平行驾驶"
|
||||
tvStartAuto.isSelected=true
|
||||
tvStartAuto.setTextColor(Color.parseColor("#FFFFFFFF"))
|
||||
tvStartAuto.setBackgroundResource(R.drawable.sweeper_start_auto_running)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.ThreadUtils
|
||||
import com.mogo.och.sweeper.R
|
||||
import planning.RoboSweeperTaskIndexOuterClass
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
/**
|
||||
* 车辆基本信息:方向盘下方的档位 转向灯 限速 速度 电量 水量
|
||||
@@ -126,7 +127,7 @@ class SweeperTrafficDataView : ConstraintLayout,
|
||||
mCurrentTimeBatteryMillis = current
|
||||
d(SceneConstant.M_SWEEPER + TAG, "电量:${states.bmsSoc}")
|
||||
UiThreadHandler.post{
|
||||
tvBattery?.text = "${states.bmsSoc}%"
|
||||
tvBattery?.text = "${states.bmsSoc.roundToInt()}%"
|
||||
}
|
||||
}
|
||||
/**
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@drawable/sweeper_start_auto_running"/>
|
||||
<item android:state_selected="false" android:drawable="@drawable/sweeper_start_auto_not_running"/>
|
||||
</selector>
|
||||
@@ -1,5 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true" android:drawable="@drawable/sweeper_task_working"/>
|
||||
<item android:state_selected="false" android:drawable="@drawable/sweeper_task_not_working"/>
|
||||
</selector>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#254e7d"/>
|
||||
<solid android:color="#4D2F6EFF"/>
|
||||
<corners
|
||||
android:bottomRightRadius="30dp" android:bottomLeftRadius="@dimen/dp_30"/>
|
||||
</shape>
|
||||
@@ -120,7 +120,7 @@
|
||||
android:id="@+id/tvStartAuto"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/dp_116"
|
||||
android:background="@drawable/sweeper_start_auto_btn"
|
||||
android:background="@drawable/sweeper_start_auto_not_running"
|
||||
android:gravity="center"
|
||||
android:text="启动自驾"
|
||||
android:textColor="@android:color/white"
|
||||
@@ -136,7 +136,7 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/dp_116"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/sweeper_task_btn"
|
||||
android:background="@drawable/sweeper_task_not_working"
|
||||
android:gravity="center"
|
||||
android:text="开始任务"
|
||||
android:textColor="@android:color/white"
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="2dp"
|
||||
android:background="#4D89C5EC"
|
||||
android:background="#3389C5EC"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvTaskDesc"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
app:layout_constraintStart_toEndOf="@+id/ivTriangle"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:background="#A6CEFF"
|
||||
android:background="#4DA6CEFF"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvJumpOverTask"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"/>
|
||||
@@ -62,7 +62,7 @@
|
||||
app:layout_constraintStart_toEndOf="@+id/ivTriangle"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_20"
|
||||
android:background="#A6CEFF"
|
||||
android:background="#4DA6CEFF"
|
||||
app:layout_constraintTop_toBottomOf="@+id/tvEndTask"
|
||||
android:layout_marginStart="@dimen/dp_16"
|
||||
android:layout_marginEnd="@dimen/dp_16"/>
|
||||
|
||||
@@ -128,14 +128,15 @@
|
||||
<FrameLayout
|
||||
android:id="@+id/flRight"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintWidth_percent="0.5"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:layout_marginBottom="@dimen/dp_36"
|
||||
android:layout_marginBottom="@dimen/dp_14"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:layout_marginEnd="@dimen/dp_36"
|
||||
app:layout_constraintTop_toBottomOf="@+id/sweeperTurnSignal"
|
||||
>
|
||||
<ImageView
|
||||
android:id="@+id/sweeperIvBgWaterWarning"
|
||||
@@ -152,7 +153,7 @@
|
||||
android:layout_height="@dimen/dp_30"
|
||||
android:src="@drawable/sweeper_water_selector"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginBottom="@dimen/dp_10"
|
||||
android:layout_marginBottom="@dimen/dp_2"
|
||||
/>
|
||||
</FrameLayout>
|
||||
<View
|
||||
|
||||
Reference in New Issue
Block a user