mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-21 07:51:46 +02:00
Move conversion to/from absolute/relative weight to base class
This commit is contained in:
@@ -47,21 +47,18 @@ public class FatMeasurementView extends FloatMeasurementView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getMeasurementValue(ScaleMeasurement measurement) {
|
protected boolean shouldConvertPercentageToAbsoluteWeight() {
|
||||||
if (percentageEnable) {
|
return !percentageEnable;
|
||||||
return measurement.getFat();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getFat();
|
@Override
|
||||||
|
protected float getMeasurementValue(ScaleMeasurement measurement) {
|
||||||
|
return measurement.getFat();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
|
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
|
||||||
if (percentageEnable) {
|
|
||||||
measurement.setFat(value);
|
measurement.setFat(value);
|
||||||
} else {
|
|
||||||
measurement.setFat(100.0f / measurement.getConvertedWeight(getScaleUser().getScaleUnit()) * value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -75,11 +72,7 @@ public class FatMeasurementView extends FloatMeasurementView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getMaxValue() {
|
protected float getMaxValue() {
|
||||||
if (percentageEnable) {
|
return maybeConvertPercentageToAbsolute(80);
|
||||||
return 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 300;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -54,6 +54,7 @@ public abstract class FloatMeasurementView extends MeasurementView {
|
|||||||
private Date dateTime;
|
private Date dateTime;
|
||||||
private float value = NO_VALUE;
|
private float value = NO_VALUE;
|
||||||
private float previousValue = NO_VALUE;
|
private float previousValue = NO_VALUE;
|
||||||
|
private float userConvertedWeight;
|
||||||
private EvaluationResult evaluationResult;
|
private EvaluationResult evaluationResult;
|
||||||
|
|
||||||
private String nameText;
|
private String nameText;
|
||||||
@@ -227,6 +228,38 @@ public abstract class FloatMeasurementView extends MeasurementView {
|
|||||||
return isEstimationEnabled() && getMeasurementMode() == MeasurementViewMode.ADD;
|
return isEstimationEnabled() && getMeasurementMode() == MeasurementViewMode.ADD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected boolean shouldConvertPercentageToAbsoluteWeight() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float makeAbsoluteWeight(float percentage) {
|
||||||
|
return userConvertedWeight / 100.0f * percentage;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float makeRelativeWeight(float absolute) {
|
||||||
|
return 100.0f / userConvertedWeight * absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected float maybeConvertPercentageToAbsolute(float value) {
|
||||||
|
if (shouldConvertPercentageToAbsoluteWeight()) {
|
||||||
|
return makeAbsoluteWeight(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateUserConvertedWeight(ScaleMeasurement measurement) {
|
||||||
|
if (shouldConvertPercentageToAbsoluteWeight()) {
|
||||||
|
// Make sure weight is never 0 to avoid division by 0
|
||||||
|
userConvertedWeight = Math.max(1.0f,
|
||||||
|
measurement.getConvertedWeight(getScaleUser().getScaleUnit()));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// Only valid when shouldConvertPercentageToAbsoluteWeight() returns true
|
||||||
|
userConvertedWeight = -1.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement) {
|
public void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement) {
|
||||||
dateTime = measurement.getDateTime();
|
dateTime = measurement.getDateTime();
|
||||||
@@ -235,9 +268,21 @@ public abstract class FloatMeasurementView extends MeasurementView {
|
|||||||
float newPreviousValue = NO_VALUE;
|
float newPreviousValue = NO_VALUE;
|
||||||
|
|
||||||
if (!useAutoValue()) {
|
if (!useAutoValue()) {
|
||||||
newValue = clampValue(getMeasurementValue(measurement));
|
updateUserConvertedWeight(measurement);
|
||||||
|
|
||||||
|
newValue = getMeasurementValue(measurement);
|
||||||
|
newValue = maybeConvertPercentageToAbsolute(newValue);
|
||||||
|
newValue = clampValue(newValue);
|
||||||
|
|
||||||
if (previousMeasurement != null) {
|
if (previousMeasurement != null) {
|
||||||
newPreviousValue = clampValue(getMeasurementValue(previousMeasurement));
|
float saveUserConvertedWeight = userConvertedWeight;
|
||||||
|
updateUserConvertedWeight(previousMeasurement);
|
||||||
|
|
||||||
|
newPreviousValue = getMeasurementValue(previousMeasurement);
|
||||||
|
newPreviousValue = maybeConvertPercentageToAbsolute(newPreviousValue);
|
||||||
|
newPreviousValue = clampValue(newPreviousValue);
|
||||||
|
|
||||||
|
userConvertedWeight = saveUserConvertedWeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,9 +292,16 @@ public abstract class FloatMeasurementView extends MeasurementView {
|
|||||||
@Override
|
@Override
|
||||||
public void saveTo(ScaleMeasurement measurement) {
|
public void saveTo(ScaleMeasurement measurement) {
|
||||||
if (!useAutoValue()) {
|
if (!useAutoValue()) {
|
||||||
|
if (shouldConvertPercentageToAbsoluteWeight()) {
|
||||||
|
// Make sure to use the current weight to get a correct percentage
|
||||||
|
updateUserConvertedWeight(measurement);
|
||||||
|
setMeasurementValue(makeRelativeWeight(value), measurement);
|
||||||
|
}
|
||||||
|
else {
|
||||||
setMeasurementValue(value, measurement);
|
setMeasurementValue(value, measurement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void restoreState(Bundle state) {
|
public void restoreState(Bundle state) {
|
||||||
|
@@ -45,21 +45,18 @@ public class MuscleMeasurementView extends FloatMeasurementView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getMeasurementValue(ScaleMeasurement measurement) {
|
protected boolean shouldConvertPercentageToAbsoluteWeight() {
|
||||||
if (percentageEnable) {
|
return !percentageEnable;
|
||||||
return measurement.getMuscle();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getMuscle();
|
@Override
|
||||||
|
protected float getMeasurementValue(ScaleMeasurement measurement) {
|
||||||
|
return measurement.getMuscle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
|
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
|
||||||
if (percentageEnable) {
|
|
||||||
measurement.setMuscle(value);
|
measurement.setMuscle(value);
|
||||||
} else {
|
|
||||||
measurement.setMuscle(100.0f / measurement.getConvertedWeight(getScaleUser().getScaleUnit()) * value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -73,11 +70,7 @@ public class MuscleMeasurementView extends FloatMeasurementView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getMaxValue() {
|
protected float getMaxValue() {
|
||||||
if (percentageEnable) {
|
return maybeConvertPercentageToAbsolute(80);
|
||||||
return 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 300;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -47,21 +47,18 @@ public class WaterMeasurementView extends FloatMeasurementView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getMeasurementValue(ScaleMeasurement measurement) {
|
protected boolean shouldConvertPercentageToAbsoluteWeight() {
|
||||||
if (percentageEnable) {
|
return !percentageEnable;
|
||||||
return measurement.getWater();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return measurement.getConvertedWeight(getScaleUser().getScaleUnit()) / 100.0f * measurement.getWater();
|
@Override
|
||||||
|
protected float getMeasurementValue(ScaleMeasurement measurement) {
|
||||||
|
return measurement.getWater();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
|
protected void setMeasurementValue(float value, ScaleMeasurement measurement) {
|
||||||
if (percentageEnable) {
|
|
||||||
measurement.setWater(value);
|
measurement.setWater(value);
|
||||||
} else {
|
|
||||||
measurement.setWater(100.0f / measurement.getConvertedWeight(getScaleUser().getScaleUnit()) * value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -75,11 +72,7 @@ public class WaterMeasurementView extends FloatMeasurementView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected float getMaxValue() {
|
protected float getMaxValue() {
|
||||||
if (percentageEnable) {
|
return maybeConvertPercentageToAbsolute(80);
|
||||||
return 80;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 300;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Reference in New Issue
Block a user