接入基础UI
This commit is contained in:
@@ -305,6 +305,7 @@ class MogoOCHTaxiModel {
|
||||
*/
|
||||
public void setOnTheWay2EndStation( boolean isOnTheWay2EndStation ) {
|
||||
this.mIsOnTheWay2EndStation = isOnTheWay2EndStation;
|
||||
OCHTaxiUiController.getInstance().onTheWay2EndStation();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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" );
|
||||
}
|
||||
} );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,4 +18,10 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="开启自动驾驶" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/complete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="乘客到站下车" />
|
||||
</LinearLayout>
|
||||
5
OCH/mogo-och-taxi/src/main/res/values/strings.xml
Normal file
5
OCH/mogo-och-taxi/src/main/res/values/strings.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="module_och_taxi_arrive_at_start_station">乘客已上车,准备出发</string>
|
||||
<string name="module_och_taxi_arrive_at_end_station">到达站点,乘客已下车</string>
|
||||
</resources>
|
||||
@@ -19,7 +19,7 @@ import com.mogo.och.view.SlidePanelView;
|
||||
* @author tongchenfei
|
||||
*/
|
||||
public abstract class BaseOchFragment<V extends IView, P extends Presenter<V>> extends MvpFragment<V, P> {
|
||||
private SlidePanelView slidePanelView;
|
||||
protected SlidePanelView slidePanelView;
|
||||
private TextView tvNotice;
|
||||
private CheckedTextView ctvAutopilotStatus;
|
||||
private FrameLayout flStationPanelContainer;
|
||||
|
||||
@@ -24,6 +24,7 @@ class MapStyleController {
|
||||
|
||||
private MapStyleController() {
|
||||
mVrAreaFilters.add( new ShunYiArea() );
|
||||
mVrAreaFilters.add( new OCHArea() );
|
||||
}
|
||||
|
||||
public static MapStyleController getInstance() {
|
||||
@@ -85,7 +86,21 @@ class MapStyleController {
|
||||
}
|
||||
|
||||
public interface VrAreaFilter {
|
||||
boolean isVrArea( MogoLocation location );
|
||||
default boolean isVrArea( MogoLocation location ) {
|
||||
if ( location == null ) {
|
||||
return false;
|
||||
}
|
||||
return location.getLat() > getLeftBottomLat() && location.getLon() > getLeftBottomLon()
|
||||
&& location.getLat() < getRightTopLat() && location.getLon() < getRightTopLon();
|
||||
}
|
||||
|
||||
double getLeftBottomLat();
|
||||
|
||||
double getLeftBottomLon();
|
||||
|
||||
double getRightTopLat();
|
||||
|
||||
double getRightTopLon();
|
||||
}
|
||||
|
||||
public static class ShunYiArea implements VrAreaFilter {
|
||||
@@ -97,12 +112,46 @@ class MapStyleController {
|
||||
private final double rightTopLon = 116.74804;
|
||||
|
||||
@Override
|
||||
public boolean isVrArea( MogoLocation location ) {
|
||||
if ( location == null ) {
|
||||
return false;
|
||||
}
|
||||
return location.getLat() > leftBottomLat && location.getLon() > leftBottomLon
|
||||
&& location.getLat() < rightTopLat && location.getLon() < rightTopLon;
|
||||
public double getLeftBottomLat() {
|
||||
return leftBottomLat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getLeftBottomLon() {
|
||||
return leftBottomLon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRightTopLat() {
|
||||
return rightTopLat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRightTopLon() {
|
||||
return rightTopLon;
|
||||
}
|
||||
}
|
||||
|
||||
public static class OCHArea implements VrAreaFilter {
|
||||
|
||||
@Override
|
||||
public double getLeftBottomLat() {
|
||||
return 39.97645;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getLeftBottomLon() {
|
||||
return 116.41673;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRightTopLat() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getRightTopLon() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user