[sweeper运营&云控合并]refactor: SweeperOperate & SweeperCloud 相同的代码提取common, 类名、layout、包名等加上operate/cloud前缀区分;
This commit is contained in:
@@ -9,8 +9,9 @@ import androidx.fragment.app.FragmentManager;
|
||||
|
||||
import com.alibaba.android.arouter.facade.annotation.Route;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperOperateFragment;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -25,7 +26,7 @@ public class SweeperProvider implements IMogoOCH {
|
||||
|
||||
private static final String TAG = "SweeperProvider";
|
||||
|
||||
private SweeperFragment sweeperFragment;
|
||||
private SweeperOperateFragment sweeperOperateFragment;
|
||||
private int containerId;
|
||||
private FragmentActivity activity;
|
||||
|
||||
@@ -34,26 +35,26 @@ public class SweeperProvider implements IMogoOCH {
|
||||
}
|
||||
private void showFragment() {
|
||||
FragmentManager supportFragmentManager = activity.getSupportFragmentManager();
|
||||
if (sweeperFragment == null) {
|
||||
if (sweeperOperateFragment == null) {
|
||||
CallerLogger.d(TAG, "准备add fragment======");
|
||||
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(sweeperFragment.TAG);
|
||||
if (fragmentByTag instanceof SweeperFragment) {
|
||||
sweeperFragment = (SweeperFragment) fragmentByTag;
|
||||
Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(sweeperOperateFragment.TAG);
|
||||
if (fragmentByTag instanceof SweeperCloudFragment) {
|
||||
sweeperOperateFragment = (SweeperOperateFragment) fragmentByTag;
|
||||
} else {
|
||||
sweeperFragment = new SweeperFragment();
|
||||
sweeperOperateFragment = new SweeperOperateFragment();
|
||||
}
|
||||
if(!sweeperFragment.isAdded()) {
|
||||
supportFragmentManager.beginTransaction().add(containerId, sweeperFragment, sweeperFragment.TAG).commitAllowingStateLoss();
|
||||
if(!sweeperOperateFragment.isAdded()) {
|
||||
supportFragmentManager.beginTransaction().add(containerId, sweeperOperateFragment, sweeperOperateFragment.TAG).commitAllowingStateLoss();
|
||||
}
|
||||
return;
|
||||
}
|
||||
CallerLogger.d(TAG, "准备show fragment");
|
||||
supportFragmentManager.beginTransaction().show(sweeperFragment).commitAllowingStateLoss();
|
||||
supportFragmentManager.beginTransaction().show(sweeperOperateFragment).commitAllowingStateLoss();
|
||||
}
|
||||
private void hideFragment() {
|
||||
if (sweeperFragment != null) {
|
||||
if (sweeperOperateFragment != null) {
|
||||
CallerLogger.d(TAG, "准备hide fragment");
|
||||
activity.getSupportFragmentManager().beginTransaction().hide(sweeperFragment).commitAllowingStateLoss();
|
||||
activity.getSupportFragmentManager().beginTransaction().hide(sweeperOperateFragment).commitAllowingStateLoss();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -44,11 +44,12 @@ import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.cloud.util.AutopilotModeConfigManager;
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils;
|
||||
import com.mogo.och.sweeper.cloud.view.SweeperTrafficDataView;
|
||||
import com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView;
|
||||
import com.mogo.och.sweeper.common.fragment.WeltMapOverViewFragment;
|
||||
import com.mogo.och.sweeper.common.view.WeltSmallMapView;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
|
||||
@@ -65,7 +66,7 @@ import mogo.telematics.pad.MessagePad;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public abstract class BaseSweeperTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
public abstract class BaseSweeperCloudTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
IWeltMapSwitchToSmallCallback, View.OnTouchListener {
|
||||
|
||||
private static final String TAG = "BaseSweeperTabFragment";
|
||||
@@ -82,7 +83,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
private MapBizView mapBizView;
|
||||
private Group groupTestPanel;
|
||||
//清扫车车辆基本信息 速度 档位 转向灯 红绿灯等
|
||||
private SweeperTrafficDataView mTrafficDataView;
|
||||
private SweeperCloudTrafficDataView mTrafficDataView;
|
||||
//作业任务贴边数据展示图
|
||||
private WeltSmallMapView mMapWeltView;
|
||||
//任务作业全览图
|
||||
@@ -368,7 +369,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public SweeperTrafficDataView getTrafficDataView() {
|
||||
public SweeperCloudTrafficDataView getTrafficDataView() {
|
||||
return mTrafficDataView;
|
||||
}
|
||||
|
||||
@@ -464,8 +465,8 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
mWeltDataBeanList,
|
||||
mSubTaskCoordinates,
|
||||
mRouteList,
|
||||
mProgress,
|
||||
(SweeperFragment) this);
|
||||
mProgress);
|
||||
this.setTaskDataToFragmentCallback(mWeltMapOverViewFragment);
|
||||
}
|
||||
if (mWeltMapOverViewFragment.isHidden()) {
|
||||
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
@@ -19,7 +19,7 @@ import com.mogo.och.common.module.voice.VoiceNotice.showNotice
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst.Companion.TYPE_MARKER_SWEEPER_SUBTASK_START_END
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase
|
||||
import com.mogo.och.sweeper.cloud.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweeper.cloud.presenter.SweeperCloudPresenter
|
||||
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog
|
||||
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudLoadingDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils
|
||||
@@ -31,7 +31,7 @@ import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskNo
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskResumeDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.createSweeperTaskSuspendDialog
|
||||
import com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.printMessage
|
||||
import com.mogo.och.sweeper.cloud.view.SweeperCurrentTaskInfoView
|
||||
import com.mogo.och.sweeper.cloud.view.SweeperCloudCurrentTaskInfoView
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
@@ -50,7 +50,7 @@ import kotlinx.coroutines.launch
|
||||
/**
|
||||
* 清扫车主界面
|
||||
*/
|
||||
class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresenter?>() {
|
||||
class SweeperCloudFragment : BaseSweeperCloudTabFragment<SweeperCloudFragment?, SweeperCloudPresenter?>() {
|
||||
|
||||
companion object {
|
||||
const val TAG = "SweeperFragment"
|
||||
@@ -80,8 +80,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
sweeper_cl_work_mode.setTrafficDataView(trafficDataView)
|
||||
}
|
||||
|
||||
override fun createPresenter(): SweeperPresenter {
|
||||
return SweeperPresenter(this)
|
||||
override fun createPresenter(): SweeperCloudPresenter {
|
||||
return SweeperCloudPresenter(this)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
@@ -693,7 +693,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
super.setTaskRouteList(routeList)
|
||||
}
|
||||
|
||||
private fun getCurrentTaskView(): SweeperCurrentTaskInfoView = sweeper_current_task_view
|
||||
private fun getCurrentTaskView(): SweeperCloudCurrentTaskInfoView = sweeper_current_task_view
|
||||
|
||||
fun handleSubTaskInfoDialog(taskId: String, subTaskId: String, isPop: Boolean) {
|
||||
if (mTaskInfo == null) return
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.mogo.och.sweeper.cloud.model;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
import static com.mogo.och.sweeper.cloud.util.SweeperCloudTaskUtils.printMessage;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
@@ -73,9 +72,9 @@ import system_master.SystemStatusInfo;
|
||||
* <p>
|
||||
* 清扫车任务管理
|
||||
*/
|
||||
public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IMoGoAutopilotStatusListener, IMoGoSweeperFutianCleanSystemListener {
|
||||
private final String TAG = SweeperTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperTaskModel sInstance;
|
||||
public class SweeperCloudTaskModel implements IMoGoSweeperFutianCloudTaskListener, IMoGoAutopilotStatusListener, IMoGoSweeperFutianCleanSystemListener {
|
||||
private final String TAG = SweeperCloudTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperCloudTaskModel sInstance;
|
||||
public double mLongitude = 0;
|
||||
public double mLatitude = 0;
|
||||
private Context mContext;
|
||||
@@ -112,18 +111,18 @@ public class SweeperTaskModel implements IMoGoSweeperFutianCloudTaskListener, IM
|
||||
//用于对应messageType和reqNo绑定在一起,保证请求的reqNo和响应的reqNo一致
|
||||
private HashMap<Integer, String> msgTypeAndReqNo = new HashMap<>();
|
||||
|
||||
public static SweeperTaskModel getInstance() {
|
||||
public static SweeperCloudTaskModel getInstance() {
|
||||
if (sInstance == null) {
|
||||
synchronized (SweeperTaskModel.class) {
|
||||
synchronized (SweeperCloudTaskModel.class) {
|
||||
if (sInstance == null) {
|
||||
sInstance = new SweeperTaskModel();
|
||||
sInstance = new SweeperCloudTaskModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private SweeperTaskModel() {
|
||||
private SweeperCloudTaskModel() {
|
||||
|
||||
}
|
||||
|
||||
@@ -15,8 +15,8 @@ import com.mogo.och.sweeper.cloud.callback.ISweeperCloudTaskCallback;
|
||||
import com.mogo.och.sweeper.cloud.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweeper.cloud.model.SweeperTaskModel;
|
||||
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment;
|
||||
import com.mogo.och.sweeper.cloud.model.SweeperCloudTaskModel;
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask;
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable;
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon;
|
||||
@@ -34,15 +34,15 @@ import chassis.ChassisStatesOuterClass;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
public class SweeperCloudPresenter extends Presenter<SweeperCloudFragment>
|
||||
implements ISweeperControllerStatusCallback,
|
||||
ISweeperCloudTaskCallback, ISweeperTaskRouteCallback {
|
||||
|
||||
private static final String TAG = "SweeperPresenter";
|
||||
|
||||
public SweeperPresenter(SweeperFragment view) {
|
||||
public SweeperCloudPresenter(SweeperCloudFragment view) {
|
||||
super(view);
|
||||
SweeperTaskModel.getInstance().init();
|
||||
SweeperCloudTaskModel.getInstance().init();
|
||||
OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp());
|
||||
}
|
||||
|
||||
@@ -55,18 +55,18 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
@Override
|
||||
public void onDestroy(@NonNull LifecycleOwner owner) {
|
||||
super.onDestroy(owner);
|
||||
SweeperTaskModel.getInstance().release();
|
||||
SweeperCloudTaskModel.getInstance().release();
|
||||
releaseListener();
|
||||
}
|
||||
|
||||
public void initModelListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
SweeperCloudTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperCloudTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
}
|
||||
|
||||
public void releaseListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
SweeperCloudTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperCloudTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@@ -94,28 +94,28 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @return
|
||||
*/
|
||||
public int getAutopilotState() {
|
||||
return SweeperTaskModel.getInstance().getAutopilotState();
|
||||
return SweeperCloudTaskModel.getInstance().getAutopilotState();
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除路线缓存数据
|
||||
*/
|
||||
public void clearRouteList() {
|
||||
SweeperTaskModel.getInstance().clearRouteList();
|
||||
SweeperCloudTaskModel.getInstance().clearRouteList();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置当前子任务信息
|
||||
*/
|
||||
public void setSubtask(String subTaskId, SweeperTask.TaskModel subTaskType, int currentLineId) {
|
||||
SweeperTaskModel.getInstance().setSubtask(subTaskId, subTaskType, currentLineId);
|
||||
SweeperCloudTaskModel.getInstance().setSubtask(subTaskId, subTaskType, currentLineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否有任务数据
|
||||
*/
|
||||
public void isHasTaskInfo(boolean isHasTaskInfo) {
|
||||
SweeperTaskModel.getInstance().isHasTaskInfo(isHasTaskInfo);
|
||||
SweeperCloudTaskModel.getInstance().isHasTaskInfo(isHasTaskInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,14 +123,14 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param preLineId
|
||||
*/
|
||||
public void setPreLineId(int preLineId) {
|
||||
SweeperTaskModel.getInstance().setPreLineId(preLineId);
|
||||
SweeperCloudTaskModel.getInstance().setPreLineId(preLineId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
public void getCurrentTask() {
|
||||
SweeperTaskModel.getInstance().getCurrentTask();
|
||||
SweeperCloudTaskModel.getInstance().getCurrentTask();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,7 +140,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperStartTaskResp(String taskId, SweeperTask.StartTaskCode code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperStartTaskResp(taskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperStartTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -151,7 +151,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperTaskConfirmResp(String taskId, String subTaskId, SweeperTaskConfirm.TaskConfirmCode code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperTaskConfirmResp(taskId, subTaskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperTaskConfirmResp(taskId, subTaskId, code);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -161,7 +161,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperStopTaskResp(String taskId, SweeperTaskStop.StopTaskCode code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperStopTaskResp(taskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperStopTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -172,7 +172,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param lineId
|
||||
*/
|
||||
public void sendSweeperAutopilotBootable(String taskId, String subTaskId, long lineId) {
|
||||
SweeperTaskModel.getInstance().sendSweeperAutopilotBootable(taskId, subTaskId, lineId);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperAutopilotBootable(taskId, subTaskId, lineId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,7 +181,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* @param code
|
||||
*/
|
||||
public void sendSweeperSuspendResumeTaskResp(String taskId, SweeperTaskCloudSuspendResume.Code code) {
|
||||
SweeperTaskModel.getInstance().sendSweeperSuspendResumeTaskResp(taskId, code);
|
||||
SweeperCloudTaskModel.getInstance().sendSweeperSuspendResumeTaskResp(taskId, code);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1,59 +0,0 @@
|
||||
package com.mogo.och.sweeper.cloud.ui.popwindow
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.PopupWindow
|
||||
import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.cloud.ui.SweeperOperatePanelView
|
||||
import com.mogo.och.sweeper.common.callback.ICleaningModeStateCallback
|
||||
|
||||
/**
|
||||
* 清扫车面板浮窗
|
||||
*/
|
||||
class SweeperOperatePanelPopWindow : PopupWindow{
|
||||
|
||||
private var mOperatePanelView: SweeperOperatePanelView? = null
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
init(context)
|
||||
}
|
||||
private fun init(context: Context) {
|
||||
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
mOperatePanelView = LayoutInflater.from(context).inflate(R.layout.sweeper_cloud_popwindow_operate_panel, null) as SweeperOperatePanelView?
|
||||
width = ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
height = ViewGroup.LayoutParams.WRAP_CONTENT
|
||||
contentView = mOperatePanelView
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置清扫模式数据
|
||||
*/
|
||||
fun setCleanSystemState(
|
||||
cleanSystemState: ChassisStatesOuterClass.SweeperFuTianTaskSystemStates?,
|
||||
cleaningModeStateCallback: ICleaningModeStateCallback
|
||||
) {
|
||||
mOperatePanelView?.setSweeperFutianCleanSystemState(cleanSystemState, cleaningModeStateCallback)
|
||||
}
|
||||
|
||||
/**.
|
||||
*
|
||||
* 设置是否让popWindow消失
|
||||
*/
|
||||
fun setIsOutsideTouchable(isOutsideTouchable:Boolean){
|
||||
this.isFocusable = isOutsideTouchable
|
||||
this.isOutsideTouchable = isOutsideTouchable
|
||||
this.isTouchable=isOutsideTouchable
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否展示状态同步中
|
||||
*/
|
||||
fun showSyncing(operateState: OperateStateEnum){
|
||||
mOperatePanelView?.showSyncing(operateState)
|
||||
}
|
||||
}
|
||||
@@ -1,149 +0,0 @@
|
||||
package com.mogo.och.sweeper.cloud.util;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.utils.MogoAnalyticUtils;
|
||||
import com.mogo.eagle.core.data.app.AppConfigInfo;
|
||||
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
|
||||
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.eagle.core.utilcode.util.DateTimeUtils;
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* OCH sweeper埋点工具
|
||||
*
|
||||
* Created on 2022/3/24
|
||||
*/
|
||||
public class SweeperAnalyticsManager {
|
||||
|
||||
private static final class SingletonHolder {
|
||||
private static final SweeperAnalyticsManager INSTANCE = new SweeperAnalyticsManager();
|
||||
}
|
||||
|
||||
public static SweeperAnalyticsManager getInstance() {
|
||||
return SweeperAnalyticsManager.SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private String mStartAutopilotKey;
|
||||
private HashMap<String, Object> mStartAutopilotParams = new HashMap<>();
|
||||
|
||||
private Runnable startAutopilotRunnable = () -> {
|
||||
// 15s内未开启,上报失败埋点
|
||||
triggerStartAutopilotFailureEvent("", "15s后app等待超时");
|
||||
};
|
||||
|
||||
public void triggerStartAutopilotFailureEventByAdas(String failCode, String failMsg){
|
||||
removeWaitingCallback();
|
||||
triggerStartAutopilotFailureEvent(failCode, failMsg);
|
||||
}
|
||||
|
||||
private void triggerStartAutopilotFailureEvent(String failCode, String failMsg){
|
||||
if (mStartAutopilotParams.isEmpty()) return;
|
||||
|
||||
CallerLogger.e( M_SWEEPER + "triggerStartAutopilotFailureEvent", failMsg );
|
||||
|
||||
if (CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() !=
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING){
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_FAILURE_CODE, failCode);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_FAILURE_MSG, failMsg);
|
||||
}
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_RESULT
|
||||
, CallerAutoPilotStatusListenerManager.INSTANCE.getAutoPilotStatusInfo().getState() ==
|
||||
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING);
|
||||
|
||||
MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);
|
||||
|
||||
clearStartAutopilotParams();//清空参数数据,防止误传
|
||||
}
|
||||
|
||||
private void removeWaitingCallback() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
if (startAutopilotRunnable != null) {
|
||||
UiThreadHandler.removeCallbacks(startAutopilotRunnable);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void clearStartAutopilotFailureMSG(){
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_FAILURE_CODE, "");
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_FAILURE_MSG, "");
|
||||
}
|
||||
|
||||
private void clearStartAutopilotParams(){
|
||||
mStartAutopilotParams.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发'开启自动驾驶'埋点流程
|
||||
* 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点
|
||||
* @param restart false(点击'滑动出发'启动)/true(接管后点击'自动驾驶'按钮启动)
|
||||
* @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点)
|
||||
*/
|
||||
public void triggerStartAutopilotEvent(
|
||||
boolean restart, boolean send, String startName, String endName, int lineId) {
|
||||
mStartAutopilotKey = restart ?
|
||||
SweeperConst.EVENT_KEY_RESTART_AUTOPILOT : SweeperConst.EVENT_KEY_START_SERVICE;
|
||||
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
|
||||
String plateNum = AppConfigInfo.INSTANCE.getPlateNumber();
|
||||
String dateTime = DateTimeUtils.getTimeText(
|
||||
System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss);
|
||||
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_SN, sn);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_ENV_ONLINE,
|
||||
DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_TIME, dateTime);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_NAME, startName);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_END_NAME, endName);
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_LINE_ID, lineId);
|
||||
|
||||
if (send) {
|
||||
if (mStartAutopilotParams.isEmpty()) return;
|
||||
// 开启成功,上报埋点
|
||||
clearStartAutopilotFailureMSG();
|
||||
removeWaitingCallback();
|
||||
mStartAutopilotParams.put(SweeperConst.EVENT_PARAM_START_RESULT, true);
|
||||
MogoAnalyticUtils.INSTANCE.track(mStartAutopilotKey, mStartAutopilotParams);
|
||||
|
||||
clearStartAutopilotParams();//清空参数数据,防止误传
|
||||
} else {
|
||||
UiThreadHandler.postDelayed(startAutopilotRunnable, SweeperConst.LOOP_PERIOD_15S);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 触发"无法开启自驾已知异常"埋点
|
||||
* @param startName
|
||||
* @param endName
|
||||
* @param lineId
|
||||
*/
|
||||
public void triggerUnableStartAPReasonEvent(String startName, String endName, int lineId,
|
||||
String reason) {
|
||||
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
|
||||
String plateNum = AppConfigInfo.INSTANCE.getPlateNumber();
|
||||
String dateTime = DateTimeUtils.getTimeText(
|
||||
System.currentTimeMillis(), DateTimeUtils.yyyy_MM_dd_HH_mm_ss);
|
||||
|
||||
HashMap<String, Object> params = new HashMap<>();
|
||||
|
||||
params.put(SweeperConst.EVENT_PARAM_SN, sn);
|
||||
params.put(SweeperConst.EVENT_PARAM_PLATE_NUM, TextUtils.isEmpty(plateNum) ? "" : plateNum);
|
||||
params.put(SweeperConst.EVENT_PARAM_ENV_ONLINE,
|
||||
DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE ? true : false);
|
||||
params.put(SweeperConst.EVENT_PARAM_TIME, dateTime);
|
||||
params.put(SweeperConst.EVENT_PARAM_START_NAME, startName);
|
||||
params.put(SweeperConst.EVENT_PARAM_END_NAME, endName);
|
||||
params.put(SweeperConst.EVENT_PARAM_LINE_ID, lineId);
|
||||
params.put(SweeperConst.EVENT_PARAM_UNABLE_START_REASON, reason);
|
||||
MogoAnalyticUtils.INSTANCE.track(SweeperConst.EVENT_KEY_AP_UNABLE_START_REASON, params);
|
||||
}
|
||||
}
|
||||
@@ -15,10 +15,7 @@ import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.common.module.utils.OCHThreadPoolManager
|
||||
import com.mogo.och.common.module.voice.VoiceNotice
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.cloud.callback.SweeperCloudDialogClickListener
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst
|
||||
import com.mogo.och.sweeper.cloud.model.SweeperTaskModel
|
||||
import com.mogo.och.sweeper.cloud.ui.dialog.SweeperCloudDialog
|
||||
import com.mogo.och.sweeper.cloud.model.SweeperCloudTaskModel
|
||||
import com.zhjt.mogo.adas.data.AiCloudTask
|
||||
import com.zhjt.mogo.adas.data.sweeper.bootable.SweeperBootable
|
||||
import com.zhjt.mogo.adas.data.sweeper.common.SweeperCommon
|
||||
@@ -43,7 +40,7 @@ object SweeperCloudTaskUtils {
|
||||
// UiThreadHandler.getsUiHandler().postDelayed({
|
||||
// mockSendCloudTaskInfo(MessageType.PadSendGetTaskReq)
|
||||
// },1000)
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().getCurrentTask()
|
||||
SweeperCloudTaskModel.getInstance().getCurrentTask()
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -150,7 +147,7 @@ object SweeperCloudTaskUtils {
|
||||
// subBuilder3.lineId = 126
|
||||
// subBuilder3.lineName = "测试路线3"
|
||||
// builder.addSubList(subBuilder3.build())
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().onSweeperFutianCloudTask(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTask(
|
||||
messageType,
|
||||
"${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(),
|
||||
@@ -171,7 +168,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "1"
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().onSweeperFutianCloudTaskConfirm(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTaskConfirm(
|
||||
AiCloudTask.MessageType.CloudPushTaskConfirm, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -187,7 +184,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskId = "10"
|
||||
builder.subTaskId = "1"
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.RUNNING
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTaskStatus(
|
||||
AiCloudTask.MessageType.CloudPushTaskStatus, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -202,7 +199,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.sn = getDriverSn()
|
||||
builder.taskId = "10"
|
||||
builder.type = SweeperTaskStop.StopTaskType.ADVANCE
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().onSweeperFutianCloudTaskStop(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudTaskStop(
|
||||
AiCloudTask.MessageType.CloudPushTaskStop, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -218,7 +215,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.taskId = "10"
|
||||
builder.taskStatus = SweeperCommon.TaskStatus.FINISHED
|
||||
builder.systemTime = System.currentTimeMillis()
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudBigTaskStatus(
|
||||
AiCloudTask.MessageType.CloudPushBigTaskStatus, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
@@ -235,7 +232,7 @@ object SweeperCloudTaskUtils {
|
||||
builder.subTaskId = "1"
|
||||
builder.code = SweeperCommon.Code.SUCCEED
|
||||
UiThreadHandler.getsUiHandler().postDelayed({
|
||||
com.mogo.och.sweeper.cloud.model.SweeperTaskModel.getInstance().onSweeperFutianCloudBootable(
|
||||
SweeperCloudTaskModel.getInstance().onSweeperFutianCloudBootable(
|
||||
AiCloudTask.MessageType.PadSendBootable, "${System.currentTimeMillis()}",
|
||||
System.currentTimeMillis(), builder.build()
|
||||
)
|
||||
|
||||
@@ -26,7 +26,7 @@ import kotlinx.android.synthetic.main.sweeper_cloud_current_task_info.view.tvTas
|
||||
/**
|
||||
* 清扫车当前任务信息展示
|
||||
*/
|
||||
class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
class SweeperCloudCurrentTaskInfoView : ConstraintLayout {
|
||||
private val TAG: String = "SweeperCurrentTaskInfoView"
|
||||
|
||||
//当前任务操作菜单
|
||||
@@ -116,7 +116,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
) {
|
||||
// 更新 任务名称、任务时间
|
||||
taskInfo?.apply {
|
||||
this@SweeperCurrentTaskInfoView.listTask = subListList
|
||||
this@SweeperCloudCurrentTaskInfoView.listTask = subListList
|
||||
tvTaskName.text = taskName
|
||||
val calendarStart = DateTimeUtil.formatLongToCalendar(taskStartTime)
|
||||
val calendarEnd = DateTimeUtil.formatLongToCalendar(taskEndTime)
|
||||
@@ -25,7 +25,7 @@ import kotlin.math.roundToInt
|
||||
/**
|
||||
* 车辆基本信息:方向盘下方的档位 转向灯 限速 速度 电量 水量
|
||||
*/
|
||||
class SweeperTrafficDataView : ConstraintLayout,
|
||||
class SweeperCloudTrafficDataView : ConstraintLayout,
|
||||
IMoGoBatteryManagementSystemListener,
|
||||
IMoGoChassisLamplightListener,
|
||||
IMoGoChassisGearStateListener,
|
||||
@@ -12,18 +12,24 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil
|
||||
import com.mogo.och.sweeper.common.view.SweeperOperatePanelPopWindow
|
||||
import com.zhjt.mogo.adas.data.sweeper.task.SweeperTask.TaskModel
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.groupWorkModelPanel
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.ivOpenOperatePanel
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvCleaningDirection
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvCleaningIntensity
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvCleaningMode
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.tvNoDataDesc
|
||||
|
||||
/**
|
||||
* 清扫车模式信息展示
|
||||
*/
|
||||
class SweeperWorkModeView : ConstraintLayout {
|
||||
class SweeperCloudWorkModeView : ConstraintLayout {
|
||||
|
||||
private var isSelectPureSweepMode: Boolean = false
|
||||
private val TAG = "SweeperWorkModeView"
|
||||
//清扫模式选择面板
|
||||
private var mOperatePanelPopWindow: com.mogo.och.sweeper.cloud.ui.popwindow.SweeperOperatePanelPopWindow? = null
|
||||
private var mOperatePanelPopWindow: SweeperOperatePanelPopWindow? = null
|
||||
|
||||
private var operateState: OperateStateEnum=OperateStateEnum.SYNCING_STATUS
|
||||
|
||||
@@ -37,14 +43,14 @@ class SweeperWorkModeView : ConstraintLayout {
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_work_mode, this)
|
||||
mOperatePanelPopWindow = com.mogo.och.sweeper.cloud.ui.popwindow.SweeperOperatePanelPopWindow(context)
|
||||
mOperatePanelPopWindow = SweeperOperatePanelPopWindow(context)
|
||||
setShowOrHideCleanSystemState(OperateStateEnum.SYNCING_STATUS,null)
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置view
|
||||
*/
|
||||
fun setTrafficDataView(trafficDataView: com.mogo.och.sweeper.cloud.view.SweeperTrafficDataView){
|
||||
fun setTrafficDataView(trafficDataView: com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView){
|
||||
//清扫模式选择面板打开关闭处理
|
||||
ivOpenOperatePanel.setOnClickListener {
|
||||
if (mOperatePanelPopWindow?.isShowing != true) {
|
||||
@@ -1,148 +0,0 @@
|
||||
package com.mogo.och.sweeper.cloud.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.LinearLayout
|
||||
import com.mogo.eagle.core.data.enums.DataSourceType
|
||||
import com.mogo.eagle.core.data.enums.TrafficLightEnum
|
||||
import com.mogo.eagle.core.function.api.datacenter.union.IMoGoTrafficLightListener
|
||||
import com.mogo.eagle.core.function.call.v2x.CallerTrafficLightListenerManager
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
|
||||
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
|
||||
import com.mogo.och.sweeper.R
|
||||
import kotlinx.android.synthetic.main.sweeper_traffic_light_view.view.*
|
||||
|
||||
/**
|
||||
* 清扫车:红绿灯view-
|
||||
*
|
||||
* Created on 2022/3/29
|
||||
*/
|
||||
class SweeperTrafficLightView @JvmOverloads constructor(
|
||||
context: Context?,
|
||||
attrs: AttributeSet? = null,
|
||||
defStyleAttr: Int = 0
|
||||
) : LinearLayout(context, attrs, defStyleAttr), IMoGoTrafficLightListener {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "SweeperTrafficLightView"
|
||||
}
|
||||
|
||||
private var mCurrentLightId = TrafficLightEnum.BLACK
|
||||
|
||||
init {
|
||||
init(context)
|
||||
}
|
||||
|
||||
private fun init(context: Context?) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_traffic_light_view, this, true)
|
||||
}
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
CallerTrafficLightListenerManager.addListener(TAG, this)
|
||||
}
|
||||
|
||||
override fun onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow()
|
||||
CallerTrafficLightListenerManager.removeListener(TAG)
|
||||
}
|
||||
|
||||
/**
|
||||
* 展示红绿灯预警
|
||||
*
|
||||
* @param checkLightId 0-都是默认,1-红,2-黄,3-绿
|
||||
* @param lightSource 1:云端下发;2:自车感知
|
||||
*/
|
||||
override fun showTrafficLight(checkLightId: TrafficLightEnum, lightSource: DataSourceType) {
|
||||
mCurrentLightId = checkLightId
|
||||
updateTrafficLightIcon(checkLightId)
|
||||
CallerLogger.d(SceneConstant.M_SWEEPER + TAG,"灯态类型:"+checkLightId.name +" 灯态来源:"+DataSourceType.getName(lightSource))
|
||||
}
|
||||
|
||||
/**
|
||||
* 关闭红绿灯预警展示,并重制灯态
|
||||
*/
|
||||
override fun disableTrafficLight() {
|
||||
UiThreadHandler.post {
|
||||
mCurrentLightId = TrafficLightEnum.BLACK
|
||||
sweeper_traffic_light_iv.setImageResource(R.drawable.sweeper_light_gay_nor)
|
||||
sweeper_traffic_light_time_tv.text = ""
|
||||
this@SweeperTrafficLightView.visibility = VISIBLE
|
||||
CallerLogger.d(SceneConstant.M_SWEEPER + TAG,"灯态类型:disableTrafficLight")
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param redNum 红灯倒计时
|
||||
* @param yellowNum 黄灯倒计时
|
||||
* @param greenNum 绿灯倒计时
|
||||
*/
|
||||
override fun changeCountdownTrafficLightNum(redNum: Int, yellowNum: Int, greenNum: Int) {
|
||||
when (mCurrentLightId) {
|
||||
TrafficLightEnum.RED -> changeCountdownRed(redNum)
|
||||
TrafficLightEnum.YELLOW -> changeCountdownYellow(yellowNum)
|
||||
TrafficLightEnum.GREEN -> changeCountdownGreen(greenNum)
|
||||
else -> UiThreadHandler.post { sweeper_traffic_light_time_tv.text = "" }
|
||||
}
|
||||
}
|
||||
|
||||
override fun changeCountdownRed(redNum: Int) {
|
||||
UiThreadHandler.post {
|
||||
if (redNum > 0) {
|
||||
sweeper_traffic_light_time_tv.text = redNum.toString()
|
||||
} else {
|
||||
sweeper_traffic_light_time_tv.text = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun changeCountdownGreen(greenNum: Int) {
|
||||
UiThreadHandler.post {
|
||||
if (greenNum > 0) {
|
||||
sweeper_traffic_light_time_tv.text = greenNum.toString()
|
||||
} else {
|
||||
sweeper_traffic_light_time_tv.text = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun changeCountdownYellow(yellowNum: Int) {
|
||||
UiThreadHandler.post {
|
||||
if (yellowNum > 0) {
|
||||
sweeper_traffic_light_time_tv.text = yellowNum.toString()
|
||||
} else {
|
||||
sweeper_traffic_light_time_tv.text = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新红绿灯icon
|
||||
*
|
||||
* @param lightId 0-都是默认,1-红,2-黄,3-绿
|
||||
*/
|
||||
private fun updateTrafficLightIcon(lightId: TrafficLightEnum) {
|
||||
UiThreadHandler.post {
|
||||
when (lightId) {
|
||||
TrafficLightEnum.RED -> {
|
||||
sweeper_traffic_light_iv.setImageResource(R.drawable.sweeper_light_red_nor)
|
||||
this@SweeperTrafficLightView.visibility = VISIBLE
|
||||
}
|
||||
TrafficLightEnum.YELLOW -> {
|
||||
sweeper_traffic_light_iv.setImageResource(R.drawable.sweeper_lightyellow_nor)
|
||||
this@SweeperTrafficLightView.visibility = VISIBLE
|
||||
}
|
||||
TrafficLightEnum.GREEN -> {
|
||||
sweeper_traffic_light_iv.setImageResource(R.drawable.sweeper_light_green_nor)
|
||||
this@SweeperTrafficLightView.visibility = VISIBLE
|
||||
}
|
||||
else -> {
|
||||
sweeper_traffic_light_iv.setImageResource(R.drawable.sweeper_light_gay_nor)
|
||||
this@SweeperTrafficLightView.visibility = VISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.operate.callback
|
||||
package com.mogo.och.sweeper.common.callback
|
||||
|
||||
interface IWeltMapSwitchToSmallCallback {
|
||||
fun onWeltMapSwitchToSmall()
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.cloud.fragment;
|
||||
package com.mogo.och.sweeper.common.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.cloud.fragment;
|
||||
package com.mogo.och.sweeper.common.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
@@ -1,12 +1,12 @@
|
||||
package com.mogo.och.sweeper.cloud.fragment
|
||||
package com.mogo.och.sweeper.common.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback
|
||||
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import com.mogo.och.sweeper.operate.callback.IWeltMapSwitchToSmallCallback
|
||||
import kotlinx.android.synthetic.main.fragment_welt_map_overview.*
|
||||
import kotlinx.android.synthetic.main.sweeper_welt_map_overview.*
|
||||
|
||||
@@ -15,7 +15,6 @@ import kotlinx.android.synthetic.main.sweeper_welt_map_overview.*
|
||||
*/
|
||||
class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallback {
|
||||
private var mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback? = null
|
||||
private var mFragment: SweeperFragment? = null
|
||||
override fun getLayoutId(): Int = R.layout.fragment_welt_map_overview
|
||||
override fun getTagName(): String {
|
||||
return "WeltMapOverViewFragment"
|
||||
@@ -27,10 +26,6 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
fun setWeltMapSwitchToSmallCallBack(iWeltMapSwitchToSmallCallback: IWeltMapSwitchToSmallCallback){
|
||||
this.mIWeltMapSwitchToSmallCallBack=iWeltMapSwitchToSmallCallback
|
||||
}
|
||||
fun setSweeperFragment(fragment: SweeperFragment){
|
||||
this.mFragment=fragment
|
||||
mFragment?.setTaskDataToFragmentCallback(this)
|
||||
}
|
||||
override fun initViews(savedInstanceState: Bundle?) {
|
||||
super.initViews(savedInstanceState)
|
||||
weltMapOverView?.onCreateView(savedInstanceState)
|
||||
@@ -71,8 +66,7 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
weltDataList: ArrayList<WeltDataBean>?,
|
||||
latLngs: ArrayList<LatLng>?,
|
||||
routeList: ArrayList<com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean.Result>?,
|
||||
progress:String?,
|
||||
sweeperFragment: SweeperFragment
|
||||
progress:String?
|
||||
): WeltMapOverViewFragment {
|
||||
val args = Bundle()
|
||||
args.putSerializable("weltDataList", weltDataList)
|
||||
@@ -82,7 +76,6 @@ class WeltMapOverViewFragment : BaseFragment(), ISweeperTaskDataToFragmentCallba
|
||||
args.putString("progress", progress)
|
||||
val fragment = WeltMapOverViewFragment()
|
||||
fragment.setWeltMapSwitchToSmallCallBack(mIWeltMapSwitchToSmallCallBack)
|
||||
fragment.setSweeperFragment(sweeperFragment)
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.operate.util;
|
||||
package com.mogo.och.sweeper.common.util;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_SWEEPER;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.cloud.ui.dialog
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.cloud.ui.dialog
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.operate.ui.popwindow
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -10,7 +10,7 @@ import chassis.ChassisStatesOuterClass
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.operate.ui.SweeperOperatePanelView
|
||||
import com.mogo.och.sweeper.common.view.SweeperOperatePanelView
|
||||
|
||||
/**
|
||||
* 清扫车面板浮窗
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.cloud.ui;
|
||||
package com.mogo.och.sweeper.common.view;
|
||||
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.sweeper.operate.view
|
||||
package com.mogo.och.sweeper.common.view
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
@@ -12,7 +12,7 @@ import java.util.ArrayList
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/10/22
|
||||
*/
|
||||
interface ISweeperTaskCallback {
|
||||
interface ISweeperOperateTaskCallback {
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
@@ -1,58 +0,0 @@
|
||||
package com.mogo.och.sweeper.operate.event;
|
||||
|
||||
import com.amap.api.maps.model.LatLng;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class WeltDataEvent{
|
||||
private int type; //1.添加起点和终点 2.实时添加贴边数据 3.清除数据 4.任务进度 5:任务轨迹数据
|
||||
private ArrayList<WeltDataBean> weltDataBeanList;
|
||||
private ArrayList<LatLng> markers;
|
||||
private String distance;//贴边数据
|
||||
private String progress;//任务进度
|
||||
|
||||
public WeltDataEvent(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(int type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public ArrayList<WeltDataBean> getWeltDataBeanList() {
|
||||
return weltDataBeanList;
|
||||
}
|
||||
|
||||
public void setWeltDataBeanList(ArrayList<WeltDataBean> weltDataBeanList) {
|
||||
this.weltDataBeanList = weltDataBeanList;
|
||||
}
|
||||
|
||||
public ArrayList<LatLng> getMarkers() {
|
||||
return markers;
|
||||
}
|
||||
|
||||
public void setMarkers(ArrayList<LatLng> markers) {
|
||||
this.markers = markers;
|
||||
}
|
||||
|
||||
public String getDistance() {
|
||||
return distance;
|
||||
}
|
||||
|
||||
public void setDistance(String distance) {
|
||||
this.distance = distance;
|
||||
}
|
||||
|
||||
public String getProgress() {
|
||||
return progress;
|
||||
}
|
||||
|
||||
public void setProgress(String progress) {
|
||||
this.progress = progress;
|
||||
}
|
||||
}
|
||||
@@ -31,9 +31,11 @@ import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
|
||||
import com.mogo.och.sweeper.R;
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.common.callback.IWeltMapSwitchToSmallCallback;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.operate.view.SweeperTrafficDataView;
|
||||
import com.mogo.och.sweeper.common.fragment.SweeperAmapNaviFragment;
|
||||
import com.mogo.och.sweeper.common.fragment.WeltMapOverViewFragment;
|
||||
import com.mogo.och.sweeper.operate.view.SweeperOperateTrafficDataView;
|
||||
import com.mogo.och.sweeper.common.view.WeltSmallMapView;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@@ -52,7 +54,7 @@ import androidx.fragment.app.FragmentTransaction;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public abstract class BaseSweeperTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
public abstract class BaseSweeperOperateTabFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> implements IMogoMapListener,
|
||||
View.OnClickListener, IWeltMapSwitchToSmallCallback, View.OnTouchListener {
|
||||
|
||||
private static final String TAG = "BaseSweeperTabFragment";
|
||||
@@ -69,7 +71,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
private MapBizView mapBizView;
|
||||
private Group groupTestPanel;
|
||||
//清扫车车辆基本信息 速度 档位 转向灯 红绿灯等
|
||||
private SweeperTrafficDataView mTrafficDataView;
|
||||
private SweeperOperateTrafficDataView mTrafficDataView;
|
||||
//人工驾驶地图View组控制
|
||||
private Group mGroupNaviPanel;
|
||||
//人工驾驶地图Fragment
|
||||
@@ -282,7 +284,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
/**
|
||||
* 车辆基本信息View
|
||||
*/
|
||||
public SweeperTrafficDataView getTrafficDataView() {
|
||||
public SweeperOperateTrafficDataView getTrafficDataView() {
|
||||
return mTrafficDataView;
|
||||
}
|
||||
|
||||
@@ -362,7 +364,7 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
if (isShow) {
|
||||
mGroupNaviPanel.setVisibility(View.VISIBLE);
|
||||
if (mOchAmapNaviFragment == null) {
|
||||
mOchAmapNaviFragment=SweeperAmapNaviFragment.newInstance();
|
||||
mOchAmapNaviFragment= SweeperAmapNaviFragment.newInstance();
|
||||
}
|
||||
if (mOchAmapNaviFragment.isHidden()) {
|
||||
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
@@ -414,8 +416,8 @@ public abstract class BaseSweeperTabFragment<V extends IView, P extends Presente
|
||||
mWeltDataBeanList,
|
||||
mSubTaskCoordinates,
|
||||
mRouteList,
|
||||
mProgress,
|
||||
(SweeperFragment) this);
|
||||
mProgress);
|
||||
this.setTaskDataToFragmentCallback(mWeltMapOverViewFragment);
|
||||
}
|
||||
if (mWeltMapOverViewFragment.isHidden()) {
|
||||
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.mogo.och.sweeper.operate.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/9/9
|
||||
*/
|
||||
public abstract class BaseSweeperUIFragment extends Fragment {
|
||||
private View mRootView;
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
if (mRootView == null) {
|
||||
mRootView = inflater.inflate(getLayoutId(), container, false);
|
||||
} else {
|
||||
ViewGroup viewGroup = (ViewGroup) mRootView.getParent();
|
||||
if (viewGroup != null) {
|
||||
viewGroup.removeView(mRootView);
|
||||
}
|
||||
}
|
||||
initViews(mRootView);
|
||||
initViews(savedInstanceState);
|
||||
return mRootView;
|
||||
}
|
||||
/**
|
||||
* 布局资源
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
protected abstract int getLayoutId();
|
||||
|
||||
protected abstract void initViews(View view);
|
||||
|
||||
protected void initViews(Bundle savedInstanceState) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
mRootView = null;
|
||||
}
|
||||
}
|
||||
@@ -1,230 +0,0 @@
|
||||
package com.mogo.och.sweeper.operate.fragment;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.amap.api.navi.AMapNaviViewListener;
|
||||
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
|
||||
import com.mogo.och.common.module.map.AmapNaviToDestinationModel;
|
||||
import com.mogo.och.common.module.map.CommonAmapNaviVIew;
|
||||
import com.mogo.och.common.module.map.ICommonNaviChangedCallback;
|
||||
import com.mogo.och.sweeper.R;
|
||||
|
||||
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
|
||||
|
||||
/**
|
||||
* @author: wangmingjun
|
||||
* @date: 2021/11/30
|
||||
*/
|
||||
public class SweeperAmapNaviFragment extends BaseSweeperUIFragment implements AMapNaviViewListener {
|
||||
|
||||
private CommonAmapNaviVIew mAMapNaviView;
|
||||
private ICommonNaviChangedCallback mNaviToStartInfoCallback;
|
||||
public static SweeperAmapNaviFragment newInstance() {
|
||||
|
||||
Bundle args = new Bundle();
|
||||
|
||||
SweeperAmapNaviFragment fragment = new SweeperAmapNaviFragment();
|
||||
fragment.setArguments(args);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.sweeper_amap_navi_view;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initViews(View view) {
|
||||
mAMapNaviView = view.findViewById(R.id.navi_view);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initViews(Bundle savedInstanceState) {
|
||||
super.initViews(savedInstanceState);
|
||||
if (mAMapNaviView != null)
|
||||
mAMapNaviView.onCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
if (mAMapNaviView != null)
|
||||
mAMapNaviView.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
if (mAMapNaviView != null)
|
||||
mAMapNaviView.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onHiddenChanged(boolean hidden) {
|
||||
super.onHiddenChanged(hidden);
|
||||
if (hidden) { //不在最前端界面显示
|
||||
if (mAMapNaviView != null){
|
||||
mAMapNaviView.onPause();
|
||||
}
|
||||
} else { //重新显示到最前端
|
||||
if (mAMapNaviView != null){
|
||||
mAMapNaviView.onResume();
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
|
||||
AmapNaviToDestinationModel.getInstance(getContext()).setVoiceIsMute(false);
|
||||
if (mAMapNaviView != null){
|
||||
mAMapNaviView.onDestroy();
|
||||
}
|
||||
|
||||
if (mNaviToStartInfoCallback != null){
|
||||
mNaviToStartInfoCallback = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviSetting() {
|
||||
//底部导航设置点击回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviCancel() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviMapMode(int naviMode) {
|
||||
//导航态车头模式,0:车头朝上状态;1:正北朝上模式。
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviTurnClick() {
|
||||
//转弯view的点击回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNextRoadClick() {
|
||||
//下一个道路View点击回调
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onScanViewButtonClick() {
|
||||
//全览按钮点击回调
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onLockMap(boolean isLock) {
|
||||
//锁地图状态发生变化时回调
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviViewLoaded() {
|
||||
CallerLogger.d(M_TAXI + "wlx", "导航页面加载成功");
|
||||
CallerLogger.d(M_TAXI + "wlx", "请不要使用AMapNaviView.getMap().setOnMapLoadedListener();会overwrite导航SDK内部画线逻辑");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMapTypeChanged(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNaviViewShowMode(int i) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onNaviBackClick() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 车道信息说明:
|
||||
* <p>
|
||||
* 0xFF, 无对应车道
|
||||
* 0, 直行
|
||||
* 1, 左转
|
||||
* 2, 直行+左转
|
||||
* 3, 右转
|
||||
* 4, 直行+右转
|
||||
* 5, 左掉头
|
||||
* 6, 左转+右转
|
||||
* 7, 直行+左转+右转
|
||||
* 8, 右掉头
|
||||
* 9, 直行+左掉头
|
||||
* 10, 直行+右掉头
|
||||
* 11, 左转+左掉头
|
||||
* 12, 右转+右掉头
|
||||
* 13, 直行+扩展
|
||||
* 14, 左转+左掉头+扩展
|
||||
* 15, 保留
|
||||
* 16, 直行+左转+左掉头
|
||||
* 17, 右转+左掉头
|
||||
* 18, 左转+右转+左掉头
|
||||
* 19, 直行+右转+左掉头
|
||||
* 20, 左转+右掉头
|
||||
* 21, 公交车道
|
||||
* 22, 空车道
|
||||
* 23 可变车道
|
||||
*/
|
||||
|
||||
String[] array = {
|
||||
"直行车道"
|
||||
, "左转车道"
|
||||
, "左转或直行车道"
|
||||
, "右转车道"
|
||||
, "右转或直行车道"
|
||||
, "左掉头车道"
|
||||
, "左转或者右转车道"
|
||||
, " 左转或右转或直行车道"
|
||||
, "右转掉头车道"
|
||||
, "直行或左转掉头车道"
|
||||
, "直行或右转掉头车道"
|
||||
, "左转或左掉头车道"
|
||||
, "右转或右掉头车道"
|
||||
, "直行并且车道扩展"
|
||||
, "左转+左掉头+扩展"
|
||||
, "不可以选择该车道"
|
||||
, "直行+左转+左掉头车道"
|
||||
, "右转+左掉头"
|
||||
, "左转+右转+左掉头"
|
||||
, "直行+右转+左掉头"
|
||||
, "左转+右掉头"
|
||||
, "公交车道"
|
||||
, "空车道"
|
||||
, "可变车道"
|
||||
};
|
||||
|
||||
String[] actions = {
|
||||
"直行"
|
||||
, "左转"
|
||||
, "左转或直行"
|
||||
, "右转"
|
||||
, "右转或这行"
|
||||
, "左掉头"
|
||||
, "左转或者右转"
|
||||
, " 左转或右转或直行"
|
||||
, "右转掉头"
|
||||
, "直行或左转掉头"
|
||||
, "直行或右转掉头"
|
||||
, "左转或左掉头"
|
||||
, "右转或右掉头"
|
||||
, "直行并且车道扩展"
|
||||
, "左转+左掉头+扩展"
|
||||
, "不可以选择"
|
||||
, "直行+左转+左掉头"
|
||||
, "右转+左掉头"
|
||||
, "左转+右转+左掉头"
|
||||
, "直行+右转+左掉头"
|
||||
, "左转+右掉头"
|
||||
, "公交车道"
|
||||
, "空车道"
|
||||
, "可变车道"
|
||||
};
|
||||
}
|
||||
@@ -17,7 +17,6 @@ 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.operate.bean.*
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase
|
||||
@@ -25,14 +24,14 @@ import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweeper.operate.presenter.SweeperOperatePresenter
|
||||
import com.mogo.och.sweeper.operate.ui.adapter.TaskListAdapter
|
||||
import com.mogo.och.sweeper.operate.ui.dialog.SweeperManualDrivingDialog
|
||||
import com.mogo.och.sweeper.operate.ui.dialog.SweeperNoTitleCommonDialog
|
||||
import com.mogo.och.sweeper.common.view.SweeperManualDrivingDialog
|
||||
import com.mogo.och.sweeper.common.view.SweeperNoTitleCommonDialog
|
||||
import com.mogo.och.sweeper.operate.ui.popwindow.MenuPopWindow
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper.*
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_no_data_common_view.*
|
||||
import kotlinx.android.synthetic.main.fragment_och_sweeper_operate.*
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_current_task_info.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_no_data_common_view.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.math.roundToInt
|
||||
@@ -40,7 +39,7 @@ import kotlin.math.roundToInt
|
||||
/**
|
||||
* 清扫车主界面
|
||||
*/
|
||||
class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresenter?>(), MenuPopWindow.OnMenuItemOnClickListener {
|
||||
class SweeperOperateFragment : BaseSweeperOperateTabFragment<SweeperOperateFragment?, SweeperOperatePresenter?>(), MenuPopWindow.OnMenuItemOnClickListener {
|
||||
|
||||
companion object {
|
||||
const val TAG = "SweeperFragment"
|
||||
@@ -84,8 +83,8 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): SweeperPresenter {
|
||||
return SweeperPresenter(this)
|
||||
override fun createPresenter(): SweeperOperatePresenter {
|
||||
return SweeperOperatePresenter(this)
|
||||
}
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
@@ -94,7 +93,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
}
|
||||
|
||||
override fun getTaskListPanelViewId(): Int {
|
||||
return R.layout.fragment_och_sweeper
|
||||
return R.layout.fragment_och_sweeper_operate
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -183,7 +182,7 @@ class SweeperFragment : BaseSweeperTabFragment<SweeperFragment?, SweeperPresente
|
||||
mAdapter?.selectPosition(position)
|
||||
tvTaskConfirm.isSelected = true
|
||||
tvTaskConfirm.setTextColor(Color.parseColor("#FFFFFFFF"))
|
||||
this@SweeperFragment.mMainTask = mainTask
|
||||
this@SweeperOperateFragment.mMainTask = mainTask
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
package com.mogo.och.sweeper.operate.fragment
|
||||
|
||||
import android.os.Bundle
|
||||
import com.amap.api.maps.model.LatLng
|
||||
import com.mogo.commons.mvp.BaseFragment
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.bean.SweeperRoutePlanningUpdateReqBean
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskDataToFragmentCallback
|
||||
import com.mogo.och.sweeper.operate.callback.IWeltMapSwitchToSmallCallback
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean
|
||||
import kotlinx.android.synthetic.main.fragment_welt_map_overview.*
|
||||
import kotlinx.android.synthetic.main.sweeper_welt_map_overview.*
|
||||
|
||||
/**
|
||||
* 作业任务全览图
|
||||
*/
|
||||
class WeltMapOverViewFragment() : BaseFragment(), ISweeperTaskDataToFragmentCallback {
|
||||
private var mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback? = null
|
||||
private var mFragment: SweeperFragment? = null
|
||||
override fun getLayoutId(): Int = R.layout.fragment_welt_map_overview
|
||||
override fun getTagName(): String {
|
||||
return "WeltMapOverViewFragment"
|
||||
}
|
||||
|
||||
override fun initViews() {
|
||||
|
||||
}
|
||||
fun setWeltMapSwitchToSmallCallBack(iWeltMapSwitchToSmallCallback: IWeltMapSwitchToSmallCallback){
|
||||
this.mIWeltMapSwitchToSmallCallBack=iWeltMapSwitchToSmallCallback
|
||||
}
|
||||
fun setSweeperFragment(fragment: SweeperFragment){
|
||||
this.mFragment=fragment
|
||||
mFragment?.setTaskDataToFragmentCallback(this)
|
||||
}
|
||||
override fun initViews(savedInstanceState: Bundle?) {
|
||||
super.initViews(savedInstanceState)
|
||||
weltMapOverView?.onCreateView(savedInstanceState)
|
||||
sweeperSwitchToSmall.setOnClickListener {
|
||||
mIWeltMapSwitchToSmallCallBack?.onWeltMapSwitchToSmall()
|
||||
}
|
||||
val bundle = arguments
|
||||
if (bundle != null) {
|
||||
val latLngs = bundle.getSerializable("subTaskCoordinates") as? ArrayList<LatLng>
|
||||
val latLng = bundle.getParcelable<LatLng>("subTaskEndCoordinates")
|
||||
val weltDataList = bundle.getSerializable("weltDataList") as? ArrayList<WeltDataBean>
|
||||
val routeList = bundle.getSerializable("routeList") as? ArrayList<SweeperRoutePlanningUpdateReqBean.Result>
|
||||
val progress = bundle.getString("progress")
|
||||
routeList?.let {
|
||||
weltMapOverView?.setRouteList(it)
|
||||
}
|
||||
latLng?.let {
|
||||
setCurrentTaskCoordinatesLatLng(it)
|
||||
}
|
||||
latLngs?.let {
|
||||
setTaskListCoordinatesLatLng(it)
|
||||
}
|
||||
weltDataList?.let {
|
||||
setWeltData(it,"0.0cm")
|
||||
}
|
||||
progress?.let {
|
||||
weltMapOverView?.setProgress(progress)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun newInstance(
|
||||
mIWeltMapSwitchToSmallCallBack: IWeltMapSwitchToSmallCallback,
|
||||
mCurrentTaskEndStation:LatLng?,
|
||||
weltDataList: ArrayList<WeltDataBean>?,
|
||||
latLngs: ArrayList<LatLng>?,
|
||||
routeList: ArrayList<SweeperRoutePlanningUpdateReqBean.Result>?,
|
||||
progress:String?,
|
||||
sweeperFragment: SweeperFragment
|
||||
): WeltMapOverViewFragment {
|
||||
val args = Bundle()
|
||||
args.putSerializable("weltDataList", weltDataList)
|
||||
args.putSerializable("subTaskCoordinates", latLngs)
|
||||
args.putParcelable("subTaskEndCoordinates", mCurrentTaskEndStation)
|
||||
args.putSerializable("routeList", routeList)
|
||||
args.putString("progress", progress)
|
||||
val fragment = WeltMapOverViewFragment()
|
||||
fragment.setWeltMapSwitchToSmallCallBack(mIWeltMapSwitchToSmallCallBack)
|
||||
fragment.setSweeperFragment(sweeperFragment)
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
weltMapOverView?.onPause()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
weltMapOverView?.onResume()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
weltMapOverView?.onDestroy()
|
||||
}
|
||||
override fun setTaskListCoordinatesLatLng(coordinatesLatLng: java.util.ArrayList<LatLng>) {
|
||||
weltMapOverView?.setTaskListCoordinatesLatLng(coordinatesLatLng)
|
||||
}
|
||||
|
||||
override fun setCurrentTaskCoordinatesLatLng(coordinatesLatLng: LatLng) {
|
||||
weltMapOverView?.setCurrentTaskCoordinatesLatLng(coordinatesLatLng)
|
||||
}
|
||||
|
||||
override fun clearAllMarkerAndPolyline() {
|
||||
weltMapOverView?.clearAllMarkerAndPolyline()
|
||||
}
|
||||
|
||||
override fun setProgress(progress: String) {
|
||||
weltMapOverView?.setProgress(progress)
|
||||
}
|
||||
|
||||
override fun setRouteList(routeList: java.util.ArrayList<SweeperRoutePlanningUpdateReqBean.Result>) {
|
||||
weltMapOverView?.setRouteList(routeList)
|
||||
}
|
||||
|
||||
override fun setWeltData(weltDatas: java.util.ArrayList<WeltDataBean>?, distance: String) {
|
||||
weltMapOverView?.setWeltData(weltDatas,true,distance)
|
||||
}
|
||||
}
|
||||
@@ -48,12 +48,12 @@ import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperADASStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperTaskCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperOperateTaskCallback;
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum;
|
||||
import com.mogo.och.sweeper.operate.net.SweeperServiceManager;
|
||||
import com.mogo.och.sweeper.operate.util.SweeperAnalyticsManager;
|
||||
import com.mogo.och.sweeper.operate.net.SweeperOperateServiceManager;
|
||||
import com.mogo.och.sweeper.common.util.SweeperAnalyticsManager;
|
||||
import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -73,9 +73,9 @@ import mogo.telematics.pad.MessagePad;
|
||||
* <p>
|
||||
* 清扫车任务管理
|
||||
*/
|
||||
public class SweeperTaskModel {
|
||||
private final String TAG = SweeperTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperTaskModel sInstance;
|
||||
public class SweeperOperateTaskModel {
|
||||
private final String TAG = SweeperOperateTaskModel.class.getSimpleName();
|
||||
private static volatile SweeperOperateTaskModel sInstance;
|
||||
public double mLongitude = 0;
|
||||
public double mLatitude = 0;
|
||||
private Context mContext;
|
||||
@@ -83,7 +83,7 @@ public class SweeperTaskModel {
|
||||
private static final int VEHICLE_TYPE = 10;
|
||||
private ISweeperControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等
|
||||
private ISweeperADASStatusCallback mADASStatusCallback;
|
||||
private ISweeperTaskCallback mSweeperTaskCallback;
|
||||
private ISweeperOperateTaskCallback mSweeperTaskCallback;
|
||||
ArrayList<SweeperRoutePlanningUpdateReqBean.Result> points = new ArrayList<>();//全路径信息
|
||||
//当前子任务详情信息包括轨迹文件信息
|
||||
private SweeperSubTaskDetailBean mCurrentSubTaskDetail;
|
||||
@@ -105,18 +105,18 @@ public class SweeperTaskModel {
|
||||
//自动驾驶状态
|
||||
private int mAutopilotState = IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE;
|
||||
|
||||
public static SweeperTaskModel getInstance() {
|
||||
public static SweeperOperateTaskModel getInstance() {
|
||||
if (sInstance == null) {
|
||||
synchronized (SweeperTaskModel.class) {
|
||||
synchronized (SweeperOperateTaskModel.class) {
|
||||
if (sInstance == null) {
|
||||
sInstance = new SweeperTaskModel();
|
||||
sInstance = new SweeperOperateTaskModel();
|
||||
}
|
||||
}
|
||||
}
|
||||
return sInstance;
|
||||
}
|
||||
|
||||
private SweeperTaskModel() {
|
||||
private SweeperOperateTaskModel() {
|
||||
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ public class SweeperTaskModel {
|
||||
this.mControllerStatusCallback = callback;
|
||||
}
|
||||
|
||||
public void setSweeperTaskCallback(ISweeperTaskCallback callback) {
|
||||
public void setSweeperTaskCallback(ISweeperOperateTaskCallback callback) {
|
||||
this.mSweeperTaskCallback = callback;
|
||||
}
|
||||
|
||||
@@ -538,7 +538,7 @@ public class SweeperTaskModel {
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
public void getCurrentTask() {
|
||||
SweeperServiceManager.getCurrentTask(mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskBean>>() {
|
||||
SweeperOperateServiceManager.getCurrentTask(mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskBean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<SweeperSubTaskBean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getCurrentTask:" + GsonUtil.jsonFromObject(data));
|
||||
@@ -578,7 +578,7 @@ public class SweeperTaskModel {
|
||||
* 获取主任务列表
|
||||
*/
|
||||
public void getMainTaskList(boolean refresh) {
|
||||
SweeperServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback<BaseResponse<List<SweeperMainTaskBean>>>() {
|
||||
SweeperOperateServiceManager.getMainTaskList(mContext, new OchCommonServiceCallback<BaseResponse<List<SweeperMainTaskBean>>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<List<SweeperMainTaskBean>> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getMainTaskList:" + GsonUtil.jsonFromObject(data));
|
||||
@@ -614,7 +614,7 @@ public class SweeperTaskModel {
|
||||
* 获取子任务列表
|
||||
*/
|
||||
public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) {
|
||||
SweeperServiceManager.getSubTaskList(taskId, mContext, new OchCommonServiceCallback<BaseResponse<List<SubInfo>>>() {
|
||||
SweeperOperateServiceManager.getSubTaskList(taskId, mContext, new OchCommonServiceCallback<BaseResponse<List<SubInfo>>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<List<SubInfo>> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getSubTaskList:" + GsonUtil.jsonFromObject(data));
|
||||
@@ -655,7 +655,7 @@ public class SweeperTaskModel {
|
||||
* 获取子任务详情包括轨迹文件信息
|
||||
*/
|
||||
public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) {
|
||||
SweeperServiceManager.getSubTaskDetail(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskDetailBean>>() {
|
||||
SweeperOperateServiceManager.getSubTaskDetail(subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<SweeperSubTaskDetailBean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<SweeperSubTaskDetailBean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "getSubTaskDetail:" + GsonUtil.jsonFromObject(data));
|
||||
@@ -714,7 +714,7 @@ public class SweeperTaskModel {
|
||||
* 子任务开始上报
|
||||
*/
|
||||
public void subTaskStart(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType) {
|
||||
SweeperServiceManager.subTaskStart(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
SweeperOperateServiceManager.subTaskStart(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "subTaskStart:" + GsonUtil.jsonFromObject(data));
|
||||
@@ -725,7 +725,7 @@ public class SweeperTaskModel {
|
||||
mSweeperTaskCallback.updateSubTaskStatus(TaskStatusEnum.START_SUBTASK, false);
|
||||
if (subTaskType == SubTaskTypeEnum.AUTOPILOT_SUBTYPE) {//如果是自动驾驶子任务子开启自驾
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
//ÏstartAutopilot(false);
|
||||
} else {
|
||||
@@ -764,7 +764,7 @@ public class SweeperTaskModel {
|
||||
* 子任务结束上报
|
||||
*/
|
||||
public void subTaskEnd(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperServiceManager.subTaskEnd(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
SweeperOperateServiceManager.subTaskEnd(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "subTaskEnd:" +
|
||||
@@ -777,7 +777,7 @@ public class SweeperTaskModel {
|
||||
}
|
||||
if (isEnd) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
clearAutopilotControlParameters();
|
||||
//结束自动驾驶
|
||||
@@ -815,7 +815,7 @@ public class SweeperTaskModel {
|
||||
* 子任务跳过上报
|
||||
*/
|
||||
public void subTaskSkip(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperServiceManager.subTaskSkip(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
SweeperOperateServiceManager.subTaskSkip(isFirst, isEnd, subTaskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "subTaskSkip:" +
|
||||
@@ -856,7 +856,7 @@ public class SweeperTaskModel {
|
||||
* 主任务重置
|
||||
*/
|
||||
public void mainTaskReset(int taskId) {
|
||||
SweeperServiceManager.mainTaskReset(taskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
SweeperOperateServiceManager.mainTaskReset(taskId, mContext, new OchCommonServiceCallback<BaseResponse<Boolean>>() {
|
||||
@Override
|
||||
public void onSuccess(BaseResponse<Boolean> data) {
|
||||
CallerLogger.d(M_SWEEPER + TAG, "mainTaskReset:" + GsonUtil.jsonFromObject(data));
|
||||
@@ -21,7 +21,7 @@ import retrofit2.http.QueryMap;
|
||||
/**
|
||||
* 清扫车相关接口
|
||||
*/
|
||||
public interface ISweeperApiService {
|
||||
public interface ISweeperOperateApiService {
|
||||
/**
|
||||
* 获取当前正在执行的任务
|
||||
* @param appId
|
||||
@@ -10,7 +10,7 @@ import com.mogo.och.common.module.biz.constant.OchCommonConst
|
||||
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
|
||||
import com.mogo.och.common.module.biz.network.OchCommonSubscribeImpl
|
||||
import com.mogo.och.common.module.biz.network.interceptor.transformTry
|
||||
import com.mogo.och.sweeper.operate.model.SweeperTaskModel
|
||||
import com.mogo.och.sweeper.operate.model.SweeperOperateTaskModel
|
||||
import com.mogo.och.sweeper.operate.bean.BaseResponse
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import com.mogo.och.sweeper.operate.bean.SubStartRequest
|
||||
@@ -18,10 +18,10 @@ import com.mogo.och.sweeper.operate.bean.SweeperMainTaskBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean
|
||||
|
||||
object SweeperServiceManager {
|
||||
private val TAG = SweeperTaskModel::class.java.simpleName
|
||||
private val mService: ISweeperApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getSweeperUrl()).create(
|
||||
ISweeperApiService::class.java
|
||||
object SweeperOperateServiceManager {
|
||||
private val TAG = SweeperOperateTaskModel::class.java.simpleName
|
||||
private val mService: ISweeperOperateApiService = MoGoRetrofitFactory.getInstance(OchCommonConst.getSweeperUrl()).create(
|
||||
ISweeperOperateApiService::class.java
|
||||
)
|
||||
|
||||
/**
|
||||
@@ -29,15 +29,15 @@ import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean;
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskDetailBean;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperADASStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperControllerStatusCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperTaskCallback;
|
||||
import com.mogo.och.sweeper.operate.callback.ISweeperOperateTaskCallback;
|
||||
import com.mogo.och.sweeper.common.callback.ISweeperTaskRouteCallback;
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum;
|
||||
import com.mogo.och.sweeper.common.constant.SweeperConst;
|
||||
import com.mogo.och.sweeper.operate.constant.TaskStatusEnum;
|
||||
import com.mogo.och.sweeper.common.database.MyDataBase;
|
||||
import com.mogo.och.sweeper.common.database.bean.WeltDataBean;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperFragment;
|
||||
import com.mogo.och.sweeper.operate.model.SweeperTaskModel;
|
||||
import com.mogo.och.sweeper.operate.fragment.SweeperOperateFragment;
|
||||
import com.mogo.och.sweeper.operate.model.SweeperOperateTaskModel;
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil;
|
||||
import com.mogo.och.sweeper.operate.util.SweeperTrajectoryManager;
|
||||
|
||||
@@ -60,9 +60,9 @@ import system_master.SystemStatusInfo;
|
||||
*
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
public class SweeperOperatePresenter extends Presenter<SweeperOperateFragment>
|
||||
implements IMoGoAutopilotStatusListener, ISweeperControllerStatusCallback, ISweeperADASStatusCallback,
|
||||
IMoGoSweeperFutianCleanSystemListener, ISweeperTaskCallback, ISweeperTaskRouteCallback {
|
||||
IMoGoSweeperFutianCleanSystemListener, ISweeperOperateTaskCallback, ISweeperTaskRouteCallback {
|
||||
|
||||
private static final String TAG = "SweeperPresenter";
|
||||
//当前子任务id
|
||||
@@ -80,13 +80,13 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
private String longitude;//经度
|
||||
private String latitude;//纬度
|
||||
|
||||
public SweeperPresenter(SweeperFragment view) {
|
||||
public SweeperOperatePresenter(SweeperOperateFragment view) {
|
||||
super(view);
|
||||
//2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口
|
||||
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
|
||||
//清扫车模式和贴边数据回调监听
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.addListener(TAG, this);
|
||||
SweeperTaskModel.getInstance().init();
|
||||
SweeperOperateTaskModel.getInstance().init();
|
||||
OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp());
|
||||
}
|
||||
|
||||
@@ -99,20 +99,20 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
@Override
|
||||
public void onDestroy(@NonNull LifecycleOwner owner) {
|
||||
super.onDestroy(owner);
|
||||
SweeperTaskModel.getInstance().release();
|
||||
SweeperOperateTaskModel.getInstance().release();
|
||||
releaseListener();
|
||||
}
|
||||
|
||||
public void initModelListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperTaskModel.getInstance().setAdasStatusCallback(this);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
SweeperOperateTaskModel.getInstance().setControllerStatusCallback(this);
|
||||
SweeperOperateTaskModel.getInstance().setAdasStatusCallback(this);
|
||||
SweeperOperateTaskModel.getInstance().setSweeperTaskCallback(this);
|
||||
}
|
||||
|
||||
public void releaseListener() {
|
||||
SweeperTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperTaskModel.getInstance().setAdasStatusCallback(null);
|
||||
SweeperTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
SweeperOperateTaskModel.getInstance().setControllerStatusCallback(null);
|
||||
SweeperOperateTaskModel.getInstance().setAdasStatusCallback(null);
|
||||
SweeperOperateTaskModel.getInstance().setSweeperTaskCallback(null);
|
||||
CallerSweeperFutianCleanSystemListenerManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
@@ -126,34 +126,34 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onAutopilotStatusResponse(int state) {
|
||||
SweeperTaskModel.getInstance().setAutopilotState(state);
|
||||
SweeperOperateTaskModel.getInstance().setAutopilotState(state);
|
||||
ThreadUtils.runOnUiThread(() -> mView.startAutoBtn(state));
|
||||
switch (state) {
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_DISABLE://不可自动驾驶
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_ENABLE://人工驾驶
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {
|
||||
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
} else {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
//关闭美化模式
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING://自动驾驶中
|
||||
SweeperTaskModel.getInstance().triggerStartServiceEvent(
|
||||
SweeperTaskModel.getInstance().isRestartAutopilot(), true);
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {
|
||||
SweeperOperateTaskModel.getInstance().triggerStartServiceEvent(
|
||||
SweeperOperateTaskModel.getInstance().isRestartAutopilot(), true);
|
||||
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
SweeperTaskModel.getInstance().startBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().startBeautificationMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING://平行驾驶
|
||||
if (SweeperTaskModel.getInstance().getSubWorking()) {
|
||||
if (SweeperOperateTaskModel.getInstance().getSubWorking()) {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true;//是否强制绘制引导线
|
||||
CallerAutoPilotControlManager.INSTANCE.setIPCDemoMode(false);//是否自动启动自驾
|
||||
@@ -161,7 +161,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
} else {
|
||||
if (FunctionBuildConfig.isDemoMode) {//美化模式开启时
|
||||
//关闭美化模式
|
||||
SweeperTaskModel.getInstance().closeBeautificationMode();
|
||||
SweeperOperateTaskModel.getInstance().closeBeautificationMode();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -191,10 +191,10 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 清除路线缓存数据
|
||||
*/
|
||||
public void clearRouteList(){
|
||||
SweeperTaskModel.getInstance().clearRouteList();
|
||||
SweeperOperateTaskModel.getInstance().clearRouteList();
|
||||
}
|
||||
public void startAutopilot() {
|
||||
SweeperTaskModel.getInstance().startAutopilot();
|
||||
SweeperOperateTaskModel.getInstance().startAutopilot();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,10 +202,10 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
*/
|
||||
public void setSubtask(boolean isFirstSubtask, boolean isLastSubtask, int subTaskId,int subTaskType) {
|
||||
this.mSubTaskId = subTaskId;
|
||||
SweeperTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId,subTaskType);
|
||||
SweeperOperateTaskModel.getInstance().setSubtask(isFirstSubtask, isLastSubtask, subTaskId,subTaskType);
|
||||
}
|
||||
public void setWorking(boolean isWorking){
|
||||
SweeperTaskModel.getInstance().setWorking(isWorking);
|
||||
SweeperOperateTaskModel.getInstance().setWorking(isWorking);
|
||||
}
|
||||
/**
|
||||
* 测试使用
|
||||
@@ -236,7 +236,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
|
||||
@Override
|
||||
public void onAutopilotArriveAtStation(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
|
||||
SweeperTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
SweeperOperateTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -248,7 +248,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
}
|
||||
|
||||
public void onArriveTaskEnd(@Nullable MessagePad.ArrivalNotification arrivalNotification) {
|
||||
SweeperTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
SweeperOperateTaskModel.getInstance().onArriveTaskEnd(arrivalNotification);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -370,28 +370,28 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 获取当前正在执行的任务
|
||||
*/
|
||||
public void getCurrentTask() {
|
||||
SweeperTaskModel.getInstance().getCurrentTask();
|
||||
SweeperOperateTaskModel.getInstance().getCurrentTask();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取主任务列表
|
||||
*/
|
||||
public void getMainTaskList(boolean refresh) {
|
||||
SweeperTaskModel.getInstance().getMainTaskList(refresh);
|
||||
SweeperOperateTaskModel.getInstance().getMainTaskList(refresh);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子任务列表
|
||||
*/
|
||||
public void getSubTaskList(int taskId, SweeperSubTaskBean sweeperSubTaskBean) {
|
||||
SweeperTaskModel.getInstance().getSubTaskList(taskId, sweeperSubTaskBean);
|
||||
SweeperOperateTaskModel.getInstance().getSubTaskList(taskId, sweeperSubTaskBean);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取子任务详情包括轨迹文件信息
|
||||
*/
|
||||
public void getSubTaskDetail(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, boolean isStartSubtask) {
|
||||
SweeperTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask);
|
||||
SweeperOperateTaskModel.getInstance().getSubTaskDetail(isFirst, isEnd, subTaskId, subTaskType, isStartSubtask);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -399,7 +399,7 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
*/
|
||||
public void startTask(boolean isFirst, boolean isEnd, int subTaskId, SubTaskTypeEnum subTaskType, int subTaskStatus) {
|
||||
if (SubTaskTypeEnum.AUTOPILOT_SUBTYPE.getCode() == subTaskStatus) {
|
||||
SweeperTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType);
|
||||
SweeperOperateTaskModel.getInstance().subTaskStart(isFirst, isEnd, subTaskId, subTaskType);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -407,21 +407,21 @@ public class SweeperPresenter extends Presenter<SweeperFragment>
|
||||
* 子任务结束上报
|
||||
*/
|
||||
public void subTaskEnd(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperTaskModel.getInstance().subTaskEnd(isFirst, isEnd, subTaskId);
|
||||
SweeperOperateTaskModel.getInstance().subTaskEnd(isFirst, isEnd, subTaskId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 子任务跳过上报
|
||||
*/
|
||||
public void subTaskSkip(boolean isFirst, boolean isEnd, int subTaskId) {
|
||||
SweeperTaskModel.getInstance().subTaskSkip(isFirst, isEnd, subTaskId);
|
||||
SweeperOperateTaskModel.getInstance().subTaskSkip(isFirst, isEnd, subTaskId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 主任务重置
|
||||
*/
|
||||
public void mainTaskReset(int taskId) {
|
||||
SweeperTaskModel.getInstance().mainTaskReset(taskId);
|
||||
SweeperOperateTaskModel.getInstance().mainTaskReset(taskId);
|
||||
}
|
||||
|
||||
@Override
|
||||
File diff suppressed because it is too large
Load Diff
@@ -47,7 +47,7 @@ class TaskListAdapter() : RecyclerView.Adapter<TaskListAdapter.TaskViewHolder>()
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskViewHolder {
|
||||
val view = LayoutInflater.from(parent.context).inflate(
|
||||
R.layout.sweeper_item_task_info, parent, false
|
||||
R.layout.sweeper_operate_item_task_info, parent, false
|
||||
)
|
||||
return TaskViewHolder(view)
|
||||
}
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
package com.mogo.och.sweeper.operate.ui.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import com.mogo.och.sweeper.R
|
||||
|
||||
/**
|
||||
* 不带带有title, tip,confirm,cancel的dialog
|
||||
*/
|
||||
class SweeperManualDrivingDialog: BaseFloatDialog, LifecycleObserver {
|
||||
|
||||
private var commonConfirm : TextView? = null
|
||||
private var commonTips : TextView? = null
|
||||
|
||||
private var clickListener: ClickListener? = null
|
||||
|
||||
constructor(builder: Builder, context: Context) : super(context) {
|
||||
commonTips?.text = builder.tipsStr
|
||||
commonConfirm?.text = builder.confirmStr
|
||||
}
|
||||
|
||||
init{
|
||||
setContentView(R.layout.dialog_sweeper_manual_driving)
|
||||
|
||||
setCanceledOnTouchOutside(false)
|
||||
|
||||
commonConfirm = findViewById(R.id.sweeper_common_confirm)
|
||||
commonTips = findViewById(R.id.sweeper_common_tips)
|
||||
|
||||
commonConfirm?.setOnClickListener{
|
||||
clickListener?.confirm()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
fun setClickListener(clickListener: ClickListener) {
|
||||
this.clickListener = clickListener
|
||||
}
|
||||
|
||||
fun showUpgradeDialog(){
|
||||
if(isShowing){
|
||||
return
|
||||
}
|
||||
show()
|
||||
}
|
||||
|
||||
interface ClickListener{
|
||||
fun confirm()
|
||||
}
|
||||
|
||||
class Builder{
|
||||
var tipsStr:String = ""
|
||||
var confirmStr:String = ""
|
||||
fun tips(tips: String) : Builder {
|
||||
this.tipsStr = tips
|
||||
return this
|
||||
}
|
||||
|
||||
fun confirmStr(commit: String) : Builder {
|
||||
this.confirmStr = commit
|
||||
return this
|
||||
}
|
||||
fun build(context: Context): SweeperManualDrivingDialog? {
|
||||
return SweeperManualDrivingDialog(this,context)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,85 +0,0 @@
|
||||
package com.mogo.och.sweeper.operate.ui.dialog
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
import androidx.lifecycle.LifecycleObserver
|
||||
import com.mogo.eagle.core.function.hmi.dialog.BaseFloatDialog
|
||||
import com.mogo.och.sweeper.R
|
||||
|
||||
/**
|
||||
* 不带带有title, tip,confirm,cancel的dialog
|
||||
*/
|
||||
class SweeperNoTitleCommonDialog: BaseFloatDialog, LifecycleObserver {
|
||||
|
||||
private var commonConfirm : TextView? = null
|
||||
private var commonCancel : TextView? = null
|
||||
private var commonTips : TextView? = null
|
||||
|
||||
private var clickListener: ClickListener? = null
|
||||
|
||||
constructor(builder: Builder, context: Context) : super(context) {
|
||||
commonTips?.text = builder.tipsStr
|
||||
commonCancel?.text = builder.cancelStr
|
||||
commonConfirm?.text = builder.confirmStr
|
||||
}
|
||||
|
||||
init{
|
||||
setContentView(R.layout.dialog_sweeper_no_title)
|
||||
|
||||
setCanceledOnTouchOutside(true)
|
||||
|
||||
commonConfirm = findViewById(R.id.sweeper_common_confirm)
|
||||
commonCancel = findViewById(R.id.sweeper_common_cancel)
|
||||
commonTips = findViewById(R.id.sweeper_common_tips)
|
||||
|
||||
commonConfirm?.setOnClickListener{
|
||||
clickListener?.confirm()
|
||||
dismiss()
|
||||
}
|
||||
commonCancel?.setOnClickListener {
|
||||
clickListener?.cancel()
|
||||
dismiss()
|
||||
}
|
||||
}
|
||||
|
||||
fun setClickListener(clickListener: ClickListener) {
|
||||
this.clickListener = clickListener
|
||||
}
|
||||
|
||||
fun showUpgradeDialog(){
|
||||
if(isShowing){
|
||||
return
|
||||
}
|
||||
show()
|
||||
}
|
||||
|
||||
interface ClickListener{
|
||||
fun confirm()
|
||||
fun cancel()
|
||||
}
|
||||
|
||||
class Builder{
|
||||
var tipsStr:String = ""
|
||||
var confirmStr:String = ""
|
||||
var cancelStr:String = ""
|
||||
fun tips(tips: String) : Builder {
|
||||
this.tipsStr = tips
|
||||
return this
|
||||
}
|
||||
|
||||
fun confirmStr(commit: String) : Builder {
|
||||
this.confirmStr = commit
|
||||
return this
|
||||
}
|
||||
|
||||
fun cancelStr(cancel: String) : Builder {
|
||||
this.cancelStr = cancel
|
||||
return this
|
||||
}
|
||||
|
||||
fun build(context: Context): SweeperNoTitleCommonDialog? {
|
||||
return SweeperNoTitleCommonDialog(this,context)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -36,7 +36,7 @@ class MenuPopWindow : PopupWindow, View.OnClickListener{
|
||||
*/
|
||||
private fun init(context: Context) {
|
||||
setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||
var view: View = LayoutInflater.from(context).inflate(R.layout.sweeper_task_menu, null)
|
||||
var view: View = LayoutInflater.from(context).inflate(R.layout.sweeper_operate_task_menu, null)
|
||||
mTvJumpOverTask = view.findViewById(R.id.tvJumpOverTask)
|
||||
mTaskJumpLineView = view.findViewById(R.id.taskJumpLineView)
|
||||
mTvEndTask = view.findViewById(R.id.tvEndTask)
|
||||
|
||||
@@ -14,19 +14,19 @@ import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import com.mogo.och.sweeper.operate.bean.SweeperSubTaskBean
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.operate.presenter.SweeperPresenter
|
||||
import com.mogo.och.sweeper.operate.presenter.SweeperOperatePresenter
|
||||
import com.mogo.och.sweeper.operate.ui.popwindow.MenuPopWindow
|
||||
import kotlinx.android.synthetic.main.sweeper_current_task_info.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_current_task_info.view.*
|
||||
|
||||
/**
|
||||
* 清扫车当前任务信息展示
|
||||
*/
|
||||
class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
class SweeperOperateCurrentTaskInfoView : ConstraintLayout {
|
||||
private val TAG: String = "SweeperCurrentTaskInfoView"
|
||||
|
||||
//当前任务操作菜单
|
||||
private var mTaskMenuPopWindow: MenuPopWindow? = null
|
||||
private var presenter: SweeperPresenter? = null
|
||||
private var presenter: SweeperOperatePresenter? = null
|
||||
private var mCurrentPosition = 0
|
||||
private var listTask: List<SubInfo>? = null
|
||||
private var mSubTaskType: SubTaskTypeEnum = SubTaskTypeEnum.AUTOPILOT_SUBTYPE
|
||||
@@ -43,7 +43,7 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_current_task_info, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_operate_current_task_info, this)
|
||||
setEnableClickBtn(false)
|
||||
tvStartAuto.setOnClickListener {
|
||||
if (ClickUtils.isFastClick()){//防止重复点击
|
||||
@@ -66,17 +66,17 @@ class SweeperCurrentTaskInfoView : ConstraintLayout {
|
||||
* 设置当前任务数据
|
||||
*/
|
||||
fun setData(
|
||||
workModePanelView: SweeperWorkModeView,
|
||||
workModePanelView: SweeperOperateWorkModeView,
|
||||
subTaskBean: SweeperSubTaskBean?,
|
||||
currentPosition: Int,
|
||||
menuItemClickListener: MenuPopWindow.OnMenuItemOnClickListener,
|
||||
presenter: SweeperPresenter?
|
||||
presenter: SweeperOperatePresenter?
|
||||
) {
|
||||
this.presenter = presenter
|
||||
this.mCurrentPosition = currentPosition
|
||||
mTaskMenuPopWindow = MenuPopWindow(context, menuItemClickListener)
|
||||
subTaskBean?.apply {
|
||||
this@SweeperCurrentTaskInfoView.listTask = subList
|
||||
this@SweeperOperateCurrentTaskInfoView.listTask = subList
|
||||
tvTaskName.text = taskName
|
||||
val calendar = DateTimeUtil.formatLongToCalendar(taskStartTime)
|
||||
tvTaskTime.text = DateTimeUtil.formatCalendarToString(calendar, DateTimeUtil.HH_mm)
|
||||
@@ -9,12 +9,12 @@ import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import com.mogo.och.common.module.utils.DateTimeUtil
|
||||
import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.operate.bean.SubInfo
|
||||
import kotlinx.android.synthetic.main.sweeper_subtask_view.view.*
|
||||
import kotlinx.android.synthetic.main.sweeper_operate_subtask_view.view.*
|
||||
|
||||
/**
|
||||
* 子任务View
|
||||
*/
|
||||
class SubTaskView : ConstraintLayout {
|
||||
class SweeperOperateSubTaskView : ConstraintLayout {
|
||||
constructor(context: Context) : super(context) {}
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
initView(context)
|
||||
@@ -24,7 +24,7 @@ class SubTaskView : ConstraintLayout {
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_subtask_view, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_operate_subtask_view, this)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -29,7 +29,7 @@ import kotlin.math.roundToInt
|
||||
/**
|
||||
* 车辆基本信息:方向盘下方的档位 转向灯 限速 速度 电量 水量
|
||||
*/
|
||||
class SweeperTrafficDataView : ConstraintLayout,
|
||||
class SweeperOperateTrafficDataView : ConstraintLayout,
|
||||
IMoGoBatteryManagementSystemListener,
|
||||
IMoGoChassisLamplightListener,
|
||||
IMoGoChassisGearStateListener,
|
||||
@@ -69,7 +69,7 @@ class SweeperTrafficDataView : ConstraintLayout,
|
||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {}
|
||||
|
||||
private fun initView(context: Context) {
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_traffic_data, this)
|
||||
LayoutInflater.from(context).inflate(R.layout.sweeper_operate_traffic_data, this)
|
||||
tapPositionView = findViewById(R.id.sweeperTrafficPosition)
|
||||
speedImage = findViewById(R.id.sweeperSpeedImage)
|
||||
speedTextView = findViewById(R.id.sweeperSpeedText)
|
||||
@@ -13,15 +13,14 @@ import com.mogo.och.sweeper.R
|
||||
import com.mogo.och.sweeper.common.callback.ICleaningModeStateCallback
|
||||
import com.mogo.och.sweeper.common.constant.OperateStateEnum
|
||||
import com.mogo.och.sweeper.operate.constant.SubTaskTypeEnum
|
||||
import com.mogo.och.sweeper.operate.ui.popwindow.SweeperOperatePanelPopWindow
|
||||
import com.mogo.och.sweeper.common.view.SweeperOperatePanelPopWindow
|
||||
import com.mogo.och.sweeper.common.util.SweeperFutianCmdUtil
|
||||
import com.mogo.och.sweeper.operate.view.SweeperTrafficDataView
|
||||
import kotlinx.android.synthetic.main.sweeper_work_mode.view.*
|
||||
|
||||
/**
|
||||
* 清扫车模式信息展示
|
||||
*/
|
||||
class SweeperWorkModeView : ConstraintLayout,
|
||||
class SweeperOperateWorkModeView : ConstraintLayout,
|
||||
ICleaningModeStateCallback {
|
||||
|
||||
private var isSelectPureSweepMode: Boolean = false
|
||||
@@ -48,7 +47,7 @@ class SweeperWorkModeView : ConstraintLayout,
|
||||
/**
|
||||
* 设置view
|
||||
*/
|
||||
fun setTrafficDataView(trafficDataView: SweeperTrafficDataView){
|
||||
fun setTrafficDataView(trafficDataView: SweeperOperateTrafficDataView){
|
||||
//清扫模式选择面板打开关闭处理
|
||||
ivOpenOperatePanel.setOnClickListener {
|
||||
if (mOperatePanelPopWindow?.isShowing != true) {
|
||||
@@ -6,7 +6,7 @@
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical">
|
||||
<!--清扫模式面板-->
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperWorkModeView
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperCloudWorkModeView
|
||||
android:id="@+id/sweeper_cl_work_mode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
@@ -24,7 +24,7 @@
|
||||
app:xOffset="0dp"
|
||||
app:yOffset="0dp"
|
||||
android:layout_marginTop="-20dp">
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperCurrentTaskInfoView
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperCloudCurrentTaskInfoView
|
||||
android:id="@+id/sweeper_current_task_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
android:orientation="vertical">
|
||||
<!--清扫模式面板-->
|
||||
<com.mogo.och.sweeper.operate.view.SweeperWorkModeView
|
||||
<com.mogo.och.sweeper.operate.view.SweeperOperateWorkModeView
|
||||
android:id="@+id/sweeper_cl_work_mode"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -17,7 +17,7 @@
|
||||
app:layout_constraintTop_toBottomOf="@+id/sweeper_arc"
|
||||
android:visibility="gone" />
|
||||
<!--清扫任务当前面板-->
|
||||
<com.mogo.och.sweeper.operate.view.SweeperCurrentTaskInfoView
|
||||
<com.mogo.och.sweeper.operate.view.SweeperOperateCurrentTaskInfoView
|
||||
android:id="@+id/sweeper_current_task_view"
|
||||
app:layout_constraintTop_toBottomOf="@+id/sweeper_cl_work_mode"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -104,7 +104,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewTaskListLine"
|
||||
tools:itemCount="6"
|
||||
tools:listitem="@layout/sweeper_item_task_info" />
|
||||
tools:listitem="@layout/sweeper_operate_item_task_info" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tvTaskConfirm"
|
||||
@@ -120,7 +120,7 @@
|
||||
android:textSize="@dimen/dp_42"
|
||||
/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
<include layout="@layout/sweeper_no_data_common_view"
|
||||
<include layout="@layout/sweeper_operate_no_data_common_view"
|
||||
android:visibility="visible"/>
|
||||
</com.mogo.och.common.module.wigets.OCHBorderShadowLayout>
|
||||
</LinearLayout>
|
||||
@@ -16,7 +16,7 @@
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<!--车辆基本交通信息-->
|
||||
<com.mogo.och.sweeper.operate.view.SweeperTrafficDataView
|
||||
<com.mogo.och.sweeper.operate.view.SweeperOperateTrafficDataView
|
||||
android:id="@+id/sweeper_arc"
|
||||
android:layout_width="@dimen/dp_616"
|
||||
android:layout_height="@dimen/dp_320"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
android:layout_height="match_parent" />
|
||||
|
||||
<!--车辆基本交通信息-->
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperTrafficDataView
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperCloudTrafficDataView
|
||||
android:id="@+id/sweeper_arc"
|
||||
android:layout_width="@dimen/dp_616"
|
||||
android:layout_height="@dimen/dp_320"
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.mogo.och.sweeper.cloud.ui.SweeperOperatePanelView
|
||||
android:id="@+id/SweeperOperatePanelView"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
</com.mogo.och.sweeper.cloud.ui.SweeperOperatePanelView>
|
||||
@@ -90,7 +90,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="@+id/sweeperAutoState"
|
||||
android:layout_marginStart="@dimen/dp_26"
|
||||
android:background="#414869"/>
|
||||
<com.mogo.och.sweeper.cloud.view.SweeperTrafficLightView
|
||||
<com.mogo.och.sweeper.common.view.SweeperTrafficLightView
|
||||
android:id="@+id/sweeperTrafficLight"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -92,7 +92,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewTaskInfoLine" />
|
||||
|
||||
<com.mogo.och.sweeper.operate.view.SubTaskView
|
||||
<com.mogo.och.sweeper.operate.view.SweeperOperateSubTaskView
|
||||
android:id="@+id/preSubTask"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -101,7 +101,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/viewTaskInfoLine" />
|
||||
|
||||
<com.mogo.och.sweeper.operate.view.SubTaskView
|
||||
<com.mogo.och.sweeper.operate.view.SweeperOperateSubTaskView
|
||||
android:id="@+id/currentSubTask"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -109,7 +109,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/preSubTask" />
|
||||
|
||||
<com.mogo.och.sweeper.operate.view.SubTaskView
|
||||
<com.mogo.och.sweeper.operate.view.SweeperOperateSubTaskView
|
||||
android:id="@+id/lastSubTask"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -84,7 +84,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="@+id/sweeperTurnSignal"
|
||||
android:layout_marginStart="@dimen/dp_12"
|
||||
android:background="#414869"/>
|
||||
<com.mogo.och.sweeper.operate.view.SweeperTrafficLightView
|
||||
<com.mogo.och.sweeper.common.view.SweeperTrafficLightView
|
||||
android:id="@+id/sweeperTrafficLight"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<com.mogo.och.sweeper.operate.ui.SweeperOperatePanelView
|
||||
<com.mogo.och.sweeper.common.view.SweeperOperatePanelView
|
||||
android:id="@+id/SweeperOperatePanelView"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
</com.mogo.och.sweeper.operate.ui.SweeperOperatePanelView>
|
||||
</com.mogo.och.sweeper.common.view.SweeperOperatePanelView>
|
||||
Reference in New Issue
Block a user