Feature request: retain the original color coding when importing GPX #6386 - in progress

This commit is contained in:
madwasp79 2019-01-21 17:59:09 +02:00
parent dd58cac831
commit 2d9fbc9ad6
3 changed files with 33 additions and 3 deletions

View file

@ -646,6 +646,23 @@ public class Algorithms {
}
}
public static String colorNameToString(String colorName) {
Map<String, String> colorTable = new HashMap<>();
colorTable.put("black", "#000000");
colorTable.put("white", "#FFFFFF");
colorTable.put("red", "#ff0000");
colorTable.put("orange", "#ff8800");
colorTable.put("green", "#23b03b");
colorTable.put("blue", "#2f7af5");
for (String key : colorTable.keySet()) {
if(colorName.toLowerCase().contains(key)) {
return colorTable.get(key);
}
}
return "#FF0000";
}
private static String format(int i, String hexString) {
while (hexString.length() < i) {
hexString = "0" + hexString;

View file

@ -99,6 +99,10 @@ public class GPXUtilities {
getExtensionsToWrite().put("color", Algorithms.colorToString(color));
}
public void setColor(String colorName) {
getExtensionsToWrite().put("color", Algorithms.colorNameToString(colorName));
}
public void removeColor() {
getExtensionsToWrite().remove("color");
}
@ -1510,18 +1514,26 @@ public class GPXUtilities {
if (tok == XmlPullParser.START_TAG) {
Object parse = parserState.peek();
String tag = parser.getName();
if (extensionReadMode && parse instanceof GPXExtensions) {
if (extensionReadMode && parse != null) {
String value = readText(parser, tag);
if (value != null) {
((GPXExtensions) parse).getExtensionsToWrite().put(tag.toLowerCase(), value);
if (tag.equals("speed") && parse instanceof WptPt) {
try {
((WptPt) parse).speed = Float.parseFloat(value);
} catch (NumberFormatException e) {
} catch (NumberFormatException e) {}
}
if (tag.equals("trackextension") || tag.equals("color") || tag.equals("colour") || tag.equals("displaycolor")) {
int color;
try {
color = Integer.parseInt(value);
((GPXExtensions) parse).setColor(color);
} catch (NumberFormatException nfe) {
((GPXExtensions) parse).setColor(value);
}
}
}
}
} else if (parse instanceof GPXExtensions && tag.equals("extensions")) {
extensionReadMode = true;
} else {

View file

@ -261,6 +261,7 @@ public class ImportHelper {
final List<FavouritePoint> favourites = asFavourites(gpxFile.getPoints(), fileName, forceImportFavourites);
final FavouritesDbHelper favoritesHelper = app.getFavorites();
for (final FavouritePoint favourite : favourites) {
favoritesHelper.deleteFavourite(favourite, false);
favoritesHelper.addFavourite(favourite, false);
}
favoritesHelper.sortAll();