From 34b2db7cabdf7884cdb2bee5f84427cd03e66aa7 Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Tue, 20 Mar 2018 18:05:58 +0100 Subject: [PATCH] Move enable logic to base class --- .../gui/views/BMIMeasurementView.java | 5 ++-- .../gui/views/BMRMeasurementView.java | 5 ++-- .../gui/views/BoneMeasurementView.java | 6 ----- .../gui/views/CommentMeasurementView.java | 6 ----- .../gui/views/DateMeasurementView.java | 6 ----- .../gui/views/FatMeasurementView.java | 2 +- .../gui/views/HipMeasurementView.java | 6 ----- .../gui/views/LBWMeasurementView.java | 2 +- .../openscale/gui/views/MeasurementView.java | 26 ++++++++++++++++++- .../gui/views/MuscleMeasurementView.java | 2 +- .../gui/views/TimeMeasurementView.java | 6 ----- .../gui/views/WHRMeasurementView.java | 6 ++--- .../gui/views/WHtRMeasurementView.java | 5 ++-- .../gui/views/WaistMeasurementView.java | 6 ----- .../gui/views/WaterMeasurementView.java | 2 +- .../gui/views/WeightMeasurementView.java | 6 ----- 16 files changed, 37 insertions(+), 60 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/BMIMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/BMIMeasurementView.java index fd7d9ff4..36cd40e5 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/BMIMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/BMIMeasurementView.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; @@ -38,8 +37,8 @@ public class BMIMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("weightEnable", true)); + public String[] getDependencyKeys() { + return new String[] {WeightMeasurementView.KEY}; } @Override diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/BMRMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/BMRMeasurementView.java index 2c34f5ee..04cc6caf 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/BMRMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/BMRMeasurementView.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; @@ -40,8 +39,8 @@ public class BMRMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("weightEnable", true)); + public String[] getDependencyKeys() { + return new String[] {WeightMeasurementView.KEY}; } @Override diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/BoneMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/BoneMeasurementView.java index 80809105..e964200c 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/BoneMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/BoneMeasurementView.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; @@ -37,11 +36,6 @@ public class BoneMeasurementView extends FloatMeasurementView { return KEY; } - @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("boneEnable", false)); - } - @Override protected float getMeasurementValue(ScaleMeasurement measurement) { return measurement.getBone(); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/CommentMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/CommentMeasurementView.java index 8946506d..fbfd31d6 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/CommentMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/CommentMeasurementView.java @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.text.InputType; @@ -67,11 +66,6 @@ public class CommentMeasurementView extends MeasurementView { state.putString(getKey(), comment); } - @Override - public void updatePreferences(SharedPreferences preferences) { - // Empty - } - @Override public String getValueAsString() { return comment; diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/DateMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/DateMeasurementView.java index 1cffed7c..b9742b58 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/DateMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/DateMeasurementView.java @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.view.View; @@ -82,11 +81,6 @@ public class DateMeasurementView extends MeasurementView { state.putLong(getKey(), date.getTime()); } - @Override - public void updatePreferences(SharedPreferences preferences) { - // Empty - } - @Override public String getValueAsString() { return dateFormat.format(date); 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 ca00b91c..145fa8f1 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 @@ -42,7 +42,7 @@ public class FatMeasurementView extends FloatMeasurementView { @Override public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("fatEnable", true)); + super.updatePreferences(preferences); estimateFatEnable = preferences.getBoolean("estimateFatEnable", false); percentageEnable = preferences.getBoolean("fatPercentageEnable", true); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/HipMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/HipMeasurementView.java index f1a59022..622b3762 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/HipMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/HipMeasurementView.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; @@ -37,11 +36,6 @@ public class HipMeasurementView extends FloatMeasurementView { return KEY; } - @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("hipEnable", false)); - } - @Override protected float getMeasurementValue(ScaleMeasurement measurement) { return measurement.getHip(); 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 40dd91c9..37f5b1a9 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 @@ -41,7 +41,7 @@ public class LBWMeasurementView extends FloatMeasurementView { @Override public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("lbwEnable", false)); + super.updatePreferences(preferences); estimateLBWEnable = preferences.getBoolean("estimateLBWEnable", false); } 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 eaf2b306..80d77b01 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 @@ -23,6 +23,7 @@ import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.preference.PreferenceManager; +import android.support.annotation.CallSuper; import android.support.v4.content.ContextCompat; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -61,6 +62,8 @@ public abstract class MeasurementView extends TableLayout { public static String PREF_MEASUREMENT_ORDER = "measurementOrder"; + private static String PREFERENCE_SUFFIX_ENABLE = "Enable"; + private TableRow measurementRow; private ImageView iconView; private TextView nameView; @@ -242,6 +245,11 @@ public abstract class MeasurementView extends TableLayout { } public abstract String getKey(); + public String[] getDependencyKeys() { return new String[]{}; } + + public static String getPreferenceKey(String key, String suffix) { + return key + suffix; + } public abstract void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement); public abstract void saveTo(ScaleMeasurement measurement); @@ -249,7 +257,23 @@ public abstract class MeasurementView extends TableLayout { public abstract void restoreState(Bundle state); public abstract void saveState(Bundle state); - public abstract void updatePreferences(SharedPreferences preferences); + @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; + } + } + } + + setVisible(enable); + } public CharSequence getName() { return nameView.getText(); } public abstract String getValueAsString(); 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 0965c8c5..51fcc02a 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 @@ -41,7 +41,7 @@ public class MuscleMeasurementView extends FloatMeasurementView { @Override public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("muscleEnable", true)); + super.updatePreferences(preferences); percentageEnable = preferences.getBoolean("musclePercentageEnable", true); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/TimeMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/TimeMeasurementView.java index 7fec2dbb..0623f143 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/TimeMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/TimeMeasurementView.java @@ -16,7 +16,6 @@ package com.health.openscale.gui.views; import android.content.Context; -import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.view.View; @@ -85,11 +84,6 @@ public class TimeMeasurementView extends MeasurementView { state.putLong(getKey(), time.getTime()); } - @Override - public void updatePreferences(SharedPreferences preferences) { - // Empty - } - @Override public String getValueAsString() { return timeFormat.format(time); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/WHRMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/WHRMeasurementView.java index 18da9f8c..3c06ad93 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/WHRMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/WHRMeasurementView.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; @@ -38,9 +37,8 @@ public class WHRMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("hipEnable", false) - && preferences.getBoolean("waistEnable", false)); + public String[] getDependencyKeys() { + return new String[] {HipMeasurementView.KEY, WaistMeasurementView.KEY}; } @Override diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/WHtRMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/WHtRMeasurementView.java index 72db9865..07242ea6 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/WHtRMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/WHtRMeasurementView.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; @@ -38,8 +37,8 @@ public class WHtRMeasurementView extends FloatMeasurementView { } @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("waistEnable", false)); + public String[] getDependencyKeys() { + return new String[] {WaistMeasurementView.KEY}; } @Override diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/WaistMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/WaistMeasurementView.java index 40a3e0fb..3afca42c 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/WaistMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/WaistMeasurementView.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; @@ -37,11 +36,6 @@ public class WaistMeasurementView extends FloatMeasurementView { return KEY; } - @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("waistEnable", false)); - } - @Override protected float getMeasurementValue(ScaleMeasurement measurement) { return measurement.getWaist(); 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 37931d15..42271af2 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 @@ -42,7 +42,7 @@ public class WaterMeasurementView extends FloatMeasurementView { @Override public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("waterEnable", true)); + super.updatePreferences(preferences); estimateWaterEnable = preferences.getBoolean("estimateWaterEnable", false); percentageEnable = preferences.getBoolean("waterPercentageEnable", true); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/views/WeightMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/views/WeightMeasurementView.java index 72a53936..75cbfc97 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/views/WeightMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/views/WeightMeasurementView.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; @@ -38,11 +37,6 @@ public class WeightMeasurementView extends FloatMeasurementView { return KEY; } - @Override - public void updatePreferences(SharedPreferences preferences) { - setVisible(preferences.getBoolean("weightEnable", true)); - } - @Override protected float getMeasurementValue(ScaleMeasurement measurement) { return measurement.getConvertedWeight(getScaleUser().getScaleUnit());