Add some code
This commit is contained in:
parent
0a7e6d0db5
commit
2501657467
3 changed files with 65 additions and 20 deletions
|
@ -818,8 +818,10 @@ public class OsmandAidlApi {
|
|||
if (m.getOnlyName().equals(markerPrev.getName()) && latLon.equals(new LatLon(m.getLatitude(), m.getLongitude()))) {
|
||||
PointDescription pd = new PointDescription(
|
||||
PointDescription.POINT_TYPE_MAP_MARKER, markerNew.getName() != null ? markerNew.getName() : "");
|
||||
MapMarker marker = new MapMarker(m.point, pd, m.colorIndex, m.selected,
|
||||
m.creationDate, m.visitedDate, m.displayPlace, m.index);
|
||||
MapMarker marker = new MapMarker(m.point, pd, m.colorIndex, m.selected, m.index);
|
||||
marker.creationDate = m.creationDate;
|
||||
marker.visitedDate = m.visitedDate;
|
||||
marker.displayPlace = m.displayPlace;
|
||||
markersHelper.moveMapMarker(marker, latLonNew);
|
||||
refreshMap();
|
||||
return true;
|
||||
|
|
|
@ -6,7 +6,6 @@ import android.support.annotation.Nullable;
|
|||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.LocationPoint;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.plus.MapMarkersHelper.MapMarker.DisplayPlace;
|
||||
import net.osmand.util.Algorithms;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -48,13 +47,11 @@ public class MapMarkersHelper {
|
|||
}
|
||||
|
||||
public MapMarker(LatLon point, PointDescription name, int colorIndex,
|
||||
boolean selected, long creationDate, long visitedDate,
|
||||
DisplayPlace displayPlace, int index) {
|
||||
boolean selected, int index) {
|
||||
this.point = point;
|
||||
this.pointDescription = name;
|
||||
this.colorIndex = colorIndex;
|
||||
this.selected = selected;
|
||||
this.creationDate = creationDate;
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
|
@ -190,7 +187,8 @@ public class MapMarkersHelper {
|
|||
}
|
||||
MapMarker mapMarker = new MapMarker(ips.get(i),
|
||||
PointDescription.deserializeFromString(desc.get(i), ips.get(i)), colorIndex,
|
||||
selections.get(i), creationDates.get(i), 0, DisplayPlace.WIDGET, i);
|
||||
selections.get(i), i);
|
||||
mapMarker.creationDate = creationDates.get(i);
|
||||
mapMarkers.add(mapMarker);
|
||||
}
|
||||
|
||||
|
@ -204,8 +202,9 @@ public class MapMarkersHelper {
|
|||
}
|
||||
MapMarker mapMarker = new MapMarker(ips.get(i),
|
||||
PointDescription.deserializeFromString(desc.get(i), ips.get(i)),
|
||||
colorIndex, false, creationDates.get(i), 0, DisplayPlace.WIDGET, i);
|
||||
colorIndex, false, i);
|
||||
mapMarker.history = true;
|
||||
mapMarker.creationDate = creationDates.get(i);
|
||||
mapMarkersHistory.add(mapMarker);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.osmand.data.LatLon;
|
|||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.plus.MapMarkersHelper.MapMarker;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.api.SQLiteAPI.SQLiteConnection;
|
||||
import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
|
||||
|
||||
|
@ -74,9 +75,10 @@ public class MapMarkersDbHelper {
|
|||
GROUPS_COL_TYPE + " TEXT, " +
|
||||
GROUPS_COL_ADDED + " long);";
|
||||
|
||||
private static final long TAIL_NEXT_VALUE = -1;
|
||||
private static final int TAIL_NEXT_VALUE = 0;
|
||||
private static final int HISTORY_NEXT_VALUE = -1;
|
||||
|
||||
private OsmandApplication context;
|
||||
private final OsmandApplication context;
|
||||
|
||||
public MapMarkersDbHelper(OsmandApplication context) {
|
||||
this.context = context;
|
||||
|
@ -104,14 +106,47 @@ public class MapMarkersDbHelper {
|
|||
private void onCreate(SQLiteConnection db) {
|
||||
db.execSQL(MARKERS_TABLE_CREATE);
|
||||
db.execSQL(GROUPS_TABLE_CREATE);
|
||||
//todo: load all existing markers
|
||||
saveExistingMarkersToDb();
|
||||
}
|
||||
|
||||
private void onUpgrade(SQLiteConnection db, int oldVersion, int newVersion) {
|
||||
|
||||
}
|
||||
|
||||
public boolean addMapMarker(MapMarker marker) {
|
||||
private void saveExistingMarkersToDb() {
|
||||
OsmandSettings settings = context.getSettings();
|
||||
|
||||
List<LatLon> ips = settings.getMapMarkersPoints();
|
||||
List<String> desc = settings.getMapMarkersPointDescriptions(ips.size());
|
||||
List<Integer> colors = settings.getMapMarkersColors(ips.size());
|
||||
int colorIndex = 0;
|
||||
for (int i = 0; i < ips.size(); i++) {
|
||||
if (colors.size() > i) {
|
||||
colorIndex = colors.get(i);
|
||||
}
|
||||
MapMarker marker = new MapMarker(ips.get(i), PointDescription.deserializeFromString(desc.get(i), ips.get(i)),
|
||||
colorIndex, false, i);
|
||||
marker.history = false;
|
||||
marker.displayPlace = WIDGET; //fixme
|
||||
addMapMarker(marker);
|
||||
}
|
||||
|
||||
ips = settings.getMapMarkersHistoryPoints();
|
||||
desc = settings.getMapMarkersHistoryPointDescriptions(ips.size());
|
||||
colors = settings.getMapMarkersHistoryColors(ips.size());
|
||||
for (int i = 0; i < ips.size(); i++) {
|
||||
if (colors.size() > i) {
|
||||
colorIndex = colors.get(i);
|
||||
}
|
||||
MapMarker marker = new MapMarker(ips.get(i), PointDescription.deserializeFromString(desc.get(i), ips.get(i)),
|
||||
colorIndex, false, i);
|
||||
marker.history = true;
|
||||
marker.displayPlace = WIDGET; //fixme
|
||||
addMapMarker(marker);
|
||||
}
|
||||
}
|
||||
|
||||
public void addMapMarker(MapMarker marker) {
|
||||
SQLiteConnection db = openConnection(false);
|
||||
if (db != null) {
|
||||
try {
|
||||
|
@ -119,14 +154,13 @@ public class MapMarkersDbHelper {
|
|||
} finally {
|
||||
db.close();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void insertLast(SQLiteConnection db, MapMarker marker) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
marker.id = Long.parseLong(String.valueOf(currentTime) + String.valueOf(new Random().nextInt(900) + 100));
|
||||
marker.creationDate = currentTime;
|
||||
double lat = marker.getLatitude();
|
||||
double lon = marker.getLongitude();
|
||||
String descr = marker.getName(context); //fixme
|
||||
|
@ -136,11 +170,14 @@ public class MapMarkersDbHelper {
|
|||
int colorIndex = marker.colorIndex;
|
||||
int displayPlace = marker.displayPlace == WIDGET ? 0 : 1;
|
||||
|
||||
db.execSQL("UPDATE " + MARKERS_TABLE_NAME + " SET " + MARKERS_COL_NEXT_KEY + " = ? " +
|
||||
"WHERE " + MARKERS_COL_NEXT_KEY + " = ?", new Object[]{marker.id, TAIL_NEXT_VALUE});
|
||||
if (!marker.history) {
|
||||
db.execSQL("UPDATE " + MARKERS_TABLE_NAME + " SET " + MARKERS_COL_NEXT_KEY + " = ? " +
|
||||
"WHERE " + MARKERS_COL_NEXT_KEY + " = ?", new Object[]{marker.id, TAIL_NEXT_VALUE});
|
||||
}
|
||||
|
||||
db.execSQL("INSERT INTO " + MARKERS_TABLE_NAME + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
|
||||
new Object[]{marker.id, lat, lon, descr, active, currentTime, visited, groupKey, colorIndex, displayPlace, TAIL_NEXT_VALUE});
|
||||
new Object[]{marker.id, lat, lon, descr, active, currentTime, visited, groupKey, colorIndex, displayPlace,
|
||||
marker.history ? HISTORY_NEXT_VALUE : TAIL_NEXT_VALUE});
|
||||
}
|
||||
|
||||
public List<MapMarker> getMapMarkers() {
|
||||
|
@ -181,7 +218,10 @@ public class MapMarkersDbHelper {
|
|||
|
||||
LatLon latLon = new LatLon(lat, lon);
|
||||
MapMarker marker = new MapMarker(latLon, PointDescription.deserializeFromString(desc, latLon),
|
||||
colorIndex, false, added, visited, displayPlace == 0 ? WIDGET : TOPBAR, 0);
|
||||
colorIndex, false, 0);
|
||||
marker.creationDate = added;
|
||||
marker.visitedDate = visited;
|
||||
marker.displayPlace = displayPlace == 0 ? WIDGET : TOPBAR;
|
||||
marker.history = !active;
|
||||
marker.nextKey = nextKey;
|
||||
marker.id = id;
|
||||
|
@ -239,11 +279,15 @@ public class MapMarkersDbHelper {
|
|||
SQLiteConnection db = openConnection(false);
|
||||
if (db != null) {
|
||||
try {
|
||||
marker.visitedDate = System.currentTimeMillis();
|
||||
|
||||
db.execSQL("UPDATE " + MARKERS_TABLE_NAME + " SET " + MARKERS_COL_NEXT_KEY + " = ? " +
|
||||
"WHERE " + MARKERS_COL_NEXT_KEY + " = ?", new Object[]{marker.nextKey, marker.id});
|
||||
|
||||
db.execSQL("UPDATE " + MARKERS_TABLE_NAME + " SET " + MARKERS_COL_ACTIVE + " = ? " +
|
||||
"WHERE " + MARKERS_COL_ID + " = ?", new Object[]{0, marker.id});
|
||||
db.execSQL("UPDATE " + MARKERS_TABLE_NAME + " SET " +
|
||||
MARKERS_COL_ACTIVE + " = ? " +
|
||||
MARKERS_COL_VISITED + " = ? " +
|
||||
"WHERE " + MARKERS_COL_ID + " = ?", new Object[]{0, marker.visitedDate, marker.id});
|
||||
} finally {
|
||||
db.close();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue