Merge branch 'r3.3'

This commit is contained in:
Chumva 2019-04-08 18:18:35 +03:00
commit fce933fa32
18 changed files with 453 additions and 262 deletions

View file

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:osmand="http://schemas.android.com/apk/res-auto"
android:id="@+id/route_directions_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/card_and_list_background_basic"
android:orientation="vertical">
<net.osmand.plus.widgets.TextViewEx
android:id="@+id/directions_card_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="@dimen/content_padding"
android:text="@string/step_by_step"
android:textColor="?attr/main_font_color_basic"
android:textSize="@dimen/text_button_text_size"
osmand:typeface="@string/font_roboto_medium" />
<LinearLayout
android:id="@+id/items"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</LinearLayout>

View file

@ -121,6 +121,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/altitude_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:baselineAligned="false" android:baselineAligned="false"
@ -220,6 +221,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/slope_info_divider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:baselineAligned="false" android:baselineAligned="false"
@ -264,6 +266,7 @@
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout
android:id="@+id/slope_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:baselineAligned="false" android:baselineAligned="false"

View file

@ -36,7 +36,7 @@
android:layout_width="1dp" android:layout_width="1dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/divider_color_basic" android:background="?attr/divider_color_basic"
android:visibility="gone"/> android:visibility="visible"/>
<FrameLayout <FrameLayout
android:id="@+id/start_button" android:id="@+id/start_button"

View file

