Fix dismiss and back navigation

This commit is contained in:
PavelRatushny 2017-08-04 18:13:27 +03:00
parent 26e31fb9bf
commit f1961eb031
5 changed files with 40 additions and 9 deletions

View file

@ -36,6 +36,7 @@ import java.util.List;
public class TrackActivity extends TabActivity { public class TrackActivity extends TabActivity {
public static final String TRACK_FILE_NAME = "TRACK_FILE_NAME"; public static final String TRACK_FILE_NAME = "TRACK_FILE_NAME";
public static final String OPEN_POINTS_TAB = "OPEN_POINTS_TAB";
public static final String CURRENT_RECORDING = "CURRENT_RECORDING"; public static final String CURRENT_RECORDING = "CURRENT_RECORDING";
protected List<WeakReference<Fragment>> fragList = new ArrayList<>(); protected List<WeakReference<Fragment>> fragList = new ArrayList<>();
protected PagerSlidingTabStrip slidingTabLayout; protected PagerSlidingTabStrip slidingTabLayout;
@ -47,6 +48,7 @@ public class TrackActivity extends TabActivity {
private List<GpxDisplayGroup> displayGroups; private List<GpxDisplayGroup> displayGroups;
private List<GpxDisplayGroup> originalGroups = new ArrayList<>(); private List<GpxDisplayGroup> originalGroups = new ArrayList<>();
private boolean stopped = false; private boolean stopped = false;
public boolean openPointsTab = false;
public PagerSlidingTabStrip getSlidingTabLayout() { public PagerSlidingTabStrip getSlidingTabLayout() {
return slidingTabLayout; return slidingTabLayout;
@ -75,6 +77,9 @@ public class TrackActivity extends TabActivity {
} }
actionBar.setElevation(0); actionBar.setElevation(0);
} }
if (intent.hasExtra(OPEN_POINTS_TAB)) {
openPointsTab = true;
}
setContentView(R.layout.tab_content); setContentView(R.layout.tab_content);
} }
@ -188,6 +193,9 @@ public class TrackActivity extends TabActivity {
if (isHavingWayPoints() || isHavingRoutePoints()) { if (isHavingWayPoints() || isHavingRoutePoints()) {
((OsmandFragmentPagerAdapter) mViewPager.getAdapter()).addTab( ((OsmandFragmentPagerAdapter) mViewPager.getAdapter()).addTab(
getTabIndicator(R.string.points, TrackPointFragment.class)); getTabIndicator(R.string.points, TrackPointFragment.class));
if (openPointsTab) {
mViewPager.setCurrentItem(1, false);
}
} else { } else {
slidingTabLayout.setVisibility(View.GONE); slidingTabLayout.setVisibility(View.GONE);
getSupportActionBar().setElevation(AndroidUtils.dpToPx(getMyApplication(), 4f)); getSupportActionBar().setElevation(AndroidUtils.dpToPx(getMyApplication(), 4f));

View file

@ -13,6 +13,7 @@ public class WptPtEditor extends PointEditor {
private GPXFile gpxFile; private GPXFile gpxFile;
private WptPt wpt; private WptPt wpt;
private boolean gpxSelected; private boolean gpxSelected;
private boolean newGpxPointProcessing;
public static final String TAG = "WptPtEditorFragment"; public static final String TAG = "WptPtEditorFragment";
@ -20,8 +21,16 @@ public class WptPtEditor extends PointEditor {
super(mapActivity); super(mapActivity);
} }
public void setNewGpxPointProcessing(boolean newGpxPointProcessing) {
this.newGpxPointProcessing = newGpxPointProcessing;
}
public boolean isNewGpxPointProcessing() {
return newGpxPointProcessing;
}
public interface OnDismissListener { public interface OnDismissListener {
void openTrackActivity(); void onDismiss();
} }
public void setOnDismissListener(OnDismissListener listener) { public void setOnDismissListener(OnDismissListener listener) {

View file

@ -14,6 +14,7 @@ import net.osmand.plus.FavouritesDbHelper.FavoriteGroup;
import net.osmand.plus.GPXUtilities; import net.osmand.plus.GPXUtilities;
import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.GPXUtilities.WptPt; import net.osmand.plus.GPXUtilities.WptPt;
import net.osmand.plus.mapcontextmenu.editors.WptPtEditor.OnDismissListener;
import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.GpxSelectionHelper;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R; import net.osmand.plus.R;
@ -75,12 +76,13 @@ public class WptPtEditorFragment extends PointEditorFragment {
} }
@Override @Override
public void dismiss() { public void dismiss(boolean includingMenu) {
super.dismiss(); super.dismiss(includingMenu);
WptPtEditor.OnDismissListener listener = editor.getOnDismissListener(); OnDismissListener listener = editor.getOnDismissListener();
if (listener != null) { if (listener != null) {
listener.openTrackActivity(); listener.onDismiss();
} }
editor.setNewGpxPointProcessing(false);
editor.setOnDismissListener(null); editor.setOnDismissListener(null);
} }
@ -91,12 +93,16 @@ public class WptPtEditorFragment extends PointEditorFragment {
@Override @Override
public String getToolbarTitle() { public String getToolbarTitle() {
if (editor.isNewGpxPointProcessing()) {
return getMapActivity().getResources().getString(R.string.save_gpx_waypoint);
} else {
if (editor.isNew()) { if (editor.isNew()) {
return getMapActivity().getResources().getString(R.string.context_menu_item_add_waypoint); return getMapActivity().getResources().getString(R.string.context_menu_item_add_waypoint);
} else { } else {
return getMapActivity().getResources().getString(R.string.shared_string_edit); return getMapActivity().getResources().getString(R.string.shared_string_edit);
} }
} }
}
public static void showInstance(final MapActivity mapActivity) { public static void showInstance(final MapActivity mapActivity) {
WptPtEditor editor = mapActivity.getContextMenu().getWptPtPointEditor(); WptPtEditor editor = mapActivity.getContextMenu().getWptPtPointEditor();

View file

@ -178,6 +178,10 @@ public class TrackPointFragment extends OsmandExpandableListFragment {
} }
private void addPoint(PointDescription pointDescription) { private void addPoint(PointDescription pointDescription) {
Intent currentIntent = getTrackActivity().getIntent();
if (currentIntent != null) {
currentIntent.putExtra(TrackActivity.OPEN_POINTS_TAB, true);
}
final OsmandSettings settings = app.getSettings(); final OsmandSettings settings = app.getSettings();
GPXFile gpx = getGpx(); GPXFile gpx = getGpx();
LatLon location = settings.getLastKnownMapLocation(); LatLon location = settings.getLastKnownMapLocation();
@ -339,6 +343,7 @@ public class TrackPointFragment extends OsmandExpandableListFragment {
@Override @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear(); menu.clear();
getTrackActivity().getClearToolbar(false);
MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.search_poi_filter, R.drawable.ic_action_search_dark, MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.search_poi_filter, R.drawable.ic_action_search_dark,
R.drawable.ic_action_search_dark, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); R.drawable.ic_action_search_dark, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
searchView = new SearchView(getActivity()); searchView = new SearchView(getActivity());

View file

@ -52,10 +52,12 @@ public class AddGpxPointBottomSheetHelper implements OnDismissListener {
if (pointDescription.isWpt()) { if (pointDescription.isWpt()) {
WptPtEditor editor = activity.getContextMenu().getWptPtPointEditor(); WptPtEditor editor = activity.getContextMenu().getWptPtPointEditor();
editor.setOnDismissListener(AddGpxPointBottomSheetHelper.this); editor.setOnDismissListener(AddGpxPointBottomSheetHelper.this);
editor.setNewGpxPointProcessing(true);
editor.add(gpx, latLon, titleText); editor.add(gpx, latLon, titleText);
} else if (pointDescription.isRte()) { } else if (pointDescription.isRte()) {
RtePtEditor editor = activity.getContextMenu().getRtePtPointEditor(); RtePtEditor editor = activity.getContextMenu().getRtePtPointEditor();
editor.setOnDismissListener(AddGpxPointBottomSheetHelper.this); editor.setOnDismissListener(AddGpxPointBottomSheetHelper.this);
editor.setNewGpxPointProcessing(true);
editor.add(gpx, latLon, titleText); editor.add(gpx, latLon, titleText);
} }
} }
@ -126,9 +128,10 @@ public class AddGpxPointBottomSheetHelper implements OnDismissListener {
} }
@Override @Override
public void openTrackActivity() { public void onDismiss() {
Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization().getTrackActivity()); Intent newIntent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization().getTrackActivity());
newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, newGpxPoint.getGpx().path); newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, newGpxPoint.getGpx().path);
newIntent.putExtra(TrackActivity.OPEN_POINTS_TAB, true);
newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); newIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mapActivity.startActivity(newIntent); mapActivity.startActivity(newIntent);
} }