From 738d4c1c2a1d5f670741e877ee1b68ab50bc1ebe Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 13 Dec 2016 22:50:51 +0100 Subject: [PATCH] hide pump control buttons when pump is not initialized --- .../events/EventInitializationChanged.java | 8 ++++ .../plugins/Actions/ActionsFragment.java | 46 ++++++++++++------- .../DanaR/Services/ExecutionService.java | 2 + .../DanaR/comm/MsgInitConnStatusBolus.java | 3 ++ .../Services/ExecutionService.java | 2 + .../comm/MsgInitConnStatusBasic.java | 3 ++ .../comm/MsgInitConnStatusBolus.java | 3 ++ .../DanaRKorean/comm/MsgSettingMeal.java | 7 ++- .../plugins/Overview/OverviewFragment.java | 20 +++++--- .../SimpleProfile/SimpleProfileFragment.java | 36 +++++++++++++++ 10 files changed, 106 insertions(+), 24 deletions(-) create mode 100644 app/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.java diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.java b/app/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.java new file mode 100644 index 0000000000..e9a9ce511d --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.java @@ -0,0 +1,8 @@ +package info.nightscout.androidaps.events; + +/** + * Created by mike on 13.12.2016. + */ + +public class EventInitializationChanged { +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java index ee3de3267e..88643752ee 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/ActionsFragment.java @@ -1,6 +1,7 @@ package info.nightscout.androidaps.plugins.Actions; +import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; @@ -13,6 +14,7 @@ import com.squareup.otto.Subscribe; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventRefreshGui; import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.Actions.dialogs.FillDialog; @@ -72,28 +74,40 @@ public class ActionsFragment extends Fragment implements FragmentBase, View.OnCl MainApp.bus().register(this); } + @Subscribe + public void onStatusEvent(final EventInitializationChanged ev) { + updateGUIIfVisible(); + } + @Subscribe public void onStatusEvent(final EventRefreshGui ev) { updateGUIIfVisible(); } void updateGUIIfVisible() { - if (!MainApp.getConfigBuilder().getPumpDescription().isSetBasalProfileCapable) - profileSwitch.setVisibility(View.GONE); - else - profileSwitch.setVisibility(View.VISIBLE); - if (!MainApp.getConfigBuilder().getPumpDescription().isExtendedBolusCapable) - extendedBolus.setVisibility(View.GONE); - else - extendedBolus.setVisibility(View.VISIBLE); - if (!MainApp.getConfigBuilder().getPumpDescription().isTempBasalCapable) - tempBasal.setVisibility(View.GONE); - else - tempBasal.setVisibility(View.VISIBLE); - if (!MainApp.getConfigBuilder().getPumpDescription().isRefillingCapable) - fill.setVisibility(View.GONE); - else - fill.setVisibility(View.VISIBLE); + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + if (!MainApp.getConfigBuilder().getPumpDescription().isSetBasalProfileCapable || !MainApp.getConfigBuilder().isInitialized()) + profileSwitch.setVisibility(View.GONE); + else + profileSwitch.setVisibility(View.VISIBLE); + if (!MainApp.getConfigBuilder().getPumpDescription().isExtendedBolusCapable || !MainApp.getConfigBuilder().isInitialized()) + extendedBolus.setVisibility(View.GONE); + else + extendedBolus.setVisibility(View.VISIBLE); + if (!MainApp.getConfigBuilder().getPumpDescription().isTempBasalCapable || !MainApp.getConfigBuilder().isInitialized()) + tempBasal.setVisibility(View.GONE); + else + tempBasal.setVisibility(View.VISIBLE); + if (!MainApp.getConfigBuilder().getPumpDescription().isRefillingCapable || !MainApp.getConfigBuilder().isInitialized()) + fill.setVisibility(View.GONE); + else + fill.setVisibility(View.VISIBLE); + } + }); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java index 12407c7549..fc22449883 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/Services/ExecutionService.java @@ -30,6 +30,7 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventAppExit; +import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; import info.nightscout.androidaps.plugins.DanaR.DanaRPump; @@ -328,6 +329,7 @@ public class ExecutionService extends Service { danaRPump.lastConnection = now; MainApp.bus().post(new EventDanaRNewStatus()); + MainApp.bus().post(new EventInitializationChanged()); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java index b65bd8a7c1..36705c49ec 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/comm/MsgInitConnStatusBolus.java @@ -9,6 +9,7 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; import info.nightscout.androidaps.plugins.DanaR.DanaRPump; import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; /** @@ -43,6 +44,8 @@ public class MsgInitConnStatusBolus extends MessageBase { if (!pump.isExtendedBolusEnabled) { Notification notification = new Notification(Notification.EXTENDED_BOLUS_DISABLED, MainApp.sResources.getString(R.string.danar_enableextendedbolus), Notification.URGENT); MainApp.bus().post(new EventNewNotification(notification)); + } else { + MainApp.bus().post(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED)); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java index 968305446a..fdb7a3b66d 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/Services/ExecutionService.java @@ -30,6 +30,7 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.db.Treatment; import info.nightscout.androidaps.events.EventAppExit; +import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventPreferenceChange; import info.nightscout.androidaps.plugins.DanaR.comm.*; import info.nightscout.androidaps.plugins.DanaR.events.EventDanaRBolusStart; @@ -319,6 +320,7 @@ public class ExecutionService extends Service { danaRKoreanPump.lastConnection = now; MainApp.bus().post(new EventDanaRNewStatus()); + MainApp.bus().post(new EventInitializationChanged()); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java index 8ef367d908..39f45d7843 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBasic.java @@ -10,6 +10,7 @@ import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; public class MsgInitConnStatusBasic extends MessageBase { @@ -41,6 +42,8 @@ public class MsgInitConnStatusBasic extends MessageBase { if (pump.isEasyModeEnabled) { Notification notification = new Notification(Notification.EASYMODE_ENABLED, MainApp.sResources.getString(R.string.danar_disableeasymode), Notification.URGENT); MainApp.bus().post(new EventNewNotification(notification)); + } else { + MainApp.bus().post(new EventDismissNotification(Notification.EASYMODE_ENABLED)); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java index 604a6b919b..b391fe11e3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgInitConnStatusBolus.java @@ -10,6 +10,7 @@ import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; /** @@ -46,6 +47,8 @@ public class MsgInitConnStatusBolus extends MessageBase { if (!pump.isExtendedBolusEnabled) { Notification notification = new Notification(Notification.EXTENDED_BOLUS_DISABLED, MainApp.sResources.getString(R.string.danar_enableextendedbolus), Notification.URGENT); MainApp.bus().post(new EventNewNotification(notification)); + } else { + MainApp.bus().post(new EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED)); } } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java index 31a07f7285..488cf3becf 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaRKorean/comm/MsgSettingMeal.java @@ -9,7 +9,10 @@ import info.nightscout.androidaps.R; import info.nightscout.androidaps.plugins.DanaR.DanaRPlugin; import info.nightscout.androidaps.plugins.DanaR.DanaRPump; import info.nightscout.androidaps.plugins.DanaR.comm.MessageBase; +import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPlugin; +import info.nightscout.androidaps.plugins.DanaRKorean.DanaRKoreanPump; import info.nightscout.androidaps.plugins.Overview.Notification; +import info.nightscout.androidaps.plugins.Overview.events.EventDismissNotification; import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; /** @@ -24,7 +27,7 @@ public class MsgSettingMeal extends MessageBase { } public void handleMessage(byte[] bytes) { - DanaRPump pump = DanaRPlugin.getDanaRPump(); + DanaRKoreanPump pump = DanaRKoreanPlugin.getDanaRPump(); pump.basalStep = intFromBuff(bytes, 0, 1) / 100d; pump.bolusStep = intFromBuff(bytes, 1, 1) / 100d; boolean bolusEnabled = intFromBuff(bytes, 2, 1) == 1; @@ -44,6 +47,8 @@ public class MsgSettingMeal extends MessageBase { if (pump.isConfigUD) { Notification notification = new Notification(Notification.UD_MODE_ENABLED, MainApp.sResources.getString(R.string.danar_switchtouhmode), Notification.URGENT); MainApp.bus().post(new EventNewNotification(notification)); + } else { + MainApp.bus().post(new EventDismissNotification(Notification.UD_MODE_ENABLED)); } } 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 7291c80bd8..67f3b0cc18 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 @@ -55,6 +55,7 @@ import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.DatabaseHelper; import info.nightscout.androidaps.db.TempBasal; import info.nightscout.androidaps.db.Treatment; +import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.events.EventNewBasalProfile; import info.nightscout.androidaps.events.EventPreferenceChange; @@ -364,6 +365,11 @@ public class OverviewFragment extends Fragment { updateGUIIfVisible(); } + @Subscribe + public void onStatusEvent(final EventInitializationChanged ev) { + updateGUIIfVisible(); + } + @Subscribe public void onStatusEvent(final EventPreferenceChange ev) { updateGUIIfVisible(); @@ -486,22 +492,22 @@ public class OverviewFragment extends Fragment { apsModeView.setVisibility(View.GONE); } + // **** Temp button **** + NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); + PumpInterface pump = MainApp.getConfigBuilder(); + boolean showAcceptButton = !MainApp.getConfigBuilder().isClosedModeEnabled(); // Open mode needed showAcceptButton = showAcceptButton && finalLastRun != null && finalLastRun.lastAPSRun != null; // aps result must exist showAcceptButton = showAcceptButton && (finalLastRun.lastOpenModeAccept == null || finalLastRun.lastOpenModeAccept.getTime() < finalLastRun.lastAPSRun.getTime()); // never accepted or before last result showAcceptButton = showAcceptButton && finalLastRun.constraintsProcessed.changeRequested; // change is requested - if (showAcceptButton) { + if (showAcceptButton && pump.isInitialized()) { acceptTempLayout.setVisibility(View.VISIBLE); acceptTempButton.setText(getContext().getString(R.string.setbasalquestion) + "\n" + finalLastRun.constraintsProcessed); } else { acceptTempLayout.setVisibility(View.GONE); } - // **** Temp button **** - NSProfile profile = MainApp.getConfigBuilder().getActiveProfile().getProfile(); - PumpInterface pump = MainApp.getConfigBuilder(); - if (pump.isTempBasalInProgress()) { TempBasal activeTemp = pump.getTempBasal(); cancelTempLayout.setVisibility(View.VISIBLE); @@ -531,7 +537,7 @@ public class OverviewFragment extends Fragment { }); activeProfileView.setLongClickable(true); - if (profile == null) { + if (profile == null || !pump.isInitialized()) { // disable all treatment buttons because we are not able to check constraints without profile wizardButton.setVisibility(View.INVISIBLE); treatmentButton.setVisibility(View.INVISIBLE); @@ -545,7 +551,7 @@ public class OverviewFragment extends Fragment { // QuickWizard button QuickWizard.QuickWizardEntry quickWizardEntry = getPlugin().quickWizard.getActive(); - if (quickWizardEntry != null && lastBG != null) { + if (quickWizardEntry != null && lastBG != null && pump.isInitialized()) { quickWizardLayout.setVisibility(View.VISIBLE); String text = MainApp.sResources.getString(R.string.bolus) + ": " + quickWizardEntry.buttonText() + " " + DecimalFormatter.to0Decimal(quickWizardEntry.carbs()) + "g"; BolusWizard wizard = new BolusWizard(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java index cf02e50597..107629c97c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SimpleProfile/SimpleProfileFragment.java @@ -1,6 +1,7 @@ package info.nightscout.androidaps.plugins.SimpleProfile; +import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Editable; @@ -12,13 +13,18 @@ import android.widget.Button; import android.widget.EditText; import android.widget.RadioButton; +import com.squareup.otto.Subscribe; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.events.EventInitializationChanged; import info.nightscout.androidaps.interfaces.FragmentBase; import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialog; import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; +import info.nightscout.androidaps.plugins.Overview.events.EventNewNotification; import info.nightscout.utils.SafeParse; public class SimpleProfileFragment extends Fragment implements FragmentBase { @@ -56,6 +62,8 @@ public class SimpleProfileFragment extends Fragment implements FragmentBase { targethighView = (EditText) layout.findViewById(R.id.simpleprofile_targethigh); profileswitchButton = (Button) layout.findViewById(R.id.simpleprofile_profileswitch); + onStatusEvent(null); + mgdlView.setChecked(simpleProfilePlugin.mgdl); mmolView.setChecked(simpleProfilePlugin.mmol); diaView.setText(simpleProfilePlugin.dia.toString()); @@ -131,4 +139,32 @@ public class SimpleProfileFragment extends Fragment implements FragmentBase { return layout; } + @Override + public void onPause() { + super.onPause(); + MainApp.bus().unregister(this); + } + + @Override + public void onResume() { + super.onResume(); + MainApp.bus().register(this); + } + + @Subscribe + public void onStatusEvent(final EventInitializationChanged e) { + Activity activity = getActivity(); + if (activity != null) + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + if (!MainApp.getConfigBuilder().isInitialized()) { + profileswitchButton.setVisibility(View.GONE); + } else { + profileswitchButton.setVisibility(View.VISIBLE); + } + } + }); + } + }