1
0
mirror of https://github.com/oliexdev/openScale.git synced 2025-08-26 09:44:31 +02:00

added options to select if body fat, body water or muscle are displayed as absolute or relative values.

This commit is contained in:
OliE
2018-01-12 17:12:45 +01:00
parent 4ac9f1e967
commit 7fce43e8ea
7 changed files with 120 additions and 12 deletions

View File

@@ -27,6 +27,7 @@ import android.preference.Preference;
import android.preference.PreferenceFragment; import android.preference.PreferenceFragment;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.preference.SwitchPreference;
import android.widget.Toast; import android.widget.Toast;
import com.health.openscale.R; import com.health.openscale.R;
@@ -41,6 +42,12 @@ import java.util.Set;
public class MeasurementPreferences extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { public class MeasurementPreferences extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
public static final String PREFERENCE_KEY_DELETE_ALL = "deleteAll"; 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 = "estimateWaterEnable";
public static final String PREFERENCE_KEY_ESTIMATE_WATER_FORMULA = "estimateWaterFormula"; public static final String PREFERENCE_KEY_ESTIMATE_WATER_FORMULA = "estimateWaterFormula";
public static final String PREFERENCE_KEY_ESTIMATE_LBW = "estimateLBWEnable"; 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"; public static final String PREFERENCE_KEY_ESTIMATE_FAT_FORMULA = "estimateFatFormula";
private Preference deleteAll; 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 CheckBoxPreference estimateWaterEnable;
private ListPreference estimateWaterFormula; private ListPreference estimateWaterFormula;
private CheckBoxPreference estimateLBWEnable; private CheckBoxPreference estimateLBWEnable;
@@ -72,6 +87,13 @@ public class MeasurementPreferences extends PreferenceFragment implements Shared
estimateFatEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_ESTIMATE_FAT); estimateFatEnable = (CheckBoxPreference) findPreference(PREFERENCE_KEY_ESTIMATE_FAT);
estimateFatFormula = (ListPreference) findPreference(PREFERENCE_KEY_ESTIMATE_FAT_FORMULA); 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(); updateWaterListPreferences();
updateLBWListPreferences(); updateLBWListPreferences();
updateFatListPreferences(); updateFatListPreferences();
@@ -167,6 +189,24 @@ public class MeasurementPreferences extends PreferenceFragment implements Shared
estimateFatFormula.setEnabled(false); 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()); estimateWaterFormula.setSummary(EstimatedWaterMetric.getEstimatedMetric(EstimatedWaterMetric.FORMULA.valueOf(estimateWaterFormula.getValue())).getName());
estimateLBWFormula.setSummary(EstimatedLBWMetric.getEstimatedMetric(EstimatedLBWMetric.FORMULA.valueOf(estimateLBWFormula.getValue())).getName()); estimateLBWFormula.setSummary(EstimatedLBWMetric.getEstimatedMetric(EstimatedLBWMetric.FORMULA.valueOf(estimateLBWFormula.getValue())).getName());
estimateFatFormula.setSummary(EstimatedFatMetric.getEstimatedMetric(EstimatedFatMetric.FORMULA.valueOf(estimateFatFormula.getValue())).getName()); estimateFatFormula.setSummary(EstimatedFatMetric.getEstimatedMetric(EstimatedFatMetric.FORMULA.valueOf(estimateFatFormula.getValue())).getName());

View File

