Load markers from selected gpx files on start up
This commit is contained in:
parent
5b3e6ac21d
commit
e4efd112f0
2 changed files with 40 additions and 15 deletions
|
@ -519,6 +519,7 @@ public class AppInitializer implements IProgress {
|
||||||
indexRegionsBoundaries(warnings);
|
indexRegionsBoundaries(warnings);
|
||||||
notifyEvent(InitEvents.INDEX_REGION_BOUNDARIES);
|
notifyEvent(InitEvents.INDEX_REGION_BOUNDARIES);
|
||||||
app.selectedGpxHelper.loadGPXTracks(this);
|
app.selectedGpxHelper.loadGPXTracks(this);
|
||||||
|
app.mapMarkersHelper.loadMapMarkersFromSelectedGpx();
|
||||||
notifyEvent(InitEvents.LOAD_GPX_TRACKS);
|
notifyEvent(InitEvents.LOAD_GPX_TRACKS);
|
||||||
saveGPXTracks();
|
saveGPXTracks();
|
||||||
notifyEvent(InitEvents.SAVE_GPX_TRACKS);
|
notifyEvent(InitEvents.SAVE_GPX_TRACKS);
|
||||||
|
|
|
@ -5,6 +5,7 @@ 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 net.osmand.AndroidUtils;
|
||||||
import net.osmand.IndexConstants;
|
import net.osmand.IndexConstants;
|
||||||
import net.osmand.data.FavouritePoint;
|
import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
|
@ -371,6 +372,10 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void syncGroup(MarkersSyncGroup group) {
|
public void syncGroup(MarkersSyncGroup group) {
|
||||||
|
syncGroup(group, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void syncGroup(MarkersSyncGroup group, boolean enabled) {
|
||||||
if (!isGroupSynced(group.getId())) {
|
if (!isGroupSynced(group.getId())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -391,7 +396,7 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (FavouritePoint fp : favGroup.points) {
|
for (FavouritePoint fp : favGroup.points) {
|
||||||
addNewMarkerIfNeeded(group, dbMarkers, new LatLon(fp.getLatitude(), fp.getLongitude()), fp.getName());
|
addNewMarkerIfNeeded(group, dbMarkers, new LatLon(fp.getLatitude(), fp.getLongitude()), fp.getName(), enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeOldMarkersIfNeeded(dbMarkers);
|
removeOldMarkersIfNeeded(dbMarkers);
|
||||||
|
@ -414,14 +419,14 @@ public class MapMarkersHelper {
|
||||||
int defColor = ContextCompat.getColor(ctx, R.color.marker_red);
|
int defColor = ContextCompat.getColor(ctx, R.color.marker_red);
|
||||||
for (WptPt pt : gpxPoints) {
|
for (WptPt pt : gpxPoints) {
|
||||||
group.setColor(pt.getColor(defColor));
|
group.setColor(pt.getColor(defColor));
|
||||||
addNewMarkerIfNeeded(group, dbMarkers, new LatLon(pt.lat, pt.lon), pt.name);
|
addNewMarkerIfNeeded(group, dbMarkers, new LatLon(pt.lat, pt.lon), pt.name, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
removeOldMarkersIfNeeded(dbMarkers);
|
removeOldMarkersIfNeeded(dbMarkers);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addNewMarkerIfNeeded(MarkersSyncGroup group, List<MapMarker> markers, LatLon latLon, String name) {
|
private void addNewMarkerIfNeeded(MarkersSyncGroup group, List<MapMarker> markers, LatLon latLon, String name, boolean enabled) {
|
||||||
boolean exists = false;
|
boolean exists = false;
|
||||||
|
|
||||||
for (MapMarker marker : markers) {
|
for (MapMarker marker : markers) {
|
||||||
|
@ -443,7 +448,7 @@ public class MapMarkersHelper {
|
||||||
|
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
addMarkers(Collections.singletonList(latLon),
|
addMarkers(Collections.singletonList(latLon),
|
||||||
Collections.singletonList(new PointDescription(POINT_TYPE_MAP_MARKER, name)), group);
|
Collections.singletonList(new PointDescription(POINT_TYPE_MAP_MARKER, name)), group, enabled);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,7 +490,7 @@ public class MapMarkersHelper {
|
||||||
mapMarkers.addAll(markers);
|
mapMarkers.addAll(markers);
|
||||||
reorderActiveMarkersIfNeeded();
|
reorderActiveMarkersIfNeeded();
|
||||||
for (MapMarker marker : markers) {
|
for (MapMarker marker : markers) {
|
||||||
addMarkerToGroup(marker);
|
addMarkerToGroup(marker, true);
|
||||||
}
|
}
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
@ -501,7 +506,7 @@ public class MapMarkersHelper {
|
||||||
mapMarkers.add(marker);
|
mapMarkers.add(marker);
|
||||||
reorderActiveMarkersIfNeeded();
|
reorderActiveMarkersIfNeeded();
|
||||||
}
|
}
|
||||||
addMarkerToGroup(marker);
|
addMarkerToGroup(marker, true);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -748,14 +753,14 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMapMarker(LatLon point, PointDescription historyName) {
|
public void addMapMarker(LatLon point, PointDescription historyName) {
|
||||||
addMarkers(Collections.singletonList(point), Collections.singletonList(historyName), null);
|
addMarkers(Collections.singletonList(point), Collections.singletonList(historyName), null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addMapMarkers(List<LatLon> points, List<PointDescription> historyNames, @Nullable MarkersSyncGroup group) {
|
public void addMapMarkers(List<LatLon> points, List<PointDescription> historyNames, @Nullable MarkersSyncGroup group) {
|
||||||
addMarkers(points, historyNames, group);
|
addMarkers(points, historyNames, group, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMarkers(List<LatLon> points, List<PointDescription> historyNames, @Nullable MarkersSyncGroup group) {
|
private void addMarkers(List<LatLon> points, List<PointDescription> historyNames, @Nullable MarkersSyncGroup group, boolean enabled) {
|
||||||
if (points.size() > 0) {
|
if (points.size() > 0) {
|
||||||
int colorIndex = -1;
|
int colorIndex = -1;
|
||||||
for (int i = 0; i < points.size(); i++) {
|
for (int i = 0; i < points.size(); i++) {
|
||||||
|
@ -792,8 +797,10 @@ public class MapMarkersHelper {
|
||||||
marker.history = false;
|
marker.history = false;
|
||||||
marker.nextKey = MapMarkersDbHelper.TAIL_NEXT_VALUE;
|
marker.nextKey = MapMarkersDbHelper.TAIL_NEXT_VALUE;
|
||||||
markersDbHelper.addMarker(marker);
|
markersDbHelper.addMarker(marker);
|
||||||
|
if (enabled) {
|
||||||
mapMarkers.add(0, marker);
|
mapMarkers.add(0, marker);
|
||||||
addMarkerToGroup(marker);
|
}
|
||||||
|
addMarkerToGroup(marker, enabled);
|
||||||
reorderActiveMarkersIfNeeded();
|
reorderActiveMarkersIfNeeded();
|
||||||
lookupAddress(marker);
|
lookupAddress(marker);
|
||||||
}
|
}
|
||||||
|
@ -990,7 +997,7 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addMarkerToGroup(MapMarker marker) {
|
private void addMarkerToGroup(MapMarker marker, boolean enabled) {
|
||||||
if (marker != null) {
|
if (marker != null) {
|
||||||
MapMarkersGroup mapMarkersGroup = getMapMarkerGroupByName(marker.groupName);
|
MapMarkersGroup mapMarkersGroup = getMapMarkerGroupByName(marker.groupName);
|
||||||
if (mapMarkersGroup != null) {
|
if (mapMarkersGroup != null) {
|
||||||
|
@ -1000,9 +1007,13 @@ public class MapMarkersHelper {
|
||||||
sortMarkers(mapMarkersGroup.getMarkers(), false, OsmandSettings.MapMarkersOrderByMode.DATE_ADDED_DESC);
|
sortMarkers(mapMarkersGroup.getMarkers(), false, OsmandSettings.MapMarkersOrderByMode.DATE_ADDED_DESC);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
MapMarkersGroup group = createMapMarkerGroup(marker);
|
mapMarkersGroup = createMapMarkerGroup(marker);
|
||||||
group.getMarkers().add(marker);
|
mapMarkersGroup.getMarkers().add(marker);
|
||||||
createHeaderAndHistoryButtonInGroup(group);
|
createHeaderAndHistoryButtonInGroup(mapMarkersGroup);
|
||||||
|
}
|
||||||
|
if (!enabled) {
|
||||||
|
mapMarkersGroup.setDisabled(true);
|
||||||
|
updateGroupDisabled(mapMarkersGroup, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1103,6 +1114,19 @@ public class MapMarkersHelper {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadMapMarkersFromSelectedGpx() {
|
||||||
|
List<SelectedGpxFile> selectedGpxFiles = ctx.getSelectedGpxHelper().getSelectedGPXFiles();
|
||||||
|
for (SelectedGpxFile selectedGpxFile : selectedGpxFiles) {
|
||||||
|
GPXFile gpx = selectedGpxFile.getGpxFile();
|
||||||
|
if (gpx.getPoints().size() > 0) {
|
||||||
|
File gpxFile = new File(gpx.path);
|
||||||
|
final MarkersSyncGroup syncGroup = new MarkersSyncGroup(gpxFile.getAbsolutePath(), AndroidUtils.trimExtension(gpxFile.getName()), MarkersSyncGroup.GPX_TYPE);
|
||||||
|
addMarkersSyncGroup(syncGroup);
|
||||||
|
syncGroup(syncGroup, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void sortGroups() {
|
private void sortGroups() {
|
||||||
if (mapMarkersGroups.size() > 0) {
|
if (mapMarkersGroups.size() > 0) {
|
||||||
MapMarkersGroup noGroup = null;
|
MapMarkersGroup noGroup = null;
|
||||||
|
|
Loading…
Reference in a new issue