@ -1606,6 +1606,11 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
return trackDetailsMenu; return trackDetailsMenu;
} }
public void hideContextAndRouteInfoMenues() {
mapContextMenu.hideMenues();
mapRouteInfoMenu.hide();
}
public void openDrawer() { public void openDrawer() {
mapActions.updateDrawerMenu(); mapActions.updateDrawerMenu();
boolean animate = !settings.DO_NOT_USE_ANIMATIONS.get(); boolean animate = !settings.DO_NOT_USE_ANIMATIONS.get();

View file

@ -889,7 +889,8 @@ public class MapActivityActions implements DialogProvider {
} }
public void openIntermediatePointsDialog() { public void openIntermediatePointsDialog() {
WaypointsFragment.showInstance(mapActivity); mapActivity.hideContextAndRouteInfoMenues();
WaypointsFragment.showInstance(mapActivity.getSupportFragmentManager());
} }
public void openRoutePreferencesDialog() { public void openRoutePreferencesDialog() {

View file

@ -1263,7 +1263,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo
super.onResume(); super.onResume();
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
if (mapActivity != null) { if (mapActivity != null) {
if (!menu.isActive() || (mapActivity.getMapRouteInfoMenu().isVisible()) || MapRouteInfoMenu.chooseRoutesVisible) { if (!menu.isActive() || (mapActivity.getMapRouteInfoMenu().isVisible()) || MapRouteInfoMenu.chooseRoutesVisible || MapRouteInfoMenu.waypointsVisible) {
dismissMenu(); dismissMenu();
return; return;
} }

View file

@ -157,6 +157,9 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
setUpdateEnable(false); setUpdateEnable(false);
if (actionMode != null) {
actionMode.finish();
}
if (optionsMenu != null) { if (optionsMenu != null) {
optionsMenu.close(); optionsMenu.close();
} }
@ -1004,7 +1007,7 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
public void onClick(View v) { public void onClick(View v) {
List<GpxDisplayItem> items = itemGroups.get(group); List<GpxDisplayItem> items = itemGroups.get(group);
if (ch.isChecked()) { if (ch.isChecked()) {
if (groupPosition == 0) { if (groupPosition == 0 && groups.size() > 1) {
setTrackPointsSelection(true); setTrackPointsSelection(true);
} else { } else {
setGroupSelection(items, groupPosition, true); setGroupSelection(items, groupPosition, true);
@ -1027,7 +1030,7 @@ public class TrackPointFragment extends OsmandExpandableListFragment implements
} }
private void setTrackPointsSelection(boolean select) { private void setTrackPointsSelection(boolean select) {
if (groups.size() > 1) { if (!groups.isEmpty()) {
setGroupSelection(null, 0, select); setGroupSelection(null, 0, select);
for (int i = 1; i < groups.size(); i++) { for (int i = 1; i < groups.size(); i++) {
GpxDisplayGroup g = groups.get(i); GpxDisplayGroup g = groups.get(i);

View file

@ -109,6 +109,8 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
public static int directionInfo = -1; public static int directionInfo = -1;
public static boolean chooseRoutesVisible = false; public static boolean chooseRoutesVisible = false;
public static boolean waypointsVisible = false;
private boolean routeCalculationInProgress; private boolean routeCalculationInProgress;
private boolean selectFromMapTouch; private boolean selectFromMapTouch;
@ -1350,7 +1352,8 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
public void onClick(View v) { public void onClick(View v) {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
if (mapActivity != null && mapActivity.getMyApplication().getTargetPointsHelper().checkPointToNavigateShort()) { if (mapActivity != null && mapActivity.getMyApplication().getTargetPointsHelper().checkPointToNavigateShort()) {
WaypointsFragment.showInstance(mapActivity); hide();
WaypointsFragment.showInstance(mapActivity.getSupportFragmentManager(), getCurrentMenuState());
} }
} }
}); });

View file

@ -469,6 +469,8 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
R.color.divider_light, R.color.divider_dark); R.color.divider_light, R.color.divider_dark);
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerButtons), nightMode, AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerButtons), nightMode,
R.color.divider_light, R.color.divider_dark); R.color.divider_light, R.color.divider_dark);
AndroidUtils.setBackground(ctx, view.findViewById(R.id.controls_divider), nightMode,
R.color.divider_light, R.color.divider_dark);
AndroidUtils.setBackground(ctx, view.findViewById(R.id.app_modes_options_container), nightMode, AndroidUtils.setBackground(ctx, view.findViewById(R.id.app_modes_options_container), nightMode,
R.drawable.route_info_trans_gradient_light, R.drawable.route_info_trans_gradient_dark); R.drawable.route_info_trans_gradient_light, R.drawable.route_info_trans_gradient_dark);
AndroidUtils.setBackground(ctx, view.findViewById(R.id.app_modes_fold_container), nightMode, AndroidUtils.setBackground(ctx, view.findViewById(R.id.app_modes_fold_container), nightMode,

View file

@ -1,8 +1,6 @@
package net.osmand.plus.routepreparationmenu; package net.osmand.plus.routepreparationmenu;
import android.content.Context; import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.GradientDrawable;
@ -11,7 +9,6 @@ import android.support.annotation.ColorInt;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.support.v7.view.ContextThemeWrapper;
import android.text.Spannable; import android.text.Spannable;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.SpannableStringBuilder; import android.text.SpannableStringBuilder;
@ -65,6 +62,7 @@ import net.osmand.plus.routepreparationmenu.cards.BaseCard;
import net.osmand.plus.routepreparationmenu.cards.BaseCard.CardListener; import net.osmand.plus.routepreparationmenu.cards.BaseCard.CardListener;
import net.osmand.plus.routepreparationmenu.cards.PublicTransportCard; import net.osmand.plus.routepreparationmenu.cards.PublicTransportCard;
import net.osmand.plus.routepreparationmenu.cards.PublicTransportCard.PublicTransportCardListener; import net.osmand.plus.routepreparationmenu.cards.PublicTransportCard.PublicTransportCardListener;
import net.osmand.plus.routepreparationmenu.cards.RouteDirectionsCard;
import net.osmand.plus.routepreparationmenu.cards.RouteInfoCard; import net.osmand.plus.routepreparationmenu.cards.RouteInfoCard;
import net.osmand.plus.routepreparationmenu.cards.RouteStatisticCard; import net.osmand.plus.routepreparationmenu.cards.RouteStatisticCard;
import net.osmand.plus.routing.RouteCalculationResult; import net.osmand.plus.routing.RouteCalculationResult;
@ -72,7 +70,6 @@ import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.routing.TransportRoutingHelper; import net.osmand.plus.routing.TransportRoutingHelper;
import net.osmand.plus.transport.TransportStopRoute; import net.osmand.plus.transport.TransportStopRoute;
import net.osmand.plus.views.TurnPathHelper;
import net.osmand.plus.widgets.TextViewEx; import net.osmand.plus.widgets.TextViewEx;
import net.osmand.plus.widgets.style.CustomTypefaceSpan; import net.osmand.plus.widgets.style.CustomTypefaceSpan;
import net.osmand.render.RenderingRuleSearchRequest; import net.osmand.render.RenderingRuleSearchRequest;
@ -255,60 +252,18 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
transportCard = null; transportCard = null;
makeGpx(); makeGpx();
createRouteStatisticCards(cardsContainer); createRouteStatisticCards(cardsContainer);
createRouteDirections(cardsContainer); createRouteDirectionsCard(cardsContainer);
} }
} }
} }
} }
private void createRouteDirections(LinearLayout cardsContainer) {
OsmandApplication app = requireMyApplication();
TextViewEx routeDirectionsTitle = new TextViewEx(app);
routeDirectionsTitle.setTextColor(getMainFontColor());
routeDirectionsTitle.setTextSize(15);
routeDirectionsTitle.setGravity(Gravity.CENTER_VERTICAL);
routeDirectionsTitle.setPadding(dpToPx(16), dpToPx(16), dpToPx(16), dpToPx(16));
routeDirectionsTitle.setText(R.string.step_by_step);
routeDirectionsTitle.setTypeface(FontCache.getRobotoMedium(app));
cardsContainer.addView(routeDirectionsTitle);
List<RouteDirectionInfo> routeDirections = app.getRoutingHelper().getRouteDirections();
for (int i = 0; i < routeDirections.size(); i++) {
RouteDirectionInfo routeDirectionInfo = routeDirections.get(i);
OnClickListener onClickListener = createRouteDirectionInfoViewClickListener(i, routeDirectionInfo);
View view = getRouteDirectionView(i, routeDirectionInfo, routeDirections, onClickListener);
cardsContainer.addView(view);
}
}
private OnClickListener createRouteDirectionInfoViewClickListener(final int directionInfoIndex, final RouteDirectionInfo routeDirectionInfo) {
return new OnClickListener() {
@Override
public void onClick(View view) {
OsmandApplication app = requireMyApplication();
Location loc = app.getRoutingHelper().getLocationFromRouteDirection(routeDirectionInfo);
if (loc != null) {
MapRouteInfoMenu.directionInfo = directionInfoIndex;
OsmandSettings settings = app.getSettings();
settings.setMapLocationToShow(loc.getLatitude(), loc.getLongitude(),
Math.max(13, settings.getLastKnownMapZoom()),
new PointDescription(PointDescription.POINT_TYPE_MARKER,
routeDirectionInfo.getDescriptionRoutePart() + " " + getTimeDescription(app, routeDirectionInfo)),
false, null);
MapActivity.launchMapActivityMoveToTop(getActivity());
dismiss();
}
}
};
}
private void createRouteStatisticCards(LinearLayout cardsContainer) { private void createRouteStatisticCards(LinearLayout cardsContainer) {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
if (mapActivity == null) { if (mapActivity == null) {
return; return;
} }
OsmandApplication app = mapActivity.getMyApplication(); OsmandApplication app = mapActivity.getMyApplication();
if (gpx.hasAltitude) {
RouteStatisticCard statisticCard = new RouteStatisticCard(mapActivity, gpx, new View.OnTouchListener() { RouteStatisticCard statisticCard = new RouteStatisticCard(mapActivity, gpx, new View.OnTouchListener() {
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
@ -330,6 +285,7 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
buildRowDivider(cardsContainer, false); buildRowDivider(cardsContainer, false);
slopeDataSet = statisticCard.getSlopeDataSet(); slopeDataSet = statisticCard.getSlopeDataSet();
elevationDataSet = statisticCard.getElevationDataSet(); elevationDataSet = statisticCard.getElevationDataSet();
if (gpx.hasAltitude) {
List<RouteSegmentResult> route = app.getRoutingHelper().getRoute().getOriginalRoute(); List<RouteSegmentResult> route = app.getRoutingHelper().getRoute().getOriginalRoute();
if (route != null) { if (route != null) {
RenderingRulesStorage currentRenderer = app.getRendererRegistry().getCurrentSelectedRenderer(); RenderingRulesStorage currentRenderer = app.getRendererRegistry().getCurrentSelectedRenderer();
@ -360,6 +316,19 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
} }
} }
private void createRouteDirectionsCard(LinearLayout cardsContainer) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return;
}
RouteDirectionsCard directionsCard = new RouteDirectionsCard(mapActivity);
directionsCard.setTransparentBackground(true);
directionsCard.setListener(this);
menuCards.add(directionsCard);
cardsContainer.addView(directionsCard.build(mapActivity));
buildRowDivider(cardsContainer, false);
}
private void createRouteCard(LinearLayout cardsContainer, RouteInfoCard routeInfoCard) { private void createRouteCard(LinearLayout cardsContainer, RouteInfoCard routeInfoCard) {
OsmandApplication app = requireMyApplication(); OsmandApplication app = requireMyApplication();
menuCards.add(routeInfoCard); menuCards.add(routeInfoCard);
@ -1483,6 +1452,30 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
} }
} }
private void showDirectionsInfo(int directionInfoIndex) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return;
}
RoutingHelper helper = mapActivity.getRoutingHelper();
List<RouteDirectionInfo> routeDirections = helper.getRouteDirections();
if (routeDirections.size() > directionInfoIndex) {
RouteDirectionInfo routeDirectionInfo = routeDirections.get(directionInfoIndex);
Location loc = helper.getLocationFromRouteDirection(routeDirectionInfo);
if (loc != null) {
MapRouteInfoMenu.directionInfo = directionInfoIndex;
OsmandSettings settings = mapActivity.getMyApplication().getSettings();
settings.setMapLocationToShow(loc.getLatitude(), loc.getLongitude(),
Math.max(13, settings.getLastKnownMapZoom()),
new PointDescription(PointDescription.POINT_TYPE_MARKER,
routeDirectionInfo.getDescriptionRoutePart() + " " + getTimeDescription(mapActivity.getMyApplication(), routeDirectionInfo)),
false, null);
MapActivity.launchMapActivityMoveToTop(mapActivity);
dismiss();
}
}
}
@Override @Override
public void onPublicTransportCardBadgePressed(@NonNull PublicTransportCard card, @NonNull TransportRouteResultSegment segment) { public void onPublicTransportCardBadgePressed(@NonNull PublicTransportCard card, @NonNull TransportRouteResultSegment segment) {
showRouteSegmentOnMap(segment); showRouteSegmentOnMap(segment);
@ -1512,6 +1505,8 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
public void onCardButtonPressed(@NonNull BaseCard card, int buttonIndex) { public void onCardButtonPressed(@NonNull BaseCard card, int buttonIndex) {
if (card instanceof PublicTransportCard && buttonIndex == 0) { if (card instanceof PublicTransportCard && buttonIndex == 0) {
openMenuFullScreen(); openMenuFullScreen();
} else if (card instanceof RouteDirectionsCard && buttonIndex >= 0) {
showDirectionsInfo(buttonIndex);
} }
} }
@ -1525,48 +1520,6 @@ public class RouteDetailsFragment extends ContextMenuFragment implements PublicT
} }
} }
public View getRouteDirectionView(int position, RouteDirectionInfo model, List<RouteDirectionInfo> directionsInfo, OnClickListener onClickListener) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return null;
}
OsmandApplication app = mapActivity.getMyApplication();
ContextThemeWrapper context = new ContextThemeWrapper(mapActivity, isNightMode() ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme);
View row = LayoutInflater.from(context).inflate(R.layout.route_info_list_item, null);
TextView label = (TextView) row.findViewById(R.id.description);
TextView distanceLabel = (TextView) row.findViewById(R.id.distance);
TextView timeLabel = (TextView) row.findViewById(R.id.time);
TextView cumulativeDistanceLabel = (TextView) row.findViewById(R.id.cumulative_distance);
TextView cumulativeTimeLabel = (TextView) row.findViewById(R.id.cumulative_time);
ImageView icon = (ImageView) row.findViewById(R.id.direction);
row.findViewById(R.id.divider).setVisibility(position == directionsInfo.size() - 1 ? View.INVISIBLE : View.VISIBLE);
TurnPathHelper.RouteDrawable drawable = new TurnPathHelper.RouteDrawable(getResources(), true);
drawable.setColorFilter(new PorterDuffColorFilter(getActiveColor(), PorterDuff.Mode.SRC_ATOP));
drawable.setRouteType(model.getTurnType());
icon.setImageDrawable(drawable);
label.setText(model.getDescriptionRoutePart());
if (model.distance > 0) {
distanceLabel.setText(OsmAndFormatter.getFormattedDistance(model.distance, app));
timeLabel.setText(getTimeDescription(app, model));
row.setContentDescription(label.getText() + " " + timeLabel.getText());
} else {
if (Algorithms.isEmpty(label.getText().toString())) {
label.setText(getString((position != directionsInfo.size() - 1) ? R.string.arrived_at_intermediate_point : R.string.arrived_at_destination));
}
distanceLabel.setText("");
timeLabel.setText("");
row.setContentDescription("");
}
CumulativeInfo cumulativeInfo = getRouteDirectionCumulativeInfo(position, directionsInfo);
cumulativeDistanceLabel.setText(OsmAndFormatter.getFormattedDistance(cumulativeInfo.distance, app));
cumulativeTimeLabel.setText(Algorithms.formatDuration(cumulativeInfo.time, app.accessibilityEnabled()));
row.setOnClickListener(onClickListener);
return row;
}
public static CumulativeInfo getRouteDirectionCumulativeInfo(int position, List<RouteDirectionInfo> routeDirections) { public static CumulativeInfo getRouteDirectionCumulativeInfo(int position, List<RouteDirectionInfo> routeDirections) {
CumulativeInfo cumulativeInfo = new CumulativeInfo(); CumulativeInfo cumulativeInfo = new CumulativeInfo();
if (position >= routeDirections.size()) { if (position >= routeDirections.size()) {

View file

@ -1,6 +1,5 @@
package net.osmand.plus.routepreparationmenu; package net.osmand.plus.routepreparationmenu;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
@ -59,17 +58,13 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import static net.osmand.plus.helpers.WaypointDialogHelper.showOnMap; import static net.osmand.plus.helpers.WaypointDialogHelper.showOnMap;
import static net.osmand.plus.routepreparationmenu.ChooseRouteFragment.ROUTE_INFO_STATE_KEY;
public class WaypointsFragment extends BaseOsmAndFragment implements ObservableScrollViewCallbacks, public class WaypointsFragment extends BaseOsmAndFragment implements ObservableScrollViewCallbacks,
DynamicListViewCallbacks, WaypointDialogHelper.WaypointDialogHelperCallback { DynamicListViewCallbacks, WaypointDialogHelper.WaypointDialogHelperCallback {
public static final String TAG = "WaypointsFragment"; public static final String TAG = "WaypointsFragment";
private OsmandApplication app;
private MapActivity mapActivity;
private WaypointDialogHelper waypointDialogHelper;
private View view; private View view;
private View mainView; private View mainView;
private DynamicListView listView; private DynamicListView listView;
@ -88,26 +83,24 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
private boolean nightMode; private boolean nightMode;
private boolean wasDrawerDisabled; private boolean wasDrawerDisabled;
@Override private int routeInfoMenuState = -1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
app = getMyApplication();
mapActivity = (MapActivity) getActivity();
}
@Nullable @Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
MapActivity mapActivity = (MapActivity) requireActivity();
portrait = AndroidUiHelper.isOrientationPortrait(mapActivity); portrait = AndroidUiHelper.isOrientationPortrait(mapActivity);
nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls(); nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
waypointDialogHelper = mapActivity.getDashboard().getWaypointDialogHelper();
view = inflater.inflate(R.layout.route_waypoints_fragment, parent, false); view = inflater.inflate(R.layout.route_waypoints_fragment, parent, false);
if (view == null) { if (view == null) {
return null; return null;
} }
AndroidUtils.addStatusBarPadding21v(app, view); AndroidUtils.addStatusBarPadding21v(mapActivity, view);
Bundle args = getArguments();
if (args != null) {
routeInfoMenuState = args.getInt(ROUTE_INFO_STATE_KEY, -1);
}
mainView = view.findViewById(R.id.main_view); mainView = view.findViewById(R.id.main_view);
listView = (DynamicListView) view.findViewById(R.id.dash_list_view); listView = (DynamicListView) view.findViewById(R.id.dash_list_view);
@ -147,11 +140,14 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
if (hasActivePoints) { if (hasActivePoints) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
TargetOptionsBottomSheetDialogFragment fragment = new TargetOptionsBottomSheetDialogFragment(); TargetOptionsBottomSheetDialogFragment fragment = new TargetOptionsBottomSheetDialogFragment();
fragment.setUsedOnMap(true); fragment.setUsedOnMap(true);
fragment.show(mapActivity.getSupportFragmentManager(), TargetOptionsBottomSheetDialogFragment.TAG); fragment.show(mapActivity.getSupportFragmentManager(), TargetOptionsBottomSheetDialogFragment.TAG);
} }
} }
}
}); });
if (!portrait) { if (!portrait) {
@ -225,20 +221,24 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
@Override @Override
public String getTitle() { public String getTitle() {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
List<Object> activeObjects; List<Object> activeObjects;
if ((mapActivity.getRoutingHelper().isRoutePlanningMode() || mapActivity.getRoutingHelper().isFollowingMode()) if ((mapActivity.getRoutingHelper().isRoutePlanningMode() || mapActivity.getRoutingHelper().isFollowingMode())
&& item != null && item != null
&& ((activeObjects = stableAdapter.getActiveObjects()).isEmpty() || isContainsOnlyStart(activeObjects))) { && ((activeObjects = stableAdapter.getActiveObjects()).isEmpty() || isContainsOnlyStart(activeObjects))) {
return mapActivity.getResources().getString(R.string.cancel_navigation); return mapActivity.getResources().getString(R.string.cancel_navigation);
} else {
return null;
} }
} }
return null;
}
}; };
} }
@Override @Override
public void onHidePopup() { public void onHidePopup() {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
StableArrayAdapter stableAdapter = (StableArrayAdapter) listAdapter; StableArrayAdapter stableAdapter = (StableArrayAdapter) listAdapter;
stableAdapter.refreshData(); stableAdapter.refreshData();
applyPointsChanges(); applyPointsChanges();
@ -250,6 +250,7 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
mapActivity.getMapRouteInfoMenu().hide(); mapActivity.getMapRouteInfoMenu().hide();
} }
} }
}
private boolean isContainsOnlyStart(List<Object> items) { private boolean isContainsOnlyStart(List<Object> items) {
if (items.size() == 1) { if (items.size() == 1) {
@ -269,6 +270,8 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
addButton.setOnClickListener(new View.OnClickListener() { addButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
Bundle args = new Bundle(); Bundle args = new Bundle();
args.putString(AddPointBottomSheetDialog.POINT_TYPE_KEY, MapRouteInfoMenu.PointType.INTERMEDIATE.name()); args.putString(AddPointBottomSheetDialog.POINT_TYPE_KEY, MapRouteInfoMenu.PointType.INTERMEDIATE.name());
AddPointBottomSheetDialog fragment = new AddPointBottomSheetDialog(); AddPointBottomSheetDialog fragment = new AddPointBottomSheetDialog();
@ -276,6 +279,7 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
fragment.setUsedOnMap(true); fragment.setUsedOnMap(true);
fragment.show(mapActivity.getSupportFragmentManager(), AddPointBottomSheetDialog.TAG); fragment.show(mapActivity.getSupportFragmentManager(), AddPointBottomSheetDialog.TAG);
} }
}
}); });
FrameLayout clearButton = view.findViewById(R.id.clear_all_button); FrameLayout clearButton = view.findViewById(R.id.clear_all_button);
@ -284,10 +288,13 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
clearButton.setOnClickListener(new View.OnClickListener() { clearButton.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
OsmandApplication app = getMyApplication();
if (app != null) {
app.getTargetPointsHelper().clearAllPoints(true); app.getTargetPointsHelper().clearAllPoints(true);
updateTitle(); updateTitle();
reloadAdapter(); reloadAdapter();
} }
}
}); });
View applyButton = view.findViewById(R.id.start_button); View applyButton = view.findViewById(R.id.start_button);
@ -331,24 +338,34 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
MapRouteInfoMenu.waypointsVisible = true;
wasDrawerDisabled = mapActivity.isDrawerDisabled(); wasDrawerDisabled = mapActivity.isDrawerDisabled();
waypointDialogHelper.addHelperCallback(this); mapActivity.getDashboard().getWaypointDialogHelper().addHelperCallback(this);
app.getTargetPointsHelper().addListener(onStateChangedListener); mapActivity.getMyApplication().getTargetPointsHelper().addListener(onStateChangedListener);
if (!wasDrawerDisabled) { if (!wasDrawerDisabled) {
mapActivity.disableDrawer(); mapActivity.disableDrawer();
} }
updateRouteCalculationProgress(0); updateRouteCalculationProgress(0);
updateControlsVisibility(false, false);
}
} }
@Override @Override
public void onPause() { public void onPause() {
super.onPause(); super.onPause();
cancelTimer(); cancelTimer();
waypointDialogHelper.removeHelperCallback(this); MapActivity mapActivity = getMapActivity();
app.getTargetPointsHelper().removeListener(onStateChangedListener); if (mapActivity != null) {
MapRouteInfoMenu.waypointsVisible = false;
mapActivity.getDashboard().getWaypointDialogHelper().removeHelperCallback(this);
mapActivity.getMyApplication().getTargetPointsHelper().removeListener(onStateChangedListener);
if (!wasDrawerDisabled) { if (!wasDrawerDisabled) {
mapActivity.enableDrawer(); mapActivity.enableDrawer();
} }
updateControlsVisibility(true, routeInfoMenuState != -1);
}
} }
@Override @Override
@ -395,20 +412,29 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
startTimer(); startTimer();
} }
@Nullable
private MapActivity getMapActivity() {
return (MapActivity) getActivity();
}
public void applyDayNightMode() { public void applyDayNightMode() {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return;
}
boolean landscapeLayout = !portrait; boolean landscapeLayout = !portrait;
boolean nightMode = app.getDaynightHelper().isNightModeForMapControls(); boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
int colorActive = ContextCompat.getColor(mapActivity, nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light); int colorActive = ContextCompat.getColor(mapActivity, nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light);
if (!landscapeLayout) { if (!landscapeLayout) {
AndroidUtils.setBackground(app, mainView, nightMode, R.drawable.route_info_menu_bg_light, R.drawable.route_info_menu_bg_dark); AndroidUtils.setBackground(mapActivity, mainView, nightMode, R.drawable.route_info_menu_bg_light, R.drawable.route_info_menu_bg_dark);
} else { } else {
AndroidUtils.setBackground(app, mainView, nightMode, R.drawable.route_info_menu_bg_left_light, R.drawable.route_info_menu_bg_left_dark); AndroidUtils.setBackground(mapActivity, mainView, nightMode, R.drawable.route_info_menu_bg_left_light, R.drawable.route_info_menu_bg_left_dark);
} }
((TextView) view.findViewById(R.id.sort_button)).setTextColor(colorActive); ((TextView) view.findViewById(R.id.sort_button)).setTextColor(colorActive);
((TextView) view.findViewById(R.id.add_button_descr)).setTextColor(colorActive); ((TextView) view.findViewById(R.id.add_button_descr)).setTextColor(colorActive);
((TextView) view.findViewById(R.id.clear_all_button_descr)).setTextColor(colorActive); ((TextView) view.findViewById(R.id.clear_all_button_descr)).setTextColor(colorActive);
((TextView) view.findViewById(R.id.title)).setTextColor(ContextCompat.getColor(app, nightMode ? R.color.main_font_dark : R.color.main_font_light)); ((TextView) view.findViewById(R.id.title)).setTextColor(ContextCompat.getColor(mapActivity, nightMode ? R.color.main_font_dark : R.color.main_font_light));
FrameLayout addButton = view.findViewById(R.id.add_button); FrameLayout addButton = view.findViewById(R.id.add_button);
TextView addButtonDescr = (TextView) view.findViewById(R.id.add_button_descr); TextView addButtonDescr = (TextView) view.findViewById(R.id.add_button_descr);
@ -416,10 +442,10 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
addButtonDescr.setText(R.string.shared_string_add); addButtonDescr.setText(R.string.shared_string_add);
addButtonDescr.setCompoundDrawablesWithIntrinsicBounds(getPaintedContentIcon(R.drawable.ic_action_plus, colorActive), null, null, null); addButtonDescr.setCompoundDrawablesWithIntrinsicBounds(getPaintedContentIcon(R.drawable.ic_action_plus, colorActive), null, null, null);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
AndroidUtils.setBackground(app, addButton, nightMode, R.drawable.btn_border_light, R.drawable.btn_border_dark); AndroidUtils.setBackground(mapActivity, addButton, nightMode, R.drawable.btn_border_light, R.drawable.btn_border_dark);
AndroidUtils.setBackground(app, addButtonDescr, nightMode, R.drawable.ripple_light, R.drawable.ripple_dark); AndroidUtils.setBackground(mapActivity, addButtonDescr, nightMode, R.drawable.ripple_light, R.drawable.ripple_dark);
} else { } else {
AndroidUtils.setBackground(app, addButton, nightMode, R.drawable.btn_border_trans_light, R.drawable.btn_border_trans_dark); AndroidUtils.setBackground(mapActivity, addButton, nightMode, R.drawable.btn_border_trans_light, R.drawable.btn_border_trans_dark);
} }
FrameLayout clearButton = view.findViewById(R.id.clear_all_button); FrameLayout clearButton = view.findViewById(R.id.clear_all_button);
@ -428,12 +454,13 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
clearButtonDescr.setCompoundDrawablesWithIntrinsicBounds(getPaintedContentIcon(R.drawable.ic_action_clear_all, colorActive), null, null, null); clearButtonDescr.setCompoundDrawablesWithIntrinsicBounds(getPaintedContentIcon(R.drawable.ic_action_clear_all, colorActive), null, null, null);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
AndroidUtils.setBackground(app, clearButton, nightMode, R.drawable.btn_border_light, R.drawable.btn_border_dark); AndroidUtils.setBackground(mapActivity, clearButton, nightMode, R.drawable.btn_border_light, R.drawable.btn_border_dark);
AndroidUtils.setBackground(app, clearButtonDescr, nightMode, R.drawable.ripple_light, R.drawable.ripple_dark); AndroidUtils.setBackground(mapActivity, clearButtonDescr, nightMode, R.drawable.ripple_light, R.drawable.ripple_dark);
} else { } else {
AndroidUtils.setBackground(app, clearButtonDescr, nightMode, R.drawable.btn_border_trans_light, R.drawable.btn_border_trans_dark); AndroidUtils.setBackground(mapActivity, clearButtonDescr, nightMode, R.drawable.btn_border_trans_light, R.drawable.btn_border_trans_dark);
} }
AndroidUtils.setBackground(app, view.findViewById(R.id.cancel_button), nightMode, R.color.card_and_list_background_light, R.color.card_and_list_background_dark); AndroidUtils.setBackground(mapActivity, view.findViewById(R.id.cancel_button), nightMode, R.color.card_and_list_background_light, R.color.card_and_list_background_dark);
AndroidUtils.setBackground(mapActivity, view.findViewById(R.id.controls_divider), nightMode, R.color.divider_light, R.color.divider_dark);
((TextView) view.findViewById(R.id.cancel_button_descr)).setTextColor(colorActive); ((TextView) view.findViewById(R.id.cancel_button_descr)).setTextColor(colorActive);
((TextView) view.findViewById(R.id.start_button_descr)).setText(getText(R.string.shared_string_apply)); ((TextView) view.findViewById(R.id.start_button_descr)).setText(getText(R.string.shared_string_apply));
@ -442,6 +469,11 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
public void reloadListAdapter(ArrayAdapter<Object> listAdapter) { public void reloadListAdapter(ArrayAdapter<Object> listAdapter) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return;
}
WaypointDialogHelper waypointDialogHelper = mapActivity.getDashboard().getWaypointDialogHelper();
mapActivity.getMyApplication().getWaypointHelper().removeVisibleLocationPoint(new ArrayList<LocationPointWrapper>()); mapActivity.getMyApplication().getWaypointHelper().removeVisibleLocationPoint(new ArrayList<LocationPointWrapper>());
listAdapter.setNotifyOnChange(false); listAdapter.setNotifyOnChange(false);
@ -461,7 +493,8 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
return new AdapterView.OnItemClickListener() { return new AdapterView.OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> adapterView, View view, int item, long l) { public void onItemClick(AdapterView<?> adapterView, View view, int item, long l) {
if (listAdapter.getItem(item) instanceof LocationPointWrapper) { OsmandApplication app = getMyApplication();
if (app != null && listAdapter.getItem(item) instanceof LocationPointWrapper) {
LocationPointWrapper ps = (LocationPointWrapper) listAdapter.getItem(item); LocationPointWrapper ps = (LocationPointWrapper) listAdapter.getItem(item);
if (ps != null) { if (ps != null) {
showOnMap(app, ctx, ps.getPoint(), false); showOnMap(app, ctx, ps.getPoint(), false);
@ -476,6 +509,8 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
final boolean edit, final List<LocationPointWrapper> deletedPoints, final boolean edit, final List<LocationPointWrapper> deletedPoints,
final MapActivity ctx, final int[] running, final boolean flat, final boolean nightMode) { final MapActivity ctx, final int[] running, final boolean flat, final boolean nightMode) {
final WaypointDialogHelper waypointDialogHelper = ctx.getDashboard().getWaypointDialogHelper();
List<Object> points = waypointDialogHelper.getTargetPoints(); List<Object> points = waypointDialogHelper.getTargetPoints();
List<Object> activePoints = waypointDialogHelper.getActivePoints(points); List<Object> activePoints = waypointDialogHelper.getActivePoints(points);
@ -489,7 +524,7 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
Object obj = getItem(position); Object obj = getItem(position);
if (obj instanceof LocationPointWrapper) { if (obj instanceof LocationPointWrapper) {
LocationPointWrapper point = (LocationPointWrapper) obj; LocationPointWrapper point = (LocationPointWrapper) obj;
v = updateWaypointItemView(edit, deletedPoints, app, ctx, waypointDialogHelper, v, point, this, nightMode, flat, position); v = updateWaypointItemView(edit, deletedPoints, ctx, v, point, this, nightMode, flat, position);
} }
return v; return v;
} }
@ -501,7 +536,7 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
if (w.type == WaypointHelper.TARGETS) { if (w.type == WaypointHelper.TARGETS) {
final TargetPoint t = (TargetPoint) w.point; final TargetPoint t = (TargetPoint) w.point;
if (t.getOriginalPointDescription() != null if (t.getOriginalPointDescription() != null
&& t.getOriginalPointDescription().isSearchingAddress(mapActivity)) { && t.getOriginalPointDescription().isSearchingAddress(ctx)) {
GeocodingLookupService.AddressLookupRequest lookupRequest GeocodingLookupService.AddressLookupRequest lookupRequest
= new GeocodingLookupService.AddressLookupRequest(t.point, new GeocodingLookupService.OnAddressLookupResult() { = new GeocodingLookupService.AddressLookupRequest(t.point, new GeocodingLookupService.OnAddressLookupResult() {
@Override @Override
@ -510,9 +545,8 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
//updateRouteInfoMenu(ctx); //updateRouteInfoMenu(ctx);
} }
}, null); }, null);
app.getGeocodingLookupService().lookupAddress(lookupRequest); ctx.getMyApplication().getGeocodingLookupService().lookupAddress(lookupRequest);
} }
} }
} }
} }
@ -520,12 +554,32 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
return listAdapter; return listAdapter;
} }
public void updateControlsVisibility(boolean visible, boolean openingRouteInfo) {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
int visibility = visible ? View.VISIBLE : View.GONE;
mapActivity.findViewById(R.id.map_center_info).setVisibility(visibility);
mapActivity.findViewById(R.id.map_left_widgets_panel).setVisibility(visibility);
if (!openingRouteInfo) {
mapActivity.findViewById(R.id.map_right_widgets_panel).setVisibility(visibility);
if (!portrait) {
mapActivity.getMapView().setMapPositionX(visible ? 0 : 1);
}
}
mapActivity.refreshMap();
}
}
public void newRouteIsCalculated(boolean newRoute, ValueHolder<Boolean> showToast) { public void newRouteIsCalculated(boolean newRoute, ValueHolder<Boolean> showToast) {
reloadAdapter(); reloadAdapter();
showToast.value = false; showToast.value = false;
} }
public void updateRouteCalculationProgress(int progress) { public void updateRouteCalculationProgress(int progress) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return;
}
ProgressBar progressBarButton = (ProgressBar) view.findViewById(R.id.progress_bar_button); ProgressBar progressBarButton = (ProgressBar) view.findViewById(R.id.progress_bar_button);
if (progressBarButton != null) { if (progressBarButton != null) {
if (progressBarButton.getVisibility() != View.VISIBLE) { if (progressBarButton.getVisibility() != View.VISIBLE) {
@ -542,11 +596,14 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
public void setupRouteCalculationButtonProgressBar(@NonNull ProgressBar pb) { public void setupRouteCalculationButtonProgressBar(@NonNull ProgressBar pb) {
OsmandApplication app = getMyApplication();
if (app != null) {
int bgColor = ContextCompat.getColor(app, nightMode ? R.color.activity_background_dark : R.color.activity_background_light); int bgColor = ContextCompat.getColor(app, nightMode ? R.color.activity_background_dark : R.color.activity_background_light);
int progressColor = ContextCompat.getColor(app, nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light); int progressColor = ContextCompat.getColor(app, nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light);
pb.setProgressDrawable(AndroidUtils.createProgressDrawable(bgColor, progressColor)); pb.setProgressDrawable(AndroidUtils.createProgressDrawable(bgColor, progressColor));
} }
}
private void setDynamicListItems(DynamicListView listView, StableArrayAdapter listAdapter) { private void setDynamicListItems(DynamicListView listView, StableArrayAdapter listAdapter) {
listView.setItemsList(listAdapter.getObjects()); listView.setItemsList(listAdapter.getObjects());
@ -554,6 +611,10 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
private void updateListAdapter() { private void updateListAdapter() {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return;
}
List<LocationPointWrapper> deletedPoints = new ArrayList<>(); List<LocationPointWrapper> deletedPoints = new ArrayList<>();
listView.setEmptyView(null); listView.setEmptyView(null);
StableArrayAdapter listAdapter = getWaypointsDrawerAdapter(true, deletedPoints, mapActivity, running, false, nightMode); StableArrayAdapter listAdapter = getWaypointsDrawerAdapter(true, deletedPoints, mapActivity, running, false, nightMode);
@ -588,7 +649,8 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
private void updateTitle() { private void updateTitle() {
if (isAdded()) { OsmandApplication app = getMyApplication();
if (app != null && isAdded()) {
final TextViewEx title = (TextViewEx) view.findViewById(R.id.title); final TextViewEx title = (TextViewEx) view.findViewById(R.id.title);
int pointsSize = app.getTargetPointsHelper().getAllPoints().size(); int pointsSize = app.getTargetPointsHelper().getAllPoints().size();
String text = getString(R.string.shared_string_target_points) + " (" + (pointsSize != 0 ? pointsSize : 1) + ")"; String text = getString(R.string.shared_string_target_points) + " (" + (pointsSize != 0 ? pointsSize : 1) + ")";
@ -597,6 +659,10 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
private void applyPointsChanges() { private void applyPointsChanges() {
OsmandApplication app = getMyApplication();
if (app == null) {
return;
}
app.runInUIThread(new Runnable() { app.runInUIThread(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -672,16 +738,17 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
private static View updateWaypointItemView(final boolean edit, final List<LocationPointWrapper> deletedPoints, private static View updateWaypointItemView(final boolean edit, final List<LocationPointWrapper> deletedPoints,
final OsmandApplication app, final Activity ctx, final MapActivity mapActivity, View v,
final WaypointDialogHelper helper, View v,
final LocationPointWrapper point, final LocationPointWrapper point,
final ArrayAdapter adapter, final boolean nightMode, final ArrayAdapter adapter, final boolean nightMode,
final boolean flat, final int position) { final boolean flat, final int position) {
final OsmandApplication app = mapActivity.getMyApplication();
final WaypointDialogHelper helper = mapActivity.getDashboard().getWaypointDialogHelper();
if (v == null || v.findViewById(R.id.info_close) == null) { if (v == null || v.findViewById(R.id.info_close) == null) {
v = ctx.getLayoutInflater().inflate(R.layout.route_waypoint_item, null); v = mapActivity.getLayoutInflater().inflate(R.layout.route_waypoint_item, null);
} }
v.setBackgroundColor(ContextCompat.getColor(app, nightMode ? R.color.card_and_list_background_dark : R.color.card_and_list_background_light)); v.setBackgroundColor(ContextCompat.getColor(mapActivity, nightMode ? R.color.card_and_list_background_dark : R.color.card_and_list_background_light));
updatePointInfoView(app, ctx, v, point, true, nightMode, edit, false); updatePointInfoView(mapActivity, v, point, true, nightMode, edit, false);
final ImageView move = (ImageView) v.findViewById(R.id.info_move); final ImageView move = (ImageView) v.findViewById(R.id.info_move);
final ImageButton remove = (ImageButton) v.findViewById(R.id.info_close); final ImageButton remove = (ImageButton) v.findViewById(R.id.info_close);
@ -708,11 +775,11 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
public void onClick(View v) { public void onClick(View v) {
if (targetPointsHelper.getPointToStart() == null) { if (targetPointsHelper.getPointToStart() == null) {
if (!targetPointsHelper.getIntermediatePoints().isEmpty()) { if (!targetPointsHelper.getIntermediatePoints().isEmpty()) {
WaypointDialogHelper.replaceStartWithFirstIntermediate(targetPointsHelper, ctx, helper); WaypointDialogHelper.replaceStartWithFirstIntermediate(targetPointsHelper, mapActivity, helper);
} }
} else { } else {
targetPointsHelper.setStartPoint(null, true, null); targetPointsHelper.setStartPoint(null, true, null);
WaypointDialogHelper.updateControls(ctx, helper); WaypointDialogHelper.updateControls(mapActivity, helper);
} }
} }
}); });
@ -720,13 +787,13 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
remove.setOnClickListener(new View.OnClickListener() { remove.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
WaypointDialogHelper.deletePoint(app, ctx, adapter, helper, point, deletedPoints, true); WaypointDialogHelper.deletePoint(app, mapActivity, adapter, helper, point, deletedPoints, true);
} }
}); });
} }
} }
AndroidUtils.setBackground(ctx, topDivider, nightMode, R.color.divider_light, R.color.divider_dark); AndroidUtils.setBackground(mapActivity, topDivider, nightMode, R.color.divider_light, R.color.divider_dark);
topDivider.setVisibility(position != 0 ? View.VISIBLE : View.GONE); topDivider.setVisibility(position != 0 ? View.VISIBLE : View.GONE);
move.setVisibility(notFlatTargets ? View.VISIBLE : View.GONE); move.setVisibility(notFlatTargets ? View.VISIBLE : View.GONE);
@ -744,36 +811,35 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
return v; return v;
} }
private static void updatePointInfoView(final OsmandApplication app, final Activity activity, private static void updatePointInfoView(final MapActivity mapActivity,
View localView, final LocationPointWrapper ps, View localView, final LocationPointWrapper ps,
final boolean mapCenter, final boolean nightMode, final boolean mapCenter, final boolean nightMode,
final boolean edit, final boolean topBar) { final boolean edit, final boolean topBar) {
WaypointHelper wh = app.getWaypointHelper(); final OsmandApplication app = mapActivity.getMyApplication();
WaypointHelper wh = mapActivity.getMyApplication().getWaypointHelper();
final LocationPoint point = ps.getPoint(); final LocationPoint point = ps.getPoint();
TextView text = (TextView) localView.findViewById(R.id.waypoint_text); TextView text = (TextView) localView.findViewById(R.id.waypoint_text);
if (!topBar) { if (!topBar) {
text.setTextColor(ContextCompat.getColor(app, nightMode ? R.color.main_font_dark : R.color.main_font_light)); text.setTextColor(ContextCompat.getColor(mapActivity, nightMode ? R.color.main_font_dark : R.color.main_font_light));
} }
TextView textShadow = (TextView) localView.findViewById(R.id.waypoint_text_shadow); TextView textShadow = (TextView) localView.findViewById(R.id.waypoint_text_shadow);
if (!edit) { if (!edit) {
localView.setOnClickListener(new View.OnClickListener() { localView.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
showOnMap(app, activity, point, mapCenter); showOnMap(app, mapActivity, point, mapCenter);
} }
}); });
} }
TextView textDist = (TextView) localView.findViewById(R.id.waypoint_dist); TextView textDist = (TextView) localView.findViewById(R.id.waypoint_dist);
textDist.setTextColor(ContextCompat.getColor(app, nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light)); textDist.setTextColor(ContextCompat.getColor(app, nightMode ? R.color.active_buttons_and_links_dark : R.color.active_buttons_and_links_light));
((ImageView) localView.findViewById(R.id.waypoint_icon)).setImageDrawable(ps.getDrawable(activity, app, nightMode)); ((ImageView) localView.findViewById(R.id.waypoint_icon)).setImageDrawable(ps.getDrawable(mapActivity, app, nightMode));
int dist = -1; int dist = -1;
boolean startPoint = ps.type == WaypointHelper.TARGETS && ((TargetPoint) ps.point).start; boolean startPoint = ps.type == WaypointHelper.TARGETS && ((TargetPoint) ps.point).start;
if (!startPoint) { if (!startPoint) {
if (!wh.isRouteCalculated()) { if (!wh.isRouteCalculated()) {
if (activity instanceof MapActivity) { dist = (int) MapUtils.getDistance(mapActivity.getMapView().getLatitude(), mapActivity.getMapView().getLongitude(),
dist = (int) MapUtils.getDistance(((MapActivity) activity).getMapView().getLatitude(), ((MapActivity) activity) point.getLatitude(), point.getLongitude());
.getMapView().getLongitude(), point.getLatitude(), point.getLongitude());
}
} else { } else {
dist = wh.getRouteDistance(ps); dist = wh.getRouteDistance(ps);
} }
@ -831,15 +897,15 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
case WaypointHelper.TARGETS: case WaypointHelper.TARGETS:
TargetPoint targetPoint = (TargetPoint) ps.point; TargetPoint targetPoint = (TargetPoint) ps.point;
if (targetPoint.start) { if (targetPoint.start) {
pointDescription = activity.getResources().getString(R.string.starting_point); pointDescription = mapActivity.getResources().getString(R.string.starting_point);
} else { } else {
pointDescription = getPointDescription(activity, targetPoint).getTypeName(); pointDescription = getPointDescription(mapActivity, targetPoint).getTypeName();
} }
break; break;
case WaypointHelper.FAVORITES: case WaypointHelper.FAVORITES:
FavouritePoint favPoint = (FavouritePoint) ps.point; FavouritePoint favPoint = (FavouritePoint) ps.point;
pointDescription = Algorithms.isEmpty(favPoint.getCategory()) ? activity.getResources().getString(R.string.shared_string_favorites) : favPoint.getCategory(); pointDescription = Algorithms.isEmpty(favPoint.getCategory()) ? mapActivity.getResources().getString(R.string.shared_string_favorites) : favPoint.getCategory();
break; break;
} }
} }
@ -864,15 +930,20 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
} }
public static boolean showInstance(final MapActivity mapActivity) { public static boolean showInstance(FragmentManager fragmentManager) {
try { return WaypointsFragment.showInstance(fragmentManager, -1);
mapActivity.getContextMenu().hideMenues(); }
public static boolean showInstance(FragmentManager fragmentManager, int routeInfoState) {
try {
WaypointsFragment fragment = new WaypointsFragment(); WaypointsFragment fragment = new WaypointsFragment();
mapActivity.getSupportFragmentManager()
.beginTransaction() Bundle args = new Bundle();
args.putInt(ROUTE_INFO_STATE_KEY, routeInfoState);
fragment.setArguments(args);
fragmentManager.beginTransaction()
.add(R.id.routeMenuContainer, fragment, TAG) .add(R.id.routeMenuContainer, fragment, TAG)
.addToBackStack(TAG)
.commitAllowingStateLoss(); .commitAllowingStateLoss();
return true; return true;
@ -883,14 +954,16 @@ public class WaypointsFragment extends BaseOsmAndFragment implements ObservableS
} }
private void dismiss() { private void dismiss() {
FragmentActivity activity = getActivity();
if (activity != null) {
try { try {
activity.getSupportFragmentManager().popBackStack(TAG, MapActivity mapActivity = (MapActivity) getActivity();
FragmentManager.POP_BACK_STACK_INCLUSIVE); if (mapActivity != null) {
mapActivity.getSupportFragmentManager().beginTransaction().remove(this).commitAllowingStateLoss();
if (routeInfoMenuState != -1) {
mapActivity.getMapLayers().getMapControlsLayer().showRouteInfoControlDialog(routeInfoMenuState);
}
}
} catch (Exception e) { } catch (Exception e) {
// //
} }
} }
} }
}

