diff --git a/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java b/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java index e1877a9d..baf52bc1 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/fragments/TableFragment.java @@ -124,6 +124,10 @@ public class TableFragment extends Fragment implements FragmentUpdateListener { measurementsList.add(new BMRMeasurementView(tableView.getContext())); measurementsList.add(new CommentMeasurementView(tableView.getContext())); + for (MeasurementView measurement : measurementsList) { + measurement.setUpdateViews(false); + } + prefs = PreferenceManager.getDefaultSharedPreferences(tableView.getContext()); if (savedInstanceState == null) { 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 311153b8..b5e3dbb1 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 @@ -43,7 +43,9 @@ public class DateMeasurementView extends MeasurementView { private void setValue(Date newDate, boolean callListener) { if (!newDate.equals(date)) { date = newDate; - setValueView(dateFormat.format(date), callListener); + if (getUpdateViews()) { + setValueView(dateFormat.format(date), callListener); + } } } 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 e5004da3..2c14cccb 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 @@ -116,6 +116,70 @@ public abstract class FloatMeasurementView extends MeasurementView { return Math.max(0.0f, Math.min(getMaxValue(), value)); } + private void setValueInner(float newValue, String suffix, boolean callListener) { + value = newValue; + evaluationResult = null; + + if (!getUpdateViews()) { + return; + } + + if (value == AUTO_VALUE) { + setValueView(getContext().getString(R.string.label_automatic), false); + } + else { + setValueView(formatValue(value) + suffix, callListener); + + if (getMeasurementMode() != MeasurementViewMode.ADD) { + EvaluationSheet evalSheet = new EvaluationSheet(getScaleUser(), dateTime); + evaluationResult = evaluateSheet(evalSheet, value); + } + } + setEvaluationView(evaluationResult); + } + + private void setPreviousValueInner(float newPreviousValue, String suffix) { + previousValue = newPreviousValue; + + if (!getUpdateViews()) { + return; + } + + if (previousValue >= 0.0f) { + final float diff = value - previousValue; + + char symbol; + + if (diff > 0.0) { + symbol = SYMBOL_UP; + } else if (diff < 0.0) { + symbol = SYMBOL_DOWN; + } else { + symbol = SYMBOL_NEUTRAL; + } + + SpannableStringBuilder text = new SpannableStringBuilder(nameText); + text.append("\n"); + + int start = text.length(); + text.append(symbol); + text.setSpan(new ForegroundColorSpan(Color.GRAY), start, text.length(), + Spanned.SPAN_EXCLUSIVE_INCLUSIVE); + + start = text.length(); + text.append(' '); + text.append(formatValue(diff)); + text.append(suffix); + text.setSpan(new RelativeSizeSpan(0.8f), start, text.length(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + + setNameView(text); + } + else { + setNameView(nameText); + } + } + private void setValue(float newValue, float newPreviousValue, boolean callListener) { final String unit = getUnit(); final String suffix = unit.isEmpty() ? "" : " " + unit; @@ -124,57 +188,11 @@ public abstract class FloatMeasurementView extends MeasurementView { final boolean previousValueChanged = newPreviousValue != previousValue; if (valueChanged) { - value = newValue; - evaluationResult = null; - - if (value == AUTO_VALUE) { - setValueView(getContext().getString(R.string.label_automatic), false); - } - else { - setValueView(formatValue(value) + suffix, callListener); - - if (getMeasurementMode() != MeasurementViewMode.ADD) { - EvaluationSheet evalSheet = new EvaluationSheet(getScaleUser(), dateTime); - evaluationResult = evaluateSheet(evalSheet, value); - } - } - setEvaluationView(evaluationResult); + setValueInner(newValue, suffix, callListener); } if (valueChanged || previousValueChanged) { - previousValue = newPreviousValue; - if (previousValue >= 0.0f) { - final float diff = value - previousValue; - - char symbol; - - if (diff > 0.0) { - symbol = SYMBOL_UP; - } else if (diff < 0.0) { - symbol = SYMBOL_DOWN; - } else { - symbol = SYMBOL_NEUTRAL; - } - - SpannableStringBuilder text = new SpannableStringBuilder(nameText); - text.append("\n"); - - int start = text.length(); - text.append(symbol); - text.setSpan(new ForegroundColorSpan(Color.GRAY), start, text.length(), - Spanned.SPAN_EXCLUSIVE_INCLUSIVE); - - start = text.length(); - text.append(' '); - text.append(formatValue(diff)); - text.append(suffix); - text.setSpan(new RelativeSizeSpan(0.8f), start, text.length(), - Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - - setNameView(text); - } else { - setNameView(nameText); - } + setPreviousValueInner(newPreviousValue, suffix); } } 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 7ea9d921..b2ba716e 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 @@ -67,6 +67,8 @@ public abstract class MeasurementView extends TableLayout { private MeasurementViewUpdateListener updateListener = null; private MeasurementViewMode measurementMode = VIEW; + private boolean updateViews = true; + public MeasurementView(Context context, String text, Drawable icon) { super(context); initView(context); @@ -150,6 +152,13 @@ public abstract class MeasurementView extends TableLayout { updateListener = listener; } + public void setUpdateViews(boolean update) { + updateViews = update; + } + protected boolean getUpdateViews() { + return updateViews; + } + public abstract void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement); public abstract void saveTo(ScaleMeasurement measurement); @@ -206,14 +215,18 @@ public abstract class MeasurementView extends TableLayout { } protected void setValueView(String text, boolean callListener) { - valueView.setText(text); + if (updateViews) { + valueView.setText(text); + } if (callListener && updateListener != null) { updateListener.onMeasurementViewUpdate(this); } } protected void setNameView(CharSequence text) { - nameView.setText(text); + if (updateViews) { + nameView.setText(text); + } } protected void showEvaluatorRow(boolean show) { @@ -246,6 +259,10 @@ public abstract class MeasurementView extends TableLayout { } protected void setEvaluationView(EvaluationResult evalResult) { + if (!updateViews) { + return; + } + if (evalResult == null) { evaluatorView.setLimits(-1.0f, -1.0f); indicatorView.setBackgroundColor(Color.GRAY); 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 44cd1763..649bc45c 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 @@ -44,7 +44,9 @@ public class TimeMeasurementView extends MeasurementView { private void setValue(Date newTime, boolean callListener) { if (!newTime.equals(time)) { time = newTime; - setValueView(timeFormat.format(time), callListener); + if (getUpdateViews()) { + setValueView(timeFormat.format(time), callListener); + } } }