aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/ui
diff options
context:
space:
mode:
authorrsudev <rasch@munin-soft.de>2014-11-06 23:41:27 +0100
committerrsudev <rasch@munin-soft.de>2014-11-06 23:41:27 +0100
commit6980bc27495e32523b8d667fef6f6862bba95d28 (patch)
treedc0c68d5d662420667ef5b188b91349320d1f7fa /main/src/cgeo/geocaching/ui
parent8c2400d452cff5535db517ad88f3f0cb107c2542 (diff)
downloadcgeo-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
Diffstat (limited to 'main/src/cgeo/geocaching/ui')
-rw-r--r--main/src/cgeo/geocaching/ui/dialog/CoordinatesInputDialog.java23
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;