diff --git a/android_app/app/src/main/java/com/health/openscale/gui/preferences/MeasurementPreferences.java b/android_app/app/src/main/java/com/health/openscale/gui/preferences/MeasurementPreferences.java
index 6be71b08..64aff159 100644
--- a/android_app/app/src/main/java/com/health/openscale/gui/preferences/MeasurementPreferences.java
+++ b/android_app/app/src/main/java/com/health/openscale/gui/preferences/MeasurementPreferences.java
@@ -27,6 +27,7 @@ import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
+import android.preference.SwitchPreference;
import android.widget.Toast;
import com.health.openscale.R;
@@ -41,6 +42,12 @@ import java.util.Set;
public class MeasurementPreferences extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public static final String PREFERENCE_KEY_DELETE_ALL = "deleteAll";
+ public static final String PREFERENCE_KEY_FAT = "fatEnable";
+ public static final String PREFERENCE_KEY_FAT_PERCENTAGE = "fatPercentageEnable";
+ public static final String PREFERENCE_KEY_WATER = "waterEnable";
+ public static final String PREFERENCE_KEY_WATER_PERCENTAGE = "waterPercentageEnable";
+ public static final String PREFERENCE_KEY_MUSCLE = "muscleEnable";
+ public static final String PREFERENCE_KEY_MUSCLE_PERCENTAGE = "musclePercentageEnable";
public static final String PREFERENCE_KEY_ESTIMATE_WATER = "estimateWaterEnable";
public static final String PREFERENCE_KEY_ESTIMATE_WATER_FORMULA = "estimateWaterFormula";
public static final String PREFERENCE_KEY_ESTIMATE_LBW = "estimateLBWEnable";
@@ -49,6 +56,14 @@ public class MeasurementPreferences extends PreferenceFragment implements Shared
public static final String PREFERENCE_KEY_ESTIMATE_FAT_FORMULA = "estimateFatFormula";
private Preference deleteAll;
+
+ private CheckBoxPreference fatEnable;
+ private SwitchPreference fatPercentageEnable;
+ private CheckBoxPreference waterEnable;
+ private SwitchPreference waterPercentageEnable;
+ private CheckBoxPreference muscleEnable;
+ private SwitchPreference musclePercentageEnable;
+
private CheckBoxPreference estimateWaterEnable;
private ListPreference estimateWaterFormula;
private CheckBoxPreference estimateLBWEnable;
@@ -72,6 +87,13 @@ public class MeasurementPreferences extends PreferenceFragment implements Shared
estimateFatEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_ESTIMATE_FAT);
estimateFatFormula = (ListPreference) findPreference(PREFERENCE_KEY_ESTIMATE_FAT_FORMULA);
+ fatEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_FAT);
+ fatPercentageEnable = (SwitchPreference) findPreference(PREFERENCE_KEY_FAT_PERCENTAGE);
+ waterEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_WATER);
+ waterPercentageEnable = (SwitchPreference) findPreference(PREFERENCE_KEY_WATER_PERCENTAGE);
+ muscleEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_MUSCLE);
+ musclePercentageEnable = (SwitchPreference) findPreference(PREFERENCE_KEY_MUSCLE_PERCENTAGE);
+
updateWaterListPreferences();
updateLBWListPreferences();
updateFatListPreferences();
@@ -167,6 +189,24 @@ public class MeasurementPreferences extends PreferenceFragment implements Shared
estimateFatFormula.setEnabled(false);
}
+ if (fatEnable.isChecked()) {
+ fatPercentageEnable.setEnabled(true);
+ } else {
+ fatPercentageEnable.setEnabled(false);
+ }
+
+ if (waterEnable.isChecked()) {
+ waterPercentageEnable.setEnabled(true);
+ } else {
+ waterPercentageEnable.setEnabled(false);
+ }
+
+ if (muscleEnable.isChecked()) {
+ musclePercentageEnable.setEnabled(true);
+ } else {
+ musclePercentageEnable.setEnabled(false);
+ }
+
estimateWaterFormula.setSummary(EstimatedWaterMetric.getEstimatedMetric(EstimatedWaterMetric.FORMULA.valueOf(estimateWaterFormula.getValue())).getName());
estimateLBWFormula.setSummary(EstimatedLBWMetric.getEstimatedMetric(EstimatedLBWMetric.FORMULA.valueOf(estimateLBWFormula.getValue())).getName());
estimateFatFormula.setSummary(EstimatedFatMetric.getEstimatedMetric(EstimatedFatMetric.FORMULA.valueOf(estimateFatFormula.getValue())).getName());
diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/FatMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/FatMeasurementView.java
index a7d6b242..89f8e130 100644
--- a/android_app/app/src/main/java/com/health/openscale/gui/views/FatMeasurementView.java
+++ b/android_app/app/src/main/java/com/health/openscale/gui/views/FatMeasurementView.java
@@ -21,12 +21,14 @@ import android.support.v4.content.ContextCompat;
import com.health.openscale.R;
import com.health.openscale.core.datatypes.ScaleMeasurement;
+import com.health.openscale.core.datatypes.ScaleUser;
import com.health.openscale.core.evaluation.EvaluationResult;
import com.health.openscale.core.evaluation.EvaluationSheet;
public class FatMeasurementView extends FloatMeasurementView {
private boolean estimateFatEnable;
+ private boolean percentageEnable;
public FatMeasurementView(Context context) {
super(context, context.getResources().getString(R.string.label_fat), ContextCompat.getDrawable(context, R.drawable.ic_fat));
@@ -36,26 +38,43 @@ public class FatMeasurementView extends FloatMeasurementView {
public void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("fatEnable", true));
estimateFatEnable = preferences.getBoolean("estimateFatEnable", false);
+ percentageEnable = preferences.getBoolean("fatPercentageEnable", true);
}
@Override
protected float getMeasurementValue(ScaleMeasurement measurement) {
- return measurement.getFat();
+ if (percentageEnable) {
+ return measurement.getFat();
+ }
+
+ return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getFat();
}
@Override
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
- measurement.setFat(value);
+ if (percentageEnable) {
+ measurement.setFat(value);
+ } else {
+ measurement.setFat(100.0f / measurement.getConvertedWeight(getScaleUser().getScaleUnit()) * value);
+ }
}
@Override
protected String getUnit() {
- return "%";
+ if (percentageEnable) {
+ return "%";
+ }
+
+ return ScaleUser.UNIT_STRING[getScaleUser().getScaleUnit()];
}
@Override
protected float getMaxValue() {
- return 80;
+ if (percentageEnable) {
+ return 80;
+ }
+
+ return 300;
}
@Override
diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/MuscleMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/MuscleMeasurementView.java
index 8751ffc9..594e3f29 100644
--- a/android_app/app/src/main/java/com/health/openscale/gui/views/MuscleMeasurementView.java
+++ b/android_app/app/src/main/java/com/health/openscale/gui/views/MuscleMeasurementView.java
@@ -21,11 +21,14 @@ import android.support.v4.content.ContextCompat;
import com.health.openscale.R;
import com.health.openscale.core.datatypes.ScaleMeasurement;
+import com.health.openscale.core.datatypes.ScaleUser;
import com.health.openscale.core.evaluation.EvaluationResult;
import com.health.openscale.core.evaluation.EvaluationSheet;
public class MuscleMeasurementView extends FloatMeasurementView {
+ private boolean percentageEnable;
+
public MuscleMeasurementView(Context context) {
super(context, context.getResources().getString(R.string.label_muscle), ContextCompat.getDrawable(context, R.drawable.ic_muscle));
}
@@ -33,26 +36,43 @@ public class MuscleMeasurementView extends FloatMeasurementView {
@Override
public void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("muscleEnable", true));
+ percentageEnable = preferences.getBoolean("musclePercentageEnable", true);
}
@Override
protected float getMeasurementValue(ScaleMeasurement measurement) {
- return measurement.getMuscle();
+ if (percentageEnable) {
+ return measurement.getMuscle();
+ }
+
+ return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getMuscle();
}
@Override
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
- measurement.setMuscle(value);
+ if (percentageEnable) {
+ measurement.setMuscle(value);
+ } else {
+ measurement.setMuscle(100.0f / measurement.getConvertedWeight(getScaleUser().getScaleUnit()) * value);
+ }
}
@Override
protected String getUnit() {
- return "%";
+ if (percentageEnable) {
+ return "%";
+ }
+
+ return ScaleUser.UNIT_STRING[getScaleUser().getScaleUnit()];
}
@Override
protected float getMaxValue() {
- return 80;
+ if (percentageEnable) {
+ return 80;
+ }
+
+ return 300;
}
@Override
diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/WaterMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/WaterMeasurementView.java
index b901f5db..1c15e6f5 100644
--- a/android_app/app/src/main/java/com/health/openscale/gui/views/WaterMeasurementView.java
+++ b/android_app/app/src/main/java/com/health/openscale/gui/views/WaterMeasurementView.java
@@ -21,12 +21,14 @@ import android.support.v4.content.ContextCompat;
import com.health.openscale.R;
import com.health.openscale.core.datatypes.ScaleMeasurement;
+import com.health.openscale.core.datatypes.ScaleUser;
import com.health.openscale.core.evaluation.EvaluationResult;
import com.health.openscale.core.evaluation.EvaluationSheet;
public class WaterMeasurementView extends FloatMeasurementView {
private boolean estimateWaterEnable;
+ private boolean percentageEnable;
public WaterMeasurementView(Context context) {
super(context, context.getResources().getString(R.string.label_water), ContextCompat.getDrawable(context, R.drawable.ic_water));
@@ -36,26 +38,43 @@ public class WaterMeasurementView extends FloatMeasurementView {
public void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("waterEnable", true));
estimateWaterEnable = preferences.getBoolean("estimateWaterEnable", false);
+ percentageEnable = preferences.getBoolean("waterPercentageEnable", true);
}
@Override
protected float getMeasurementValue(ScaleMeasurement measurement) {
- return measurement.getWater();
+ if (percentageEnable) {
+ return measurement.getWater();
+ }
+
+ return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getWater();
}
@Override
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
- measurement.setWater(value);
+ if (percentageEnable) {
+ measurement.setWater(value);
+ } else {
+ measurement.setWater(100.0f / measurement.getConvertedWeight(getScaleUser().getScaleUnit()) * value);
+ }
}
@Override
protected String getUnit() {
- return "%";
+ if (percentageEnable) {
+ return "%";
+ }
+
+ return ScaleUser.UNIT_STRING[getScaleUser().getScaleUnit()];
}
@Override
protected float getMaxValue() {
- return 80;
+ if (percentageEnable) {
+ return 80;
+ }
+
+ return 300;
}
@Override
diff --git a/android_app/app/src/main/res/values-de/strings.xml b/android_app/app/src/main/res/values-de/strings.xml
index b6d6b07e..a37f6dc4 100644
--- a/android_app/app/src/main/res/values-de/strings.xml
+++ b/android_app/app/src/main/res/values-de/strings.xml
@@ -160,4 +160,7 @@
schließen
Kein Bluetooth Gerät ausgewählt
Messung mit gleichen Datum und Uhrzeit exisitiert bereits
+ Körperfett in %
+ Wasseranteil in %
+ Muskelanteil in %
\ No newline at end of file
diff --git a/android_app/app/src/main/res/values/strings.xml b/android_app/app/src/main/res/values/strings.xml
index 718796a4..38d7aa8c 100644
--- a/android_app/app/src/main/res/values/strings.xml
+++ b/android_app/app/src/main/res/values/strings.xml
@@ -40,6 +40,10 @@
Bone mass
Smart User assignment
+ Body fat in %
+ Body water in %
+ Muscle in %
+
- %d day
- %d days
diff --git a/android_app/app/src/main/res/xml/measurement_preferences.xml b/android_app/app/src/main/res/xml/measurement_preferences.xml
index 21609e90..aa23c650 100644
--- a/android_app/app/src/main/res/xml/measurement_preferences.xml
+++ b/android_app/app/src/main/res/xml/measurement_preferences.xml
@@ -2,8 +2,11 @@
+
+
+