diff --git a/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java b/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java index 4d351f57..c4602b6d 100644 --- a/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java +++ b/android_app/app/src/main/java/com/health/openscale/gui/activities/DataEntryActivity.java @@ -135,6 +135,24 @@ public class DataEntryActivity extends Activity { updateOnView(); } + @Override + protected void onRestoreInstanceState(Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + + for (MeasurementView measurement : dataEntryMeasurements) { + measurement.restoreState(savedInstanceState); + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + for (MeasurementView measurement : dataEntryMeasurements) { + measurement.saveState(outState); + } + } + private void updateOnView() { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 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 c08e8ecc..e20c2d09 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 @@ -17,6 +17,7 @@ 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; import android.widget.EditText; @@ -26,6 +27,7 @@ import com.health.openscale.core.datatypes.ScaleMeasurement; public class CommentMeasurementView extends MeasurementView { private String comment; + static private String COMMENT_KEY = "comment"; public CommentMeasurementView(Context context) { super(context, context.getResources().getString(R.string.label_comment), ContextCompat.getDrawable(context, R.drawable.ic_comment)); @@ -48,6 +50,16 @@ public class CommentMeasurementView extends MeasurementView { measurement.setComment(comment); } + @Override + public void restoreState(Bundle state) { + setValue(state.getString(COMMENT_KEY), true); + } + + @Override + public void saveState(Bundle state) { + state.putString(COMMENT_KEY, comment); + } + @Override public void updatePreferences(SharedPreferences preferences) { // Empty 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 a17e7c83..22695bfe 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 @@ -19,6 +19,7 @@ import android.app.AlertDialog; import android.app.DatePickerDialog; import android.content.Context; import android.content.SharedPreferences; +import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.widget.DatePicker; import android.widget.EditText; @@ -33,6 +34,7 @@ import java.util.Date; public class DateMeasurementView extends MeasurementView { private static DateFormat dateFormat = DateFormat.getDateInstance(); private Date date; + static private String DATE_KEY = "date"; public DateMeasurementView(Context context) { super(context, context.getResources().getString(R.string.label_date), ContextCompat.getDrawable(context, R.drawable.ic_lastmonth)); @@ -64,6 +66,16 @@ public class DateMeasurementView extends MeasurementView { measurement.setDateTime(target.getTime()); } + @Override + public void restoreState(Bundle state) { + setValue(new Date(state.getLong(DATE_KEY)), true); + } + + @Override + public void saveState(Bundle state) { + state.putLong(DATE_KEY, date.getTime()); + } + @Override public void updatePreferences(SharedPreferences preferences) { // Empty 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 09b96205..48e87930 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 @@ -19,6 +19,7 @@ package com.health.openscale.gui.views; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; +import android.os.Bundle; import android.os.Handler; import android.text.InputType; import android.text.SpannableStringBuilder; @@ -228,6 +229,16 @@ public abstract class FloatMeasurementView extends MeasurementView { } } + @Override + public void restoreState(Bundle state) { + setValue(state.getFloat(nameText), previousValue, true); + } + + @Override + public void saveState(Bundle state) { + state.putFloat(nameText, value); + } + @Override public String getValueAsString() { if (useAutoValue()) { 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 08839d3d..296e445e 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 @@ -21,6 +21,7 @@ import android.content.DialogInterface; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.drawable.Drawable; +import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.util.TypedValue; import android.view.Gravity; @@ -151,6 +152,9 @@ public abstract class MeasurementView extends TableLayout { public abstract void loadFrom(ScaleMeasurement measurement, ScaleMeasurement previousMeasurement); public abstract void saveTo(ScaleMeasurement measurement); + public abstract void restoreState(Bundle state); + public abstract void saveState(Bundle state); + public abstract void updatePreferences(SharedPreferences preferences); public abstract String getValueAsString(); 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 7a3fa3ba..3e2926da 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 @@ -19,6 +19,7 @@ import android.app.AlertDialog; import android.app.TimePickerDialog; import android.content.Context; import android.content.SharedPreferences; +import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.widget.EditText; import android.widget.TimePicker; @@ -33,6 +34,7 @@ import java.util.Date; public class TimeMeasurementView extends MeasurementView { private DateFormat timeFormat; private Date time; + static private String TIME_KEY = "time"; public TimeMeasurementView(Context context) { super(context, context.getResources().getString(R.string.label_time), ContextCompat.getDrawable(context, R.drawable.ic_daysleft)); @@ -67,6 +69,16 @@ public class TimeMeasurementView extends MeasurementView { measurement.setDateTime(target.getTime()); } + @Override + public void restoreState(Bundle state) { + setValue(new Date(state.getLong(TIME_KEY)), true); + } + + @Override + public void saveState(Bundle state) { + state.putLong(TIME_KEY, time.getTime()); + } + @Override public void updatePreferences(SharedPreferences preferences) { // Empty