View file

@ -0,0 +1,105 @@
package net.osmand.plus.routepreparationmenu.cards;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.support.annotation.NonNull;
import android.support.v7.view.ContextThemeWrapper;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.routepreparationmenu.RouteDetailsFragment;
import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.views.TurnPathHelper;
import net.osmand.util.Algorithms;
import java.util.List;
public class RouteDirectionsCard extends BaseCard {
public RouteDirectionsCard(@NonNull MapActivity mapActivity) {
super(mapActivity);
}
@Override
public int getCardLayoutId() {
return R.layout.route_directions_card;
}
@Override
protected void updateContent() {
LinearLayout root = (LinearLayout) view.findViewById(R.id.items);
root.removeAllViews();
createRouteDirections(root);
}
private void createRouteDirections(LinearLayout cardsContainer) {
List<RouteDirectionInfo> routeDirections = app.getRoutingHelper().getRouteDirections();
for (int i = 0; i < routeDirections.size(); i++) {
RouteDirectionInfo routeDirectionInfo = routeDirections.get(i);
View view = getRouteDirectionView(i, routeDirectionInfo, routeDirections);
cardsContainer.addView(view);
}
}
private static String getTimeDescription(OsmandApplication app, RouteDirectionInfo model) {
final int timeInSeconds = model.getExpectedTime();
return Algorithms.formatDuration(timeInSeconds, app.accessibilityEnabled());
}
private View getRouteDirectionView(final int directionInfoIndex, RouteDirectionInfo model, List<RouteDirectionInfo> directionsInfo) {
MapActivity mapActivity = getMapActivity();
if (mapActivity == null) {
return null;
}
OsmandApplication app = mapActivity.getMyApplication();
ContextThemeWrapper context = new ContextThemeWrapper(mapActivity, nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme);
View row = LayoutInflater.from(context).inflate(R.layout.route_info_list_item, null);
TextView label = (TextView) row.findViewById(R.id.description);
TextView distanceLabel = (TextView) row.findViewById(R.id.distance);
TextView timeLabel = (TextView) row.findViewById(R.id.time);
TextView cumulativeDistanceLabel = (TextView) row.findViewById(R.id.cumulative_distance);
TextView cumulativeTimeLabel = (TextView) row.findViewById(R.id.cumulative_time);
ImageView icon = (ImageView) row.findViewById(R.id.direction);
row.findViewById(R.id.divider).setVisibility(directionInfoIndex == directionsInfo.size() - 1 ? View.INVISIBLE : View.VISIBLE);
TurnPathHelper.RouteDrawable drawable = new TurnPathHelper.RouteDrawable(mapActivity.getResources(), true);
drawable.setColorFilter(new PorterDuffColorFilter(getActiveColor(), PorterDuff.Mode.SRC_ATOP));
drawable.setRouteType(model.getTurnType());
icon.setImageDrawable(drawable);
label.setText(model.getDescriptionRoutePart());
if (model.distance > 0) {
distanceLabel.setText(OsmAndFormatter.getFormattedDistance(model.distance, app));
timeLabel.setText(getTimeDescription(app, model));
row.setContentDescription(label.getText() + " " + timeLabel.getText());
} else {
if (Algorithms.isEmpty(label.getText().toString())) {
label.setText(mapActivity.getString((directionInfoIndex != directionsInfo.size() - 1) ? R.string.arrived_at_intermediate_point : R.string.arrived_at_destination));
}
distanceLabel.setText("");
timeLabel.setText("");
row.setContentDescription("");
}
RouteDetailsFragment.CumulativeInfo cumulativeInfo = RouteDetailsFragment.getRouteDirectionCumulativeInfo(directionInfoIndex, directionsInfo);
cumulativeDistanceLabel.setText(OsmAndFormatter.getFormattedDistance(cumulativeInfo.distance, app));
cumulativeTimeLabel.setText(Algorithms.formatDuration(cumulativeInfo.time, app.accessibilityEnabled()));
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CardListener listener = getListener();
if (listener != null) {
listener.onCardButtonPressed(RouteDirectionsCard.this, directionInfoIndex);
}
}
});
return row;
}
}

