diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/workouts/WorkoutValueFormatter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/workouts/WorkoutValueFormatter.java index e83d1460ae..5a625435ce 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/workouts/WorkoutValueFormatter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/workouts/WorkoutValueFormatter.java @@ -7,6 +7,8 @@ import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries. import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_METERS_PER_SECOND; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_MM; +import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS; +import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_KM; import static nodomain.freeyourgadget.gadgetbridge.model.ActivitySummaryEntries.UNIT_SECONDS_PER_M; @@ -149,12 +151,30 @@ public class WorkoutValueFormatter { } } break; + case UNIT_SECONDS_PER_100_METERS: + if (units.equals(UNIT_IMPERIAL)) { + value = (value * 0.9144) / 60D; + unit = "minutes_100yd"; + } else { //metric + value = value / 60D; + unit = "minutes_100m"; + } + break; + case UNIT_SECONDS_PER_100_YARDS: + if (units.equals(UNIT_IMPERIAL)) { + value = value / 60D; + unit = "minutes_100yd"; + } else { //metric + value = (value * 1.0936133D) / 60D; + unit = "minutes_100m"; + } + break; } } if (unit.equals("seconds") && !show_raw_data) { //rather then plain seconds, show formatted duration return DateTimeUtils.formatDurationHoursMinutes((long) value, TimeUnit.SECONDS); - } else if (unit.equals("minutes_km") || unit.equals("minutes_mi")) { + } else if (unit.equals("minutes_km") || unit.equals("minutes_mi") || unit.equals("minutes_100m") || unit.equals("minutes_100yd")) { // Format pace return String.format( Locale.getDefault(), diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySummaryEntries.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySummaryEntries.java index e500cf8a7d..74abbe79a9 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySummaryEntries.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/model/ActivitySummaryEntries.java @@ -216,6 +216,8 @@ public class ActivitySummaryEntries { public static final String UNIT_MM = "unit_millimeter"; public static final String UNIT_WATT = "unit_watt"; public static final String UNIT_JOULE = "unit_joule"; + public static final String UNIT_SECONDS_PER_100_METERS = "seconds_100m"; + public static final String UNIT_SECONDS_PER_100_YARDS = "seconds_100yd"; public static final String GROUP_PACE = "Pace"; public static final String GROUP_ACTIVITY = "Activity"; @@ -251,15 +253,15 @@ public class ActivitySummaryEntries { */ public static final String INTERNAL_HAS_GPS = "internal_hasGps"; - public static final Map HR_ZONES = new LinkedHashMap() {{ - put(HR_ZONE_NA, 0); - put(HR_ZONE_WARM_UP, R.color.hr_zone_warm_up_color); - put(HR_ZONE_EASY, R.color.hr_zone_easy_color); - put(HR_ZONE_FAT_BURN, R.color.hr_zone_easy_color); - put(HR_ZONE_AEROBIC, R.color.hr_zone_aerobic_color); - put(HR_ZONE_ANAEROBIC, R.color.hr_zone_threshold_color); - put(HR_ZONE_THRESHOLD, R.color.hr_zone_threshold_color); - put(HR_ZONE_EXTREME, R.color.hr_zone_maximum_color); - put(HR_ZONE_MAXIMUM, R.color.hr_zone_maximum_color); + public static final Map HR_ZONES = new LinkedHashMap<>() {{ + put(HR_ZONE_NA, 0); + put(HR_ZONE_WARM_UP, R.color.hr_zone_warm_up_color); + put(HR_ZONE_EASY, R.color.hr_zone_easy_color); + put(HR_ZONE_FAT_BURN, R.color.hr_zone_easy_color); + put(HR_ZONE_AEROBIC, R.color.hr_zone_aerobic_color); + put(HR_ZONE_ANAEROBIC, R.color.hr_zone_threshold_color); + put(HR_ZONE_THRESHOLD, R.color.hr_zone_threshold_color); + put(HR_ZONE_EXTREME, R.color.hr_zone_maximum_color); + put(HR_ZONE_MAXIMUM, R.color.hr_zone_maximum_color); }}; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiWorkoutGbParser.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiWorkoutGbParser.java index 05662faefc..f9b149226f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiWorkoutGbParser.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/huawei/HuaweiWorkoutGbParser.java @@ -1074,11 +1074,13 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser { if (sample.getType() != unitType) continue; + // TODO: add proper units for type == 1. imperial + final List columns = new LinkedList<>(); - // TODO: add proper units for type == 1. MILES columns.add(new ActivitySummaryValue(currentIndex++, ActivitySummaryEntries.UNIT_NONE)); columns.add(new ActivitySummaryValue(getSwimStyle(sample.getSwimType()), ActivitySummaryEntries.UNIT_NONE)); - columns.add(new ActivitySummaryValue(sample.getDistance(), ActivitySummaryEntries.UNIT_METERS)); + String segmentDistanceUnit = sample.getType() == 1?ActivitySummaryEntries.UNIT_YARD:ActivitySummaryEntries.UNIT_METERS; + columns.add(new ActivitySummaryValue(sample.getDistance(), segmentDistanceUnit)); columns.add(new ActivitySummaryValue(sample.getTime(), ActivitySummaryEntries.UNIT_SECONDS)); @@ -1092,11 +1094,11 @@ public class HuaweiWorkoutGbParser implements ActivitySummaryParser { ); final List columns2 = new LinkedList<>(); - // TODO: add proper units for type == 1. MILES and SECONDS PER MILE columns2.add(new ActivitySummaryValue("", ActivitySummaryEntries.UNIT_NONE)); columns2.add(new ActivitySummaryValue(sample.getStrokes(), ActivitySummaryEntries.UNIT_STROKES)); columns2.add(new ActivitySummaryValue(sample.getAvgSwolf(), ActivitySummaryEntries.UNIT_NONE)); - columns2.add(new ActivitySummaryValue(sample.getPace(), ActivitySummaryEntries.UNIT_NONE)); //TODO: seconds / 100 meters + String segmentPaceUnit = sample.getType() == 1?ActivitySummaryEntries.UNIT_SECONDS_PER_100_YARDS:ActivitySummaryEntries.UNIT_SECONDS_PER_100_METERS; + columns2.add(new ActivitySummaryValue(sample.getPace(), segmentPaceUnit)); segmentsTable.put("segments_table_" + tableIndex++, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0589223d3c..80674018f7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2669,6 +2669,8 @@ km mi degrees + min/100m + min/100yd Pace Strokes