From d97d42660445e21fe38fbb7e3e8380bcc28d1296 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Fri, 23 Mar 2018 00:21:07 +0100 Subject: [PATCH] Move handling of estimation/percentage enabled to base class --- .../gui/views/FatMeasurementView.java | 25 +++-------- .../gui/views/FloatMeasurementView.java | 12 +++--- .../gui/views/LBWMeasurementView.java | 13 +----- .../openscale/gui/views/MeasurementView.java | 41 +++++++++++-------- .../gui/views/MuscleMeasurementView.java | 19 +++------ .../gui/views/WaterMeasurementView.java | 25 +++-------- 6 files changed, 49 insertions(+), 86 deletions(-) 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 8c4ac08b..dd2c02b3 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 @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.Color; import android.support.v4.content.ContextCompat; @@ -29,9 +28,6 @@ public class FatMeasurementView extends FloatMeasurementView { public static final String KEY = "fat"; private static final String[] DEPENDENCY = {WeightMeasurementView.KEY}; - 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)); } @@ -47,15 +43,8 @@ public class FatMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - super.updatePreferences(preferences); - estimateFatEnable = preferences.getBoolean("estimateFatEnable", false); - percentageEnable = preferences.getBoolean("fatPercentageEnable", true); - } - - @Override - protected boolean shouldConvertPercentageToAbsoluteWeight() { - return !percentageEnable; + protected boolean canConvertPercentageToAbsoluteWeight() { + return true; } @Override @@ -70,11 +59,11 @@ public class FatMeasurementView extends FloatMeasurementView { @Override public String getUnit() { - if (percentageEnable) { - return "%"; + if (shouldConvertPercentageToAbsoluteWeight()) { + return getScaleUser().getScaleUnit().toString(); } - return getScaleUser().getScaleUnit().toString(); + return "%"; } @Override @@ -88,9 +77,7 @@ public class FatMeasurementView extends FloatMeasurementView { } @Override - protected boolean isEstimationEnabled() { - return estimateFatEnable; - } + protected boolean isEstimationSupported() { return true; } @Override protected EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) { diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/FloatMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/FloatMeasurementView.java index 81866ac0..791c3443 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/FloatMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/FloatMeasurementView.java @@ -227,18 +227,20 @@ public abstract class FloatMeasurementView extends MeasurementView { public abstract int getColor(); - protected boolean isEstimationEnabled() { - return false; - } + protected boolean isEstimationSupported() { return false; } protected abstract EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value); private boolean useAutoValue() { - return isEstimationEnabled() && getMeasurementMode() == MeasurementViewMode.ADD; + return isEstimationSupported() + && getSettings().isEstimationEnabled() + && getMeasurementMode() == MeasurementViewMode.ADD; } + protected boolean canConvertPercentageToAbsoluteWeight() { return false; } protected boolean shouldConvertPercentageToAbsoluteWeight() { - return false; + return canConvertPercentageToAbsoluteWeight() + && !getSettings().isPercentageEnabled(); } private float makeAbsoluteWeight(float percentage) { diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/LBWMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/LBWMeasurementView.java index e556ce1c..83caf79b 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/LBWMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/LBWMeasurementView.java @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.Color; import android.support.v4.content.ContextCompat; @@ -29,8 +28,6 @@ public class LBWMeasurementView extends FloatMeasurementView { public static final String KEY = "lbw"; private static final String[] DEPENDENCY = {}; - private boolean estimateLBWEnable; - public LBWMeasurementView(Context context) { super(context, context.getResources().getString(R.string.label_lbw), ContextCompat.getDrawable(context, R.drawable.ic_lbw)); } @@ -45,12 +42,6 @@ public class LBWMeasurementView extends FloatMeasurementView { return DEPENDENCY; } - @Override - public void updatePreferences(SharedPreferences preferences) { - super.updatePreferences(preferences); - estimateLBWEnable = preferences.getBoolean("estimateLBWEnable", false); - } - @Override protected float getMeasurementValue(ScaleMeasurement measurement) { return measurement.getLbw(); @@ -77,9 +68,7 @@ public class LBWMeasurementView extends FloatMeasurementView { } @Override - protected boolean isEstimationEnabled() { - return estimateLBWEnable; - } + protected boolean isEstimationSupported() { return true; } @Override protected EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) { diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java index df82cc12..e2aaaa91 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/MeasurementView.java @@ -62,7 +62,7 @@ public abstract class MeasurementView extends TableLayout { public static String PREF_MEASUREMENT_ORDER = "measurementOrder"; - private static String PREFERENCE_SUFFIX_ENABLE = "Enable"; + private MeasurementViewSettings settings; private TableRow measurementRow; private ImageView iconView; @@ -78,13 +78,12 @@ public abstract class MeasurementView extends TableLayout { private MeasurementViewUpdateListener updateListener = null; private MeasurementViewMode measurementMode = VIEW; - private static SharedPreferences prefs; - + private boolean isDisabledByDependency = false; private boolean updateViews = true; public MeasurementView(Context context, String text, Drawable icon) { super(context); - prefs = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String app_theme = prefs.getString("app_theme", "Light"); if (app_theme.equals("Dark")) { @@ -99,7 +98,10 @@ public abstract class MeasurementView extends TableLayout { public enum DateTimeOrder { FIRST, LAST, NONE } - public static final List getMeasurementList(Context context, DateTimeOrder dateTimeOrder) { + public static final List getMeasurementList( + Context context, DateTimeOrder dateTimeOrder) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + final List sorted = new ArrayList<>(); if (dateTimeOrder == DateTimeOrder.FIRST) { sorted.add(new DateMeasurementView(context)); @@ -247,8 +249,12 @@ public abstract class MeasurementView extends TableLayout { public abstract String getKey(); public abstract String[] getDependencyKeys(); - public static String getPreferenceKey(String key, String suffix) { - return key + suffix; + public MeasurementViewSettings getSettings() { + if (settings == null) { + settings = new MeasurementViewSettings( + PreferenceManager.getDefaultSharedPreferences(getContext()), getKey()); + } + return settings; } public abstract void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement); @@ -259,19 +265,16 @@ public abstract class MeasurementView extends TableLayout { @CallSuper public void updatePreferences(SharedPreferences prefs) { - boolean enable = prefs.getBoolean( - getPreferenceKey(getKey(), PREFERENCE_SUFFIX_ENABLE), true); - - if (enable) { - for (String dep : getDependencyKeys()) { - if (!prefs.getBoolean( - getPreferenceKey(dep, PREFERENCE_SUFFIX_ENABLE), true)) { - enable = false; - break; - } + isDisabledByDependency = false; + for (String dep : getDependencyKeys()) { + MeasurementViewSettings depSettings = new MeasurementViewSettings(prefs, dep); + if (!depSettings.isEnabled()) { + isDisabledByDependency = true; + break; } } + boolean enable = !isDisabledByDependency && getSettings().isEnabled(); setVisible(enable); } @@ -353,6 +356,10 @@ public abstract class MeasurementView extends TableLayout { showEvaluatorRow(false); } + public boolean getIsDisabledByDependency() { + return isDisabledByDependency; + } + protected void setVisible(boolean isVisible) { if (isVisible) { measurementRow.setVisibility(View.VISIBLE); 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 3c4c569d..a9f98513 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 @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.Color; import android.support.v4.content.ContextCompat; @@ -29,8 +28,6 @@ public class MuscleMeasurementView extends FloatMeasurementView { public static final String KEY = "muscle"; private static final String[] DEPENDENCY = {WeightMeasurementView.KEY}; - private boolean percentageEnable; - public MuscleMeasurementView(Context context) { super(context, context.getResources().getString(R.string.label_muscle), ContextCompat.getDrawable(context, R.drawable.ic_muscle)); } @@ -46,14 +43,8 @@ public class MuscleMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - super.updatePreferences(preferences); - percentageEnable = preferences.getBoolean("musclePercentageEnable", true); - } - - @Override - protected boolean shouldConvertPercentageToAbsoluteWeight() { - return !percentageEnable; + protected boolean canConvertPercentageToAbsoluteWeight() { + return true; } @Override @@ -68,11 +59,11 @@ public class MuscleMeasurementView extends FloatMeasurementView { @Override public String getUnit() { - if (percentageEnable) { - return "%"; + if (shouldConvertPercentageToAbsoluteWeight()) { + return getScaleUser().getScaleUnit().toString(); } - return getScaleUser().getScaleUnit().toString(); + return "%"; } @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 23bf2eaf..27c4e59b 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 @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.graphics.Color; import android.support.v4.content.ContextCompat; @@ -29,9 +28,6 @@ public class WaterMeasurementView extends FloatMeasurementView { public static final String KEY = "water"; private static final String[] DEPENDENCY = {WeightMeasurementView.KEY}; - 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)); } @@ -47,15 +43,8 @@ public class WaterMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - super.updatePreferences(preferences); - estimateWaterEnable = preferences.getBoolean("estimateWaterEnable", false); - percentageEnable = preferences.getBoolean("waterPercentageEnable", true); - } - - @Override - protected boolean shouldConvertPercentageToAbsoluteWeight() { - return !percentageEnable; + protected boolean canConvertPercentageToAbsoluteWeight() { + return true; } @Override @@ -70,11 +59,11 @@ public class WaterMeasurementView extends FloatMeasurementView { @Override public String getUnit() { - if (percentageEnable) { - return "%"; + if (shouldConvertPercentageToAbsoluteWeight()) { + return getScaleUser().getScaleUnit().toString(); } - return getScaleUser().getScaleUnit().toString(); + return "%"; } @Override @@ -88,9 +77,7 @@ public class WaterMeasurementView extends FloatMeasurementView { } @Override - protected boolean isEstimationEnabled() { - return estimateWaterEnable; - } + protected boolean isEstimationSupported() { return true; } @Override protected EvaluationResult evaluateSheet(EvaluationSheet evalSheet, float value) {