diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/AvoidRoadsBottomSheetDialogFragment.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/AvoidRoadsBottomSheetDialogFragment.java index 75dba1e078..d60a2a53cc 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/AvoidRoadsBottomSheetDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/AvoidRoadsBottomSheetDialogFragment.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.content.Context; import android.os.Build; import android.os.Bundle; -import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; @@ -23,6 +22,7 @@ import net.osmand.data.LatLon; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; +import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SettingsBaseActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; @@ -59,18 +59,16 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr private HashMap routingParametersMap; private List removedImpassableRoads; private LinearLayout stylesContainer; + private List compoundButtons = new ArrayList<>(); + private boolean hideImpassableRoads; - @ColorRes private int compoundButtonColorId = INVALID_ID; + @ColorRes + private int compoundButtonColorId = INVALID_ID; - public AvoidRoadsBottomSheetDialogFragment() { - } - - public AvoidRoadsBottomSheetDialogFragment(boolean hideImpassableRoads) { + public void setHideImpassableRoads(boolean hideImpassableRoads) { this.hideImpassableRoads = hideImpassableRoads; } - List compoundButtons = new ArrayList<>(); - @Override public void createMenuItems(Bundle savedInstanceState) { final OsmandApplication app = getMyApplication(); @@ -79,12 +77,10 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr } routingOptionsHelper = app.getRoutingOptionsHelper(); if (savedInstanceState != null) { + hideImpassableRoads = savedInstanceState.getBoolean(HIDE_IMPASSABLE_ROADS_KEY); if (savedInstanceState.containsKey(AVOID_ROADS_TYPES_KEY)) { routingParametersMap = (HashMap) savedInstanceState.getSerializable(AVOID_ROADS_TYPES_KEY); } - if (savedInstanceState.containsKey(HIDE_IMPASSABLE_ROADS_KEY)) { - hideImpassableRoads = true; - } if (savedInstanceState.containsKey(AVOID_ROADS_OBJECTS_KEY)) { removedImpassableRoads = (List) savedInstanceState.getSerializable(AVOID_ROADS_OBJECTS_KEY); } @@ -96,8 +92,8 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr removedImpassableRoads = new ArrayList(); } - final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme; - final View titleView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.bottom_sheet_item_toolbar_title, null); + LayoutInflater themedInflater = UiUtilities.getInflater(getContext(), nightMode); + final View titleView = themedInflater.inflate(R.layout.bottom_sheet_item_toolbar_title, null); TextView textView = (TextView) titleView.findViewById(R.id.title); textView.setText(!hideImpassableRoads ? R.string.impassable_road : R.string.avoid_pt_types); @@ -118,8 +114,7 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr items.add(titleItem); final SimpleBottomSheetItem descriptionItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() - .setTitle( - !hideImpassableRoads ? getString(R.string.avoid_roads_descr) : getString(R.string.avoid_pt_types_descr)) + .setTitle(!hideImpassableRoads ? getString(R.string.avoid_roads_descr) : getString(R.string.avoid_pt_types_descr)) .setLayoutId(R.layout.bottom_sheet_item_title_long) .create(); items.add(descriptionItem); @@ -129,18 +124,18 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr stylesContainer.setOrientation(LinearLayout.VERTICAL); stylesContainer.setPadding(0, getResources().getDimensionPixelSize(R.dimen.bottom_sheet_content_padding_small), 0, 0); - for (final LatLon routeDataObject : app.getAvoidSpecificRoads().getImpassableRoads().keySet()) { - if (removedImpassableRoads.contains(routeDataObject)) { - continue; - } - LayoutInflater.from(new ContextThemeWrapper(app, themeRes)).inflate(R.layout.bottom_sheet_item_simple_right_icon, stylesContainer, true); - } items.add(new BaseBottomSheetItem.Builder().setCustomView(stylesContainer).create()); - if(!hideImpassableRoads) { + if (!hideImpassableRoads) { + for (final LatLon routeDataObject : app.getAvoidSpecificRoads().getImpassableRoads().keySet()) { + if (removedImpassableRoads.contains(routeDataObject)) { + continue; + } + themedInflater.inflate(R.layout.bottom_sheet_item_simple_right_icon, stylesContainer, true); + } populateImpassableRoadsObjects(); - final View buttonView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.bottom_sheet_item_btn, null); + final View buttonView = themedInflater.inflate(R.layout.bottom_sheet_item_btn, null); TextView buttonDescription = (TextView) buttonView.findViewById(R.id.button_descr); buttonDescription.setText(R.string.shared_string_select_on_map); buttonDescription.setTextColor(getResolvedColor(nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light)); @@ -167,17 +162,14 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr } } dismiss(); - } + } }); - final SimpleBottomSheetItem buttonItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() + SimpleBottomSheetItem buttonItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder() .setCustomView(buttonView) .create(); items.add(buttonItem); - } - - items.add(new SubtitleDividerItem(app)); populateImpassableRoadsTypes(); @@ -251,7 +243,7 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr compoundButtons.add(item[0]); } } - + public void setCompoundButtonColorId(@ColorRes int compoundButtonColorId) { this.compoundButtonColorId = compoundButtonColorId; } @@ -270,9 +262,7 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr super.onSaveInstanceState(outState); outState.putSerializable(AVOID_ROADS_TYPES_KEY, routingParametersMap); outState.putSerializable(AVOID_ROADS_OBJECTS_KEY, (Serializable) removedImpassableRoads); - if(hideImpassableRoads) { - outState.putBoolean(HIDE_IMPASSABLE_ROADS_KEY, true); - } + outState.putBoolean(HIDE_IMPASSABLE_ROADS_KEY, hideImpassableRoads); } @Override @@ -284,7 +274,7 @@ public class AvoidRoadsBottomSheetDialogFragment extends MenuBottomSheetDialogFr @Nullable private MapActivity getMapActivity() { Activity activity = getActivity(); - if (activity != null && activity instanceof MapActivity) { + if (activity instanceof MapActivity) { return (MapActivity) activity; } return null; diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java index f418b908be..d56ca34ed3 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java @@ -760,7 +760,8 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener } else if (card instanceof PublicTransportNotFoundWarningCard) { updateApplicationMode(null, ApplicationMode.PEDESTRIAN); } else if (card instanceof PublicTransportNotFoundSettingsWarningCard) { - AvoidRoadsBottomSheetDialogFragment avoidRoadsFragment = new AvoidRoadsBottomSheetDialogFragment(true); + AvoidRoadsBottomSheetDialogFragment avoidRoadsFragment = new AvoidRoadsBottomSheetDialogFragment(); + avoidRoadsFragment.setHideImpassableRoads(true); avoidRoadsFragment.show(mapActivity.getSupportFragmentManager(), AvoidRoadsBottomSheetDialogFragment.TAG); } else if (card instanceof PedestrianRouteCard) { updateApplicationMode(null, ApplicationMode.PEDESTRIAN); diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java index 0097ff75ca..344ea910da 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RouteOptionsBottomSheet.java @@ -300,7 +300,8 @@ public class RouteOptionsBottomSheet extends MenuBottomSheetDialogFragment { @Override public void onClick(View view) { routingOptionsHelper.addNewRouteMenuParameter(applicationMode, optionsItem); - AvoidRoadsBottomSheetDialogFragment avoidRoadsFragment = new AvoidRoadsBottomSheetDialogFragment(true); + AvoidRoadsBottomSheetDialogFragment avoidRoadsFragment = new AvoidRoadsBottomSheetDialogFragment(); + avoidRoadsFragment.setHideImpassableRoads(true); avoidRoadsFragment.setTargetFragment(RouteOptionsBottomSheet.this, AvoidRoadsBottomSheetDialogFragment.REQUEST_CODE); avoidRoadsFragment.setCompoundButtonColorId(selectedModeColorId); avoidRoadsFragment.show(mapActivity.getSupportFragmentManager(), AvoidRoadsBottomSheetDialogFragment.TAG);