View file

@ -100,10 +100,18 @@ public class RouteStatisticCard extends BaseCard {
String arriveStr = app.getString(R.string.arrive_at_time, OsmAndFormatter.getFormattedTime(time, true)); String arriveStr = app.getString(R.string.arrive_at_time, OsmAndFormatter.getFormattedTime(time, true));
arriveTimeTv.setText(arriveStr); arriveTimeTv.setText(arriveStr);
buildSlopeInfo();
if (isTransparentBackground()) {
view.setBackgroundDrawable(null);
}
}
private void buildSlopeInfo() {
GPXTrackAnalysis analysis = gpx.getAnalysis(0); GPXTrackAnalysis analysis = gpx.getAnalysis(0);
buildHeader(analysis); buildHeader(analysis);
if (analysis.hasElevationData) {
((TextView) view.findViewById(R.id.average_text)).setText(OsmAndFormatter.getFormattedAlt(analysis.avgElevation, app)); ((TextView) view.findViewById(R.id.average_text)).setText(OsmAndFormatter.getFormattedAlt(analysis.avgElevation, app));
String min = OsmAndFormatter.getFormattedAlt(analysis.minElevation, app); String min = OsmAndFormatter.getFormattedAlt(analysis.minElevation, app);
@ -120,13 +128,9 @@ public class RouteStatisticCard extends BaseCard {
((ImageView) view.findViewById(R.id.descent_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_altitude_descent)); ((ImageView) view.findViewById(R.id.descent_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_altitude_descent));
((ImageView) view.findViewById(R.id.ascent_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_altitude_ascent)); ((ImageView) view.findViewById(R.id.ascent_icon)).setImageDrawable(getContentIcon(R.drawable.ic_action_altitude_ascent));
if (isTransparentBackground()) {
view.setBackgroundDrawable(null);
}
FrameLayout analyseButton = (FrameLayout) view.findViewById(R.id.analyse_button);
TextView analyseButtonDescr = (TextView) view.findViewById(R.id.analyse_button_descr); TextView analyseButtonDescr = (TextView) view.findViewById(R.id.analyse_button_descr);
FrameLayout analyseButton = (FrameLayout) view.findViewById(R.id.analyse_button);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
AndroidUtils.setBackground(app, analyseButton, nightMode, R.drawable.btn_border_light, R.drawable.btn_border_dark); AndroidUtils.setBackground(app, analyseButton, nightMode, R.drawable.btn_border_light, R.drawable.btn_border_dark);
AndroidUtils.setBackground(app, analyseButtonDescr, nightMode, R.drawable.ripple_light, R.drawable.ripple_dark); AndroidUtils.setBackground(app, analyseButtonDescr, nightMode, R.drawable.ripple_light, R.drawable.ripple_dark);
@ -135,6 +139,11 @@ public class RouteStatisticCard extends BaseCard {
} }
analyseButton.setOnClickListener(onAnalyseClickListener); analyseButton.setOnClickListener(onAnalyseClickListener);
} }
view.findViewById(R.id.altitude_container).setVisibility(analysis.hasElevationData ? View.VISIBLE : View.GONE);
view.findViewById(R.id.slope_info_divider).setVisibility(analysis.hasElevationData ? View.VISIBLE : View.GONE);
view.findViewById(R.id.slope_container).setVisibility(analysis.hasElevationData ? View.VISIBLE : View.GONE);
view.findViewById(R.id.buttons_container).setVisibility(analysis.hasElevationData ? View.VISIBLE : View.GONE);
}
@Nullable @Nullable
public OrderedLineDataSet getSlopeDataSet() { public OrderedLineDataSet getSlopeDataSet() {

View file

@ -815,7 +815,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
} }
public boolean disableSingleTap() { public boolean disableSingleTap() {
if (activity.getMapRouteInfoMenu().isVisible() || MapRouteInfoMenu.chooseRoutesVisible) { if (activity.getMapRouteInfoMenu().isVisible() || MapRouteInfoMenu.chooseRoutesVisible || MapRouteInfoMenu.waypointsVisible) {
return true; return true;
} }
boolean res = false; boolean res = false;
@ -832,7 +832,7 @@ public class ContextMenuLayer extends OsmandMapLayer {
public boolean disableLongPressOnMap() { public boolean disableLongPressOnMap() {
if (mInChangeMarkerPositionMode || mInGpxDetailsMode || mInAddGpxPointMode || if (mInChangeMarkerPositionMode || mInGpxDetailsMode || mInAddGpxPointMode ||
activity.getMapRouteInfoMenu().isVisible() || MapRouteInfoMenu.chooseRoutesVisible) { activity.getMapRouteInfoMenu().isVisible() || MapRouteInfoMenu.chooseRoutesVisible || MapRouteInfoMenu.waypointsVisible) {
return true; return true;
} }
boolean res = false; boolean res = false;

View file

@ -753,7 +753,7 @@ public class MapControlsLayer extends OsmandMapLayer {
boolean routeDialogOpened = mapRouteInfoMenu.isVisible() || (showRouteCalculationControls && mapRouteInfoMenu.needShowMenu()); boolean routeDialogOpened = mapRouteInfoMenu.isVisible() || (showRouteCalculationControls && mapRouteInfoMenu.needShowMenu());
updateMyLocation(rh, routeDialogOpened || trackDialogOpened || contextMenuOpened); updateMyLocation(rh, routeDialogOpened || trackDialogOpened || contextMenuOpened);
boolean showButtons = (showRouteCalculationControls || !routeFollowingMode) boolean showButtons = (showRouteCalculationControls || !routeFollowingMode)
&& !isInMovingMarkerMode() && !isInGpxDetailsMode() && !isInMeasurementToolMode() && !isInPlanRouteMode() && !contextMenuOpened && !isInChoosingRoutesMode(); && !isInMovingMarkerMode() && !isInGpxDetailsMode() && !isInMeasurementToolMode() && !isInPlanRouteMode() && !contextMenuOpened && !isInChoosingRoutesMode() && !isInWaypointsChoosingMode();
//routePlanningBtn.setIconResId(routeFollowingMode ? R.drawable.ic_action_gabout_dark : R.drawable.map_directions); //routePlanningBtn.setIconResId(routeFollowingMode ? R.drawable.ic_action_gabout_dark : R.drawable.map_directions);
if (rh.isFollowingMode()) { if (rh.isFollowingMode()) {
routePlanningBtn.setIconResId(R.drawable.map_start_navigation); routePlanningBtn.setIconResId(R.drawable.map_start_navigation);
@ -768,10 +768,11 @@ public class MapControlsLayer extends OsmandMapLayer {
routePlanningBtn.updateVisibility(showButtons); routePlanningBtn.updateVisibility(showButtons);
menuControl.updateVisibility(showButtons); menuControl.updateVisibility(showButtons);
mapZoomIn.updateVisibility(!routeDialogOpened && !contextMenuOpened && (!isInChoosingRoutesMode() || !portrait));
mapZoomOut.updateVisibility(!routeDialogOpened && !contextMenuOpened && (!isInChoosingRoutesMode() || !portrait)); mapZoomIn.updateVisibility(!routeDialogOpened && !contextMenuOpened && (!isInChoosingRoutesMode() || !isInWaypointsChoosingMode() || !portrait));
mapZoomOut.updateVisibility(!routeDialogOpened && !contextMenuOpened && (!isInChoosingRoutesMode() || !isInWaypointsChoosingMode() || !portrait));
boolean forceHideCompass = routeDialogOpened || trackDialogOpened boolean forceHideCompass = routeDialogOpened || trackDialogOpened
|| isInMeasurementToolMode() || isInPlanRouteMode() || contextMenuOpened || isInChoosingRoutesMode(); || isInMeasurementToolMode() || isInPlanRouteMode() || contextMenuOpened || isInChoosingRoutesMode() || isInWaypointsChoosingMode();
compassHud.forceHideCompass = forceHideCompass; compassHud.forceHideCompass = forceHideCompass;
compassHud.updateVisibility(!forceHideCompass && shouldShowCompass()); compassHud.updateVisibility(!forceHideCompass && shouldShowCompass());
@ -779,9 +780,9 @@ public class MapControlsLayer extends OsmandMapLayer {
layersHud.update(app, isNight); layersHud.update(app, isNight);
} }
layersHud.updateVisibility(!routeDialogOpened && !trackDialogOpened && !isInMeasurementToolMode() && !isInPlanRouteMode() layersHud.updateVisibility(!routeDialogOpened && !trackDialogOpened && !isInMeasurementToolMode() && !isInPlanRouteMode()
&& !contextMenuOpened && !isInChoosingRoutesMode()); && !contextMenuOpened && !isInChoosingRoutesMode() && !isInWaypointsChoosingMode());
quickSearchHud.updateVisibility(!routeDialogOpened && !trackDialogOpened && !isInMeasurementToolMode() && !isInPlanRouteMode() quickSearchHud.updateVisibility(!routeDialogOpened && !trackDialogOpened && !isInMeasurementToolMode() && !isInPlanRouteMode()
&& !contextMenuOpened && !isInChoosingRoutesMode()); && !contextMenuOpened && !isInChoosingRoutesMode() && !isInWaypointsChoosingMode());
if (!routePlanningMode && !routeFollowingMode) { if (!routePlanningMode && !routeFollowingMode) {
if (mapView.isZooming()) { if (mapView.isZooming()) {
@ -862,7 +863,7 @@ public class MapControlsLayer extends OsmandMapLayer {
backToLocationControl.iv.setContentDescription(mapActivity.getString(R.string.map_widget_back_to_loc)); backToLocationControl.iv.setContentDescription(mapActivity.getString(R.string.map_widget_back_to_loc));
} }
boolean visible = !(tracked && rh.isFollowingMode()); boolean visible = !(tracked && rh.isFollowingMode());
backToLocationControl.updateVisibility(visible && !dialogOpened && !isInPlanRouteMode() && (!isInChoosingRoutesMode() || !portrait)); backToLocationControl.updateVisibility(visible && !dialogOpened && !isInPlanRouteMode() && (!isInChoosingRoutesMode() || !isInWaypointsChoosingMode() || !portrait));
if (app.accessibilityEnabled()) { if (app.accessibilityEnabled()) {
backToLocationControl.iv.setClickable(enabled && visible); backToLocationControl.iv.setClickable(enabled && visible);
} }
@ -1177,6 +1178,10 @@ public class MapControlsLayer extends OsmandMapLayer {
return MapRouteInfoMenu.chooseRoutesVisible; return MapRouteInfoMenu.chooseRoutesVisible;
} }
private boolean isInWaypointsChoosingMode() {
return MapRouteInfoMenu.waypointsVisible;
}
public static View.OnLongClickListener getOnClickMagnifierListener(final OsmandMapTileView view) { public static View.OnLongClickListener getOnClickMagnifierListener(final OsmandMapTileView view) {
return new View.OnLongClickListener() { return new View.OnLongClickListener() {

View file

@ -401,6 +401,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe
mapMarkersLayer.isInPlanRouteMode() || mapMarkersLayer.isInPlanRouteMode() ||
mapRouteInfoMenu.isVisible() || mapRouteInfoMenu.isVisible() ||
MapRouteInfoMenu.chooseRoutesVisible || MapRouteInfoMenu.chooseRoutesVisible ||
MapRouteInfoMenu.waypointsVisible ||
contextMenu.isVisible() && contextMenuMenuFragment != null && !contextMenuMenuFragment.isRemoving() || contextMenu.isVisible() && contextMenuMenuFragment != null && !contextMenuMenuFragment.isRemoving() ||
contextMenu.isVisible() && contextMenuMenuFragment != null && contextMenuMenuFragment.isAdded() || contextMenu.isVisible() && contextMenuMenuFragment != null && contextMenuMenuFragment.isAdded() ||
multiSelectionMenu.isVisible() && multiMenuFragment != null && multiMenuFragment.isAdded() || multiSelectionMenu.isVisible() && multiMenuFragment != null && multiMenuFragment.isAdded() ||

View file

@ -937,7 +937,7 @@ public class MapInfoWidgetsFactory {
} }
} }
} }
if (map.isTopToolbarActive() || !map.getContextMenu().shouldShowTopControls() || MapRouteInfoMenu.chooseRoutesVisible) { if (map.isTopToolbarActive() || !map.getContextMenu().shouldShowTopControls() || MapRouteInfoMenu.chooseRoutesVisible || MapRouteInfoMenu.waypointsVisible) {
updateVisibility(false); updateVisibility(false);
} else if (!showNextTurn && updateWaypoint()) { } else if (!showNextTurn && updateWaypoint()) {
updateVisibility(true); updateVisibility(true);
@ -1003,7 +1003,8 @@ public class MapInfoWidgetsFactory {
all.setOnClickListener(new OnClickListener() { all.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
WaypointsFragment.showInstance(map); map.hideContextAndRouteInfoMenues();
WaypointsFragment.showInstance(map.getSupportFragmentManager());
} }
}); });
remove.setOnClickListener(new OnClickListener() { remove.setOnClickListener(new OnClickListener() {

View file

@ -831,7 +831,7 @@ public class RouteInfoWidgetsFactory {
} }
} }
} }
visible = loclanes != null && loclanes.length > 0 && !MapRouteInfoMenu.chooseRoutesVisible; visible = loclanes != null && loclanes.length > 0 && !MapRouteInfoMenu.chooseRoutesVisible && !MapRouteInfoMenu.waypointsVisible;
if (visible) { if (visible) {
if (!Arrays.equals(lanesDrawable.lanes, loclanes) || if (!Arrays.equals(lanesDrawable.lanes, loclanes) ||
(locimminent == 0) != lanesDrawable.imminent) { (locimminent == 0) != lanesDrawable.imminent) {