Fix updating UI after saving map markers
This commit is contained in:
parent
f89c305d38
commit
fcdc4e5d5c
2 changed files with 37 additions and 18 deletions
|
@ -79,6 +79,7 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
private static final String LONGITUDE_LABEL = "longitude";
|
private static final String LONGITUDE_LABEL = "longitude";
|
||||||
private static final String NAME_LABEL = "name";
|
private static final String NAME_LABEL = "name";
|
||||||
|
|
||||||
|
private OnMapMarkersSavedListener listener;
|
||||||
private List<MapMarker> mapMarkers = new ArrayList<>();
|
private List<MapMarker> mapMarkers = new ArrayList<>();
|
||||||
private CoordinateInputAdapter adapter;
|
private CoordinateInputAdapter adapter;
|
||||||
private boolean lightTheme;
|
private boolean lightTheme;
|
||||||
|
@ -94,6 +95,10 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
private boolean compassUpdateAllowed = true;
|
private boolean compassUpdateAllowed = true;
|
||||||
private MapMarkersHelper mapMarkersHelper;
|
private MapMarkersHelper mapMarkersHelper;
|
||||||
|
|
||||||
|
public void setListener(OnMapMarkersSavedListener listener) {
|
||||||
|
this.listener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
@ -301,6 +306,9 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
|
|
||||||
private void saveMarkers() {
|
private void saveMarkers() {
|
||||||
mapMarkersHelper.addMarkers(mapMarkers);
|
mapMarkersHelper.addMarkers(mapMarkers);
|
||||||
|
if (listener != null) {
|
||||||
|
listener.onMapMarkersSaved();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerTextFieldBoxes() {
|
private void registerTextFieldBoxes() {
|
||||||
|
@ -583,20 +591,6 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
return (OsmandApplication) getActivity().getApplication();
|
return (OsmandApplication) getActivity().getApplication();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean showInstance(@NonNull MapActivity mapActivity) {
|
|
||||||
try {
|
|
||||||
if (mapActivity.isActivityDestroyed()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
CoordinateInputDialogFragment fragment = new CoordinateInputDialogFragment();
|
|
||||||
fragment.setRetainInstance(true);
|
|
||||||
fragment.show(mapActivity.getSupportFragmentManager(), TAG);
|
|
||||||
return true;
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateLocation(Location location) {
|
public void updateLocation(Location location) {
|
||||||
boolean newLocation = this.location == null && location != null;
|
boolean newLocation = this.location == null && location != null;
|
||||||
|
@ -693,4 +687,8 @@ public class CoordinateInputDialogFragment extends DialogFragment implements Osm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface OnMapMarkersSavedListener {
|
||||||
|
void onMapMarkersSaved();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ import net.osmand.plus.OsmandSettings.MapMarkersOrderByMode;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.activities.TrackActivity;
|
import net.osmand.plus.activities.TrackActivity;
|
||||||
|
import net.osmand.plus.mapmarkers.CoordinateInputDialogFragment.OnMapMarkersSavedListener;
|
||||||
import net.osmand.plus.mapmarkers.OptionsBottomSheetDialogFragment.MarkerOptionsFragmentListener;
|
import net.osmand.plus.mapmarkers.OptionsBottomSheetDialogFragment.MarkerOptionsFragmentListener;
|
||||||
import net.osmand.plus.mapmarkers.OrderByBottomSheetDialogFragment.OrderByFragmentListener;
|
import net.osmand.plus.mapmarkers.OrderByBottomSheetDialogFragment.OrderByFragmentListener;
|
||||||
import net.osmand.plus.mapmarkers.SaveAsTrackBottomSheetDialogFragment.MarkerSaveAsTrackFragmentListener;
|
import net.osmand.plus.mapmarkers.SaveAsTrackBottomSheetDialogFragment.MarkerSaveAsTrackFragmentListener;
|
||||||
|
@ -110,6 +111,10 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
|
||||||
if (saveAsTrackFragment != null) {
|
if (saveAsTrackFragment != null) {
|
||||||
((SaveAsTrackBottomSheetDialogFragment) saveAsTrackFragment).setListener(createSaveAsTrackFragmentListener());
|
((SaveAsTrackBottomSheetDialogFragment) saveAsTrackFragment).setListener(createSaveAsTrackFragmentListener());
|
||||||
}
|
}
|
||||||
|
Fragment coordinateInputDialog = fragmentManager.findFragmentByTag(CoordinateInputDialogFragment.TAG);
|
||||||
|
if (coordinateInputDialog != null) {
|
||||||
|
((CoordinateInputDialogFragment) coordinateInputDialog).setListener(createOnMapMarkersSavedListener());
|
||||||
|
}
|
||||||
|
|
||||||
View mainView = inflater.inflate(R.layout.fragment_map_markers_dialog, container);
|
View mainView = inflater.inflate(R.layout.fragment_map_markers_dialog, container);
|
||||||
|
|
||||||
|
@ -202,10 +207,25 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
|
||||||
return mainView;
|
return mainView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateAdapters() {
|
||||||
|
activeFragment.updateAdapter();
|
||||||
|
groupsFragment.updateAdapter();
|
||||||
|
historyFragment.updateAdapter();
|
||||||
|
}
|
||||||
|
|
||||||
private OsmandApplication getMyApplication() {
|
private OsmandApplication getMyApplication() {
|
||||||
return (OsmandApplication) getActivity().getApplication();
|
return (OsmandApplication) getActivity().getApplication();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private OnMapMarkersSavedListener createOnMapMarkersSavedListener() {
|
||||||
|
return new OnMapMarkersSavedListener() {
|
||||||
|
@Override
|
||||||
|
public void onMapMarkersSaved() {
|
||||||
|
updateAdapters();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private MarkerOptionsFragmentListener createOptionsFragmentListener() {
|
private MarkerOptionsFragmentListener createOptionsFragmentListener() {
|
||||||
return new MarkerOptionsFragmentListener() {
|
return new MarkerOptionsFragmentListener() {
|
||||||
|
|
||||||
|
@ -232,7 +252,10 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
|
||||||
@Override
|
@Override
|
||||||
public void coordinateInputOnClick() {
|
public void coordinateInputOnClick() {
|
||||||
if (mapActivity != null) {
|
if (mapActivity != null) {
|
||||||
CoordinateInputDialogFragment.showInstance(mapActivity);
|
CoordinateInputDialogFragment fragment = new CoordinateInputDialogFragment();
|
||||||
|
fragment.setRetainInstance(true);
|
||||||
|
fragment.setListener(createOnMapMarkersSavedListener());
|
||||||
|
fragment.show(mapActivity.getSupportFragmentManager(), CoordinateInputDialogFragment.TAG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,9 +325,7 @@ public class MapMarkersDialogFragment extends android.support.v4.app.DialogFragm
|
||||||
public void onMapMarkersModeChanged(boolean showDirectionEnabled) {
|
public void onMapMarkersModeChanged(boolean showDirectionEnabled) {
|
||||||
mapActivity.getMapLayers().getMapWidgetRegistry().updateMapMarkersMode(mapActivity);
|
mapActivity.getMapLayers().getMapWidgetRegistry().updateMapMarkersMode(mapActivity);
|
||||||
activeFragment.setShowDirectionEnabled(showDirectionEnabled);
|
activeFragment.setShowDirectionEnabled(showDirectionEnabled);
|
||||||
activeFragment.updateAdapter();
|
updateAdapters();
|
||||||
groupsFragment.updateAdapter();
|
|
||||||
historyFragment.updateAdapter();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue