Fix finish point row visibility for follow track

This commit is contained in:
Vitaliy 2020-08-29 13:51:36 +03:00
parent 529b77c077
commit 8b17b7dc85
4 changed files with 45 additions and 17 deletions

View file

@ -328,7 +328,7 @@
</LinearLayout> </LinearLayout>
<View <View
android:id="@+id/viaLayoutDivider" android:id="@+id/toLayoutDivider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp" android:layout_height="1dp"
android:layout_marginStart="@dimen/route_info_start_divider_margin" android:layout_marginStart="@dimen/route_info_start_divider_margin"

View file

@ -35,8 +35,6 @@ import net.osmand.data.PointDescription;
import net.osmand.data.QuadRect; import net.osmand.data.QuadRect;
import net.osmand.data.RotatedTileBox; import net.osmand.data.RotatedTileBox;
import net.osmand.map.ITileSource; import net.osmand.map.ITileSource;
import net.osmand.plus.dialogs.SpeedCamerasBottomSheet;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.ItemClickListener; import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
import net.osmand.plus.ContextMenuItem; import net.osmand.plus.ContextMenuItem;
@ -46,7 +44,6 @@ import net.osmand.plus.MapMarkersHelper.MapMarker;
import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.OsmAndLocationProvider;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.R; import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper; import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.UiUtilities; import net.osmand.plus.UiUtilities;
@ -54,6 +51,7 @@ import net.osmand.plus.Version;
import net.osmand.plus.activities.actions.OsmAndDialogs; import net.osmand.plus.activities.actions.OsmAndDialogs;
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
import net.osmand.plus.dialogs.FavoriteDialogs; import net.osmand.plus.dialogs.FavoriteDialogs;
import net.osmand.plus.dialogs.SpeedCamerasBottomSheet;
import net.osmand.plus.download.IndexItem; import net.osmand.plus.download.IndexItem;
import net.osmand.plus.liveupdates.OsmLiveActivity; import net.osmand.plus.liveupdates.OsmLiveActivity;
import net.osmand.plus.mapcontextmenu.AdditionalActionsBottomSheetDialogFragment; import net.osmand.plus.mapcontextmenu.AdditionalActionsBottomSheetDialogFragment;
@ -66,11 +64,13 @@ import net.osmand.plus.routepreparationmenu.MapRouteInfoMenu;
import net.osmand.plus.routepreparationmenu.WaypointsFragment; import net.osmand.plus.routepreparationmenu.WaypointsFragment;
import net.osmand.plus.routing.RouteProvider.GPXRouteParamsBuilder; import net.osmand.plus.routing.RouteProvider.GPXRouteParamsBuilder;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.plus.settings.fragments.BaseSettingsFragment;
import net.osmand.plus.views.BaseMapLayer; import net.osmand.plus.views.BaseMapLayer;
import net.osmand.plus.views.layers.MapControlsLayer;
import net.osmand.plus.views.MapTileLayer; import net.osmand.plus.views.MapTileLayer;
import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.layers.MapControlsLayer;
import net.osmand.plus.wikipedia.WikipediaDialogFragment; import net.osmand.plus.wikipedia.WikipediaDialogFragment;
import net.osmand.plus.wikivoyage.WikivoyageWelcomeDialogFragment; import net.osmand.plus.wikivoyage.WikivoyageWelcomeDialogFragment;
import net.osmand.plus.wikivoyage.data.TravelDbHelper; import net.osmand.plus.wikivoyage.data.TravelDbHelper;
@ -106,7 +106,6 @@ import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_A
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_ADD_ID;
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_AVOID_ROAD; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_AVOID_ROAD;
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_DIRECTIONS_FROM_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_DIRECTIONS_FROM_ID;
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_EDIT_GPX_WP;
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MARKER_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MARKER_ID;
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MEASURE_DISTANCE; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MEASURE_DISTANCE;
import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MORE_ID; import static net.osmand.aidlapi.OsmAndCustomizationConstants.MAP_CONTEXT_MENU_MORE_ID;
@ -512,7 +511,9 @@ public class MapActivityActions implements DialogProvider {
TargetPointsHelper tg = mapActivity.getMyApplication().getTargetPointsHelper(); TargetPointsHelper tg = mapActivity.getMyApplication().getTargetPointsHelper();
tg.clearStartPoint(false); tg.clearStartPoint(false);
Location finishLoc = ps.get(ps.size() - 1); Location finishLoc = ps.get(ps.size() - 1);
tg.navigateToPoint(new LatLon(finishLoc.getLatitude(), finishLoc.getLongitude()), false, -1); PointDescription point = new PointDescription(PointDescription.POINT_TYPE_GPX, result.path, "");
point.setName(PointDescription.getSearchAddressStr(mapActivity));
tg.navigateToPoint(new LatLon(finishLoc.getLatitude(), finishLoc.getLongitude()), false, -1, point);
} }
} }
} }

