forked from organicmaps/organicmaps
[android] Fixed route type selection for poi when transit mode enabled, opt click inner classes, replaced on lambdas
This commit is contained in:
parent
f19a923435
commit
fbfaceb74a
6 changed files with 127 additions and 63 deletions
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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()
|
||||
{
|
||||
|
|
|
@ -90,7 +90,7 @@ public class SearchFragment extends BaseMwmFragment
|
|||
{
|
||||
public ToolbarController(View root)
|
||||
{
|
||||
super(root, getActivity());
|
||||
super(root, SearchFragment.this.getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue