diff --git a/app/src/main/assets/map.html b/app/src/main/assets/map.html index 99bf1f682..6bb30b073 100644 --- a/app/src/main/assets/map.html +++ b/app/src/main/assets/map.html @@ -42,8 +42,15 @@ toastr.options.timeOut = 2000; // set data - function setData(airport, info, metar, taf, airep, tfr, sua, mets, performance, winds, layer) { + function setData(airport, nameEdit, isStatic, info, metar, taf, airep, tfr, sua, mets, performance, winds, layer) { $("#airportName").text(airport); + $("#nameEdit").val(nameEdit); + if (isStatic) { + $("#nameEditDiv").hide(); + } else { + $("#nameEditDiv").show(); + $("#nameEdit").focus(); + } $("#airportInfo").html(info); $("#airportMetar").html(metar); $("#airportTaf").html(taf); @@ -69,15 +76,19 @@
- ->D - +Plan + ->D + +Plan Plate A/FD X
-

+
+ + Name +

+

diff --git a/app/src/main/java/com/ds/avare/LocationActivity.java b/app/src/main/java/com/ds/avare/LocationActivity.java index 7fa98c993..527fe1448 100644 --- a/app/src/main/java/com/ds/avare/LocationActivity.java +++ b/app/src/main/java/com/ds/avare/LocationActivity.java @@ -416,7 +416,8 @@ public void onCreate(Bundle savedInstanceState) { public Object callback(Object o, Object o1) { String param = (String) o; - String airport = (String) o; + String[] parts = param.split("`"); + String action = parts[0], newName = parts.length>1 ? parts[1] : ""; mAlertDialogDestination.dismiss(); @@ -427,7 +428,7 @@ public Object callback(Object o, Object o1) { return null; } - if (param.equals("A/FD")) { + if (action.equals("A/FD")) { /* * A/FD */ @@ -436,7 +437,7 @@ public Object callback(Object o, Object o1) { ((MainActivity) LocationActivity.this.getParent()).showAfdTab(); } mAirportPressed = null; - } else if (param.equals("Plate")) { + } else if (action.equals("Plate")) { /* * Plate */ @@ -446,14 +447,19 @@ public Object callback(Object o, Object o1) { ((MainActivity) LocationActivity.this.getParent()).showPlatesTab(); } mAirportPressed = null; - } else if (param.equals("+Plan")) { - String type = Destination.BASE; + } else if (action.equals("+Plan")) { + /* + * +Plan + */ if (mAirportPressed.contains("&")) { - type = Destination.GPS; + String decoratedName = (newName.isEmpty() && newName != mAirportPressed) + ? mAirportPressed : newName + "@" + mAirportPressed; + planTo(decoratedName, Destination.GPS); + } else { + planTo(mAirportPressed, Destination.BASE); } - planTo(mAirportPressed, type); mAirportPressed = null; - } else if (param.equals("->D")) { + } else if (action.equals("->D")) { /* * On click, find destination that was pressed on in view @@ -464,8 +470,12 @@ public Object callback(Object o, Object o1) { String type = Destination.BASE; if (dest.contains("&")) { type = Destination.GPS; + dest = (newName.isEmpty() && newName != mAirportPressed) + ? dest : newName + "@" + dest; } goTo(dest, type); + } else if (action.equals("Rename")) { + rename(newName); } return null; } @@ -982,6 +992,29 @@ public void onClick(View v) { } } + /** finds the pressed destination in the plan and renames it to the @newName */ + public void rename(String newName) { + if (!newName.isEmpty() + && mAirportPressed!=null + && !newName.equals(mAirportPressed) + && mAirportPressed.contains("&")) + { + String[] latLon = mAirportPressed.split("&"); + double lat = Double.parseDouble(latLon[0]), + lon = Double.parseDouble(latLon[1]); + Plan plan = mService.getPlan(); + if (plan != null) { + Destination destToRename = plan.findDestinationByLocation(lon, lat); + if (destToRename != null) { + destToRename.setID(newName+"@"+mAirportPressed); + mToast.setText(getString(R.string.LabelChanged)+" "+newName); + mToast.show(); + + } + } + } + } + private void setTrackState(boolean bState) { URI fileURI = mService.setTracks(bState); diff --git a/app/src/main/java/com/ds/avare/place/Destination.java b/app/src/main/java/com/ds/avare/place/Destination.java index 8984e5954..fe74d3b0f 100644 --- a/app/src/main/java/com/ds/avare/place/Destination.java +++ b/app/src/main/java/com/ds/avare/place/Destination.java @@ -773,6 +773,13 @@ public String getID() { return(mName); } + /** + * @return + */ + public void setID(String name) { + mName = name.toUpperCase(Locale.getDefault());; + } + /** * @return */ diff --git a/app/src/main/java/com/ds/avare/place/Plan.java b/app/src/main/java/com/ds/avare/place/Plan.java index d9648662a..f0090fbc6 100644 --- a/app/src/main/java/com/ds/avare/place/Plan.java +++ b/app/src/main/java/com/ds/avare/place/Plan.java @@ -271,6 +271,23 @@ public int findNextNotPassed() { return 0; } + /* + * Find a destination using lat/lon coordinates + */ + public Destination findDestinationByLocation(double lonToFind, double latToFind) { + /* + * + */ + for (int id = 0; id < getDestinationNumber(); id++) { + Location loc = mDestination[id].getLocation(); + double lon = loc.getLongitude(); + double lat = loc.getLatitude(); + if (Helper.isSameGPSLocation(lon, lat, lonToFind, latToFind)) + return mDestination[id]; + } + return null; + } + /* * If passed */ diff --git a/app/src/main/java/com/ds/avare/webinfc/WebAppMapInterface.java b/app/src/main/java/com/ds/avare/webinfc/WebAppMapInterface.java index adb8004cc..1b1e5f517 100644 --- a/app/src/main/java/com/ds/avare/webinfc/WebAppMapInterface.java +++ b/app/src/main/java/com/ds/avare/webinfc/WebAppMapInterface.java @@ -167,6 +167,8 @@ public void handleMessage(Message msg) { mWebView.loadUrl("javascript:plan_clear()"); String func = "javascript:setData('" + Helper.formatJsArgs(data.airport) + "','" + + Helper.formatJsArgs(data.airport) + "'," + // nameEdit + Helper.formatJsArgs(data.airport.contains("&") ? "false" : "true") + ",'" + // isStatic "Position " + "" + Helper.formatJsArgs(data.info) + "','" + Helper.formatJsArgs(metar) + "','" + Helper.formatJsArgs(taf) + "','" + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a1a7a21fc..c1e7b5040 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,6 +120,7 @@ Redistribution and use in source and binary forms, with or without modification, "Select to reduce white light during night operation (requires restart)" "Delete" "Label" + "Label changed to" "Create" "Plan" "+Plan"