From ab27f9ee440a9d5f51421d6382eac35c3a9e6a3e Mon Sep 17 00:00:00 2001 From: bxb Date: Sat, 28 Jan 2023 14:20:31 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=B8=85=E6=89=AB=E8=BD=A6]=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=97=A0=E7=94=A8=E7=9A=84=E4=BB=A3=E7=A0=81=E5=92=8C=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../callback/ISlidePannelHideCallback.java | 9 - .../callback/ISweeperLinesCallback.java | 12 - .../mogo/och/sweeper/constant/SweeperConst.kt | 8 - .../och/sweeper/model/SweeperLineModel.java | 86 --- .../och/sweeper/model/SweeperOrderModel.java | 517 +----------------- .../och/sweeper/net/ISweeperApiService.java | 101 +--- .../sweeper/net/SweeperServiceManager.java | 115 ---- .../presenter/SweeperLinePresenter.java | 79 --- .../sweeper/presenter/SweeperPresenter.java | 31 -- .../sweeper/ui/SweeperOperatePanelView.java | 1 - .../sweeper/ui/SweeperSwitchLineActivity.java | 300 ---------- .../och/sweeper/ui/SweeperSwitchLineView.java | 15 - .../res/drawable-xhdpi/press_start_status.png | Bin 15387 -> 0 bytes .../main/res/drawable-xhdpi/start_failure.png | Bin 18404 -> 0 bytes .../main/res/drawable-xhdpi/start_success.png | Bin 21293 -> 0 bytes .../sweeper_base_icon_in_autopilot.png | Bin 8756 -> 0 bytes .../sweeper_base_icon_not_in_autopilot.png | Bin 2342 -> 0 bytes .../sweeper_base_notice_box_bg.9.png | Bin 4787 -> 0 bytes .../sweeper_disable_autopilot_icon.png | Bin 2829 -> 0 bytes .../res/drawable-xhdpi/sweeper_dot_line.png | Bin 323 -> 0 bytes .../sweeper_icon_arriving_station.png | Bin 1349 -> 0 bytes .../drawable-xhdpi/sweeper_selected_btn.png | Bin 5210 -> 0 bytes .../sweeper_switch_line_close.png | Bin 3825 -> 0 bytes .../drawable/sweeper_checkbox_selector.xml | 7 - .../sweeper_switch_line_btn_commit.xml | 16 - .../sweeper_switch_line_btn_un_commit.xml | 16 - ... sweeper_task_dividing_line1_selector.xml} | 0 ... sweeper_task_dividing_line2_selector.xml} | 0 .../layout/activity_sweeper_switch_line.xml | 75 --- .../main/res/layout/fragment_och_sweeper.xml | 4 +- .../res/layout/sweeper_current_task_info.xml | 4 +- .../layout/sweeper_switch_line_list_item.xml | 89 --- .../src/main/res/values/colors.xml | 3 - 33 files changed, 30 insertions(+), 1458 deletions(-) delete mode 100644 OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISlidePannelHideCallback.java delete mode 100644 OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperLinesCallback.java delete mode 100644 OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperLineModel.java delete mode 100644 OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperLinePresenter.java delete mode 100644 OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineActivity.java delete mode 100644 OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineView.java delete mode 100755 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/press_start_status.png delete mode 100755 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/start_failure.png delete mode 100755 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/start_success.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_icon_in_autopilot.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_icon_not_in_autopilot.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_notice_box_bg.9.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_disable_autopilot_icon.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_dot_line.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_icon_arriving_station.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_selected_btn.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_switch_line_close.png delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_checkbox_selector.xml delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_commit.xml delete mode 100644 OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_un_commit.xml rename OCH/mogo-och-sweeper/src/main/res/drawable/{sweeper_line_dividing_line1_selector.xml => sweeper_task_dividing_line1_selector.xml} (100%) rename OCH/mogo-och-sweeper/src/main/res/drawable/{sweeper_line_dividing_line2_selector.xml => sweeper_task_dividing_line2_selector.xml} (100%) delete mode 100644 OCH/mogo-och-sweeper/src/main/res/layout/activity_sweeper_switch_line.xml delete mode 100644 OCH/mogo-och-sweeper/src/main/res/layout/sweeper_switch_line_list_item.xml diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISlidePannelHideCallback.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISlidePannelHideCallback.java deleted file mode 100644 index 246ccd2118..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISlidePannelHideCallback.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.mogo.och.sweeper.callback; - -/** - * @author: wangmingjun - * @date: 2021/10/22 - */ -public interface ISlidePannelHideCallback { - void hideSlidePanel(); -} diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperLinesCallback.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperLinesCallback.java deleted file mode 100644 index 74e166b736..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/callback/ISweeperLinesCallback.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.mogo.och.sweeper.callback; - -import com.mogo.och.sweeper.bean.SweeperQueryLinesResponse; - -/** - * @author: wangmingjun - * @date: 2022/2/9 - */ -public interface ISweeperLinesCallback { - void onBusLinesChange(SweeperQueryLinesResponse lines); - void onChangeLineIdSuccess(); -} diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/constant/SweeperConst.kt b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/constant/SweeperConst.kt index 8397cddf95..880392bdbd 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/constant/SweeperConst.kt +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/constant/SweeperConst.kt @@ -27,14 +27,6 @@ class SweeperConst { // 测试用的广播 const val BROADCAST_TEST_SWEEPER_CONTROL_TYPE_EXTRA_KEY = "sceneType" - // 无状态 - const val STATION_STATUS_IDLE = 0 - // 已过站(历史站) - const val STATION_STATUS_LEAVING = 1 - // 到站(当前站) - const val STATION_STATUS_STOPPED = 2 - // 未到站(未到站) - const val STATION_STATUS_ARRIVING = 3 // 上报心跳轮询ms const val LOOP_PERIOD_60S = 60 * 1000L diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperLineModel.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperLineModel.java deleted file mode 100644 index e297e5053e..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperLineModel.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.mogo.och.sweeper.model; - -import android.content.Context; - -import com.mogo.commons.AbsMogoApplication; -import com.mogo.eagle.core.utilcode.util.NetworkUtils; -import com.mogo.eagle.core.utilcode.util.ToastUtils; -import com.mogo.och.sweeper.bean.SweeperQueryLinesResponse; -import com.mogo.och.sweeper.bean.SweeperRoutesResponse; -import com.mogo.och.sweeper.callback.ISweeperLinesCallback; -import com.mogo.och.sweeper.net.SweeperServiceManager; -import com.mogo.och.sweeper.net.ISweeperServiceCallback; - -/** - * @author: wangmingjun - * @date: 2022/2/9 - */ -public class SweeperLineModel { - private static volatile SweeperLineModel sInstance; - private Context mContext; - private ISweeperLinesCallback mBusLinesCallback; - public static SweeperLineModel getInstance() { - if ( sInstance == null ) { - synchronized ( SweeperLineModel.class ) { - if ( sInstance == null ) { - sInstance = new SweeperLineModel(); - } - } - } - return sInstance; - } - private SweeperLineModel() { - - } - public void init() { - mContext = AbsMogoApplication.getApp(); - } - public void setBusLinesCallback(ISweeperLinesCallback callback){ - mBusLinesCallback = callback; - } - public void queryBusLines(){ - SweeperServiceManager.getInstance().queryBusLines(mContext, new ISweeperServiceCallback() { - @Override - public void onSuccess(SweeperQueryLinesResponse data) { - if (null == data && mBusLinesCallback != null) { - mBusLinesCallback.onBusLinesChange(null); - return; - } - - if (mBusLinesCallback != null){ - mBusLinesCallback.onBusLinesChange(data); - } - } - - @Override - public void onFail(String failMsg) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试"); - }else { - ToastUtils.showShort("查询所有绑定路线失败:"+failMsg); - } - } - }); - } - - public void commitSwitchLineId(int lineId){ - SweeperServiceManager.getInstance().resetStationStatus(mContext,lineId, new ISweeperServiceCallback() { - @Override - public void onSuccess(SweeperRoutesResponse o) { - if (mBusLinesCallback != null){ - mBusLinesCallback.onChangeLineIdSuccess(); - } - } - - @Override - public void onFail(String failMsg) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试"); - }else { - ToastUtils.showShort("切换路线失败:"+failMsg); - } - } - }); - } - -} diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperOrderModel.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperOrderModel.java index 2bbea7fe76..4b5f8b189f 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperOrderModel.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/model/SweeperOrderModel.java @@ -1,12 +1,6 @@ package com.mogo.och.sweeper.model; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; -import static com.mogo.och.sweeper.constant.SweeperConst.STATION_STATUS_STOPPED; - import android.content.Context; -import android.os.Handler; - -import androidx.annotation.Nullable; import com.amap.api.maps.model.LatLng; import com.elegant.network.utils.GsonUtil; @@ -15,7 +9,6 @@ import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.module.status.IMogoStatusChangedListener; import com.mogo.commons.module.status.MogoStatusManager; import com.mogo.commons.module.status.StatusDescriptor; -import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -28,35 +21,31 @@ import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListener import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.logger.Logger; -import com.mogo.eagle.core.utilcode.util.NetworkUtils; -import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; -import com.mogo.och.sweeper.bean.QueryLeaveAwayPassengersResponse; -import com.mogo.och.sweeper.bean.SweeperOperationStatusResponse; import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean; -import com.mogo.och.sweeper.bean.SweeperRoutesResponse; import com.mogo.och.sweeper.bean.SweeperRoutesResult; import com.mogo.och.sweeper.bean.SweeperStationBean; import com.mogo.och.sweeper.callback.ICarOperationStatusCallback; import com.mogo.och.sweeper.callback.IRefreshSweeperStationsCallback; -import com.mogo.och.sweeper.callback.ISlidePannelHideCallback; import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback; import com.mogo.och.sweeper.constant.SweeperConst; import com.mogo.och.sweeper.net.ISweeperServiceCallback; import com.mogo.och.sweeper.net.SweeperServiceManager; import com.mogo.och.sweeper.presenter.SweeperModelLoopManager; import com.mogo.och.sweeper.util.SweeperAnalyticsManager; -import com.mogo.och.sweeper.util.SweeperTrajectoryManager; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import androidx.annotation.Nullable; import io.reactivex.exceptions.UndeliverableException; import io.reactivex.functions.Consumer; import io.reactivex.plugins.RxJavaPlugins; import mogo.telematics.pad.MessagePad; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; + /** * @author congtaowang * @since 2021/3/23 @@ -67,10 +56,6 @@ public class SweeperOrderModel { private final String TAG = SweeperOrderModel.class.getSimpleName(); private int currentLineId = -1; private int backgroundCurrentStationIndex = 0;//A->B 此处值是A站点索引 - /** - * 运营状态、后端更具运营状态来判断车辆是否派单 - */ - private boolean mIsWorking = false; private static volatile SweeperOrderModel sInstance; public double mLongitude = 0; public double mLatitude = 0; @@ -81,14 +66,9 @@ public class SweeperOrderModel { * 用来表示是否正在开往下一站 */ private boolean isGoingToNextStation = false; - // 运营类型 - private static final int VEHICLE_TYPE = 10; - private static final int MSG_QUERY_BUS_STATION = 1001; - private static final long QUERY_BUS_STATION_DELAY = 5000; - private ICarOperationStatusCallback carOperationStatusCallback; - private IRefreshSweeperStationsCallback refreshBusStationsCallback; - private ISlidePannelHideCallback slidePannelHideCallback; + private boolean mIsWorking = false; + private ISweeperControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等 List points = new ArrayList<>();//全路径信息 @@ -97,14 +77,6 @@ public class SweeperOrderModel { private volatile boolean isArrivedStation = false; - private final Handler handler = new Handler(msg -> { - if (msg.what == MSG_QUERY_BUS_STATION) { - SweeperOrderModel.getInstance().querySweeperRoutes(); - return true; - } - return false; - }); - public static SweeperOrderModel getInstance() { if (sInstance == null) { synchronized (SweeperOrderModel.class) { @@ -119,11 +91,13 @@ public class SweeperOrderModel { private SweeperOrderModel() { } - + public boolean isGoingToNextStation() { + return isGoingToNextStation; + } public void init() { mContext = AbsMogoApplication.getApp(); // 定位监听 - CallerChassisLocationGCJ20ListenerManager.INSTANCE.addListener(TAG,mMapLocationListener); + CallerChassisLocationGCJ20ListenerManager.INSTANCE.addListener(TAG, mMapLocationListener); MogoStatusManager.getInstance().registerStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); @@ -169,19 +143,6 @@ public class SweeperOrderModel { }); } - - public void setCarOperationStatusCallback(ICarOperationStatusCallback callback) { - this.carOperationStatusCallback = callback; - } - - public void setRefreshBusStationsCallback(IRefreshSweeperStationsCallback callback) { - this.refreshBusStationsCallback = callback; - } - - public void setSlidePannelHideCallback(ISlidePannelHideCallback callback) { - this.slidePannelHideCallback = callback; - } - public void setControllerStatusCallback(ISweeperControllerStatusCallback callback) { this.mControllerStatusCallback = callback; } @@ -199,7 +160,8 @@ public class SweeperOrderModel { }; - public static List coordinateConverterWgsToGcjList(Context mContext, List mogoLatLngList) { + public static List coordinateConverterWgsToGcjList(Context mContext, + List mogoLatLngList) { List points = new ArrayList<>(); for (MessagePad.Location m : mogoLatLngList) { LatLng mogoLatLng = CoordinateCalculateRouteUtil.coordinateConverterWgsToGcj(mContext, m); @@ -248,7 +210,7 @@ public class SweeperOrderModel { startOrStopOrderLoop(false); MogoStatusManager.getInstance().unregisterStatusChangedListener(TAG, StatusDescriptor.VR_MODE, mMogoStatusChangedListener); // 注销定位监听 - CallerMapLocationListenerManager.INSTANCE.removeListener(TAG,false); + CallerMapLocationListenerManager.INSTANCE.removeListener(TAG, false); //自动驾驶路线规划接口 CallerPlanningRottingListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); @@ -290,7 +252,7 @@ public class SweeperOrderModel { }; //根据围栏判断,是否到达起点 - private void judgeStartStation(MessagePad.GnssInfo location) { + private void judgeStartStation(MessagePad.GnssInfo location) { if (backgroundCurrentStationIndex + 1 > stationList.size() - 1) { return; @@ -312,121 +274,11 @@ public class SweeperOrderModel { } if (distance <= SweeperConst.ARRIVE_AT_END_STATION_DISTANCE) { - onArriveAt(null); //无自动驾驶到站信息传null + //onArriveAt(null); //无自动驾驶到站信息传null return; } } - /** - * 查询小巴路线 - */ - public void querySweeperRoutes() { - CallerLogger.INSTANCE.d(M_BUS + TAG, "查询小巴路线"); - SweeperServiceManager.getInstance().queryBusRoutes(mContext, new ISweeperServiceCallback() { - @Override - public void onSuccess(SweeperRoutesResponse data) { - if (data == null - || data.getResult() == null - || data.getResult().getSites() == null - || data.getResult().getSites().isEmpty()) { - return; - } - CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + data); - renderBusStationsStatus(data.getResult()); - } - - @Override - public void onFail(String failMsg) { - // 重复请求小巴路线,直至成功 - queryBusStationDelay(); - } - }); - - } - - /** - * 测试、重置站点状态 - */ - public void debugResetStationStatus() { - CallerLogger.INSTANCE.d(M_BUS + TAG, "测试、重置站点状态"); - SweeperServiceManager.getInstance().resetStationStatus(mContext, currentLineId - , new ISweeperServiceCallback() { - @Override - public void onSuccess(SweeperRoutesResponse o) { - CallerLogger.INSTANCE.d(M_BUS + TAG, "获取到小巴路线数据: " + o); - isGoingToNextStation = false; - if (o.getResult() == null || o.getResult().getSites() == null || o.getResult().getSites().isEmpty()) { - return; - } - renderBusStationsStatus(o.getResult()); - } - - @Override - public void onFail(String failMsg) { - // 重复请求小巴路线,直至成功 - queryBusStationDelay(); - } - }); - - } - - /** - * 离站上报 - */ - public void leaveStation(boolean isOneWayOver, boolean isRestart) { - CallerLogger.INSTANCE.d(M_BUS + TAG, "leaveStation-backgroundCurrentStationIndex = " + backgroundCurrentStationIndex); - SweeperServiceManager.getInstance().leaveStation(mContext, stationList.get(backgroundCurrentStationIndex).getSeq() - , stationList.get(backgroundCurrentStationIndex).getSiteId(), new ISweeperServiceCallback() { - @Override - public void onSuccess(SweeperRoutesResponse o) { - if (o.getResult() == null || o.getResult().getSites() == null || o.getResult().getSites().isEmpty()) { - return; - } - isArrivedStation = false; - if (!isOneWayOver) { - CallerLogger.INSTANCE.d(M_BUS + TAG, "自动驾驶开启开往下一站===="); - //需要更改当前站和下一站的状态 然后渲染 - leaveStationSuccess(o.getResult(), isRestart); - } else { - CallerLogger.INSTANCE.d(M_BUS + TAG, "单程真的结束了===="); - isGoingToNextStation = false; - backgroundCurrentStationIndex = 0; - CallerAutoPilotManager.INSTANCE.cancelAutoPilot(); - querySweeperRoutes(); - } - } - - @Override - public void onFail(String failMsg) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试"); - } else { - ToastUtils.showShort("离站上报失败:" + failMsg); - } - } - }); - } - - /** - * 离站上报成功后渲染站点 - * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, - * 车机端展示是离开当前站,下一站设置为当前站, 所以服务端数据回来要做处理,不能直接渲染 - */ - private void leaveStationSuccess(SweeperRoutesResult result, boolean isRestart) { - renderBusStationsStatus(result); - if (slidePannelHideCallback != null) { - slidePannelHideCallback.hideSlidePanel(); - } - //开启自动驾驶 - startAutopilot(isRestart); - if (isGoingToNextStation) { - // 为了避免恢复自动驾驶时重复的接口请求 - return; - } - isGoingToNextStation = true; - AIAssist.getInstance(mContext).speakTTSVoice("欢迎乘坐’蘑菇车联‘无人驾驶小巴车,请您坐好,注意乘车安全,行程即将开始"); - } - /** * 开启自动驾驶 * @@ -474,80 +326,9 @@ public class SweeperOrderModel { mControllerStatusCallback.startOpenAutopilot(); } } - - /** - * 到站后重置站点状态 - */ - private void arriveSiteStation(boolean isRestart) { - if (backgroundCurrentStationIndex + 1 > stationList.size() - 1) { //到站短时间内调用多次 - CallerLogger.INSTANCE.e(M_BUS + TAG, "数组越界"); - return; - } - int arrivedStationIndex = 0; - if (!isRestart) { - arrivedStationIndex = backgroundCurrentStationIndex + 1; - } - CallerLogger.INSTANCE.d(M_BUS + TAG, "arriveSiteStation-currentStationIndex = " + arrivedStationIndex); - - SweeperServiceManager.getInstance().arriveSiteStation(mContext - , stationList.get(arrivedStationIndex).getSeq(), stationList.get(arrivedStationIndex).getSiteId() - , new ISweeperServiceCallback() { - @Override - public void onSuccess(BaseData o) { - CallerLogger.INSTANCE.d(M_BUS + TAG, "arriveSiteStation success"); - if (!isRestart) { - renderArriveBusStation(); - } - } - - @Override - public void onFail(String failMsg) { -// if (!NetworkUtils.isConnected(mContext)) { -// ToastUtils.showShort("网络异常,请稍后重试"); -// }else { -// ToastUtils.showShort("离站上报失败:"+failMsg); -// } - - } - }); + public boolean isWorking() { + return mIsWorking; } - - private void renderArriveBusStation() { - List site = sweeperRoutesResult.getSites(); - if (site != null && site.size() > 0) { - backgroundCurrentStationIndex++; - if (refreshBusStationsCallback != null) { - refreshBusStationsCallback.refreshBusStations(sweeperRoutesResult.getName(), stationList, backgroundCurrentStationIndex - , getNextStopStation(), true); - } - } - } - - /** - * 收车 - */ - public void stopTakeOrder() { - SweeperServiceManager.getInstance().stopTakeOrder(mContext, new ISweeperServiceCallback() { - @Override - public void onSuccess(BaseData o) { - mIsWorking = !mIsWorking; - closeBeautificationMode(); - carOperationStatusCallback.changeOperationStatus(isWorking()); - startOrStopOrderLoop(mIsWorking); - SweeperTrajectoryManager.getInstance().stopTrajReqLoop(); - } - - @Override - public void onFail(String failMsg) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试"); - } else { - ToastUtils.showShort("收车失败:" + failMsg); - } - } - }); - } - /** * 关闭美化模式 */ @@ -558,168 +339,6 @@ public class SweeperOrderModel { CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false(收车)"); } } - - /** - * 出车 - */ - public void startTakeOrder() { - SweeperServiceManager.getInstance().startTakeOrder(mContext, new ISweeperServiceCallback() { - @Override - public void onSuccess(BaseData o) { - mIsWorking = !mIsWorking; - startOrStopOrderLoop(mIsWorking); - if (stationList != null && stationList.size() > 0) { - AIAssist.getInstance(mContext).speakTTSVoice("车辆已整备完毕,请前往" - + stationList.get(backgroundCurrentStationIndex).getName() + "站点"); - } - carOperationStatusCallback.changeOperationStatus(isWorking()); - querySweeperRoutes(); - } - - @Override - public void onFail(String failMsg) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试"); - } else { - ToastUtils.showShort("出车失败:" + failMsg); - } - } - }); - } - - /** - * 查询运营状态 - */ - public void queryOperationStatus() { - CallerLogger.INSTANCE.d(M_BUS + TAG, "查询运营状态"); - SweeperServiceManager.getInstance().queryOperationStatus(mContext - , new ISweeperServiceCallback() { - @Override - public void onSuccess(SweeperOperationStatusResponse o) { - if (o.data != null) { - mIsWorking = o.data.serviceStatus == 1; - CallerLogger.INSTANCE.d(M_BUS + TAG, "查询运营状态 result.status: " + o.data.serviceStatus); - startOrStopOrderLoop(mIsWorking); - } - carOperationStatusCallback.changeOperationStatus(isWorking()); - } - - @Override - public void onFail(String failMsg) { - if (!NetworkUtils.isConnected(mContext)) { - ToastUtils.showShort("网络异常,请稍后重试"); - } else { - ToastUtils.showShort("出车收车状态查询:" + failMsg); - } -// queryOperationStatus(); - } - }); - } - - /** - * 开启自动驾驶到下一站 - */ - public void autoDriveToNextStation(boolean isRestart) { -// if ( backgroundCurrentStationIndex >= stationList.size() - 1 ) { -// // 当前站是最后一站,结束当前行程 -// travelOver(); -// return; -// } -// leaveStation(false,isRestart); - startAutopilot(isRestart); - } - - /** - * 渲染站点信息 - * 服务端返回的OchBusRoutesResult逻辑, 离开站为当前站, 到达下一站后才会将下一站置为当前站, - * 车机端展示 离开站为当前站点,前往站为下一站, 下一站到站后在置为当前站 - * - * @param result - */ - private void renderBusStationsStatus(SweeperRoutesResult result) { - if (result == null) return; - sweeperRoutesResult = result; - List site = result.getSites(); - currentLineId = result.getLineId(); - stationList.clear(); - stationList.addAll(site); - for (int i = 0; i < stationList.size(); i++) { - SweeperStationBean s = stationList.get(i); - - CallerLogger.INSTANCE.d(M_BUS + "renderBusStationsStatus--", - "Index=" + i + " ,name = " + s.getName() + " ," + s.isLeaving() + "," + s.getDrivingStatus()); - - // 是否正在开往下一站 - if (s.isLeaving()) { - isGoingToNextStation = true; - } - // 当前站点信息 - if (s.getDrivingStatus() == STATION_STATUS_STOPPED) { - backgroundCurrentStationIndex = i; - break; - } - } - - SweeperStationBean currentStation = stationList.get(backgroundCurrentStationIndex); - - CallerLogger.INSTANCE.d(M_BUS + TAG, - "渲染站点信息服务端currentStationIndex=" + backgroundCurrentStationIndex - + " isLeaving()=" + currentStation.isLeaving()); - - //当前站点是始发站,告诉服务端到达始发站。 如果没有这个节点, 服务器不知道始发站到达状态 - // ,订单开始站下在始发站的状态流转有问题 - if (backgroundCurrentStationIndex == 0 && !currentStation.isLeaving()) { - arriveSiteStation(true); - } - - // 美化是否开始 - if (FunctionBuildConfig.isDemoMode && (backgroundCurrentStationIndex >= 0 - && backgroundCurrentStationIndex <= stationList.size() - 1) - && stationList.get(backgroundCurrentStationIndex).isLeaving()) {//行驶过程中设置美化 - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = true; - CallerAutoPilotManager.INSTANCE.setIPCDemoMode(true); - CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为true(每次滑动出发)"); - } - - if (refreshBusStationsCallback != null) { - refreshBusStationsCallback.refreshBusStations(result.getName(), stationList - , backgroundCurrentStationIndex, getNextStopStation(), !currentStation.isLeaving()); - } - - if (currentStation.isLeaving() && slidePannelHideCallback != null) { - slidePannelHideCallback.hideSlidePanel(); - } - - //需放在currentStationIndex赋值之后 - SweeperTrajectoryManager.getInstance().syncTrajectoryInfo(); - } - - /** - * 根据订单状态、获取下一站靠站的的站点 - * - * @return -1 当前已是最后一个站点 - */ - private int getNextStopStation() { - if (backgroundCurrentStationIndex >= stationList.size() - 1) { - return -1; - } - int nextStationIndex = backgroundCurrentStationIndex + 1; - for (; nextStationIndex < stationList.size() - 1; nextStationIndex++) { - if (stationList.get(nextStationIndex).getIfStop() == 1) { - break; - } - break; - } - return nextStationIndex; - } - - /** - * 延时查询站点信心 - */ - private void queryBusStationDelay() { - handler.sendEmptyMessageDelayed(MSG_QUERY_BUS_STATION, QUERY_BUS_STATION_DELAY); - } - /** * 在踩刹车、控制方向盘等操作后,会停止自动驾驶,重启自动驾驶的话相当于重新设置自动驾驶目的地 */ @@ -729,110 +348,6 @@ public class SweeperOrderModel { //直接开启自动驾驶 startAutopilot(true); } - - /** - * 播报下车乘客信息 - * - * @param awayPassengersResponse - */ - private void playLeavePassengersMsg(QueryLeaveAwayPassengersResponse awayPassengersResponse) { - CallerLogger.INSTANCE.d(M_BUS + TAG, "播报下车乘客信息currentStationIndex=" - + String.valueOf(backgroundCurrentStationIndex + 1)); - - if (backgroundCurrentStationIndex + 1 > stationList.size() - 1) { - return; - } - String station = stationList.get(backgroundCurrentStationIndex + 1).getName(); - StringBuilder builder = new StringBuilder("已到达"); - builder.append(station); - if (!station.endsWith("站")) { - builder.append("站"); - } - if (awayPassengersResponse == null || awayPassengersResponse.data == null - || awayPassengersResponse.data.orders == null || awayPassengersResponse.data.orders.isEmpty()) { - CallerLogger.INSTANCE.d(M_BUS + TAG, "播报下车乘客信息为null"); - } else { - builder.append(",请尾号为 "); - for (QueryLeaveAwayPassengersResponse.LeaveAwayPassenger leaveAwayPassenger : awayPassengersResponse.data.orders) { - if (leaveAwayPassenger == null) { - continue; - } - String tailNum = null; - try { - tailNum = leaveAwayPassenger.passengerPhone.substring(leaveAwayPassenger.passengerPhone.length() - 4); - } catch (Exception e) { - e.printStackTrace(); - tailNum = leaveAwayPassenger.passengerPhone; - } - builder.append(tailNum).append("。"); - } - builder.append("的乘客下车"); - } - builder.append(",带好随身物品,下车请注意安全"); - CallerLogger.INSTANCE.d(M_BUS + TAG, "TTS:" + builder.toString()); - AIAssist.getInstance(mContext).speakTTSVoice(builder.toString()); - } - - /** - * 修改小巴运营状态 - */ - public void onChangeOperationStatus() { - CallerLogger.INSTANCE.d(M_BUS + TAG, "修改小巴运营状态"); - if (isWorking()) {//收车 - stopTakeOrder(); - } else {//出车 - startTakeOrder(); - } - } - - /** - * 行程结束 - */ - private void travelOver() { - - if (backgroundCurrentStationIndex >= stationList.size()) { - CallerLogger.INSTANCE.e(M_BUS + TAG, "travel over index out of station list"); - return; - } - CallerLogger.INSTANCE.d(M_BUS + TAG, "单程结束===="); - CallerAutoPilotManager.INSTANCE.cancelAutoPilot(); - AIAssist.getInstance(mContext).speakTTSVoice("感谢您体验'蘑菇车联'无人驾驶小巴车,请您携带好随身物品,我们下次再见"); - leaveStation(true, true); - } - - public boolean isWorking() { - return mIsWorking; - } - - /** - * 到站 - * - * @param data - */ - public void onArriveAt(MessagePad.ArrivalNotification data) { -// if ( backgroundCurrentStationIndex +1 > stationList.size() - 1 ) { -// CallerLogger.INSTANCE.e( M_BUS + TAG, "到站异常,取消后续操作结束" ); -// return; -// } - - if (isArrivedStation) return; - isArrivedStation = true; - - if (FunctionBuildConfig.isDemoMode && backgroundCurrentStationIndex <= stationList.size() - 1) {//到达一站结束美化 - FunctionBuildConfig.isIgnoreConditionsDrawAutopilotTrajectoryData = false; - CallerAutoPilotManager.INSTANCE.setIPCDemoMode(false); - CallerLogger.INSTANCE.d(M_BUS + TAG, "美化模式-ignore:置为false(到最后一站)"); - } - CallerLogger.INSTANCE.d(M_BUS + TAG, "到站====currentStationIndex=" + backgroundCurrentStationIndex); - isGoingToNextStation = false; - -// arriveSiteStation(false);//到站上报 - } - - public boolean isGoingToNextStation() { - return isGoingToNextStation; - } - // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { SweeperServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/ISweeperApiService.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/ISweeperApiService.java index db8c6b3264..697d70f93e 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/ISweeperApiService.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/ISweeperApiService.java @@ -1,22 +1,14 @@ package com.mogo.och.sweeper.net; + import com.mogo.eagle.core.data.BaseData; -import com.mogo.och.sweeper.bean.SweeperOperationStatusRequest; -import com.mogo.och.sweeper.bean.SweeperQueryLinesResponse; -import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean; -import com.mogo.och.sweeper.bean.SweeperRoutesResponse; import com.mogo.och.sweeper.bean.CarHeartbeatReqBean; -import com.mogo.och.sweeper.bean.SweeperQueryLineStationsRequest; -import com.mogo.och.sweeper.bean.SweeperOperationStatusResponse; -import com.mogo.och.sweeper.bean.SweeperResetDrivingLineRequest; -import com.mogo.och.sweeper.bean.SweeperUpdateSiteStatusRequest; +import com.mogo.och.sweeper.bean.SweeperRoutePlanningUpdateReqBean; import io.reactivex.Observable; import retrofit2.http.Body; -import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.Headers; import retrofit2.http.POST; -import retrofit2.http.Query; /** * 小巴车相关接口 @@ -26,92 +18,19 @@ import retrofit2.http.Query; * wiki: http://wiki.zhidaohulian.com/pages/viewpage.action?pageId=48970072 */ public interface ISweeperApiService { - /** - * 根据车机坐标获取所在区域全部站点信息 - * - * @param request 请求参数 - * @return 接口返回数据 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/line/v2/driver/bus/lineDataWithDriver/query" ) - Observable querySiteByCoordinate(@Header ("appId") String appId, @Header("ticket") String ticket, @Body SweeperQueryLineStationsRequest request); - - /** - * 重置巴士路线: 点击小巴车tab 或者出车后会使用 - * - * @param request 请求参数{"destLine":1,"sn":"F803EB2046PZD00229"} 这个接口是重置bus线路的, 不是重置线路中站点的 - * @return 返回值是重置后的车站列表 - */ - @Headers( {"Content-Type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/car/v2/driver/bus/drivingLine/reset" ) - Observable resetStationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Body SweeperResetDrivingLineRequest request); - - /** - * 离站,通知服务器 - * @param request - * @return - */ - @Headers({"Content-Type:application/json;charset=UTF-8"}) - @POST("/autopilot-car-hailing/car/v2/driver/bus/driving/away") - Observable leaveStation(@Header ("appId") String appId, @Header("ticket") String ticket, @Body SweeperUpdateSiteStatusRequest request); - - /** - * 到站 更新到站信息 - * @param request - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @POST("/autopilot-car-hailing/order/v2/driver/bus/driving/attachSite") - Observable< BaseData > arriveSiteStation(@Header ("appId") String appId,@Header("ticket") String ticket,@Body SweeperUpdateSiteStatusRequest request); - - /** - * 出车 - * @param request - * @return - */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST("/autopilot-car-hailing/car/v2/driver/bus/startTakeOrder") - Observable startTakeOrder(@Header ("appId") String appId,@Header("ticket") String ticket,@Body SweeperOperationStatusRequest request); - - /** - * 收车 - * @param request - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @POST("/autopilot-car-hailing/car/v2/driver/bus/stopTakeOrder") - Observable stopTakeOrder(@Header ("appId") String appId,@Header("ticket") String ticket,@Body SweeperOperationStatusRequest request); - - /** - * 查询小巴出车/收车状态 - * @param sn - * @return - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @GET("/autopilot-car-hailing/car/v2/driver/bus/takeOrderStatus/query") - Observable queryOperationStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - /** * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 + * * @param data * @return */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/location/v2/driver/bus/heartbeat" ) - Observable runCarHeartbeat(@Header ("appId") String appId,@Header("ticket") String ticket,@Body CarHeartbeatReqBean data); + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/autopilot-car-hailing/location/v2/driver/bus/heartbeat") + Observable runCarHeartbeat(@Header("appId") String appId, @Header("ticket") String ticket, @Body CarHeartbeatReqBean data); - /** - * 查询车辆配置的所有路线 - * @param appId - * @param ticket - * @param sn - * @return - */ - @GET("/autopilot-car-hailing/line/v2/driver/bus/bindLine/query") - Observable queryBusLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); - - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/location/v2/driver/bus/saveLineCoordinate" ) - Observable updateOrderRoute(@Header ("appId") String appId, @Header("ticket") String ticket, @Body SweeperRoutePlanningUpdateReqBean data); + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/autopilot-car-hailing/location/v2/driver/bus/saveLineCoordinate") + Observable updateOrderRoute(@Header("appId") String appId, @Header("ticket") String ticket, + @Body SweeperRoutePlanningUpdateReqBean data); } diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/SweeperServiceManager.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/SweeperServiceManager.java index f6cd975dbd..d1262e670b 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/SweeperServiceManager.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/net/SweeperServiceManager.java @@ -48,121 +48,6 @@ public class SweeperServiceManager { mService = MoGoRetrofitFactory.getInstance(SweeperConst.getBaseUrl()).create(ISweeperApiService.class); } - /** - * 查询小巴车线路 - * @param context - * @param callback - */ - public void queryBusRoutes(Context context, ISweeperServiceCallback callback) { - //获取当前高德坐标 - - mService.querySiteByCoordinate(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - , new SweeperQueryLineStationsRequest(SweeperOrderModel.getInstance().mLongitude - , SweeperOrderModel.getInstance().mLatitude,true)) - .subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) - .subscribe( getSubscribeImpl(context,callback,"querySiteByCoordinate")); - } - - /** - * 重置线路站点 - * @param context - * @param lineId - * @param callback - */ - public void resetStationStatus(Context context, int lineId, ISweeperServiceCallback callback){ - mService.resetStationStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new SweeperResetDrivingLineRequest(lineId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"debugResetStationStatus")); - } - - /** - * 离站上报 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void leaveStation(Context context, int seq, int siteId, ISweeperServiceCallback callback){ - mService.leaveStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new SweeperUpdateSiteStatusRequest(seq,siteId, SweeperOrderModel.getInstance().mLongitude - , SweeperOrderModel.getInstance().mLatitude)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"leaveStation")); - } - - /** - * 到站更新站点状态 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void arriveSiteStation(Context context, int seq, int siteId, ISweeperServiceCallback callback){ - mService.arriveSiteStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new SweeperUpdateSiteStatusRequest(seq,siteId - , SweeperOrderModel.getInstance().mLongitude, SweeperOrderModel.getInstance().mLatitude)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"leaveStation")); - } - - /** - * 收车 - * @param context - * @param callback - */ - public void stopTakeOrder(Context context, ISweeperServiceCallback callback){ - mService.stopTakeOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new SweeperOperationStatusRequest(SweeperOrderModel.getInstance().mLongitude - , SweeperOrderModel.getInstance().mLatitude)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"stopTakeOrder")); - } - - /** - * 出车 - * @param context - * @param callback - */ - public void startTakeOrder(Context context, ISweeperServiceCallback callback){ - mService.startTakeOrder(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new SweeperOperationStatusRequest(SweeperOrderModel.getInstance().mLongitude - , SweeperOrderModel.getInstance().mLatitude)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"startTakeOrder")); - } - - /** - * 查询出车/收车状态 - * @param context - * @param callback - */ - public void queryOperationStatus(Context context, ISweeperServiceCallback callback){ - mService.queryOperationStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryOperationStatus")); - } - - - public void queryBusLines(Context context, ISweeperServiceCallback callback){ - mService.queryBusLines(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - public void updateOrderRoute(Context context,int lineId, int startSiteId, int endSiteId , List< SweeperRoutePlanningUpdateReqBean.Result > points , ISweeperServiceCallback callback){ diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperLinePresenter.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperLinePresenter.java deleted file mode 100644 index 5cfb5b80f2..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperLinePresenter.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.mogo.och.sweeper.presenter; - -import android.os.Looper; - -import androidx.annotation.NonNull; -import androidx.lifecycle.LifecycleOwner; - -import com.mogo.commons.mvp.Presenter; -import com.mogo.eagle.core.utilcode.util.UiThreadHandler; -import com.mogo.och.sweeper.bean.SweeperQueryLinesResponse; -import com.mogo.och.sweeper.callback.ISweeperLinesCallback; -import com.mogo.och.sweeper.model.SweeperLineModel; -import com.mogo.och.sweeper.model.SweeperOrderModel; -import com.mogo.och.sweeper.ui.SweeperSwitchLineView; - -/** - * @author: wangmingjun - * @date: 2022/2/9 - */ -public class SweeperLinePresenter extends Presenter implements ISweeperLinesCallback { - - public SweeperLinePresenter(SweeperSwitchLineView view) { - super(view); - SweeperLineModel.getInstance().init(); - SweeperOrderModel.getInstance().init(); - } - - @Override - public void onCreate(@NonNull LifecycleOwner owner) { - super.onCreate(owner); - initListener(); - } - - private void initListener() { - SweeperLineModel.getInstance().setBusLinesCallback(this); - } - - private void runOnUIThread( Runnable executor ) { - if ( executor == null ) { - return; - } - if ( Looper.myLooper() != Looper.getMainLooper() ) { - UiThreadHandler.post( executor ); - } else { - executor.run(); - } - } - - @Override - public void onBusLinesChange(SweeperQueryLinesResponse lines) { - runOnUIThread(() -> mView.onBusLinesChange(lines)); - } - - @Override - public void onChangeLineIdSuccess() { - runOnUIThread(() -> mView.onChangeLineIdSuccess()); - } - - public void queryBusLines(){ - SweeperLineModel.getInstance().queryBusLines(); - } - - public void commitSwitchLineId(int lineId){ - SweeperLineModel.getInstance().commitSwitchLineId(lineId); - } - - public void removeListener(){ - SweeperLineModel.getInstance().setBusLinesCallback(null); - } - - public void queryBusRoutes(){ - SweeperOrderModel.getInstance().querySweeperRoutes(); - } - - @Override - public void onDestroy(@NonNull LifecycleOwner owner) { - super.onDestroy(owner); - } -} diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java index b21c717ef2..39dcb7c761 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/presenter/SweeperPresenter.java @@ -1,22 +1,14 @@ package com.mogo.och.sweeper.presenter; -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; - import android.os.Looper; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo; -import com.mogo.eagle.core.data.map.MogoLocation; -import com.mogo.eagle.core.data.config.FunctionBuildConfig; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.och.sweeper.bean.SweeperStationBean; import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback; -import com.mogo.och.sweeper.callback.ICarOperationStatusCallback; -import com.mogo.och.sweeper.callback.IRefreshSweeperStationsCallback; -import com.mogo.och.sweeper.callback.ISlidePannelHideCallback; -import com.mogo.och.sweeper.callback.ISweeperControllerStatusCallback; import com.mogo.och.sweeper.fragment.SweeperFragment; import com.mogo.och.sweeper.model.SweeperOrderModel; import com.mogo.och.sweeper.util.SweeperTrajectoryManager; @@ -58,8 +50,6 @@ public class SweeperPresenter extends Presenter @Override public void onCreate(@NonNull LifecycleOwner owner) { super.onCreate(owner); - SweeperOrderModel.getInstance().queryOperationStatus(); - SweeperOrderModel.getInstance().querySweeperRoutes(); initModelListener(); } @@ -75,35 +65,14 @@ public class SweeperPresenter extends Presenter } public void releaseListener() { - SweeperOrderModel.getInstance().setCarOperationStatusCallback(null); - SweeperOrderModel.getInstance().setRefreshBusStationsCallback(null); - SweeperOrderModel.getInstance().setSlidePannelHideCallback(null); SweeperOrderModel.getInstance().setControllerStatusCallback(null); } - public void querySweepersRoutes() { - SweeperOrderModel.getInstance().querySweeperRoutes(); - } - - public void debugResetStationStatus() { - SweeperOrderModel.getInstance().debugResetStationStatus(); - } - - public void autoDriveToNextStation(boolean isRestart) { - currentAutopilotStatus = -1; - SweeperOrderModel.getInstance().autoDriveToNextStation(isRestart); - isRestartAutopilot = false; - } - public void restartAutopilot() { currentAutopilotStatus = -1; SweeperOrderModel.getInstance().restartAutopilot(); isRestartAutopilot = true; } - - public void onChangeOperationStatus() { - SweeperOrderModel.getInstance().onChangeOperationStatus(); - } @Override public void onAutopilotStatusResponse(@NotNull AutopilotStatusInfo autopilotStatusInfo) { if (autopilotStatusInfo == null) return; diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperOperatePanelView.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperOperatePanelView.java index a9b73fa0a1..336b6c837b 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperOperatePanelView.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperOperatePanelView.java @@ -39,7 +39,6 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; -import chassis.Chassis; import chassis.ChassisStatesOuterClass; import chassis.SpecialVehicleTaskCmdOuterClass; import planning.RoboSweeperTaskIndexOuterClass; diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineActivity.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineActivity.java deleted file mode 100644 index dedd34cb21..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineActivity.java +++ /dev/null @@ -1,300 +0,0 @@ -package com.mogo.och.sweeper.ui; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.graphics.Point; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.commons.mvp.MvpActivity; -import com.mogo.eagle.core.utilcode.util.ToastUtils; -import com.mogo.och.sweeper.R; -import com.mogo.och.sweeper.bean.SweeperQueryLinesResponse; -import com.mogo.och.sweeper.presenter.SweeperLinePresenter; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author: wangmingjun - * @date: 2022/2/8 - */ -public class SweeperSwitchLineActivity extends MvpActivity - implements View.OnClickListener, SweeperSwitchLineView { - - private ImageView mClose; - private ConstraintLayout mNoDatasView; - private RecyclerView mLinesListView; - private TextView mLineCommitBtn; - private SwitchLineAdapter mAdapter; - private List mData = new ArrayList<>(); - private int mSelectLineId = -1; - - @Override - protected int getLayoutId() { - return R.layout.activity_sweeper_switch_line; - } - - @NonNull - @Override - protected SweeperLinePresenter createPresenter() { - return new SweeperLinePresenter(this); - } - - @Override - protected void initViews() { - initWH(); - initView(); - } - - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initDatas(); - } - - /** - * 初始化view - */ - private void initView() { - mClose = findViewById(R.id.switch_line_close); - mClose.setOnClickListener(this); - mNoDatasView = findViewById(R.id.no_order_data_view); - - mLineCommitBtn = findViewById(R.id.switch_line_btn_commit); - mLineCommitBtn.setOnClickListener(this); - - mLinesListView = findViewById(R.id.switch_line_rv); - mLinesListView.setLayoutManager(new LinearLayoutManager(this)); - mAdapter = new SwitchLineAdapter(getApplicationContext(),mData); - mLinesListView.setAdapter(mAdapter); - //设置item 点击事件 - mAdapter.setOnLineItemClickListener(new LineItemClickListener() { - @Override - public void onItemClick(int position) { - if (mData.size() > position && !TextUtils.isEmpty(mData.get(position).startSiteName ) - && !TextUtils.isEmpty(mData.get(position).endSiteName)){ - mSelectLineId = mData.get(position).lineId; - }else { - mSelectLineId = -1; - } - } - }); - } - - /** - * 设置布局宽高 - */ - private void initWH() { - - Window window = getWindow(); - - WindowManager.LayoutParams params = window.getAttributes(); - WindowManager windowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE); - Point point = new Point(); - windowManager.getDefaultDisplay().getSize(point);//用于获取屏幕高度 - - params.width = (int)(point.x * 0.375); - params.height = ViewGroup.LayoutParams.MATCH_PARENT; - window.setAttributes(params); - window.setGravity(Gravity.LEFT|Gravity.BOTTOM); - } - - /** - * 初始化数据 - */ - private void initDatas() { - mPresenter.queryBusLines(); - } - - /** - * 查询返回绑定路线集合 - * @param data - */ - @Override - public void onBusLinesChange(SweeperQueryLinesResponse data){ - if (null == data){ - showNoData(true); - return; - } - if (data.data != null && data.data.size() > 0){ - showNoData(false); - mData.clear(); - mData.addAll(data.data); - mAdapter.notifyDataSetChanged(); - changeCommitBtnBg(); - }else { - showNoData(true); - } - } - - /** - * 根据路线选中情况设置提交按钮样式 - */ - private void changeCommitBtnBg() { - for (int i=0; i -1){ - mPresenter.commitSwitchLineId(mSelectLineId); - }else { - finish(); - } - return; - } - } - - @Override - protected void onDestroy() { - super.onDestroy(); - } - - /** - * 路线列表adapter - */ - static class SwitchLineAdapter extends RecyclerView.Adapter{ - - private Context mContext; - private List mData; - // RecyclerView设置点击事件 - private LineItemClickListener mItemClickListener ; - private int clickPos = -1; - - public SwitchLineAdapter(Context context, List data){ - mContext = context; - mData = data; - } - - @NonNull - @Override - public SwitchLineViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(mContext).inflate(R.layout.sweeper_switch_line_list_item - ,parent,false); - SwitchLineViewHolder viewHolder = new SwitchLineViewHolder(view); - return viewHolder; - } - - @Override - public void onBindViewHolder(@NonNull SwitchLineViewHolder holder, @SuppressLint("RecyclerView") int position) { - SweeperQueryLinesResponse.Result line = mData.get(position); - holder.lineName.setText(mContext.getString(R.string.sweeper_switch_line_name)+" "+line.name); - holder.lineStartName.setText(mContext.getString(R.string.sweeper_line_start)+" "+line.startSiteName); - holder.lineEndName.setText(mContext.getString(R.string.sweeper_line_end)+" "+line.endSiteName); - - //设置item点击事件 - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mItemClickListener != null){ - mItemClickListener.onItemClick(position); - clickPos = position; - notifyDataSetChanged(); - } - } - }); - //选中绑定 - if (clickPos > -1){ - if (clickPos == position){ - holder.selectIv.setImageResource(R.drawable.sweeper_selected_btn); - }else { - holder.selectIv.setImageResource(R.drawable.sweeper_unselect_btn); - } - }else { - if (line.choose == 1){//1:绑定 2:未绑定 默认绑定 - if (mItemClickListener != null) { - mItemClickListener.onItemClick(position); - } - holder.selectIv.setImageResource(R.drawable.sweeper_selected_btn); - }else { - holder.selectIv.setImageResource(R.drawable.sweeper_unselect_btn); - } - } - - } - - @Override - public int getItemCount() { - return mData.size(); - } - public void setOnLineItemClickListener(LineItemClickListener itemClickListener){ - this.mItemClickListener = itemClickListener ; - - } - } - - static class SwitchLineViewHolder extends RecyclerView.ViewHolder{ - - private ImageView selectIv; - private TextView lineName; //线路名称 - private TextView lineStartName; //起点 - private TextView lineEndName; //终点 - - public SwitchLineViewHolder(@NonNull View itemView) { - super(itemView); - selectIv = itemView.findViewById(R.id.switch_line_item_select_iv); - lineName = itemView.findViewById(R.id.switch_line_name); - lineStartName = itemView.findViewById(R.id.switch_line_start_station); - lineEndName = itemView.findViewById(R.id.switch_line_end_station); - } - } - - public interface LineItemClickListener { - void onItemClick(int position) ; - } -} diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineView.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineView.java deleted file mode 100644 index 3cfdb9fdb9..0000000000 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/ui/SweeperSwitchLineView.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.sweeper.ui; - -import com.mogo.commons.mvp.IView; -import com.mogo.och.sweeper.bean.SweeperQueryLinesResponse; - -/** - * @author: wangmingjun - * @date: 2022/2/10 - */ -public interface SweeperSwitchLineView extends IView { - - void onBusLinesChange(SweeperQueryLinesResponse data); - void onChangeLineIdSuccess(); -} - diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/press_start_status.png b/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/press_start_status.png deleted file mode 100755 index af32c20cb5746fe53e3fd00aac4fa6b8ebf97ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15387 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 Z?uI>~{CM*0=x<+EbT9Kep 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 eSfKZc@ diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_icon_not_in_autopilot.png b/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_icon_not_in_autopilot.png deleted file mode 100644 index 927296d6900963a898b84f78d1f7699c9d5cec12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2342 zcmV+>3EB3EP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91NuUD&1ONa40RR91NdN!<04n#S8~^|akV!;ARCodHn`?*_Wf;djrj}Zf znYvqnXrg&1mC6uNQ%fNc@@qlg3=Uq_s!5^Jktj+JVmt-rfazcq$SNmruovtGUr@B0 zSsiwYJ;j*>HiL_xk|O_#GqF<=O%oKdGr`xOGemJ`rr})`8^}EY4tGXnVq%Jio_n<+ zkQo5Bfm@)KM0~_cFNMw%2+Rk~pqAxN$j#4ErBrV>g5FNh4dA5=!S$Ly0)7VIQ#ia03BU*K2%eMJ0+I)w07!SPsd-h<6)be8~)q$?)!AH-2S zSNQ|QvAL4M;Sg}vk%4Z5wZQ9k%1T)Ag1D}?q4F7$HEz)!M-AX4aFG)zJ(f%0lui^M zh=+?PuZEPN+RSj!6C84hhR!?Sj!Xe_G8T`34+pC#zn-Z>W4y^4qHPelBz2Gq8p2)A zM3+JCrc^X=zQCbCy8mBD6`)E+;s;!wQ_p%)!fAhCo4x;wj-O*M7WpZQClFtgDBu3h zQBmG%@)qt{=Qa6 zHK-uo;J78f{YL5-&#*XXp?`$YNsV{H|6!m!Ofn-e4XnN~S<<&Q(YOnBC=W}X`(o3< zXq?4R>qc6_=<=dGfNdRYT$pJ0@Pwmnyt9V27_Iemc?t4ZV@afaJ*cXtAEt59Z}iv1 zl*5vkbGPyV$}34O&{3SOXirR{9ftdgXYv1Rqx%2EcloyxT&s@vf;)khQgjT@OE)L~ zru_=gQD}yTRxvY+@`1;89IZ@nro}ncWp`Ml*$Ika^GD%{>k$G;*XV`AFdHQ__IsF&hMY=`$#X)7=mcg8Ot8TX&W}Uk4y`dtt)O{Ju1!z%`n$0?O z-`lJa_c<^$p%nV`cLg{Av}B=4?ENLs80%?J%fpCE@cSH`1ZPX2$*-1av^(-9P%Yx* zoaSyjK$0Advnp-Fum{ivg0{p>i&%75O~gZd#49QJC=GOuf+X3YA}vqqrTr@C6?wCq zpsN+m#Xzfiogs>=_|6|dpxX;5&m>u{B549^lBt&3bm+#JKCD^|Y+E;`xITSKQt`Y$ z7{g|&CD2?I$+n)fszVhV8}L0IoVJk2+AaU%9VvBC!*-R0Kx5GeCDTVwdT6H>d=CT% zEJV_F%dghUQ;UV$iO4aE`o9@TqR&7vygG#Run(bqRJNO^(}-FjJ{QL@i; zi;2GS0m>^$PSH`E(`v-sja>yza^KT=f@pjD`Gh{_X5whiY##94`Uzub3Nol^u9qE)m2&}8fbVaKU4YBU&_ym|_ zW2~WPBLOsy@*QwW-+LSsM-4w4fk{4&vn#e?HOpj4pWXx$5*>JS;7224A6e|-K2eo` z6M*TBCQjNJN){CMNXsDFzp~DUk|VVB;6qaw&9PiWdd^dgq}cfA0c`t)dy?#DON<^{t2PYnB*URv~nY*{&dk zf6Ko*fd$5zu6!yl4x)#m_icgALW}Q(z6pp2usx*1u*$DE{qT(w>EoaeFfDI}!F1H? z)oUDuzU{X5x(yUR;K9Kv$}69ZSsXQjGuDu83L2=r4Vx+QIt>Hf?Aoc)IV`J8n_lpEHpQI5g3a_{}^Brcnv0eDS01BN7sF(T zV_i|YM14fd5$i$h!X53CEzTy#agskEzoz95x;u#Y=X(W}6C{A1QLYd3Qii$>v{<$Z zOa;Y7GmcAvNtTKO3R<+2o$Teu^|nGa67kOG8B|`F^4|pN4qS!@5xbZZ?QrO?YFeI= znfj$?+V+v2O~g0bTdcegF24z?H(^b M07*qoM6N<$f)F%O!~g&Q diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_notice_box_bg.9.png b/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_base_notice_box_bg.9.png deleted file mode 100644 index 8b4b579b568ab50119bf6303e5f3c456489c1109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4787 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 KKb*Su;6DIyeYoua diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_disable_autopilot_icon.png b/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_disable_autopilot_icon.png deleted file mode 100644 index 170f254cd1c33c0628ab979459ec6d5780c8d4ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2829 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 Hu0mjf@OOIK diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_selected_btn.png b/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_selected_btn.png deleted file mode 100644 index 3f05565483f1ed36e55a0bb6a1b197dda2aa6fe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5210 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 UOE75RMF0Q*07*qoM6N<$g1qb~*8l(j diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_switch_line_close.png b/OCH/mogo-och-sweeper/src/main/res/drawable-xhdpi/sweeper_switch_line_close.png deleted file mode 100644 index 370b61de38f35e5da73f6c3a98eeebc45b0bbeea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3825 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 - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_commit.xml b/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_commit.xml deleted file mode 100644 index b345195ce7..0000000000 --- a/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_commit.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_un_commit.xml b/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_un_commit.xml deleted file mode 100644 index c17c5a4798..0000000000 --- a/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_switch_line_btn_un_commit.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_line_dividing_line1_selector.xml b/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_task_dividing_line1_selector.xml similarity index 100% rename from OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_line_dividing_line1_selector.xml rename to OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_task_dividing_line1_selector.xml diff --git a/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_line_dividing_line2_selector.xml b/OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_task_dividing_line2_selector.xml similarity index 100% rename from OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_line_dividing_line2_selector.xml rename to OCH/mogo-och-sweeper/src/main/res/drawable/sweeper_task_dividing_line2_selector.xml diff --git a/OCH/mogo-och-sweeper/src/main/res/layout/activity_sweeper_switch_line.xml b/OCH/mogo-och-sweeper/src/main/res/layout/activity_sweeper_switch_line.xml deleted file mode 100644 index 83f6208652..0000000000 --- a/OCH/mogo-och-sweeper/src/main/res/layout/activity_sweeper_switch_line.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/res/layout/fragment_och_sweeper.xml b/OCH/mogo-och-sweeper/src/main/res/layout/fragment_och_sweeper.xml index 142c43625c..088264b922 100644 --- a/OCH/mogo-och-sweeper/src/main/res/layout/fragment_och_sweeper.xml +++ b/OCH/mogo-och-sweeper/src/main/res/layout/fragment_och_sweeper.xml @@ -46,7 +46,7 @@ android:id="@+id/viewTaskListLine" android:layout_width="match_parent" android:layout_height="2dp" - android:background="@drawable/sweeper_line_dividing_line1_selector" + android:background="@drawable/sweeper_task_dividing_line1_selector" app:layout_constraintTop_toBottomOf="@+id/sweeperListTitle" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -55,7 +55,7 @@ android:id="@+id/viewTaskListLine1" android:layout_width="match_parent" android:layout_height="2dp" - android:background="@drawable/sweeper_line_dividing_line2_selector" + android:background="@drawable/sweeper_task_dividing_line2_selector" app:layout_constraintTop_toBottomOf="@+id/viewTaskListLine" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_current_task_info.xml b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_current_task_info.xml index a2543780ed..5674056c62 100644 --- a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_current_task_info.xml +++ b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_current_task_info.xml @@ -64,7 +64,7 @@ android:id="@+id/viewTaskInfoLine" android:layout_width="match_parent" android:layout_height="2dp" - android:background="@drawable/sweeper_line_dividing_line1_selector" + android:background="@drawable/sweeper_task_dividing_line1_selector" app:layout_constraintTop_toBottomOf="@+id/tvTaskTime" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -73,7 +73,7 @@ android:id="@+id/viewTaskInfoLine1" android:layout_width="match_parent" android:layout_height="2dp" - android:background="@drawable/sweeper_line_dividing_line2_selector" + android:background="@drawable/sweeper_task_dividing_line2_selector" app:layout_constraintTop_toBottomOf="@+id/viewTaskInfoLine" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> diff --git a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_switch_line_list_item.xml b/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_switch_line_list_item.xml deleted file mode 100644 index 782028c2f8..0000000000 --- a/OCH/mogo-och-sweeper/src/main/res/layout/sweeper_switch_line_list_item.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/res/values/colors.xml b/OCH/mogo-och-sweeper/src/main/res/values/colors.xml index a25b9b762b..da862b9270 100644 --- a/OCH/mogo-och-sweeper/src/main/res/values/colors.xml +++ b/OCH/mogo-och-sweeper/src/main/res/values/colors.xml @@ -32,9 +32,6 @@ #3E77F6 #323C6F - #2966EC - #F0151D41 - #19FFFFFF #FFFFFF