[android] Fixed route type selection for poi when transit mode enabled, opt click inner classes, replaced on lambdas

This commit is contained in:
Dmitry Donskoy 2018-06-29 16:37:53 +03:00 committed by Aleksandr Zatsepin
parent f19a923435
commit fbfaceb74a
6 changed files with 127 additions and 63 deletions

View file

@ -237,6 +237,11 @@ public class MwmActivity extends BaseMwmFragmentActivity
mToggleMapLayerController.toggleMode(Mode.TRAFFIC);
}
public void resetSubwayLayer()
{
mToggleMapLayerController.turnOff(Mode.SUBWAY);
}
public interface LeftAnimationTrackListener
{
void onTrackStarted(boolean collapsed);

View file

@ -44,11 +44,11 @@ public class MapLayerCompositeController implements MapLayerController
subway.setOnClickListener(dialogClickListener);
SubwayMapLayerController subwayMapLayerController = new SubwayMapLayerController(subway);
ControllerAndMode subwayPair = new ControllerAndMode(Mode.SUBWAY, subwayMapLayerController);
ControllerAndMode trafficPair = new ControllerAndMode(Mode.TRAFFIC, trafficButtonController);
ControllerAndMode subwayEntry = new ControllerAndMode(Mode.SUBWAY, subwayMapLayerController);
ControllerAndMode trafficEntry = new ControllerAndMode(Mode.TRAFFIC, trafficButtonController);
Set<ControllerAndMode> entries = new LinkedHashSet<>();
entries.add(subwayPair);
entries.add(trafficPair);
entries.add(subwayEntry);
entries.add(trafficEntry);
return Collections.unmodifiableSet(entries);
}
@ -189,6 +189,34 @@ public class MapLayerCompositeController implements MapLayerController
ToggleMapLayerDialog.show(mActivity);
}
public void turnOn(@NonNull Mode mode)
{
ControllerAndMode entry = findModeMapLayerController(mode);
entry.mController.turnOn();
entry.mController.showImmediately();
entry.mMode.setEnabled(mActivity, true);
}
public void turnOff(@NonNull Mode mode)
{
ControllerAndMode entry = findModeMapLayerController(mode);
entry.mController.turnOff();
entry.mController.hideImmediately();
entry.mMode.setEnabled(mActivity, false);
}
@NonNull
private ControllerAndMode findModeMapLayerController(@NonNull Mode mode)
{
for (ControllerAndMode each : mChildrenEntries)
{
if (each.mMode == mode)
return each;
}
throw new IllegalArgumentException("Mode not found : " + mode);
}
private static class ControllerAndMode
{
@NonNull

View file

@ -23,6 +23,7 @@ import com.mapswithme.maps.bookmarks.data.FeatureId;
import com.mapswithme.maps.bookmarks.data.MapObject;
import com.mapswithme.maps.downloader.MapManager;
import com.mapswithme.maps.location.LocationHelper;
import com.mapswithme.maps.maplayer.subway.SubwayManager;
import com.mapswithme.maps.taxi.TaxiInfo;
import com.mapswithme.maps.taxi.TaxiInfoError;
import com.mapswithme.maps.taxi.TaxiManager;
@ -413,12 +414,32 @@ public class RoutingController implements TaxiManager.TaxiListener
return;
}
if (startPoint != null && endPoint != null)
mLastRouterType = Framework.nativeGetBestRouter(startPoint.getLat(), startPoint.getLon(),
endPoint.getLat(), endPoint.getLon());
initLastRouteType(startPoint, endPoint, fromApi);
prepare(startPoint, endPoint, mLastRouterType, fromApi);
}
private void initLastRouteType(@Nullable MapObject startPoint, @Nullable MapObject endPoint,
boolean fromApi)
{
if (isSubwayEnabled() && !fromApi)
{
mLastRouterType = Framework.ROUTER_TYPE_TRANSIT;
return;
}
if (startPoint != null && endPoint != null)
mLastRouterType = Framework.nativeGetBestRouter(startPoint.getLat(),
startPoint.getLon(),
endPoint.getLat(),
endPoint.getLon());
}
private boolean isSubwayEnabled()
{
FragmentActivity activity = mContainer == null ? null : mContainer.getActivity();
return activity != null && SubwayManager.from(activity).isEnabled();
}
public void prepare(final @Nullable MapObject startPoint, final @Nullable MapObject endPoint,
@Framework.RouterType int routerType)
{

View file

@ -13,6 +13,7 @@ import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
import com.mapswithme.maps.taxi.TaxiInfo;
@ -77,60 +78,7 @@ public class RoutingPlanController extends ToolbarController
mRouterTypes = (RadioGroup) mToolbar.findViewById(R.id.route_type);
setupRouterButton(R.id.vehicle, R.drawable.ic_car, new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_VEHICLE_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_VEHICLE_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_VEHICLE);
}
});
setupRouterButton(R.id.pedestrian, R.drawable.ic_pedestrian, new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_PEDESTRIAN_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_PEDESTRIAN_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_PEDESTRIAN);
}
});
setupRouterButton(R.id.bicycle, R.drawable.ic_bike, new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_BICYCLE_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_BICYCLE_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_BICYCLE);
}
});
setupRouterButton(R.id.taxi, R.drawable.ic_taxi, new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_TAXI_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_TAXI_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_TAXI);
}
});
setupRouterButton(R.id.transit, R.drawable.ic_transit, new View.OnClickListener()
{
@Override
public void onClick(View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_TRANSIT_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_TRANSIT_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_TRANSIT);
}
});
setupRouterButtons();
View progressFrame = mToolbar.findViewById(R.id.progress_frame);
mProgressVehicle = (WheelProgressView) progressFrame.findViewById(R.id.progress_vehicle);
@ -142,6 +90,61 @@ public class RoutingPlanController extends ToolbarController
mRoutingBottomMenuController = RoutingBottomMenuController.newInstance(mActivity, mFrame, listener);
}
@NonNull
@Override
protected MwmActivity getActivity()
{
return (MwmActivity) super.getActivity();
}
private void setupRouterButtons()
{
setupRouterButton(R.id.vehicle, R.drawable.ic_car, this::onVehicleModeSelected);
setupRouterButton(R.id.pedestrian, R.drawable.ic_pedestrian, this::onPedestrianModeSelected);
setupRouterButton(R.id.bicycle, R.drawable.ic_bike, this::onBicycleModeSelected);
setupRouterButton(R.id.taxi, R.drawable.ic_taxi, this::onTaxiModeSelected);
setupRouterButton(R.id.transit, R.drawable.ic_transit, v -> onTransitModeSelected());
}
private void onTransitModeSelected()
{
AlohaHelper.logClick(AlohaHelper.ROUTING_TRANSIT_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_TRANSIT_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_TRANSIT);
}
private void onTaxiModeSelected(@NonNull View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_TAXI_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_TAXI_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_TAXI);
getActivity().resetSubwayLayer();
}
private void onBicycleModeSelected(@NonNull View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_BICYCLE_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_BICYCLE_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_BICYCLE);
getActivity().resetSubwayLayer();
}
private void onPedestrianModeSelected(@NonNull View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_PEDESTRIAN_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_PEDESTRIAN_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_PEDESTRIAN);
getActivity().resetSubwayLayer();
}
private void onVehicleModeSelected(@NonNull View v)
{
AlohaHelper.logClick(AlohaHelper.ROUTING_VEHICLE_SET);
Statistics.INSTANCE.trackEvent(Statistics.EventName.ROUTING_VEHICLE_SET);
RoutingController.get().setRouterType(Framework.ROUTER_TYPE_VEHICLE);
getActivity().resetSubwayLayer();
}
@Override
public void onUpClick()
{

View file

@ -90,7 +90,7 @@ public class SearchFragment extends BaseMwmFragment
{
public ToolbarController(View root)
{
super(root, getActivity());
super(root, SearchFragment.this.getActivity());
}
@Override

View file

@ -2,6 +2,7 @@ package com.mapswithme.maps.widget;
import android.app.Activity;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
import android.support.v7.widget.Toolbar;
import android.view.View;
@ -26,7 +27,7 @@ public class ToolbarController
public ToolbarController(View root, Activity activity)
{
mActivity = activity;
mToolbar = (Toolbar) root.findViewById(getToolbarId());
mToolbar = root.findViewById(getToolbarId());
if (useExtendedToolbar())
UiUtils.extendViewWithStatusBar(mToolbar);
@ -75,6 +76,12 @@ public class ToolbarController
return this;
}
@NonNull
protected Activity getActivity()
{
return mActivity;
}
public Toolbar getToolbar()
{
return mToolbar;