diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2011-09-02 20:50:37 +0200 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2011-09-02 20:50:37 +0200 |
| commit | 8d21658c7e5ef9ff59c5788d893dd60d1cbff172 (patch) | |
| tree | 9fddbd3cd6c3bbe2da38c3dd69cefc3a8e511412 /src | |
| parent | 821a9a1513e7a1573411e84ae3533d53d4ca3936 (diff) | |
| download | cgeo-8d21658c7e5ef9ff59c5788d893dd60d1cbff172.zip cgeo-8d21658c7e5ef9ff59c5788d893dd60d1cbff172.tar.gz cgeo-8d21658c7e5ef9ff59c5788d893dd60d1cbff172.tar.bz2 | |
remove duplicated and unnecessary code from cgBase.formatCoordinates,
optimize performance
Diffstat (limited to 'src')
| -rw-r--r-- | src/cgeo/geocaching/cgBase.java | 58 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeo.java | 4 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeoadvsearch.java | 8 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeocaches.java | 4 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeocoords.java | 4 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeodetail.java | 2 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeonavigate.java | 6 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeopoint.java | 18 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeowaypoint.java | 2 | ||||
| -rw-r--r-- | src/cgeo/geocaching/cgeowaypointadd.java | 16 | ||||
| -rw-r--r-- | src/cgeo/geocaching/files/FileParser.java | 11 |
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 {
|
