diff options
| author | rsudev <rasch@munin-soft.de> | 2014-11-06 23:41:27 +0100 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2014-11-06 23:41:27 +0100 |
| commit | 6980bc27495e32523b8d667fef6f6862bba95d28 (patch) | |
| tree | dc0c68d5d662420667ef5b188b91349320d1f7fa | |
| parent | 8c2400d452cff5535db517ad88f3f0cb107c2542 (diff) | |
| download | cgeo-6980bc27495e32523b8d667fef6f6862bba95d28.zip cgeo-6980bc27495e32523b8d667fef6f6862bba95d28.tar.gz cgeo-6980bc27495e32523b8d667fef6f6862bba95d28.tar.bz2 | |
Fixes #2514, Edit coordinates: treatment of fractional seconds
- semantic and formatting change of degree and second fractions
| -rw-r--r-- | main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java index cc3bff5..9bdf86b 100644 --- a/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java +++ b/main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java @@ -7,8 +7,8 @@ import cgeo.geocaching.R; import cgeo.geocaching.activity.AbstractActivity; import cgeo.geocaching.activity.Keyboard; import cgeo.geocaching.location.Geopoint; -import cgeo.geocaching.location.GeopointFormatter; import cgeo.geocaching.location.Geopoint.ParseException; +import cgeo.geocaching.location.GeopointFormatter; import cgeo.geocaching.sensors.IGeoData; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.settings.Settings.CoordInputFormatEnum; @@ -23,6 +23,7 @@ import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.text.Editable; import android.text.TextWatcher; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -226,8 +227,10 @@ public class CoordinatesInputDialog extends DialogFragment { eLatDeg.setText(addZeros(gp.getLatDeg(), 2)); eLatMin.setText(addZeros(gp.getLatDegFrac(), 5)); + eLatMin.setGravity(Gravity.NO_GRAVITY); eLonDeg.setText(addZeros(gp.getLonDeg(), 3)); eLonMin.setText(addZeros(gp.getLonDegFrac(), 5)); + eLonMin.setGravity(Gravity.NO_GRAVITY); break; case Min: // DDD° MM.MMM getView().findViewById(R.id.coordTable).setVisibility(View.VISIBLE); @@ -249,9 +252,11 @@ public class CoordinatesInputDialog extends DialogFragment { eLatDeg.setText(addZeros(gp.getLatDeg(), 2)); eLatMin.setText(addZeros(gp.getLatMin(), 2)); + eLatMin.setGravity(Gravity.RIGHT); eLatSec.setText(addZeros(gp.getLatMinFrac(), 3)); eLonDeg.setText(addZeros(gp.getLonDeg(), 3)); eLonMin.setText(addZeros(gp.getLonMin(), 2)); + eLonMin.setGravity(Gravity.RIGHT); eLonSec.setText(addZeros(gp.getLonMinFrac(), 3)); break; case Sec: // DDD° MM SS.SSS @@ -274,10 +279,12 @@ public class CoordinatesInputDialog extends DialogFragment { eLatDeg.setText(addZeros(gp.getLatDeg(), 2)); eLatMin.setText(addZeros(gp.getLatMin(), 2)); + eLatMin.setGravity(Gravity.RIGHT); eLatSec.setText(addZeros(gp.getLatSec(), 2)); eLatSub.setText(addZeros(gp.getLatSecFrac(), 3)); eLonDeg.setText(addZeros(gp.getLonDeg(), 3)); eLonMin.setText(addZeros(gp.getLonMin(), 2)); + eLonMin.setGravity(Gravity.RIGHT); eLonSec.setText(addZeros(gp.getLonSec(), 2)); eLonSub.setText(addZeros(gp.getLonSecFrac(), 3)); break; @@ -402,16 +409,18 @@ public class CoordinatesInputDialog extends DialogFragment { final String lonDir = bLon.getText().toString(); final String latDeg = eLatDeg.getText().toString(); final String lonDeg = eLonDeg.getText().toString(); - final String latDegFrac = eLatMin.getText().toString(); - final String lonDegFrac = eLonMin.getText().toString(); + // right-pad decimal fraction + final String latDegFrac = padZerosRight(eLatMin.getText().toString(), 5); + final String lonDegFrac = padZerosRight(eLonMin.getText().toString(), 5); final String latMin = eLatMin.getText().toString(); final String lonMin = eLonMin.getText().toString(); final String latMinFrac = eLatSec.getText().toString(); final String lonMinFrac = eLonSec.getText().toString(); final String latSec = eLatSec.getText().toString(); final String lonSec = eLonSec.getText().toString(); - final String latSecFrac = eLatSub.getText().toString(); - final String lonSecFrac = eLonSub.getText().toString(); + // right-pad seconds fraction + final String latSecFrac = padZerosRight(eLatSub.getText().toString(), 3); + final String lonSecFrac = padZerosRight(eLonSub.getText().toString(), 3); switch (currentFormat) { case Deg: @@ -442,6 +451,10 @@ public class CoordinatesInputDialog extends DialogFragment { return false; } + private static String padZerosRight(final String value, final int len) { + return StringUtils.rightPad(value, len, '0'); + } + public int getMaxLengthFromCurrentField(final EditText editText) { if (editText == eLonDeg || editText == eLatSub || editText == eLonSub) { return 3; |