View file

@ -128,7 +128,7 @@ import java.util.Stack;
public class MapRouteInfoMenu implements IRouteInformationListener, CardListener, FavoritesListener { public class MapRouteInfoMenu implements IRouteInformationListener, CardListener, FavoritesListener {
private static final Log LOG = PlatformUtil.getLog(MapRouteInfoMenu.class); private static final Log LOG = PlatformUtil.getLog(MapRouteInfoMenu.class);
private static final int BUTTON_ANIMATION_DELAY = 2000; private static final int BUTTON_ANIMATION_DELAY = 2000;
public static final int DEFAULT_MENU_STATE = 0; public static final int DEFAULT_MENU_STATE = 0;
private static final int MAX_PEDESTRIAN_ROUTE_DURATION = 30 * 60; private static final int MAX_PEDESTRIAN_ROUTE_DURATION = 30 * 60;
@ -452,7 +452,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
fragment.updateInfo(); fragment.updateInfo();
if (!routeCalculationInProgress) { if (!routeCalculationInProgress) {
fragment.hideRouteCalculationProgressBar(); fragment.hideRouteCalculationProgressBar();
if(!app.getSettings().OPEN_ONLY_HEADER_STATE_ROUTE_CALCULATED. if (!app.getSettings().OPEN_ONLY_HEADER_STATE_ROUTE_CALCULATED.
getModeValue(app.getRoutingHelper().getAppMode())) { getModeValue(app.getRoutingHelper().getAppMode())) {
fragment.openMenuHalfScreen(); fragment.openMenuHalfScreen();
} else { } else {
@ -1544,17 +1544,14 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
} }
OsmandApplication app = mapActivity.getMyApplication(); OsmandApplication app = mapActivity.getMyApplication();
View viaLayout = mainView.findViewById(R.id.ViaLayout); View viaLayout = mainView.findViewById(R.id.ViaLayout);
View viaLayoutDivider = mainView.findViewById(R.id.viaLayoutDivider);
String viaDescription = generateViaDescription(); String viaDescription = generateViaDescription();
GPXRouteParamsBuilder routeParams = app.getRoutingHelper().getCurrentGPXRoute(); GPXRouteParamsBuilder routeParams = app.getRoutingHelper().getCurrentGPXRoute();
if (routeParams == null && Algorithms.isEmpty(viaDescription)) { if (routeParams == null && Algorithms.isEmpty(viaDescription)) {
AndroidUiHelper.updateVisibility(viaLayout, false); AndroidUiHelper.updateVisibility(viaLayout, false);
AndroidUiHelper.updateVisibility(viaLayoutDivider, false);
return; return;
} else { } else {
AndroidUiHelper.updateVisibility(viaLayout, true); AndroidUiHelper.updateVisibility(viaLayout, true);
AndroidUiHelper.updateVisibility(viaLayoutDivider, true);
} }
if (routeParams != null) { if (routeParams != null) {
@ -1578,6 +1575,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
setupViaText(mainView); setupViaText(mainView);
FrameLayout viaButton = (FrameLayout) mainView.findViewById(R.id.via_button); FrameLayout viaButton = (FrameLayout) mainView.findViewById(R.id.via_button);
AndroidUiHelper.updateVisibility(viaButton, isFinishPointFromTrack());
viaButton.setOnClickListener(new OnClickListener() { viaButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -1663,8 +1661,20 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
} }
OsmandApplication app = mapActivity.getMyApplication(); OsmandApplication app = mapActivity.getMyApplication();
setupToText(mainView); View toLayout = mainView.findViewById(R.id.ToLayout);
final View toLayout = mainView.findViewById(R.id.ToLayout); View viaLayout = mainView.findViewById(R.id.ViaLayout);
View toLayoutDivider = mainView.findViewById(R.id.toLayoutDivider);
if (isFinishPointFromTrack()) {
AndroidUiHelper.updateVisibility(toLayout, false);
AndroidUiHelper.updateVisibility(toLayoutDivider, false);
return;
} else {
boolean dividerVisible = viaLayout.getVisibility() == View.VISIBLE;
AndroidUiHelper.updateVisibility(toLayout, true);
AndroidUiHelper.updateVisibility(toLayoutDivider, dividerVisible);
}
toLayout.setOnClickListener(new OnClickListener() { toLayout.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -1674,6 +1684,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
} }
} }
}); });
setupToText(mainView);
FrameLayout toButton = (FrameLayout) mainView.findViewById(R.id.to_button); FrameLayout toButton = (FrameLayout) mainView.findViewById(R.id.to_button);
if (app.getRoutingHelper().isPublicTransportMode()) { if (app.getRoutingHelper().isPublicTransportMode()) {
@ -1727,6 +1738,22 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
toIcon.setImageDrawable(getIconOrig(R.drawable.list_destination)); toIcon.setImageDrawable(getIconOrig(R.drawable.list_destination));
} }
private boolean isFinishPointFromTrack() {
MapActivity mapActivity = getMapActivity();
if (mapActivity != null) {
OsmandApplication app = mapActivity.getMyApplication();
GPXRouteParamsBuilder routeParams = app.getRoutingHelper().getCurrentGPXRoute();
if (routeParams != null) {
TargetPoint target = app.getTargetPointsHelper().getPointToNavigate();
if (target != null) {
PointDescription pointDescription = target.getOriginalPointDescription();
return pointDescription != null && routeParams.getFile().path.equals(pointDescription.getTypeName());
}
}
}
return false;
}
private void updateStartPointView() { private void updateStartPointView() {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
final View mainView = getMainView(); final View mainView = getMainView();
@ -1866,7 +1893,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
addButtonCollapsing = false; addButtonCollapsing = false;
} }
private void setupButtonIcon(ImageView imageView, @DrawableRes int iconId){ private void setupButtonIcon(ImageView imageView, @DrawableRes int iconId) {
MapActivity mapActivity = getMapActivity(); MapActivity mapActivity = getMapActivity();
if (mapActivity != null) { if (mapActivity != null) {
UiUtilities uiUtilities = mapActivity.getMyApplication().getUIUtilities(); UiUtilities uiUtilities = mapActivity.getMyApplication().getUIUtilities();
@ -1880,7 +1907,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener
} }
} }
private void setupButtonBackground(View button, View buttonContainer){ private void setupButtonBackground(View button, View buttonContainer) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
AndroidUtils.setBackground(app, button, nightMode, R.drawable.btn_rounded_light, R.drawable.btn_rounded_dark); AndroidUtils.setBackground(app, button, nightMode, R.drawable.btn_rounded_light, R.drawable.btn_rounded_dark);
AndroidUtils.setBackground(app, buttonContainer, nightMode, R.drawable.ripple_rounded_light, R.drawable.ripple_rounded_dark); AndroidUtils.setBackground(app, buttonContainer, nightMode, R.drawable.ripple_rounded_light, R.drawable.ripple_rounded_dark);

View file

@ -462,7 +462,7 @@ public class MapRouteInfoMenuFragment extends ContextMenuFragment {
R.color.card_and_list_background_light, R.color.card_and_list_background_dark); R.color.card_and_list_background_light, R.color.card_and_list_background_dark);
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerFromDropDown), isNightMode(), AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerFromDropDown), isNightMode(),
R.color.divider_color_light, R.color.divider_color_dark); R.color.divider_color_light, R.color.divider_color_dark);
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.viaLayoutDivider), isNightMode(), AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.toLayoutDivider), isNightMode(),
R.color.divider_color_light, R.color.divider_color_dark); R.color.divider_color_light, R.color.divider_color_dark);
AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerButtons), isNightMode(), AndroidUtils.setBackground(ctx, mainView.findViewById(R.id.dividerButtons), isNightMode(),
R.color.divider_color_light, R.color.divider_color_dark); R.color.divider_color_light, R.color.divider_color_dark);