Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions app/res/layout/start_manual.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
android:layout_below="@+id/manual_date"
android:prompt="@string/Type"
android:text="@string/Start_hour"
android:defaultValue="now"
runnerup:type="timepicker" />

<org.runnerup.widget.TitleSpinner
Expand All @@ -72,6 +73,7 @@
android:prompt="@string/Type"
android:inputType="numberDecimal"
android:text="@string/Distance"
android:defaultValue="0"
runnerup:type="distancepicker" />

<org.runnerup.widget.TitleSpinner
Expand Down
4 changes: 4 additions & 0 deletions app/src/org/runnerup/util/Formatter.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
import org.runnerup.workout.Dimension;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

@TargetApi(Build.VERSION_CODES.FROYO)
Expand Down Expand Up @@ -163,6 +164,9 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
setUnit();
}

public char getDecimalSeparator() {
return (new DecimalFormatSymbols(defaultLocale)).getDecimalSeparator();
}
private void setUnit() {
km = getUseKilometers(context.getResources(), sharedPreferences, null);

Expand Down
1 change: 1 addition & 0 deletions app/src/org/runnerup/view/StartActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -620,6 +620,7 @@ private void updateView() {
gpsInfoLayout.setVisibility(View.GONE);
startButton.setEnabled(manualSetValue);
startButton.setText(getString(R.string.Save_activity));
startButton.setEnabled(true);
return;
} else if (mGpsStatus.isEnabled() == false) {
startButton.setEnabled(true);
Expand Down
66 changes: 36 additions & 30 deletions app/src/org/runnerup/widget/DistancePicker.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,66 +30,72 @@
@TargetApi(Build.VERSION_CODES.FROYO)
public class DistancePicker extends LinearLayout {

long baseUnitMeters;
private final long baseUnitMeters;

final NumberPicker unitMeters; // e.g km or mi
final TextView unitString;
final NumberPicker meters;
private final NumberPicker majorNo; // e.g km or mi
private final NumberPicker minorNo; //fraction, i.e. meters or miles/1000

public DistancePicker(Context context, AttributeSet attrs) {
super(context, attrs);

unitMeters = new NumberPicker(context, attrs);
majorNo = new NumberPicker(context, attrs);
majorNo.setOrientation(VERTICAL);
addView(majorNo);

LinearLayout decimalSeparatorLayout = new LinearLayout(context, attrs);
decimalSeparatorLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
decimalSeparatorLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.MATCH_PARENT));
TextView decimalSeparator = new TextView(context, attrs);
decimalSeparator.setTextSize(25);
decimalSeparatorLayout.addView(decimalSeparator);
addView(decimalSeparatorLayout);

minorNo = new NumberPicker(context, attrs);
minorNo.setOrientation(VERTICAL);
addView(minorNo);

LinearLayout unitStringLayout = new LinearLayout(context, attrs);
unitStringLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
unitStringLayout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.MATCH_PARENT));
unitString = new TextView(context, attrs);
TextView unitString = new TextView(context, attrs);
unitString.setTextSize(25);
unitStringLayout.addView(unitString);
meters = new NumberPicker(context, attrs);

unitMeters.setOrientation(VERTICAL);
meters.setDigits(4);
meters.setOrientation(VERTICAL);
addView(unitStringLayout);

setOrientation(HORIZONTAL);
setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
addView(unitMeters);
addView(unitStringLayout);
addView(meters);

{
Formatter f = new Formatter(context);
setBaseUint((long) f.getUnitMeters(), f.getUnitString());
}
}

public void setBaseUint(long baseUnit, String baseString) {
baseUnitMeters = baseUnit;
unitString.setText(baseString);
meters.setRange(0, (int) baseUnitMeters - 1, true);
Formatter f = new Formatter(context);
baseUnitMeters = (long) f.getUnitMeters();
unitString.setText(f.getUnitString());
minorNo.setRange(0, 999, true);
minorNo.setDigits(3);
unitString.setText(f.getUnitString());
decimalSeparator.setText(String.valueOf(f.getDecimalSeparator()));
}

public long getDistance() {
long ret = 0;
ret += meters.getValue();
ret += (long) unitMeters.getValue() * baseUnitMeters;
ret += minorNo.getValue() * (baseUnitMeters / 1000.0d);
ret += (long) majorNo.getValue() * baseUnitMeters;
return ret;
}

public void setDistance(long s) {
long h = s / baseUnitMeters;
s -= h * baseUnitMeters;
unitMeters.setValue((int) h);
meters.setValue((int) s);
s*= 1000.0d / baseUnitMeters;
majorNo.setValue((int) h);
minorNo.setValue((int) s);
}

@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
unitMeters.setEnabled(enabled);
meters.setEnabled(enabled);
majorNo.setEnabled(enabled);
minorNo.setEnabled(enabled);
}
}