-
+
+
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"