From 76d42ef3fb6cc6f65e8fa7445d44ad6e65c1f063 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 12 Jul 2016 17:56:01 +0200 Subject: [PATCH] displaying basal fix --- .../androidaps/data/PumpEnactResult.java | 4 ++-- .../androidaps/interfaces/PumpInterface.java | 3 +++ .../ConfigBuilder/ConfigBuilderFragment.java | 5 ++++ .../plugins/DanaR/DanaConnection.java | 2 +- .../plugins/DanaR/DanaRFragment.java | 23 +++++++++++++++++++ .../androidaps/plugins/Loop/APSResult.java | 23 +++++++++++-------- .../Objectives/ObjectivesFragment.java | 5 +++- .../plugins/Overview/OverviewFragment.java | 11 +++++++-- .../TempBasals/TempBasalsFragment.java | 3 --- .../VirtualPump/VirtualPumpFragment.java | 5 ++++ app/src/main/res/values-cs/strings.xml | 2 +- app/src/main/res/values/strings.xml | 2 +- 12 files changed, 68 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java b/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java index ec416e6635..5998212e18 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java +++ b/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java @@ -38,7 +38,7 @@ public class PumpEnactResult extends Object implements Parcelable { if (isTempCancel) { ret += "\n" + MainApp.sResources.getString(R.string.enacted) + ": " + enacted; ret += "\n" + MainApp.sResources.getString(R.string.comment) + ": " + comment + "\n" + - MainApp.sResources.getString(R.string.tempcancel); + MainApp.sResources.getString(R.string.canceltemp); } else if (isPercent) { ret += "\n" + MainApp.sResources.getString(R.string.enacted) + ": " + enacted; ret += "\n" + MainApp.sResources.getString(R.string.comment) + ": " + comment; @@ -62,7 +62,7 @@ public class PumpEnactResult extends Object implements Parcelable { if (isTempCancel) { ret += "
" + MainApp.sResources.getString(R.string.enacted) + ": " + enacted; ret += "
" + MainApp.sResources.getString(R.string.comment) + ": " + comment + - "
" + MainApp.sResources.getString(R.string.tempcancel); + "
" + MainApp.sResources.getString(R.string.canceltemp); } else if (isPercent) { ret += "
" + MainApp.sResources.getString(R.string.enacted) + ": " + enacted; ret += "
" + MainApp.sResources.getString(R.string.comment) + ": " + comment; diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java index 17866f1186..4a8cfabe4d 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java @@ -2,6 +2,8 @@ package info.nightscout.androidaps.interfaces; import org.json.JSONObject; +import java.util.Date; + import info.nightscout.androidaps.data.PumpEnactResult; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.plugins.Loop.APSResult; @@ -21,6 +23,7 @@ public interface PumpInterface { double getBaseBasalRate(); // base basal rate, not temp basal double getTempBasalAbsoluteRate(); double getTempBasalRemainingMinutes(); + TempBasal getTempBasal(Date time); TempBasal getTempBasal(); TempBasal getExtendedBolus(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java index 6890d88329..44ea3e751c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConfigBuilder/ConfigBuilderFragment.java @@ -263,6 +263,11 @@ public class ConfigBuilderFragment extends Fragment implements PluginBase, PumpI return activePump.getTempBasalRemainingMinutes(); } + @Override + public TempBasal getTempBasal(Date time) { + return activePump.getTempBasal(time); + } + @Override public TempBasal getTempBasal() { return activePump.getTempBasal(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaConnection.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaConnection.java index 890b4c26c7..1274fe5f9e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaConnection.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaConnection.java @@ -77,7 +77,7 @@ public class DanaConnection { private static final UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); - +// TODO: keepalive kills active connection public DanaConnection(Bus bus) { danaRFragment = (DanaRFragment) MainActivity.getSpecificPlugin(DanaRFragment.class); danaRFragment.setDanaConnection(this); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java index 052580921f..5379bcdfb6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java @@ -338,6 +338,14 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface return null; } + public TempBasal getTempBasal(Date time) { + TempBasal temp = MainApp.getConfigBuilder().getActiveTempBasals().getTempBasal(time); + if (temp != null) return temp; + if (useExtendedBoluses) + return MainApp.getConfigBuilder().getActiveTempBasals().getExtendedBolus(time); + return null; + } + public TempBasal getRealTempBasal() { return MainApp.getConfigBuilder().getActiveTempBasals().getTempBasal(new Date()); } @@ -406,6 +414,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.enacted = false; result.percent = 100; result.isPercent = true; + result.isTempCancel = true; if (Config.logPumpActions) log.debug("setTempBasalAbsolute: doTempOff OK"); return result; @@ -438,6 +447,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.enacted = false; result.duration = ((Double) getTempBasalRemainingMinutes()).intValue(); result.isPercent = true; + result.isTempCancel = false; if (Config.logPumpActions) log.debug("setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)"); return result; @@ -492,6 +502,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.enacted = false; result.duration = getDanaRPump().extendedBolusRemainingMinutes; result.isPercent = false; + result.isTempCancel = false; if (Config.logPumpActions) log.debug("setTempBasalAbsolute: Correct extended already set"); return result; @@ -524,6 +535,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface ConfigBuilderFragment configBuilderFragment = MainApp.getConfigBuilder(); percent = configBuilderFragment.applyBasalConstraints(percent); if (percent < 0) { + result.isTempCancel = false; result.enacted = false; result.success = false; result.comment = MainApp.instance().getString(R.string.danar_invalidinput); @@ -534,6 +546,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface if (getDanaRPump().isTempBasalInProgress && getDanaRPump().tempBasalPercent == percent) { result.enacted = false; result.success = true; + result.isTempCancel = false; result.comment = MainApp.instance().getString(R.string.virtualpump_resultok); result.duration = getDanaRPump().tempBasalRemainingMin; result.percent = getDanaRPump().tempBasalPercent; @@ -549,6 +562,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.enacted = true; result.success = true; result.comment = MainApp.instance().getString(R.string.virtualpump_resultok); + result.isTempCancel = false; result.duration = getDanaRPump().tempBasalRemainingMin; result.percent = getDanaRPump().tempBasalPercent; result.isPercent = true; @@ -578,6 +592,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.duration = getDanaRPump().extendedBolusRemainingMinutes; result.absolute = getDanaRPump().extendedBolusAbsoluteRate; result.isPercent = false; + result.isTempCancel = false; if (Config.logPumpActions) log.debug("setExtendedBolus: Correct extended bolus already set"); return result; @@ -589,6 +604,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.enacted = true; result.success = true; result.comment = MainApp.instance().getString(R.string.virtualpump_resultok); + result.isTempCancel = false; result.duration = getDanaRPump().extendedBolusRemainingMinutes; result.absolute = getDanaRPump().extendedBolusAbsoluteRate; result.bolusDelivered = getDanaRPump().extendedBolusAmount; @@ -614,6 +630,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface result.success = true; result.enacted = false; result.comment = MainApp.instance().getString(R.string.virtualpump_resultok); + result.isTempCancel = true; return result; } @@ -623,9 +640,11 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface if (getDanaRPump().isTempBasalInProgress) { getDanaConnection().tempBasalStop(); result.enacted = true; + result.isTempCancel = true; } if (!getDanaRPump().isTempBasalInProgress) { result.success = true; + result.isTempCancel = true; result.comment = MainApp.instance().getString(R.string.virtualpump_resultok); if (Config.logPumpActions) log.debug("cancelRealTempBasal: OK"); @@ -633,6 +652,7 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface } else { result.success = false; result.comment = MainApp.instance().getString(R.string.danar_valuenotsetproperly); + result.isTempCancel = true; log.error("cancelRealTempBasal: Failed to cancel temp basal"); return result; } @@ -645,15 +665,18 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface if (getDanaRPump().isExtendedInProgress) { getDanaConnection().extendedBolusStop(); result.enacted = true; + result.isTempCancel = true; } if (!getDanaRPump().isExtendedInProgress) { result.success = true; result.comment = MainApp.instance().getString(R.string.virtualpump_resultok); + result.isTempCancel = true; if (Config.logPumpActions) log.debug("cancelExtendedBolus: OK"); return result; } else { result.success = false; + result.isTempCancel = true; result.comment = MainApp.instance().getString(R.string.danar_valuenotsetproperly); log.error("cancelExtendedBolus: Failed to cancel extended bolus"); return result; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/APSResult.java b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/APSResult.java index c6823757f4..5b248d45c9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Loop/APSResult.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Loop/APSResult.java @@ -24,19 +24,23 @@ public class APSResult implements Parcelable { @Override public String toString() { if (changeRequested) - return MainApp.sResources.getString(R.string.rate) + " " + DecimalFormatter.to2Decimal(rate) + " U/h\n" + - MainApp.sResources.getString(R.string.duration) + " " + DecimalFormatter.to0Decimal(duration) + " min\n" + - MainApp.sResources.getString(R.string.reason) + " " + reason; + return MainApp.sResources.getString(R.string.rate) + ": " + DecimalFormatter.to2Decimal(rate) + " U/h\n" + + MainApp.sResources.getString(R.string.duration) + ": " + DecimalFormatter.to0Decimal(duration) + " min\n" + + MainApp.sResources.getString(R.string.reason) + ": " + reason; else return MainApp.sResources.getString(R.string.nochangerequested); } public Spanned toSpanned() { - if (changeRequested) - return Html.fromHtml("" + MainApp.sResources.getString(R.string.rate) + ": " + DecimalFormatter.to2Decimal(rate) + " U/h
" + - "" + MainApp.sResources.getString(R.string.duration) + ": " + DecimalFormatter.to2Decimal(duration) + " min
" + - "" + MainApp.sResources.getString(R.string.reason) + ": " + reason); - else + if (changeRequested) { + String ret = ""; + if (rate == 0 && duration == 0) ret = MainApp.sResources.getString(R.string.canceltemp); + else + ret = "" + MainApp.sResources.getString(R.string.rate) + ": " + DecimalFormatter.to2Decimal(rate) + " U/h
" + + "" + MainApp.sResources.getString(R.string.duration) + ": " + DecimalFormatter.to2Decimal(duration) + " min
" + + "" + MainApp.sResources.getString(R.string.reason) + ": " + reason; + return Html.fromHtml(ret); + } else return Html.fromHtml(MainApp.sResources.getString(R.string.nochangerequested)); } @@ -70,7 +74,8 @@ public class APSResult implements Parcelable { changeRequested = in.readInt() == 1; } - public APSResult() {} + public APSResult() { + } public APSResult clone() { APSResult newResult = new APSResult(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java index b331119ddf..6d23956181 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java @@ -27,12 +27,14 @@ import java.util.Date; import java.util.List; import info.nightscout.androidaps.Config; +import info.nightscout.androidaps.MainActivity; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.interfaces.ConstraintsInterface; import info.nightscout.androidaps.interfaces.PluginBase; import info.nightscout.androidaps.plugins.Loop.APSResult; +import info.nightscout.androidaps.plugins.Loop.LoopFragment; public class ObjectivesFragment extends Fragment implements View.OnClickListener, PluginBase, ConstraintsInterface { private static Logger log = LoggerFactory.getLogger(ObjectivesFragment.class); @@ -60,7 +62,8 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener @Override public boolean isVisibleInTabs(int type) { - return fragmentVisible; + LoopFragment loopFragment = (LoopFragment) MainActivity.getSpecificPlugin(LoopFragment.class); + return fragmentVisible && loopFragment != null && loopFragment.isVisibleInTabs(type); } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java index 98d072679d..e0e3fd270b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/OverviewFragment.java @@ -267,7 +267,14 @@ public class OverviewFragment extends Fragment implements PluginBase { objectivesFragment.saveProgress(); } } - updateGUI(); + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + updateGUI(); + } + }); } }); } @@ -532,7 +539,7 @@ public class OverviewFragment extends Fragment implements PluginBase { long now = new Date().getTime(); List basalArray = new ArrayList(); for (long time = fromTime; time < now; time += 5 * 60 * 1000L) { - TempBasal tb = MainApp.getConfigBuilder().getActiveTempBasals().getTempBasal(new Date(time)); + TempBasal tb = MainApp.getConfigBuilder().getActivePump().getTempBasal(new Date(time)); if (tb != null) basalArray.add(new BarDataPoint(time, tb.tempBasalConvertedToAbsolute(new Date(time)), true)); else diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java index 5fe62204cb..9bc217bb31 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/TempBasals/TempBasalsFragment.java @@ -230,9 +230,6 @@ public class TempBasalsFragment extends Fragment implements PluginBase, TempBasa for (TempBasal t : tempBasals) { if (t.isInProgress(time)) return t; } - if (useExtendedBoluses) { - return getExtendedBolus(time); - } return null; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java index 14351e6892..9256cdfb1c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/VirtualPump/VirtualPumpFragment.java @@ -177,6 +177,11 @@ public class VirtualPumpFragment extends Fragment implements PluginBase, PumpInt return getTempBasal().getPlannedRemainingMinutes(); } + @Override + public TempBasal getTempBasal(Date time) { + return MainApp.getConfigBuilder().getActiveTempBasals().getTempBasal(new Date()); + } + @Override public PumpEnactResult deliverTreatment(Double insulin, Integer carbs) { PumpEnactResult result = new PumpEnactResult(); diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index ab2136cc30..cfcf39a697 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -232,6 +232,6 @@ Obnovit profil Uložit Úspěch - Zrušit dočasný bazál Poslední spojení: + Zrušit dočasný bazál \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6d07a65f6..15cd5770c9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -236,11 +236,11 @@ Value not set properly Reload profile View profile - Temp cancel Enacted Comment Success Percent Absolute + Cancel temp basal