@@ -21,12 +21,14 @@ import android.support.v4.content.ContextCompat;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.core.datatypes.ScaleMeasurement; 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.EvaluationResult;
import com.health.openscale.core.evaluation.EvaluationSheet; import com.health.openscale.core.evaluation.EvaluationSheet;
public class FatMeasurementView extends FloatMeasurementView { public class FatMeasurementView extends FloatMeasurementView {
private boolean estimateFatEnable; private boolean estimateFatEnable;
private boolean percentageEnable;
public FatMeasurementView(Context context) { public FatMeasurementView(Context context) {
super(context, context.getResources().getString(R.string.label_fat), ContextCompat.getDrawable(context, R.drawable.ic_fat)); 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) { public void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("fatEnable", true)); setVisible(preferences.getBoolean("fatEnable", true));
estimateFatEnable = preferences.getBoolean("estimateFatEnable", false); estimateFatEnable = preferences.getBoolean("estimateFatEnable", false);
percentageEnable = preferences.getBoolean("fatPercentageEnable", true);
} }
@Override @Override
protected float getMeasurementValue(ScaleMeasurement measurement) { protected float getMeasurementValue(ScaleMeasurement measurement) {
return measurement.getFat(); if (percentageEnable) {
return measurement.getFat();
}
return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getFat();
} }
@Override @Override
protected void setMeasurementValue(float value, ScaleMeasurement measurement) { 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 @Override
protected String getUnit() { protected String getUnit() {
return "%"; if (percentageEnable) {
return "%";
}
return ScaleUser.UNIT_STRING[getScaleUser().getScaleUnit()];
} }
@Override @Override
protected float getMaxValue() { protected float getMaxValue() {
return 80; if (percentageEnable) {
return 80;
}
return 300;
} }
@Override @Override

View File

@@ -21,11 +21,14 @@ import android.support.v4.content.ContextCompat;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.core.datatypes.ScaleMeasurement; 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.EvaluationResult;
import com.health.openscale.core.evaluation.EvaluationSheet; import com.health.openscale.core.evaluation.EvaluationSheet;
public class MuscleMeasurementView extends FloatMeasurementView { public class MuscleMeasurementView extends FloatMeasurementView {
private boolean percentageEnable;
public MuscleMeasurementView(Context context) { public MuscleMeasurementView(Context context) {
super(context, context.getResources().getString(R.string.label_muscle), ContextCompat.getDrawable(context, R.drawable.ic_muscle)); 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 @Override
public void updatePreferences(SharedPreferences preferences) { public void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("muscleEnable", true)); setVisible(preferences.getBoolean("muscleEnable", true));
percentageEnable = preferences.getBoolean("musclePercentageEnable", true);
} }
@Override @Override
protected float getMeasurementValue(ScaleMeasurement measurement) { protected float getMeasurementValue(ScaleMeasurement measurement) {
return measurement.getMuscle(); if (percentageEnable) {
return measurement.getMuscle();
}
return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getMuscle();
} }
@Override @Override
protected void setMeasurementValue(float value, ScaleMeasurement measurement) { 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 @Override
protected String getUnit() { protected String getUnit() {
return "%"; if (percentageEnable) {
return "%";
}
return ScaleUser.UNIT_STRING[getScaleUser().getScaleUnit()];
} }
@Override @Override
protected float getMaxValue() { protected float getMaxValue() {
return 80; if (percentageEnable) {
return 80;
}
return 300;
} }
@Override @Override

View File

@@ -21,12 +21,14 @@ import android.support.v4.content.ContextCompat;
import com.health.openscale.R; import com.health.openscale.R;
import com.health.openscale.core.datatypes.ScaleMeasurement; 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.EvaluationResult;
import com.health.openscale.core.evaluation.EvaluationSheet; import com.health.openscale.core.evaluation.EvaluationSheet;
public class WaterMeasurementView extends FloatMeasurementView { public class WaterMeasurementView extends FloatMeasurementView {
private boolean estimateWaterEnable; private boolean estimateWaterEnable;
private boolean percentageEnable;
public WaterMeasurementView(Context context) { public WaterMeasurementView(Context context) {
super(context, context.getResources().getString(R.string.label_water), ContextCompat.getDrawable(context, R.drawable.ic_water)); 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) { public void updatePreferences(SharedPreferences preferences) {
setVisible(preferences.getBoolean("waterEnable", true)); setVisible(preferences.getBoolean("waterEnable", true));
estimateWaterEnable = preferences.getBoolean("estimateWaterEnable", false); estimateWaterEnable = preferences.getBoolean("estimateWaterEnable", false);
percentageEnable = preferences.getBoolean("waterPercentageEnable", true);
} }
@Override @Override
protected float getMeasurementValue(ScaleMeasurement measurement) { protected float getMeasurementValue(ScaleMeasurement measurement) {
return measurement.getWater(); if (percentageEnable) {
return measurement.getWater();
}
return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getWater();
} }
@Override @Override
protected void setMeasurementValue(float value, ScaleMeasurement measurement) { 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 @Override
protected String getUnit() { protected String getUnit() {
return "%"; if (percentageEnable) {
return "%";
}
return ScaleUser.UNIT_STRING[getScaleUser().getScaleUnit()];
} }
@Override @Override
protected float getMaxValue() { protected float getMaxValue() {
return 80; if (percentageEnable) {
return 80;
}
return 300;
} }
@Override @Override

View File

@@ -160,4 +160,7 @@
<string name="close_drawer">schließen</string> <string name="close_drawer">schließen</string>
<string name="info_bluetooth_no_device_set">Kein Bluetooth Gerät ausgewählt</string> <string name="info_bluetooth_no_device_set">Kein Bluetooth Gerät ausgewählt</string>
<string name="info_new_data_duplicated">Messung mit gleichen Datum und Uhrzeit exisitiert bereits</string> <string name="info_new_data_duplicated">Messung mit gleichen Datum und Uhrzeit exisitiert bereits</string>
<string name="label_fat_percentage">Körperfett in %</string>
<string name="label_water_percentage">Wasseranteil in %</string>
<string name="label_muscle_percentage">Muskelanteil in %</string>
</resources> </resources>

View File

@@ -40,6 +40,10 @@
<string name="label_bone">Bone mass</string> <string name="label_bone">Bone mass</string>
<string name="label_smartUserAssign">Smart User assignment</string> <string name="label_smartUserAssign">Smart User assignment</string>
<string name="label_fat_percentage">Body fat in %</string>
<string name="label_water_percentage">Body water in %</string>
<string name="label_muscle_percentage">Muscle in %</string>
<plurals name="label_days"> <plurals name="label_days">
<item quantity="one">%d day</item> <item quantity="one">%d day</item>
<item quantity="other">%d days</item> <item quantity="other">%d days</item>

View File

@@ -2,8 +2,11 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/label_category_display"> <PreferenceCategory android:title="@string/label_category_display">
<CheckBoxPreference android:title="@string/label_fat" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="fatEnable" android:defaultValue="true"/> <CheckBoxPreference android:title="@string/label_fat" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="fatEnable" android:defaultValue="true"/>
<SwitchPreference android:title="@string/label_fat_percentage" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key ="fatPercentageEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_water" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waterEnable" android:defaultValue="true"/> <CheckBoxPreference android:title="@string/label_water" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waterEnable" android:defaultValue="true"/>
<SwitchPreference android:title="@string/label_water_percentage" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key ="waterPercentageEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_muscle" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="muscleEnable" android:defaultValue="true"/> <CheckBoxPreference android:title="@string/label_muscle" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="muscleEnable" android:defaultValue="true"/>
<SwitchPreference android:title="@string/label_muscle_percentage" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key ="musclePercentageEnable" android:defaultValue="true"/>
<CheckBoxPreference android:title="@string/label_lbw" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="lbwEnable" android:defaultValue="false"/> <CheckBoxPreference android:title="@string/label_lbw" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="lbwEnable" android:defaultValue="false"/>
<CheckBoxPreference android:title="@string/label_bone" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="boneEnable" android:defaultValue="false"/> <CheckBoxPreference android:title="@string/label_bone" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="boneEnable" android:defaultValue="false"/>
<CheckBoxPreference android:title="@string/label_waist" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waistEnable" android:defaultValue="false"/> <CheckBoxPreference android:title="@string/label_waist" android:summaryOn="@string/info_is_enable" android:summaryOff="@string/info_is_not_enable" android:key="waistEnable" android:defaultValue="false"/>