From e151cc885cfcea53cf8872f45172bd250eaa5402 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Wed, 7 Mar 2018 20:42:21 +0100 Subject: [PATCH] Save all values when weight is updated If weight is updated and some measurements are shown as absolute values, but saved as percentages, then we must re-save them using the new weight. Otherwise the measurements will change without actually having changed. --- .../openscale/gui/activities/DataEntryActivity.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java index 521f37b2..ddc775d1 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java @@ -43,6 +43,7 @@ import com.health.openscale.gui.views.DateMeasurementView; import com.health.openscale.gui.views.MeasurementView; import com.health.openscale.gui.views.MeasurementViewUpdateListener; import com.health.openscale.gui.views.TimeMeasurementView; +import com.health.openscale.gui.views.WeightMeasurementView; import java.text.DateFormat; import java.util.Date; @@ -446,6 +447,17 @@ public class DataEntryActivity extends AppCompatActivity { view.saveTo(scaleMeasurement); isDirty = true; + // When weight is updated we may need to re-save some values that are stored + // as percentages, but that the user may have set up to be shown as absolute. + // Otherwise that measurement (e.g. fat) may change when weight is updated. + if (view instanceof WeightMeasurementView) { + for (MeasurementView measurement : dataEntryMeasurements) { + if (measurement != view) { + measurement.saveTo(scaleMeasurement); + } + } + } + txtDataNr.setText(DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.SHORT).format(scaleMeasurement.getDateTime()));