aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/cgeo/geocaching/cgBase.java58
-rw-r--r--src/cgeo/geocaching/cgeo.java4
-rw-r--r--src/cgeo/geocaching/cgeoadvsearch.java8
-rw-r--r--src/cgeo/geocaching/cgeocaches.java4
-rw-r--r--src/cgeo/geocaching/cgeocoords.java4
-rw-r--r--src/cgeo/geocaching/cgeodetail.java2
-rw-r--r--src/cgeo/geocaching/cgeonavigate.java6
-rw-r--r--src/cgeo/geocaching/cgeopoint.java18
-rw-r--r--src/cgeo/geocaching/cgeowaypoint.java2
-rw-r--r--src/cgeo/geocaching/cgeowaypointadd.java16
-rw-r--r--src/cgeo/geocaching/files/FileParser.java11
11 files changed, 61 insertions, 72 deletions
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java
index 057dd3f..629ccc3 100644
--- a/src/cgeo/geocaching/cgBase.java
+++ b/src/cgeo/geocaching/cgBase.java
@@ -2712,46 +2712,38 @@ public class cgBase {
return result;
}
- public static String formatCoordinate(Double coord, String latlon, boolean degrees) {
- String formatted = "";
-
- if (coord == null) {
- return formatted;
+ private static String formatCoordinate(final Double coordIn, final boolean degrees, final String direction, final String digitsFormat) {
+ if (coordIn == null) {
+ return "";
}
+ StringBuilder formatted = new StringBuilder(direction);
- String worldSide = "";
- if (latlon.equalsIgnoreCase("lat")) {
- if (coord >= 0) {
- // have the blanks here at the direction to avoid one String concatenation
- worldSide = "N ";
- } else {
- worldSide = "S ";
- }
- } else if (latlon.equalsIgnoreCase("lon")) {
- if (coord >= 0) {
- worldSide = "E ";
- } else {
- worldSide = "W ";
- }
- }
+ double coordAbs = Math.abs(coordIn);
+ Locale locale = Locale.getDefault();
+ double floor = Math.floor(coordAbs);
- coord = Math.abs(coord);
+ formatted.append(String.format(locale, digitsFormat, floor));
- if (latlon.equalsIgnoreCase("lat")) {
- if (degrees) {
- formatted = worldSide + String.format(Locale.getDefault(), "%02.0f", Math.floor(coord)) + "° " + String.format(Locale.getDefault(), "%06.3f", ((coord - Math.floor(coord)) * 60));
- } else {
- formatted = worldSide + String.format(Locale.getDefault(), "%02.0f", Math.floor(coord)) + " " + String.format(Locale.getDefault(), "%06.3f", ((coord - Math.floor(coord)) * 60));
- }
+ if (degrees) {
+ formatted.append("° ");
} else {
- if (degrees) {
- formatted = worldSide + String.format(Locale.getDefault(), "%03.0f", Math.floor(coord)) + "° " + String.format(Locale.getDefault(), "%06.3f", ((coord - Math.floor(coord)) * 60));
- } else {
- formatted = worldSide + String.format(Locale.getDefault(), "%03.0f", Math.floor(coord)) + " " + String.format(Locale.getDefault(), "%06.3f", ((coord - Math.floor(coord)) * 60));
- }
+ formatted.append(" ");
}
+ formatted.append(String.format(locale, "%06.3f", ((coordAbs - floor) * 60)));
+
+ return formatted.toString();
+ }
+
+ public static String formatLatitude(final Double coord, final boolean degrees) {
+ return formatCoordinate(coord, degrees, (coord >= 0) ? "N " : "S ", "%02.0f");
+ }
+
+ public static String formatLongitude(final Double coord, final boolean degrees) {
+ return formatCoordinate(coord, degrees, (coord >= 0) ? "E " : "W ", "%03.0f");
+ }
- return formatted;
+ public static String formatCoords(final Double latitude, final Double longitude, final boolean degrees) {
+ return formatLatitude(latitude, degrees) + " | " + formatLongitude(longitude, degrees);
}
public static HashMap<String, Object> parseCoordinate(String coord, String latlon) {
diff --git a/src/cgeo/geocaching/cgeo.java b/src/cgeo/geocaching/cgeo.java
index 5d75060..6384fb1 100644
--- a/src/cgeo/geocaching/cgeo.java
+++ b/src/cgeo/geocaching/cgeo.java
@@ -543,9 +543,9 @@ public class cgeo extends AbstractActivity {
} else {
humanAlt = String.format("%.0f", geo.altitudeNow) + " m";
}
- navLocation.setText(cgBase.formatCoordinate(geo.latitudeNow, "lat", true) + " | " + cgBase.formatCoordinate(geo.longitudeNow, "lon", true) + " | " + humanAlt);
+ navLocation.setText(cgBase.formatCoords(geo.latitudeNow, geo.longitudeNow, true) + " | " + humanAlt);
} else {
- navLocation.setText(cgBase.formatCoordinate(geo.latitudeNow, "lat", true) + " | " + cgBase.formatCoordinate(geo.longitudeNow, "lon", true));
+ navLocation.setText(cgBase.formatCoords(geo.latitudeNow, geo.longitudeNow, true));
}
}
} else {
diff --git a/src/cgeo/geocaching/cgeoadvsearch.java b/src/cgeo/geocaching/cgeoadvsearch.java
index f6f2159..1849faa 100644
--- a/src/cgeo/geocaching/cgeoadvsearch.java
+++ b/src/cgeo/geocaching/cgeoadvsearch.java
@@ -210,8 +210,8 @@ public class cgeoadvsearch extends AbstractActivity {
}
if (geo.latitudeNow != null && geo.longitudeNow != null) {
- latEdit.setHint(cgBase.formatCoordinate(geo.latitudeNow, "lat", false));
- lonEdit.setHint(cgBase.formatCoordinate(geo.longitudeNow, "lon", false));
+ latEdit.setHint(cgBase.formatLatitude(geo.latitudeNow, false));
+ lonEdit.setHint(cgBase.formatLongitude(geo.longitudeNow, false));
}
} catch (Exception e) {
Log.w(cgSettings.tag, "Failed to update location.");
@@ -246,8 +246,8 @@ public class cgeoadvsearch extends AbstractActivity {
final String lonText = lonView.getText().toString();
if (latText == null || latText.length() == 0 || lonText == null || lonText.length() == 0) {
- latView.setText(cgBase.formatCoordinate(geo.latitudeNow, "lat", true));
- lonView.setText(cgBase.formatCoordinate(geo.longitudeNow, "lon", true));
+ latView.setText(cgBase.formatLatitude(geo.latitudeNow, true));
+ lonView.setText(cgBase.formatLongitude(geo.longitudeNow, true));
} else {
HashMap<String, Object> latParsed = cgBase.parseCoordinate(latText, "lat");
HashMap<String, Object> lonParsed = cgBase.parseCoordinate(lonText, "lat");
diff --git a/src/cgeo/geocaching/cgeocaches.java b/src/cgeo/geocaching/cgeocaches.java
index ddc383e..9953882 100644
--- a/src/cgeo/geocaching/cgeocaches.java
+++ b/src/cgeo/geocaching/cgeocaches.java
@@ -598,7 +598,7 @@ public class cgeocaches extends AbstractListActivity {
thread.start();
} else if (type.equals("coordinate")) {
action = "planning";
- title = cgBase.formatCoordinate(latitude, res.getString(R.string.search_lat), true) + " | " + cgBase.formatCoordinate(longitude, res.getString(R.string.search_lon), true);
+ title = cgBase.formatCoords(latitude, longitude, true);
setTitle(title);
showProgress(true);
setLoadingCaches();
@@ -623,7 +623,7 @@ public class cgeocaches extends AbstractListActivity {
showProgress(true);
setLoadingCaches();
} else {
- title = cgBase.formatCoordinate(latitude, res.getString(R.string.search_lat), true) + " | " + cgBase.formatCoordinate(longitude, res.getString(R.string.search_lon), true);
+ title = cgBase.formatCoords(latitude, longitude, true);
setTitle(title);
showProgress(true);
setLoadingCaches();
diff --git a/src/cgeo/geocaching/cgeocoords.java b/src/cgeo/geocaching/cgeocoords.java
index 229b3a6..ca6e610 100644
--- a/src/cgeo/geocaching/cgeocoords.java
+++ b/src/cgeo/geocaching/cgeocoords.java
@@ -161,10 +161,10 @@ public class cgeocoords extends Dialog {
eLat.setVisibility(View.VISIBLE);
eLon.setVisibility(View.VISIBLE);
if (latitude != null) {
- eLat.setText(cgBase.formatCoordinate(latitude, "lat", true));
+ eLat.setText(cgBase.formatLatitude(latitude, true));
}
if (longitude != null) {
- eLon.setText(cgBase.formatCoordinate(longitude, "lon", true));
+ eLon.setText(cgBase.formatLongitude(longitude, true));
}
break;
case Deg: // DDD.DDDDD°
diff --git a/src/cgeo/geocaching/cgeodetail.java b/src/cgeo/geocaching/cgeodetail.java
index 90d02f5..61b31e8 100644
--- a/src/cgeo/geocaching/cgeodetail.java
+++ b/src/cgeo/geocaching/cgeodetail.java
@@ -1021,7 +1021,7 @@ public class cgeodetail extends AbstractActivity {
TextView nameView = (TextView) waypointView.findViewById(R.id.name);
if (wpt.name.trim().length() == 0) {
- nameView.setText(cgBase.formatCoordinate(wpt.latitude, "lat", true) + " | " + cgBase.formatCoordinate(wpt.longitude, "lon", true));
+ nameView.setText(cgBase.formatCoords(wpt.latitude, wpt.longitude, true));
} else {
// avoid HTML parsing
if (wpt.name.indexOf('<') >= 0 || wpt.name.indexOf('&') >= 0) {
diff --git a/src/cgeo/geocaching/cgeonavigate.java b/src/cgeo/geocaching/cgeonavigate.java
index 2f80d29..4b51367 100644
--- a/src/cgeo/geocaching/cgeonavigate.java
+++ b/src/cgeo/geocaching/cgeonavigate.java
@@ -307,7 +307,7 @@ public class cgeonavigate extends AbstractActivity {
return;
}
- ((TextView) findViewById(R.id.destination)).setText(cgBase.formatCoordinate(dstLatitude, "lat", true) + " | " + cgBase.formatCoordinate(dstLongitude, "lon", true));
+ ((TextView) findViewById(R.id.destination)).setText(cgBase.formatCoords(dstLatitude, dstLongitude, true));
}
public void setDest(Double lat, Double lon) {
@@ -402,9 +402,9 @@ public class cgeonavigate extends AbstractActivity {
} else {
humanAlt = String.format("%.0f", geo.altitudeNow) + " m";
}
- navLocation.setText(cgBase.formatCoordinate(geo.latitudeNow, "lat", true) + " | " + cgBase.formatCoordinate(geo.longitudeNow, "lon", true) + " | " + humanAlt);
+ navLocation.setText(cgBase.formatCoords(geo.latitudeNow, geo.longitudeNow, true) + " | " + humanAlt);
} else {
- navLocation.setText(cgBase.formatCoordinate(geo.latitudeNow, "lat", true) + " | " + cgBase.formatCoordinate(geo.longitudeNow, "lon", true));
+ navLocation.setText(cgBase.formatCoords(geo.latitudeNow, geo.longitudeNow, true));
}
updateDistanceInfo();
diff --git a/src/cgeo/geocaching/cgeopoint.java b/src/cgeo/geocaching/cgeopoint.java
index c3c0b23..d9cdfc6 100644
--- a/src/cgeo/geocaching/cgeopoint.java
+++ b/src/cgeo/geocaching/cgeopoint.java
@@ -59,10 +59,8 @@ public class cgeopoint extends AbstractActivity {
.findViewById(R.id.simple_way_point_latitude);
TextView date = (TextView) convertView.findViewById(R.id.date);
- String lonString = cgBase.formatCoordinate(loc.getLongitude(), "lon",
- true);
- String latString = cgBase.formatCoordinate(loc.getLatitude(), "lat",
- true);
+ String lonString = cgBase.formatLongitude(loc.getLongitude(), true);
+ String latString = cgBase.formatLatitude(loc.getLatitude(), true);
longitude.setText(lonString);
latitude.setText(latString);
@@ -261,8 +259,8 @@ public class cgeopoint extends AbstractActivity {
});
if (prefs.contains("anylatitude") && prefs.contains("anylongitude")) {
- latitudeEdit.setText(cgBase.formatCoordinate(Double.valueOf(prefs.getFloat("anylatitude", 0f)), "lat", true));
- longitudeEdit.setText(cgBase.formatCoordinate(Double.valueOf(prefs.getFloat("anylongitude", 0f)), "lon", true));
+ latitudeEdit.setText(cgBase.formatLatitude(Double.valueOf(prefs.getFloat("anylatitude", 0f)), true));
+ longitudeEdit.setText(cgBase.formatLongitude(Double.valueOf(prefs.getFloat("anylongitude", 0f)), true));
}
Button buttonCurrent = (Button) findViewById(R.id.current);
@@ -452,8 +450,8 @@ public class cgeopoint extends AbstractActivity {
lonEdit = (EditText) findViewById(R.id.longitude);
}
- latEdit.setHint(cgBase.formatCoordinate(geo.latitudeNow, "lat", false));
- lonEdit.setHint(cgBase.formatCoordinate(geo.longitudeNow, "lon", false));
+ latEdit.setHint(cgBase.formatLatitude(geo.latitudeNow, false));
+ lonEdit.setHint(cgBase.formatLongitude(geo.longitudeNow, false));
} catch (Exception e) {
Log.w(cgSettings.tag, "Failed to update location.");
}
@@ -468,8 +466,8 @@ public class cgeopoint extends AbstractActivity {
return;
}
- ((EditText) findViewById(R.id.latitude)).setText(cgBase.formatCoordinate(geo.latitudeNow, "lat", true));
- ((EditText) findViewById(R.id.longitude)).setText(cgBase.formatCoordinate(geo.longitudeNow, "lon", true));
+ ((EditText) findViewById(R.id.latitude)).setText(cgBase.formatLatitude(geo.latitudeNow, true));
+ ((EditText) findViewById(R.id.longitude)).setText(cgBase.formatLongitude(geo.longitudeNow, true));
changed = false;
}
diff --git a/src/cgeo/geocaching/cgeowaypoint.java b/src/cgeo/geocaching/cgeowaypoint.java
index b964df7..59a6fb3 100644
--- a/src/cgeo/geocaching/cgeowaypoint.java
+++ b/src/cgeo/geocaching/cgeowaypoint.java
@@ -71,7 +71,7 @@ public class cgeowaypoint extends AbstractActivity {
waypoint.setIcon(res, base, identification);
if (waypoint.latitude != null && waypoint.longitude != null) {
- coords.setText(Html.fromHtml(cgBase.formatCoordinate(waypoint.latitude, "lat", true) + " | " + cgBase.formatCoordinate(waypoint.longitude, "lon", true)), TextView.BufferType.SPANNABLE);
+ coords.setText(Html.fromHtml(cgBase.formatCoords(waypoint.latitude, waypoint.longitude, true)), TextView.BufferType.SPANNABLE);
compass.setVisibility(View.VISIBLE);
separator.setVisibility(View.VISIBLE);
} else {
diff --git a/src/cgeo/geocaching/cgeowaypointadd.java b/src/cgeo/geocaching/cgeowaypointadd.java
index 1860129..6e61e10 100644
--- a/src/cgeo/geocaching/cgeowaypointadd.java
+++ b/src/cgeo/geocaching/cgeowaypointadd.java
@@ -54,8 +54,8 @@ public class cgeowaypointadd extends AbstractActivity {
app.setAction(geocode);
- ((Button) findViewById(R.id.buttonLatitude)).setText(cgBase.formatCoordinate(waypoint.latitude, "lat", true));
- ((Button) findViewById(R.id.buttonLongitude)).setText(cgBase.formatCoordinate(waypoint.longitude, "lon", true));
+ ((Button) findViewById(R.id.buttonLatitude)).setText(cgBase.formatLatitude(waypoint.latitude, true));
+ ((Button) findViewById(R.id.buttonLongitude)).setText(cgBase.formatLongitude(waypoint.longitude, true));
((EditText) findViewById(R.id.name)).setText(Html.fromHtml(waypoint.name.trim()).toString());
((EditText) findViewById(R.id.note)).setText(Html.fromHtml(waypoint.note.trim()).toString());
@@ -191,8 +191,8 @@ public class cgeowaypointadd extends AbstractActivity {
try {
Button bLat = (Button) findViewById(R.id.buttonLatitude);
Button bLon = (Button) findViewById(R.id.buttonLongitude);
- bLat.setHint(cgBase.formatCoordinate(geo.latitudeNow, "lat", false));
- bLon.setHint(cgBase.formatCoordinate(geo.longitudeNow, "lon", false));
+ bLat.setHint(cgBase.formatLatitude(geo.latitudeNow, false));
+ bLon.setHint(cgBase.formatLongitude(geo.longitudeNow, false));
} catch (Exception e) {
Log.w(cgSettings.tag, "Failed to update location.");
}
@@ -221,8 +221,8 @@ public class cgeowaypointadd extends AbstractActivity {
coordsDialog.setOnCoordinateUpdate(new cgeocoords.CoordinateUpdate() {
@Override
public void update(ArrayList<Double> coords) {
- ((Button) findViewById(R.id.buttonLatitude)).setText(cgBase.formatCoordinate(coords.get(0), "lat", true));
- ((Button) findViewById(R.id.buttonLongitude)).setText(cgBase.formatCoordinate(coords.get(1), "lon", true));
+ ((Button) findViewById(R.id.buttonLatitude)).setText(cgBase.formatLatitude(coords.get(0), true));
+ ((Button) findViewById(R.id.buttonLongitude)).setText(cgBase.formatLongitude(coords.get(1), true));
if (waypoint != null) {
waypoint.latitude = coords.get(0);
waypoint.longitude = coords.get(1);
@@ -370,8 +370,8 @@ public class cgeowaypointadd extends AbstractActivity {
waypoint.name = name;
waypoint.latitude = coords.get(0);
waypoint.longitude = coords.get(1);
- waypoint.latitudeString = cgBase.formatCoordinate(coords.get(0), "lat", true);
- waypoint.longitudeString = cgBase.formatCoordinate(coords.get(1), "lon", true);
+ waypoint.latitudeString = cgBase.formatLatitude(coords.get(0), true);
+ waypoint.longitudeString = cgBase.formatLongitude(coords.get(1), true);
waypoint.note = note;
if (app.saveOwnWaypoint(id, geocode, waypoint)) {
diff --git a/src/cgeo/geocaching/files/FileParser.java b/src/cgeo/geocaching/files/FileParser.java
index 4e6cdf7..cc83cd1 100644
--- a/src/cgeo/geocaching/files/FileParser.java
+++ b/src/cgeo/geocaching/files/FileParser.java
@@ -7,13 +7,12 @@ import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
+import android.os.Handler;
+import android.os.Message;
import cgeo.geocaching.cgBase;
import cgeo.geocaching.cgCache;
import cgeo.geocaching.cgSearch;
-import android.os.Handler;
-import android.os.Message;
-
public abstract class FileParser {
protected static StringBuilder readFile(File file)
throws FileNotFoundException, IOException {
@@ -30,7 +29,7 @@ public abstract class FileParser {
}
return buffer;
}
-
+
static void showFinishedMessage(Handler handler, cgSearch search) {
if (handler != null) {
final Message msg = new Message();
@@ -40,8 +39,8 @@ public abstract class FileParser {
}
protected static void fixCache(cgCache cache) {
- cache.latitudeString = cgBase.formatCoordinate(cache.latitude, "lat", true);
- cache.longitudeString = cgBase.formatCoordinate(cache.longitude, "lon", true);
+ cache.latitudeString = cgBase.formatLatitude(cache.latitude, true);
+ cache.longitudeString = cgBase.formatLongitude(cache.longitude, true);
if (cache.inventory != null) {
cache.inventoryItems = cache.inventory.size();
} else {