save state on lowsuspend
This commit is contained in:
parent
d69701a092
commit
0a4df246d0
3 changed files with 133 additions and 16 deletions
|
@ -168,7 +168,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
|
||||||
/*
|
/*
|
||||||
* Returns glucose_status for openAPS or null if no actual data available
|
* Returns glucose_status for openAPS or null if no actual data available
|
||||||
*/
|
*/
|
||||||
public class GlucoseStatus {
|
public static class GlucoseStatus {
|
||||||
public double glucose = 0d;
|
public double glucose = 0d;
|
||||||
public double delta = 0d;
|
public double delta = 0d;
|
||||||
public double avgdelta = 0d;
|
public double avgdelta = 0d;
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package info.nightscout.androidaps.plugins;
|
package info.nightscout.androidaps.plugins;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
|
||||||
|
@ -11,7 +13,7 @@ import info.nightscout.androidaps.R;
|
||||||
/**
|
/**
|
||||||
* Created by mike on 09.06.2016.
|
* Created by mike on 09.06.2016.
|
||||||
*/
|
*/
|
||||||
public class APSResult {
|
public class APSResult implements Parcelable {
|
||||||
public String reason;
|
public String reason;
|
||||||
public double rate;
|
public double rate;
|
||||||
public int duration;
|
public int duration;
|
||||||
|
@ -31,4 +33,37 @@ public class APSResult {
|
||||||
else
|
else
|
||||||
return MainApp.instance().getApplicationContext().getString(R.string.nochangerequested);
|
return MainApp.instance().getApplicationContext().getString(R.string.nochangerequested);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
|
dest.writeString(reason);
|
||||||
|
dest.writeDouble(rate);
|
||||||
|
dest.writeInt(duration);
|
||||||
|
dest.writeInt(changeRequested ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Parcelable.Creator<APSResult> CREATOR = new Parcelable.Creator<APSResult>() {
|
||||||
|
public APSResult createFromParcel(Parcel in) {
|
||||||
|
return new APSResult(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public APSResult[] newArray(int size) {
|
||||||
|
return new APSResult[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private APSResult(Parcel in) {
|
||||||
|
reason = in.readString();
|
||||||
|
rate = in.readDouble();
|
||||||
|
duration = in.readInt();
|
||||||
|
changeRequested = in.readInt() == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public APSResult() {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ package info.nightscout.androidaps.plugins.LowSuspend;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
@ -42,11 +44,64 @@ public class LowSuspendFragment extends Fragment implements View.OnClickListener
|
||||||
TextView resultView;
|
TextView resultView;
|
||||||
TextView requestView;
|
TextView requestView;
|
||||||
|
|
||||||
Date lastAPSRun = null;
|
// last values
|
||||||
APSResult lastAPSResult = null;
|
class LastRun implements Parcelable {
|
||||||
|
public Boolean lastLow = null;
|
||||||
|
public Boolean lastLowProjected = null;
|
||||||
|
public Double lastMinBg = null;
|
||||||
|
public String lastUnits = null;
|
||||||
|
public DatabaseHelper.GlucoseStatus lastGlucoseStatus = null;
|
||||||
|
public Date lastAPSRun = null;
|
||||||
|
public APSResult lastAPSResult = null;
|
||||||
|
|
||||||
boolean fragmentEnabled = false;
|
@Override
|
||||||
boolean fragmentVisible = true;
|
public int describeContents() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
|
dest.writeInt(lastLow ? 1 : 0);
|
||||||
|
dest.writeInt(lastLowProjected ? 1 : 0);
|
||||||
|
dest.writeDouble(lastMinBg);
|
||||||
|
dest.writeString(lastUnits);
|
||||||
|
dest.writeDouble(lastGlucoseStatus.avgdelta);
|
||||||
|
dest.writeDouble(lastGlucoseStatus.delta);
|
||||||
|
dest.writeDouble(lastGlucoseStatus.glucose);
|
||||||
|
dest.writeLong(lastAPSRun.getTime());
|
||||||
|
dest.writeParcelable(lastAPSResult, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Parcelable.Creator<LastRun> CREATOR = new Parcelable.Creator<LastRun>() {
|
||||||
|
public LastRun createFromParcel(Parcel in) {
|
||||||
|
return new LastRun(in);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LastRun[] newArray(int size) {
|
||||||
|
return new LastRun[size];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private LastRun(Parcel in) {
|
||||||
|
lastLow = in.readInt() == 1;
|
||||||
|
lastLowProjected = in.readInt() == 1;
|
||||||
|
lastMinBg = in.readDouble();
|
||||||
|
lastUnits = in.readString();
|
||||||
|
lastGlucoseStatus = new DatabaseHelper.GlucoseStatus();
|
||||||
|
lastGlucoseStatus.avgdelta = in.readDouble();
|
||||||
|
lastGlucoseStatus.delta = in.readDouble();
|
||||||
|
lastGlucoseStatus.glucose = in.readDouble();
|
||||||
|
lastAPSRun = new Date(in.readLong());
|
||||||
|
lastAPSResult = in.readParcelable(APSResult.class.getClassLoader());
|
||||||
|
}
|
||||||
|
|
||||||
|
public LastRun() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
static LastRun lastRun = null;
|
||||||
|
|
||||||
|
private boolean fragmentEnabled = false;
|
||||||
|
private boolean fragmentVisible = true;
|
||||||
|
|
||||||
public LowSuspendFragment() {
|
public LowSuspendFragment() {
|
||||||
super();
|
super();
|
||||||
|
@ -90,12 +145,16 @@ public class LowSuspendFragment extends Fragment implements View.OnClickListener
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public APSResult getLastAPSResult() {
|
public APSResult getLastAPSResult() {
|
||||||
return lastAPSResult;
|
if (lastRun != null)
|
||||||
|
return lastRun.lastAPSResult;
|
||||||
|
else return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Date getLastAPSRun() {
|
public Date getLastAPSRun() {
|
||||||
return lastAPSRun;
|
if (lastRun != null)
|
||||||
|
return lastRun.lastAPSRun;
|
||||||
|
else return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static LowSuspendFragment newInstance() {
|
public static LowSuspendFragment newInstance() {
|
||||||
|
@ -121,9 +180,19 @@ public class LowSuspendFragment extends Fragment implements View.OnClickListener
|
||||||
resultView = (TextView) view.findViewById(R.id.lowsuspend_result);
|
resultView = (TextView) view.findViewById(R.id.lowsuspend_result);
|
||||||
requestView = (TextView) view.findViewById(R.id.lowsuspend_request);
|
requestView = (TextView) view.findViewById(R.id.lowsuspend_request);
|
||||||
|
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
lastRun = savedInstanceState.getParcelable("lastrun");
|
||||||
|
}
|
||||||
|
updateGUI();
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
outState.putParcelable("lastrun", lastRun);
|
||||||
|
}
|
||||||
|
|
||||||
private void registerBus() {
|
private void registerBus() {
|
||||||
try {
|
try {
|
||||||
MainApp.bus().unregister(this);
|
MainApp.bus().unregister(this);
|
||||||
|
@ -161,7 +230,6 @@ public class LowSuspendFragment extends Fragment implements View.OnClickListener
|
||||||
public void invoke() {
|
public void invoke() {
|
||||||
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
|
||||||
DatabaseHelper.GlucoseStatus glucoseStatus = MainApp.getDbHelper().getGlucoseStatusData();
|
DatabaseHelper.GlucoseStatus glucoseStatus = MainApp.getDbHelper().getGlucoseStatusData();
|
||||||
DecimalFormat formatNumber1decimalplaces = new DecimalFormat("0.0");
|
|
||||||
NSProfile profile = MainActivity.getConfigBuilder().getActiveProfile().getProfile();
|
NSProfile profile = MainActivity.getConfigBuilder().getActiveProfile().getProfile();
|
||||||
PumpInterface pump = MainActivity.getConfigBuilder().getActivePump();
|
PumpInterface pump = MainActivity.getConfigBuilder().getActivePump();
|
||||||
|
|
||||||
|
@ -197,6 +265,7 @@ public class LowSuspendFragment extends Fragment implements View.OnClickListener
|
||||||
Double baseBasalRate = pump.getBaseBasalRate();
|
Double baseBasalRate = pump.getBaseBasalRate();
|
||||||
boolean isTempBasalInProgress = pump.isTempBasalInProgress();
|
boolean isTempBasalInProgress = pump.isTempBasalInProgress();
|
||||||
Double tempBasalRate = pump.getTempBasalAbsoluteRate();
|
Double tempBasalRate = pump.getTempBasalAbsoluteRate();
|
||||||
|
Date now = new Date();
|
||||||
|
|
||||||
if (low && !lowProjected) {
|
if (low && !lowProjected) {
|
||||||
if (!isTempBasalInProgress || tempBasalRate != 0d) {
|
if (!isTempBasalInProgress || tempBasalRate != 0d) {
|
||||||
|
@ -227,13 +296,26 @@ public class LowSuspendFragment extends Fragment implements View.OnClickListener
|
||||||
request.changeRequested = false;
|
request.changeRequested = false;
|
||||||
request.reason = getString(R.string.nochangerequested);
|
request.reason = getString(R.string.nochangerequested);
|
||||||
}
|
}
|
||||||
glucoseStatusView.setText(glucoseStatus.toString());
|
|
||||||
minBgView.setText(formatNumber1decimalplaces.format(minBg) + " " + profile.getUnits());
|
|
||||||
resultView.setText(getString(R.string.lowsuspend_low) + " " + low + "\n" + getString(R.string.lowsuspend_lowprojected) + " " + lowProjected);
|
|
||||||
requestView.setText(request.toString());
|
|
||||||
lastRunView.setText(new Date().toLocaleString());
|
|
||||||
|
|
||||||
lastAPSResult = request;
|
lastRun = new LastRun();
|
||||||
lastAPSRun = new Date();
|
lastRun.lastMinBg = minBg;
|
||||||
|
lastRun.lastLow = low;
|
||||||
|
lastRun.lastLowProjected = lowProjected;
|
||||||
|
lastRun.lastGlucoseStatus = glucoseStatus;
|
||||||
|
lastRun.lastUnits = profile.getUnits();
|
||||||
|
lastRun.lastAPSResult = request;
|
||||||
|
lastRun.lastAPSRun = now;
|
||||||
|
updateGUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
void updateGUI() {
|
||||||
|
if (lastRun != null) {
|
||||||
|
DecimalFormat formatNumber1decimalplaces = new DecimalFormat("0.0");
|
||||||
|
glucoseStatusView.setText(lastRun.lastGlucoseStatus.toString());
|
||||||
|
minBgView.setText(formatNumber1decimalplaces.format(lastRun.lastMinBg) + " " + lastRun.lastUnits);
|
||||||
|
resultView.setText(getString(R.string.lowsuspend_low) + " " + lastRun.lastLow + "\n" + getString(R.string.lowsuspend_lowprojected) + " " + lastRun.lastLowProjected);
|
||||||
|
requestView.setText(lastRun.lastAPSResult.toString());
|
||||||
|
lastRunView.setText(lastRun.lastAPSRun.toLocaleString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue