Add BatteryReplaceable PumpCapability and hide Battery change button in Actions tab for pumps without this capability (Omnipod); create battery change and insulin change careportal event after activating new Pod
This commit is contained in:
parent
4f6e31a784
commit
cd5bc21b17
5 changed files with 33 additions and 24 deletions
|
@ -25,7 +25,6 @@ import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
|
||||||
import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler
|
import info.nightscout.androidaps.plugins.general.overview.StatusLightHandler
|
||||||
import info.nightscout.androidaps.queue.Callback
|
import info.nightscout.androidaps.queue.Callback
|
||||||
import info.nightscout.androidaps.utils.FabricPrivacy
|
import info.nightscout.androidaps.utils.FabricPrivacy
|
||||||
import info.nightscout.androidaps.utils.ui.SingleClickButton
|
|
||||||
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
|
||||||
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
|
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
|
||||||
import info.nightscout.androidaps.utils.extensions.plusAssign
|
import info.nightscout.androidaps.utils.extensions.plusAssign
|
||||||
|
@ -33,6 +32,7 @@ import info.nightscout.androidaps.utils.extensions.toVisibility
|
||||||
import info.nightscout.androidaps.utils.protection.ProtectionCheck
|
import info.nightscout.androidaps.utils.protection.ProtectionCheck
|
||||||
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
import info.nightscout.androidaps.utils.resources.ResourceHelper
|
||||||
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
import info.nightscout.androidaps.utils.sharedPreferences.SP
|
||||||
|
import info.nightscout.androidaps.utils.ui.SingleClickButton
|
||||||
import info.nightscout.androidaps.utils.ui.UIRunnable
|
import info.nightscout.androidaps.utils.ui.UIRunnable
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
|
@ -236,6 +236,7 @@ class ActionsFragment : DaggerFragment() {
|
||||||
|
|
||||||
actions_historybrowser.visibility = (profile != null).toVisibility()
|
actions_historybrowser.visibility = (profile != null).toVisibility()
|
||||||
actions_fill?.visibility = (pump.pumpDescription.isRefillingCapable && pump.isInitialized && !pump.isSuspended).toVisibility()
|
actions_fill?.visibility = (pump.pumpDescription.isRefillingCapable && pump.isInitialized && !pump.isSuspended).toVisibility()
|
||||||
|
actions_pumpbatterychange?.visibility = pump.pumpDescription.isBatteryReplaceable.toVisibility()
|
||||||
actions_temptarget?.visibility = (profile != null && config.APS).toVisibility()
|
actions_temptarget?.visibility = (profile != null && config.APS).toVisibility()
|
||||||
actions_tddstats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility()
|
actions_tddstats?.visibility = pump.pumpDescription.supportsTDDs.toVisibility()
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import dagger.android.HasAndroidInjector;
|
import dagger.android.HasAndroidInjector;
|
||||||
import info.nightscout.androidaps.BuildConfig;
|
|
||||||
import info.nightscout.androidaps.R;
|
import info.nightscout.androidaps.R;
|
||||||
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
import info.nightscout.androidaps.data.DetailedBolusInfo;
|
||||||
import info.nightscout.androidaps.data.Profile;
|
import info.nightscout.androidaps.data.Profile;
|
||||||
|
@ -69,6 +68,7 @@ public class MDIPlugin extends PumpPluginBase implements PumpInterface {
|
||||||
pumpDescription.isTempBasalCapable = false;
|
pumpDescription.isTempBasalCapable = false;
|
||||||
pumpDescription.isSetBasalProfileCapable = false;
|
pumpDescription.isSetBasalProfileCapable = false;
|
||||||
pumpDescription.isRefillingCapable = false;
|
pumpDescription.isRefillingCapable = false;
|
||||||
|
pumpDescription.isBatteryReplaceable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -11,11 +11,11 @@ import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
|
||||||
public class PumpDescription {
|
public class PumpDescription {
|
||||||
public PumpType pumpType = PumpType.GenericAAPS;
|
public PumpType pumpType = PumpType.GenericAAPS;
|
||||||
|
|
||||||
public PumpDescription () {
|
public PumpDescription() {
|
||||||
resetSettings();
|
resetSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
public PumpDescription (PumpType pumpType) {
|
public PumpDescription(PumpType pumpType) {
|
||||||
this();
|
this();
|
||||||
setPumpDescription(pumpType);
|
setPumpDescription(pumpType);
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ public class PumpDescription {
|
||||||
public double basalMaximumRate;
|
public double basalMaximumRate;
|
||||||
|
|
||||||
public boolean isRefillingCapable;
|
public boolean isRefillingCapable;
|
||||||
|
public boolean isBatteryReplaceable;
|
||||||
|
|
||||||
public boolean storesCarbInfo;
|
public boolean storesCarbInfo;
|
||||||
|
|
||||||
|
@ -88,7 +89,8 @@ public class PumpDescription {
|
||||||
basalMaximumRate = 25d;
|
basalMaximumRate = 25d;
|
||||||
is30minBasalRatesCapable = false;
|
is30minBasalRatesCapable = false;
|
||||||
|
|
||||||
isRefillingCapable = false;
|
isRefillingCapable = true;
|
||||||
|
isBatteryReplaceable = true;
|
||||||
storesCarbInfo = true;
|
storesCarbInfo = true;
|
||||||
|
|
||||||
supportsTDDs = false;
|
supportsTDDs = false;
|
||||||
|
@ -136,6 +138,7 @@ public class PumpDescription {
|
||||||
basalMinimumRate = pumpType.getBaseBasalMinValue();
|
basalMinimumRate = pumpType.getBaseBasalMinValue();
|
||||||
|
|
||||||
isRefillingCapable = pumpCapability.hasCapability(PumpCapability.Refill);
|
isRefillingCapable = pumpCapability.hasCapability(PumpCapability.Refill);
|
||||||
|
isBatteryReplaceable = pumpCapability.hasCapability(PumpCapability.ReplaceBattery);
|
||||||
storesCarbInfo = pumpCapability.hasCapability(PumpCapability.StoreCarbInfo);
|
storesCarbInfo = pumpCapability.hasCapability(PumpCapability.StoreCarbInfo);
|
||||||
|
|
||||||
supportsTDDs = pumpCapability.hasCapability(PumpCapability.TDD);
|
supportsTDDs = pumpCapability.hasCapability(PumpCapability.TDD);
|
||||||
|
|
|
@ -11,18 +11,19 @@ public enum PumpCapability {
|
||||||
TempBasal, // isTempBasalCapable
|
TempBasal, // isTempBasalCapable
|
||||||
BasalProfileSet, // isSetBasalProfileCapable
|
BasalProfileSet, // isSetBasalProfileCapable
|
||||||
Refill, // isRefillingCapable
|
Refill, // isRefillingCapable
|
||||||
|
ReplaceBattery, // isBatteryReplaceable
|
||||||
StoreCarbInfo, // storesCarbInfo
|
StoreCarbInfo, // storesCarbInfo
|
||||||
TDD, // supportsTDDs
|
TDD, // supportsTDDs
|
||||||
ManualTDDLoad, // needsManualTDDLoad
|
ManualTDDLoad, // needsManualTDDLoad
|
||||||
BasalRate30min, // is30minBasalRatesCapable
|
BasalRate30min, // is30minBasalRatesCapable
|
||||||
|
|
||||||
// grouped by pump
|
// grouped by pump
|
||||||
VirtualPumpCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill), //
|
VirtualPumpCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill, ReplaceBattery), //
|
||||||
ComboCapabilities(Bolus, TempBasal, BasalProfileSet, Refill, TDD, ManualTDDLoad), //
|
ComboCapabilities(Bolus, TempBasal, BasalProfileSet, Refill, ReplaceBattery, TDD, ManualTDDLoad), //
|
||||||
DanaCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill, TDD, ManualTDDLoad), //
|
DanaCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill, ReplaceBattery, TDD, ManualTDDLoad), //
|
||||||
DanaWithHistoryCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill, StoreCarbInfo, TDD, ManualTDDLoad), //
|
DanaWithHistoryCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill, ReplaceBattery, StoreCarbInfo, TDD, ManualTDDLoad), //
|
||||||
InsightCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill,TDD,BasalRate30min), //
|
InsightCapabilities(Bolus, ExtendedBolus, TempBasal, BasalProfileSet, Refill, ReplaceBattery, TDD, BasalRate30min), //
|
||||||
MedtronicCapabilities(Bolus, TempBasal, BasalProfileSet, Refill, TDD), //
|
MedtronicCapabilities(Bolus, TempBasal, BasalProfileSet, Refill, ReplaceBattery, TDD), //
|
||||||
OmnipodCapabilities(Bolus, TempBasal, BasalProfileSet, BasalRate30min), //
|
OmnipodCapabilities(Bolus, TempBasal, BasalProfileSet, BasalRate30min), //
|
||||||
|
|
||||||
// BasalRates (separately grouped)
|
// BasalRates (separately grouped)
|
||||||
|
@ -35,19 +36,16 @@ public enum PumpCapability {
|
||||||
PumpCapability[] children;
|
PumpCapability[] children;
|
||||||
|
|
||||||
|
|
||||||
PumpCapability()
|
PumpCapability() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PumpCapability(PumpCapability...children)
|
PumpCapability(PumpCapability... children) {
|
||||||
{
|
|
||||||
this.children = children;
|
this.children = children;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean hasCapability(PumpCapability capability)
|
public boolean hasCapability(PumpCapability capability) {
|
||||||
{
|
|
||||||
// we can only check presense of simple capabilities
|
// we can only check presense of simple capabilities
|
||||||
if (capability.children != null)
|
if (capability.children != null)
|
||||||
return false;
|
return false;
|
||||||
|
@ -55,19 +53,16 @@ public enum PumpCapability {
|
||||||
if (this == capability)
|
if (this == capability)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (this.children!=null)
|
if (this.children != null) {
|
||||||
{
|
|
||||||
for (PumpCapability child : children) {
|
for (PumpCapability child : children) {
|
||||||
if (child == capability)
|
if (child == capability)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ import dagger.android.HasAndroidInjector;
|
||||||
import info.nightscout.androidaps.db.CareportalEvent;
|
import info.nightscout.androidaps.db.CareportalEvent;
|
||||||
import info.nightscout.androidaps.db.Source;
|
import info.nightscout.androidaps.db.Source;
|
||||||
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
|
import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
|
||||||
|
import info.nightscout.androidaps.interfaces.ProfileFunction;
|
||||||
import info.nightscout.androidaps.logging.AAPSLogger;
|
import info.nightscout.androidaps.logging.AAPSLogger;
|
||||||
import info.nightscout.androidaps.logging.LTag;
|
import info.nightscout.androidaps.logging.LTag;
|
||||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
|
||||||
|
@ -27,14 +28,17 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
|
||||||
public class InitPodRefreshAction extends AbstractCancelAction implements FinishActionInterface {
|
public class InitPodRefreshAction extends AbstractCancelAction implements FinishActionInterface {
|
||||||
|
|
||||||
private final PodActionType actionType;
|
private final PodActionType actionType;
|
||||||
|
private final HasAndroidInjector injector;
|
||||||
|
|
||||||
@Inject PodStateManager podStateManager;
|
@Inject PodStateManager podStateManager;
|
||||||
@Inject AAPSLogger aapsLogger;
|
@Inject AAPSLogger aapsLogger;
|
||||||
@Inject SP sp;
|
@Inject SP sp;
|
||||||
@Inject NSUpload nsUpload;
|
@Inject NSUpload nsUpload;
|
||||||
@Inject DatabaseHelperInterface databaseHelper;
|
@Inject DatabaseHelperInterface databaseHelper;
|
||||||
|
@Inject ProfileFunction profileFunction;
|
||||||
|
|
||||||
public InitPodRefreshAction(HasAndroidInjector injector, PodActionType actionType) {
|
public InitPodRefreshAction(HasAndroidInjector injector, PodActionType actionType) {
|
||||||
|
this.injector = injector;
|
||||||
injector.androidInjector().inject(this);
|
injector.androidInjector().inject(this);
|
||||||
this.actionType = actionType;
|
this.actionType = actionType;
|
||||||
}
|
}
|
||||||
|
@ -50,6 +54,8 @@ public class InitPodRefreshAction extends AbstractCancelAction implements Finish
|
||||||
public void execute() {
|
public void execute() {
|
||||||
if (actionType == PodActionType.INIT_POD) {
|
if (actionType == PodActionType.INIT_POD) {
|
||||||
if (podStateManager.isPodRunning()) {
|
if (podStateManager.isPodRunning()) {
|
||||||
|
uploadCareportalEvent(System.currentTimeMillis() - 2000, CareportalEvent.PUMPBATTERYCHANGE);
|
||||||
|
uploadCareportalEvent(System.currentTimeMillis() - 1000, CareportalEvent.INSULINCHANGE);
|
||||||
uploadCareportalEvent(System.currentTimeMillis(), CareportalEvent.SITECHANGE);
|
uploadCareportalEvent(System.currentTimeMillis(), CareportalEvent.SITECHANGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -61,10 +67,14 @@ public class InitPodRefreshAction extends AbstractCancelAction implements Finish
|
||||||
try {
|
try {
|
||||||
JSONObject data = new JSONObject();
|
JSONObject data = new JSONObject();
|
||||||
String enteredBy = sp.getString("careportal_enteredby", "");
|
String enteredBy = sp.getString("careportal_enteredby", "");
|
||||||
if (!enteredBy.equals("")) data.put("enteredBy", enteredBy);
|
if (enteredBy.isEmpty()) {
|
||||||
|
data.put("enteredBy", enteredBy);
|
||||||
|
}
|
||||||
data.put("created_at", DateUtil.toISOString(date));
|
data.put("created_at", DateUtil.toISOString(date));
|
||||||
|
data.put("mills", date);
|
||||||
data.put("eventType", event);
|
data.put("eventType", event);
|
||||||
CareportalEvent careportalEvent = new CareportalEvent();
|
data.put("units", profileFunction.getUnits());
|
||||||
|
CareportalEvent careportalEvent = new CareportalEvent(injector);
|
||||||
careportalEvent.date = date;
|
careportalEvent.date = date;
|
||||||
careportalEvent.source = Source.USER;
|
careportalEvent.source = Source.USER;
|
||||||
careportalEvent.eventType = event;
|
careportalEvent.eventType = event;
|
||||||
|
|
Loading…
Reference in a new issue