diff --git a/android_app/app/src/main/java/com/health/openscale/gui/measurement/FloatMeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/measurement/FloatMeasurementView.java index 3aed5cdf..cb9ce151 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/measurement/FloatMeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/measurement/FloatMeasurementView.java @@ -566,6 +566,7 @@ public abstract class FloatMeasurementView extends MeasurementView { @Override public void prepareExtraPreferencesScreen(PreferenceScreen screen) { + super.prepareExtraPreferencesScreen(screen); MeasurementViewSettings settings = getSettings(); CheckBoxPreference rightAxis = new CheckBoxPreference(screen.getContext()); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementView.java b/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementView.java index fa11d0dd..28444199 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementView.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementView.java @@ -45,6 +45,7 @@ import android.widget.TableRow; import android.widget.TextView; import androidx.core.content.ContextCompat; +import androidx.preference.CheckBoxPreference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; @@ -423,8 +424,17 @@ public abstract class MeasurementView extends TableLayout { } public String getPreferenceSummary() { return ""; } - public boolean hasExtraPreferences() { return false; } - public void prepareExtraPreferencesScreen(PreferenceScreen screen) { } + public boolean hasExtraPreferences() { return true; } + public void prepareExtraPreferencesScreen(PreferenceScreen screen) { + MeasurementViewSettings settings = getSettings(); + + CheckBoxPreference isSticky = new CheckBoxPreference(screen.getContext()); + isSticky.setKey(settings.getIsStickyGraphKey()); + isSticky.setTitle(R.string.label_is_sticky); + isSticky.setPersistent(true); + isSticky.setDefaultValue(settings.isSticky()); + screen.addPreference(isSticky); + } protected abstract View getInputView(); protected abstract boolean validateAndSetInput(View view); diff --git a/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementViewSettings.java b/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementViewSettings.java index 608a177f..a8df3f46 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementViewSettings.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/measurement/MeasurementViewSettings.java @@ -27,6 +27,7 @@ public class MeasurementViewSettings { private final String key; private static final String PREFERENCE_SUFFIX_ENABLE = "Enable"; + private static final String PREFERENCE_SUFFIX_IS_STICKY = "IsSticky"; private static final String PREFERENCE_SUFFIX_IN_OVERVIEW_GRAPH = "InOverviewGraph"; private static final String PREFERENCE_SUFFIX_ON_RIGHT_AXIS = "OnRightAxis"; private static final String PREFERENCE_SUFFIX_IN_GRAPH = "InGraph"; @@ -116,6 +117,26 @@ public class MeasurementViewSettings { return isEnabledIgnoringDependencies() && areDependenciesEnabled(); } + public boolean isSticky() { + boolean defaultValue; + switch (key) { + case WeightMeasurementView.KEY: + case WaterMeasurementView.KEY: + case MuscleMeasurementView.KEY: + case FatMeasurementView.KEY: + defaultValue = true; + break; + default: + defaultValue = false; + break; + } + return preferences.getBoolean(getIsStickyGraphKey(), defaultValue); + } + + public String getIsStickyGraphKey() { + return getPreferenceKey(PREFERENCE_SUFFIX_IS_STICKY); + } + public String getInOverviewGraphKey() { return getPreferenceKey(PREFERENCE_SUFFIX_IN_OVERVIEW_GRAPH); } diff --git a/android_app/app/src/main/java/com/health/openscale/gui/overview/OverviewAdapter.java b/android_app/app/src/main/java/com/health/openscale/gui/overview/OverviewAdapter.java index e0bb9cca..373a9950 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/overview/OverviewAdapter.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/overview/OverviewAdapter.java @@ -24,18 +24,16 @@ import com.health.openscale.gui.measurement.TimeMeasurementView; import com.health.openscale.gui.measurement.UserMeasurementView; import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.List; class OverviewAdapter extends RecyclerView.Adapter { private Activity activity; private List scaleMeasurementList; - private int maxMeasurementView; - public OverviewAdapter(Activity activity, List scaleMeasurementList) { this.activity = activity; this.scaleMeasurementList = scaleMeasurementList; - this.maxMeasurementView = 3; } @Override @@ -81,22 +79,22 @@ class OverviewAdapter extends RecyclerView.Adapter { } }); - holder.dateView.setText(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.SHORT).format(scaleMeasurement.getDateTime())); + holder.dateView.setText(DateFormat.getDateInstance(DateFormat.MEDIUM).format(scaleMeasurement.getDateTime()) + + " (" + new SimpleDateFormat("EE").format(scaleMeasurement.getDateTime()) + ") "+ + DateFormat.getTimeInstance(DateFormat.SHORT).format(scaleMeasurement.getDateTime())); List measurementViewList = MeasurementView.getMeasurementList(activity, MeasurementView.DateTimeOrder.LAST); - int i = 0; for (MeasurementView measurementView : measurementViewList) { - i++; if (measurementView instanceof DateMeasurementView || measurementView instanceof TimeMeasurementView || measurementView instanceof UserMeasurementView) { measurementView.setVisible(false); } - else { + else if (measurementView.isVisible()) { measurementView.loadFrom(scaleMeasurement, prevScaleMeasurement); - if (i <= maxMeasurementView) { + if (measurementView.getSettings().isSticky()) { holder.measurementHighlightViews.addView(measurementView); - } else { + } else{ holder.measurementViews.addView(measurementView); } } diff --git a/android_app/app/src/main/res/layout/item_overview.xml b/android_app/app/src/main/res/layout/item_overview.xml index 11c81597..f204090a 100644 --- a/android_app/app/src/main/res/layout/item_overview.xml +++ b/android_app/app/src/main/res/layout/item_overview.xml @@ -39,7 +39,7 @@ Set default order Overwrite previous export \"%s\"? Is on right axis + Is sticky Measurement in % Estimate measurement Estimation formula