diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 7f0d56e8ad..a9bb7c5d84 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -305,6 +305,7 @@ class MogoOCHTaxiModel { */ public void setOnTheWay2EndStation( boolean isOnTheWay2EndStation ) { this.mIsOnTheWay2EndStation = isOnTheWay2EndStation; + OCHTaxiUiController.getInstance().onTheWay2EndStation(); } /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java index c74e7a86f3..341119683a 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java @@ -1,18 +1,18 @@ package com.mogo.och.taxi.ui; import android.os.Bundle; -import android.widget.Button; -import android.widget.TextView; +import android.view.View; import androidx.annotation.NonNull; -import com.mogo.commons.mvp.MvpFragment; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.BaseOchFragment; import com.mogo.och.taxi.IMogoOCHTaxiArriveCallback; import com.mogo.och.taxi.MogoOCHTaxiModel; import com.mogo.och.taxi.OCHOrderStatus; import com.mogo.och.taxi.OCHOrderStatusCallback; import com.mogo.och.taxi.R; +import com.mogo.och.view.SlidePanelView; import com.mogo.service.statusmanager.IMogoStatusChangedListener; import com.mogo.service.statusmanager.StatusDescriptor; import com.mogo.utils.logger.Logger; @@ -24,7 +24,7 @@ public * * 网约车-出租车UI */ -class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > implements OCHTaxiView, +class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > implements OCHTaxiView, IMogoStatusChangedListener, IMogoOCHTaxiArriveCallback { public static final String TAG = "OCHTaxiFragment"; @@ -38,46 +38,14 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple return fragment; } - private TextView orderInfo; - private Button autoPilot; - @Override - protected int getLayoutId() { - return R.layout.module_och_taxi_fragment; + public int getStationPanelViewId() { + return R.layout.module_och_taxi_panel; } @Override protected void initViews() { - - orderInfo = findViewById( R.id.orderInfo ); - autoPilot = findViewById( R.id.autoPilot ); - orderInfo.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().toString() ); - autoPilot.setOnClickListener( view -> { - if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) { - Logger.w( TAG, "已到达终点" ); - return; - } - MogoOCHTaxiModel.getInstance().startAutoPilot(); - MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true ); - MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.OnTheWayToEndStation, new OCHOrderStatusCallback() { - @Override - public void onSuccess( Object data ) { - Logger.d( TAG, "更新状态成功" ); - } - - @Override - public void onFail() { - Logger.d( TAG, "更新状态失败" ); - } - - - @Override - public void onError() { - Logger.d( TAG, "更新状态失败2" ); - } - } ); - } ); - + super.initViews(); if ( MogoApisHandler.getInstance() .getApis() .getStatusManagerApi() @@ -124,14 +92,19 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple private void initOrderStatus() { if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) { Logger.d( TAG, "已经达到终点" ); + slidePanelView.setVisibility( View.VISIBLE ); + slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_end_station ) ); return; } if ( MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { Logger.d( TAG, "已经去往终点" ); + slidePanelView.setVisibility( View.GONE ); return; } if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() ) { Logger.d( TAG, "已经达到起点" ); + slidePanelView.setVisibility( View.VISIBLE ); + slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) ); return; } } @@ -139,11 +112,14 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple @Override public void onArriveAtStartStation() { Logger.d( TAG, "通知达到起点" ); + initOrderStatus(); } @Override public void onArriveAtEndStation() { Logger.d( TAG, "通知达到终点" ); + onAutopilotStatusChanged( false ); + initOrderStatus(); MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.ArriveAtEndStation, new OCHOrderStatusCallback() { @Override public void onSuccess( Object data ) { @@ -166,6 +142,8 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple @Override public void onTheWay2EndStation() { Logger.d( TAG, "通知去往终点" ); + onAutopilotStatusChanged( true ); + initOrderStatus(); } @Override @@ -177,4 +155,56 @@ class OCHTaxiFragment extends MvpFragment< OCHTaxiView, OCHTaxiPresenter > imple .unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this ); OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null ); } + + @Override + public SlidePanelView.OnSlidePanelMoveToEndListener getSlidePanelOnEndListener() { + return this::onSlidePanelMoveToEnd; + } + + private void onSlidePanelMoveToEnd() { + // 已到达终点,需要结束订单 + if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) { + MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.Completed, new OCHOrderStatusCallback() { + @Override + public void onSuccess( Object data ) { + Logger.d( TAG, "更新状态成功" ); + MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder(); + OCHTaxiUiController.getInstance().removeFragment(); + } + + @Override + public void onFail() { + Logger.d( TAG, "更新状态失败" ); + } + + @Override + public void onError() { + Logger.d( TAG, "更新状态失败2" ); + } + } ); + return; + // 已到达起点,前往下一站并开启自动驾驶 + } else if ( MogoOCHTaxiModel.getInstance().isArriveAtStartStation() + && !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { + MogoOCHTaxiModel.getInstance().startAutoPilot(); + MogoOCHTaxiModel.getInstance().setOnTheWay2EndStation( true ); + MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.OnTheWayToEndStation, new OCHOrderStatusCallback() { + @Override + public void onSuccess( Object data ) { + Logger.d( TAG, "更新状态成功" ); + } + + @Override + public void onFail() { + Logger.d( TAG, "更新状态失败" ); + } + + + @Override + public void onError() { + Logger.d( TAG, "更新状态失败2" ); + } + } ); + } + } } diff --git a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_fragment.xml b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml similarity index 79% rename from OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_fragment.xml rename to OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml index efa9185d26..30ea93e8e1 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_fragment.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/module_och_taxi_panel.xml @@ -18,4 +18,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开启自动驾驶" /> + +