mirror of
https://github.com/oliexdev/openScale.git
synced 2025-08-25 01:26:08 +02:00
Save/restore state when user e.g. rotates the screen
This commit is contained in:
@@ -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);
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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()) {
|
||||
|
@@ -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();
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user