diff --git a/app/build.gradle b/app/build.gradle index dd040d8e39..9a994d38cb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -44,7 +44,7 @@ android { minSdkVersion 21 targetSdkVersion 23 versionCode 1500 - version "1.5g-combo-dev" + version "1.5h-combo-dev" buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "BUILDVERSION", generateGitBuild() } diff --git a/app/src/main/java/info/nightscout/androidaps/MainApp.java b/app/src/main/java/info/nightscout/androidaps/MainApp.java index 95b5f7bde1..ed0f4a3853 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainApp.java +++ b/app/src/main/java/info/nightscout/androidaps/MainApp.java @@ -101,8 +101,6 @@ public class MainApp extends Application { log.info("Version: " + BuildConfig.VERSION_NAME); log.info("BuildVersion: " + BuildConfig.BUILDVERSION); - Answers.getInstance().logCustom(new CustomEvent("AppStart")); - sBus = new Bus(ThreadEnforcer.ANY); sInstance = this; sResources = getResources(); @@ -160,6 +158,11 @@ public class MainApp extends Application { MainApp.getConfigBuilder().initialize(); } NSUpload.uploadAppStart(); + if (MainApp.getConfigBuilder().isClosedModeEnabled()) + Answers.getInstance().logCustom(new CustomEvent("AppStart-ClosedLoop")); + else + Answers.getInstance().logCustom(new CustomEvent("AppStart")); + startKeepAliveService(); @@ -265,8 +268,6 @@ public class MainApp extends Application { @Nullable public static InsulinInterface getInsulinIterfaceById(int id) { - ArrayList newList = new ArrayList<>(); - if (pluginsList != null) { for (PluginBase p : pluginsList) { if (p.getType() == PluginBase.INSULIN && ((InsulinInterface) p).getId() == id) @@ -323,11 +324,11 @@ public class MainApp extends Application { } @Nullable - public static PluginBase getSpecificPlugin(Class pluginClass) { + public static T getSpecificPlugin(Class pluginClass) { if (pluginsList != null) { for (PluginBase p : pluginsList) { - if (p.getClass() == pluginClass) - return p; + if (pluginClass.isAssignableFrom(p.getClass())) + return (T) p; } } else { log.error("pluginsList=null"); diff --git a/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java b/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java index f8f30dbe6c..f0bffb25f5 100644 --- a/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/PreferencesActivity.java @@ -124,9 +124,9 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre addPreferencesFromResource(R.xml.pref_profile); } if (Config.DANAR) { - DanaRPlugin danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); - DanaRKoreanPlugin danaRKoreanPlugin = (DanaRKoreanPlugin) MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); - DanaRv2Plugin danaRv2Plugin = (DanaRv2Plugin) MainApp.getSpecificPlugin(DanaRv2Plugin.class); + DanaRPlugin danaRPlugin = MainApp.getSpecificPlugin(DanaRPlugin.class); + DanaRKoreanPlugin danaRKoreanPlugin = MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); + DanaRv2Plugin danaRv2Plugin = MainApp.getSpecificPlugin(DanaRv2Plugin.class); if (danaRPlugin.isEnabled(PluginBase.PUMP) || danaRKoreanPlugin.isEnabled(PluginBase.PUMP)) { addPreferencesFromResource(R.xml.pref_danar); } @@ -143,16 +143,16 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre addPreferencesFromResource(R.xml.pref_combo); } } - VirtualPumpPlugin virtualPumpPlugin = (VirtualPumpPlugin) MainApp.getSpecificPlugin(VirtualPumpPlugin.class); + VirtualPumpPlugin virtualPumpPlugin = MainApp.getSpecificPlugin(VirtualPumpPlugin.class); if (virtualPumpPlugin != null && virtualPumpPlugin.isEnabled(PluginBase.PUMP)) { addPreferencesFromResource(R.xml.pref_virtualpump); } - InsulinOrefFreePeakPlugin insulinOrefFreePeakPlugin = (InsulinOrefFreePeakPlugin) MainApp.getSpecificPlugin(InsulinOrefFreePeakPlugin.class); + InsulinOrefFreePeakPlugin insulinOrefFreePeakPlugin = MainApp.getSpecificPlugin(InsulinOrefFreePeakPlugin.class); if(insulinOrefFreePeakPlugin.isEnabled(PluginBase.INSULIN)){ addPreferencesFromResource(R.xml.pref_insulinoreffreepeak); } - NSClientInternalPlugin nsClientInternalPlugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + NSClientInternalPlugin nsClientInternalPlugin = MainApp.getSpecificPlugin(NSClientInternalPlugin.class); if (nsClientInternalPlugin != null && nsClientInternalPlugin.isEnabled(PluginBase.GENERAL)) { addPreferencesFromResource(R.xml.pref_nsclientinternal); } @@ -164,13 +164,13 @@ public class PreferencesActivity extends PreferenceActivity implements SharedPre addPreferencesFromResource(R.xml.pref_advanced); if (Config.WEAR) { - WearPlugin wearPlugin = (WearPlugin) MainApp.getSpecificPlugin(WearPlugin.class); + WearPlugin wearPlugin = MainApp.getSpecificPlugin(WearPlugin.class); if (wearPlugin != null && wearPlugin.isEnabled(PluginBase.GENERAL)) { addPreferencesFromResource(R.xml.pref_wear); } } - StatuslinePlugin statuslinePlugin = (StatuslinePlugin) MainApp.getSpecificPlugin(StatuslinePlugin.class); + StatuslinePlugin statuslinePlugin = MainApp.getSpecificPlugin(StatuslinePlugin.class); if (statuslinePlugin != null && statuslinePlugin.isEnabled(PluginBase.GENERAL)) { addPreferencesFromResource(R.xml.pref_xdripstatus); } diff --git a/app/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java b/app/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java index aa54ac100f..2d928a5541 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java +++ b/app/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java @@ -17,7 +17,6 @@ import info.nightscout.androidaps.interfaces.InsulinInterface; public class DetailedBolusInfo { public long date = System.currentTimeMillis(); - public InsulinInterface insulinInterface = MainApp.getConfigBuilder().getActiveInsulin(); public String eventType = CareportalEvent.MEALBOLUS; public double insulin = 0; public double carbs = 0; diff --git a/app/src/main/java/info/nightscout/androidaps/data/Profile.java b/app/src/main/java/info/nightscout/androidaps/data/Profile.java index ac7cc0edd0..984d92c4e5 100644 --- a/app/src/main/java/info/nightscout/androidaps/data/Profile.java +++ b/app/src/main/java/info/nightscout/androidaps/data/Profile.java @@ -75,7 +75,7 @@ public class Profile { ic = json.getJSONArray("carbratio"); if (getIc(0) == null) { int defaultIC = 25; - isf = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultIC + "\",\"timeAsSeconds\":\"0\"}]"); + ic = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultIC + "\",\"timeAsSeconds\":\"0\"}]"); Notification noic = new Notification(Notification.IC_MISSING, MainApp.sResources.getString(R.string.icmissing), Notification.URGENT); MainApp.bus().post(new EventNewNotification(noic)); } else { @@ -84,7 +84,7 @@ public class Profile { basal = json.getJSONArray("basal"); if (getBasal(0) == null) { double defaultBasal = 0.1d; - isf = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultBasal + "\",\"timeAsSeconds\":\"0\"}]"); + basal = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultBasal + "\",\"timeAsSeconds\":\"0\"}]"); Notification nobasal = new Notification(Notification.BASAL_MISSING, MainApp.sResources.getString(R.string.basalmissing), Notification.URGENT); MainApp.bus().post(new EventNewNotification(nobasal)); } else { @@ -93,7 +93,7 @@ public class Profile { targetLow = json.getJSONArray("target_low"); if (getTargetLow(0) == null) { double defaultLow = units.equals(Constants.MGDL) ? 120 : 6; - isf = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultLow + "\",\"timeAsSeconds\":\"0\"}]"); + targetLow = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultLow + "\",\"timeAsSeconds\":\"0\"}]"); Notification notarget = new Notification(Notification.TARGET_MISSING, MainApp.sResources.getString(R.string.targetmissing), Notification.URGENT); MainApp.bus().post(new EventNewNotification(notarget)); } else { @@ -102,7 +102,7 @@ public class Profile { targetHigh = json.getJSONArray("target_high"); if (getTargetHigh(0) == null) { double defaultHigh = units.equals(Constants.MGDL) ? 160 : 8; - isf = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultHigh + "\",\"timeAsSeconds\":\"0\"}]"); + targetHigh = new JSONArray("[{\"time\":\"00:00\",\"value\":\"" + defaultHigh + "\",\"timeAsSeconds\":\"0\"}]"); Notification notarget = new Notification(Notification.TARGET_MISSING, MainApp.sResources.getString(R.string.targetmissing), Notification.URGENT); MainApp.bus().post(new EventNewNotification(notarget)); } else { @@ -333,7 +333,7 @@ public class Profile { public double getMaxDailyBasal() { Double max = 0d; for (Integer hour = 0; hour < 24; hour++) { - double value = getBasal((Integer)(hour * 60 * 60)); + double value = getBasal((Integer) (hour * 60 * 60)); if (value > max) max = value; } return max; @@ -378,6 +378,11 @@ public class Profile { else return value * Constants.MMOLL_TO_MGDL; } + public static Double toMmol(Double value, String units) { + if (units.equals(Constants.MGDL)) return value * Constants.MGDL_TO_MMOLL; + else return value; + } + public static Double fromMgdlToUnits(Double value, String units) { if (units.equals(Constants.MGDL)) return value; else return value * Constants.MGDL_TO_MMOLL; @@ -393,9 +398,16 @@ public class Profile { else return DecimalFormatter.to1Decimal(valueInMmol); } - // targets are stored in mg/dl - public static String toTargetRangeString(double low, double high, String units) { - if (low == high) return toUnitsString(low, Profile.fromMgdlToUnits(low, Constants.MMOL), units); - else return toUnitsString(low, Profile.fromMgdlToUnits(low, Constants.MMOL), units) + " - " + toUnitsString(high, Profile.fromMgdlToUnits(high, Constants.MMOL), units); + // targets are stored in mg/dl but profile vary + public static String toTargetRangeString(double low, double high, String sourceUnits, String units) { + double lowMgdl = toMgdl(low, sourceUnits); + double highMgdl = toMgdl(high, sourceUnits); + double lowMmol = toMmol(low, sourceUnits); + double highMmol = toMmol(high, sourceUnits); + if (low == high) + return toUnitsString(lowMgdl, lowMmol, units); + else + return toUnitsString(lowMgdl, lowMmol, units) + " - " + toUnitsString(highMgdl, highMmol, units); + } } diff --git a/app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java b/app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java index 32a9eca24c..0bd929030f 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java +++ b/app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java @@ -187,7 +187,7 @@ public class ExtendedBolus implements Interval, DataPointWithLabelInterface { if (calcdate > dia_ago && calcdate <= time) { double tempBolusSize = absoluteRate() * spacing / 60d; - Treatment tempBolusPart = new Treatment(insulinInterface, dia); + Treatment tempBolusPart = new Treatment(); tempBolusPart.insulin = tempBolusSize; tempBolusPart.date = calcdate; diff --git a/app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java b/app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java index a624310b10..9edffe15bc 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java +++ b/app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java @@ -223,7 +223,7 @@ public class TemporaryBasal implements Interval { double tempBolusSize = netBasalRate * tempBolusSpacing / 60d; netBasalAmount += tempBolusSize; - Treatment tempBolusPart = new Treatment(insulinInterface, dia); + Treatment tempBolusPart = new Treatment(); tempBolusPart.insulin = tempBolusSize; tempBolusPart.date = calcdate; diff --git a/app/src/main/java/info/nightscout/androidaps/db/Treatment.java b/app/src/main/java/info/nightscout/androidaps/db/Treatment.java index aebd52ac30..9de76e6bf8 100644 --- a/app/src/main/java/info/nightscout/androidaps/db/Treatment.java +++ b/app/src/main/java/info/nightscout/androidaps/db/Treatment.java @@ -8,8 +8,6 @@ import com.j256.ormlite.table.DatabaseTable; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.Date; -import java.util.List; import java.util.Objects; import info.nightscout.androidaps.Constants; @@ -17,7 +15,6 @@ import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.data.Iob; import info.nightscout.androidaps.interfaces.InsulinInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; -import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.plugins.Overview.graphExtensions.DataPointWithLabelInterface; import info.nightscout.androidaps.plugins.Overview.graphExtensions.PointsWithLabelGraphSeries; import info.nightscout.utils.DateUtil; @@ -51,31 +48,13 @@ public class Treatment implements DataPointWithLabelInterface { public boolean isSMB = false; @DatabaseField - public int insulinInterfaceID = InsulinInterface.FASTACTINGINSULIN; + public int insulinInterfaceID = InsulinInterface.FASTACTINGINSULIN; // currently unused, will be used in the future @DatabaseField - public double dia = Constants.defaultDIA; + public double dia = Constants.defaultDIA; // currently unused, will be used in the future public Treatment() { } - public Treatment(long date) { - this.date = date; - } - - public Treatment(InsulinInterface insulin) { - insulinInterfaceID = insulin.getId(); - dia = insulin.getDia(); - } - - public Treatment(InsulinInterface insulin, double dia) { - insulinInterfaceID = insulin.getId(); - this.dia = dia; - } - - public long getMillisecondsFromStart() { - return System.currentTimeMillis() - date; - } - public String toString() { return "Treatment{" + "date= " + date + @@ -170,7 +149,10 @@ public class Treatment implements DataPointWithLabelInterface { @Override public int getColor() { - return Color.CYAN; + if (isValid) + return Color.CYAN; + else + return MainApp.instance().getResources().getColor(android.R.color.holo_red_light); } @Override @@ -183,10 +165,8 @@ public class Treatment implements DataPointWithLabelInterface { public Iob iobCalc(long time, double dia) { if (!isValid) return new Iob(); - InsulinInterface insulinInterface = MainApp.getInsulinIterfaceById(insulinInterfaceID); - if (insulinInterface == null) - insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); + InsulinInterface insulinInterface = ConfigBuilderPlugin.getActiveInsulin(); return insulinInterface.iobCalcForTreatment(this, time, dia); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java index 8a4ec0be38..8a4d4001cb 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Actions/dialogs/FillDialog.java @@ -69,8 +69,8 @@ public class FillDialog extends DialogFragment implements OnClickListener { insulin = (TextView) view.findViewById(R.id.treatments_newtreatment_insulinamount); Double maxInsulin = MainApp.getConfigBuilder().applyBolusConstraints(Constants.bolusOnlyForCheckLimit); - - editInsulin = new PlusMinusEditText(view, R.id.treatments_newtreatment_insulinamount, R.id.treatments_newtreatment_insulinamount_plus, R.id.treatments_newtreatment_insulinamount_minus, 0d, 0d, maxInsulin, 0.05d, new DecimalFormat("0.00"), false); + double bolusstep = MainApp.getConfigBuilder().getPumpDescription().bolusStep; + editInsulin = new PlusMinusEditText(view, R.id.treatments_newtreatment_insulinamount, R.id.treatments_newtreatment_insulinamount_plus, R.id.treatments_newtreatment_insulinamount_minus, 0d, 0d, maxInsulin, bolusstep, new DecimalFormat("0.00"), false); //setup preset buttons Button button1 = (Button) view.findViewById(R.id.fill_preset_button1); @@ -164,7 +164,7 @@ public class FillDialog extends DialogFragment implements OnClickListener { DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo(); detailedBolusInfo.insulin = finalInsulinAfterConstraints; detailedBolusInfo.context = context; - detailedBolusInfo.source = Source.NONE; + detailedBolusInfo.source = Source.USER; detailedBolusInfo.isValid = false; // do not count it in IOB (for pump history) PumpEnactResult result = pump.deliverTreatment(detailedBolusInfo); if (!result.success) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java index c685cd472d..6880d1a21e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsSafety/SafetyPlugin.java @@ -3,6 +3,8 @@ package info.nightscout.androidaps.plugins.ConstraintsSafety; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.Objects; + import info.nightscout.androidaps.BuildConfig; import info.nightscout.androidaps.Config; import info.nightscout.androidaps.Constants; @@ -161,17 +163,17 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { Double origRate = absoluteRate; if (absoluteRate > maxBasal) { absoluteRate = maxBasal; - if (Config.logConstraintsChanges && origPercentRate != Constants.basalPercentOnlyForCheckLimit) + if (Config.logConstraintsChanges && !Objects.equals(origPercentRate, Constants.basalPercentOnlyForCheckLimit)) log.debug("Limiting rate " + origRate + " by maxBasal preference to " + absoluteRate + "U/h"); } if (absoluteRate > maxBasalMult * profile.getBasal()) { absoluteRate = Math.floor(maxBasalMult * profile.getBasal() * 100) / 100; - if (Config.logConstraintsChanges && origPercentRate != Constants.basalPercentOnlyForCheckLimit) + if (Config.logConstraintsChanges && !Objects.equals(origPercentRate, Constants.basalPercentOnlyForCheckLimit)) log.debug("Limiting rate " + origRate + " by maxBasalMult to " + absoluteRate + "U/h"); } if (absoluteRate > profile.getMaxDailyBasal() * maxBasalFromDaily) { absoluteRate = profile.getMaxDailyBasal() * maxBasalFromDaily; - if (Config.logConstraintsChanges && origPercentRate != Constants.basalPercentOnlyForCheckLimit) + if (Config.logConstraintsChanges && !Objects.equals(origPercentRate, Constants.basalPercentOnlyForCheckLimit)) log.debug("Limiting rate " + origRate + " by 3 * maxDailyBasal to " + absoluteRate + "U/h"); } @@ -180,7 +182,7 @@ public class SafetyPlugin implements PluginBase, ConstraintsInterface { percentRateAfterConst = Round.ceilTo((double) percentRateAfterConst, 10d).intValue(); else percentRateAfterConst = Round.floorTo((double) percentRateAfterConst, 10d).intValue(); - if (Config.logConstraintsChanges && origPercentRate != Constants.basalPercentOnlyForCheckLimit) + if (Config.logConstraintsChanges && !Objects.equals(origPercentRate, Constants.basalPercentOnlyForCheckLimit)) log.debug("Recalculated percent rate " + percentRate + "% to " + percentRateAfterConst + "%"); return percentRateAfterConst; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java index 5458337782..3eda06fb37 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/ActivityGraph.java @@ -9,7 +9,6 @@ import com.jjoe64.graphview.series.DataPoint; import com.jjoe64.graphview.series.LineGraphSeries; import java.util.ArrayList; -import java.util.Date; import java.util.List; import info.nightscout.androidaps.data.Iob; @@ -39,14 +38,14 @@ public class ActivityGraph extends GraphView { double dia = insulin.getDia(); int hours = (int) Math.floor(dia + 1); - Treatment t = new Treatment(insulin, dia); + Treatment t = new Treatment(); t.date = 0; t.insulin = 1d; LineGraphSeries activitySeries = null; LineGraphSeries iobSeries = null; - List activityArray = new ArrayList(); - List iobArray = new ArrayList(); + List activityArray = new ArrayList<>(); + List iobArray = new ArrayList<>(); for (long time = 0; time <= hours * 60 * 60 * 1000; time += 5 * 60 * 1000L) { Iob iob = t.iobCalc(time, dia); @@ -56,7 +55,7 @@ public class ActivityGraph extends GraphView { DataPoint[] activityDataPoints = new DataPoint[activityArray.size()]; activityDataPoints = activityArray.toArray(activityDataPoints); - addSeries(activitySeries = new LineGraphSeries(activityDataPoints)); + addSeries(activitySeries = new LineGraphSeries<>(activityDataPoints)); activitySeries.setThickness(8); getViewport().setXAxisBoundsManual(true); @@ -68,7 +67,7 @@ public class ActivityGraph extends GraphView { DataPoint[] iobDataPoints = new DataPoint[iobArray.size()]; iobDataPoints = iobArray.toArray(iobDataPoints); - getSecondScale().addSeries(iobSeries = new LineGraphSeries(iobDataPoints)); + getSecondScale().addSeries(iobSeries = new LineGraphSeries<>(iobDataPoints)); iobSeries.setDrawBackground(true); iobSeries.setColor(Color.MAGENTA); iobSeries.setBackgroundColor(Color.argb(70, 255, 0, 255)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java index 84741656f5..f62d063193 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastacting/InsulinFastactingFragment.java @@ -49,7 +49,7 @@ public class InsulinFastactingFragment extends Fragment { private void updateGUI() { insulinName.setText(insulinFastactingPlugin.getFriendlyName()); insulinComment.setText(insulinFastactingPlugin.getComment()); - insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinFastactingPlugin.getDia()).toString() + "h"); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + Double.toString(insulinFastactingPlugin.getDia()) + "h"); insulinGraph.show(insulinFastactingPlugin); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java index e1d0143934..1747f5f4ab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinFastactingProlonged/InsulinFastactingProlongedFragment.java @@ -50,7 +50,7 @@ public class InsulinFastactingProlongedFragment extends Fragment { private void updateGUI() { insulinName.setText(insulinFastactingProlongedPlugin.getFriendlyName()); insulinComment.setText(insulinFastactingProlongedPlugin.getComment()); - insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinFastactingProlongedPlugin.getDia()).toString() + "h"); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + Double.toString(insulinFastactingProlongedPlugin.getDia()) + "h"); insulinGraph.show(insulinFastactingProlongedPlugin); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefFreePeakFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefFreePeakFragment.java index 5db351fea5..f7120369b3 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefFreePeakFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefFreePeakFragment.java @@ -51,7 +51,7 @@ public class InsulinOrefFreePeakFragment extends Fragment { private void updateGUI() { insulinName.setText(insulinPlugin.getFriendlyName()); insulinComment.setText(insulinPlugin.getComment()); - insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinPlugin.getDia()).toString() + "h"); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + Double.toString(insulinPlugin.getDia()) + "h"); insulinGraph.show(insulinPlugin); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefRapidActingFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefRapidActingFragment.java index ef11435805..e30c087d21 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefRapidActingFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefRapidActingFragment.java @@ -51,7 +51,7 @@ public class InsulinOrefRapidActingFragment extends Fragment { private void updateGUI() { insulinName.setText(insulinPlugin.getFriendlyName()); insulinComment.setText(insulinPlugin.getComment()); - insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinPlugin.getDia()).toString() + "h"); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + Double.toString(insulinPlugin.getDia()) + "h"); insulinGraph.show(insulinPlugin); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefUltraRapidActingFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefUltraRapidActingFragment.java index f09ba4e01d..ea05c7f2e7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefUltraRapidActingFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/InsulinOrefCurves/InsulinOrefUltraRapidActingFragment.java @@ -51,7 +51,7 @@ public class InsulinOrefUltraRapidActingFragment extends Fragment { private void updateGUI() { insulinName.setText(insulinPlugin.getFriendlyName()); insulinComment.setText(insulinPlugin.getComment()); - insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + new Double(insulinPlugin.getDia()).toString() + "h"); + insulinDia.setText(MainApp.sResources.getText(R.string.dia) + " " + Double.toString(insulinPlugin.getDia()) + "h"); insulinGraph.show(insulinPlugin); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java index 24231de63f..76a2855478 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/UploadQueue.java @@ -50,7 +50,7 @@ public class UploadQueue { public void run() { log.debug("QUEUE adding: " + dbr.data); MainApp.getDbHelper().create(dbr); - NSClientInternalPlugin plugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + NSClientInternalPlugin plugin = MainApp.getSpecificPlugin(NSClientInternalPlugin.class); if (plugin != null) { plugin.resend("newdata"); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSettingsStatus.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSettingsStatus.java index 4829af714e..c2c3aa036f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSettingsStatus.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/data/NSSettingsStatus.java @@ -6,6 +6,7 @@ import org.json.JSONException; import org.json.JSONObject; import java.util.Date; +import java.util.Objects; /* { @@ -188,7 +189,7 @@ public class NSSettingsStatus { return result; } } - if (settingsO.has("alarmTimeagoWarnMins") && what == "alarmTimeagoWarnMins"){ + if (settingsO.has("alarmTimeagoWarnMins") && Objects.equals(what, "alarmTimeagoWarnMins")){ Double result = settingsO.getDouble(what); return result; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AckAlarmReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AckAlarmReceiver.java index 413d37d55d..6bdf824b7c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AckAlarmReceiver.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/AckAlarmReceiver.java @@ -32,7 +32,7 @@ public class AckAlarmReceiver extends BroadcastReceiver { PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, AckAlarmReceiver.class.getSimpleName()); - NSClientInternalPlugin nsClientInternalPlugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + NSClientInternalPlugin nsClientInternalPlugin = MainApp.getSpecificPlugin(NSClientInternalPlugin.class); if (!nsClientInternalPlugin.isEnabled(PluginBase.GENERAL)) { return; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java index d8ed48dba5..3546a1d5e0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/receivers/DBAccessReceiver.java @@ -32,7 +32,7 @@ public class DBAccessReceiver extends BroadcastReceiver { PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, DBAccessReceiver.class.getSimpleName()); - NSClientInternalPlugin nsClientInternalPlugin = (NSClientInternalPlugin) MainApp.getSpecificPlugin(NSClientInternalPlugin.class); + NSClientInternalPlugin nsClientInternalPlugin = MainApp.getSpecificPlugin(NSClientInternalPlugin.class); if (!nsClientInternalPlugin.isEnabled(PluginBase.GENERAL)) { return; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java index 21f863fe10..cbc18acbca 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/NSClientInternal/services/NSClientService.java @@ -188,7 +188,7 @@ public class NSClientService extends Service { nsAPIhashCode = Hashing.sha1().hashString(nsAPISecret, Charsets.UTF_8).toString(); MainApp.bus().post(new EventNSClientStatus("Initializing")); - if (((NSClientInternalPlugin)MainApp.getSpecificPlugin(NSClientInternalPlugin.class)).paused) { + if (MainApp.getSpecificPlugin(NSClientInternalPlugin.class).paused) { MainApp.bus().post(new EventNSClientNewLog("NSCLIENT", "paused")); MainApp.bus().post(new EventNSClientStatus("Paused")); } else if (!nsEnabled) { @@ -421,7 +421,7 @@ public class NSClientService extends Service { MainApp.bus().post(new EventNSClientNewLog("DATA", "Data packet #" + dataCounter++ + (isDelta ? " delta" : " full"))); if (data.has("profiles")) { - JSONArray profiles = (JSONArray) data.getJSONArray("profiles"); + JSONArray profiles = data.getJSONArray("profiles"); if (profiles.length() > 0) { JSONObject profile = (JSONObject) profiles.get(profiles.length() - 1); profileStore = new ProfileStore(profile); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/EditQuickWizardDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/EditQuickWizardDialog.java index 352c158c1e..1179841098 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/EditQuickWizardDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/EditQuickWizardDialog.java @@ -29,7 +29,7 @@ import info.nightscout.utils.SafeParse; public class EditQuickWizardDialog extends DialogFragment implements View.OnClickListener { QuickWizard.QuickWizardEntry entry = new QuickWizard().newEmptyItem(); - QuickWizard quickWizard = ((OverviewPlugin) MainApp.getSpecificPlugin(OverviewPlugin.class)).quickWizard; + QuickWizard quickWizard = MainApp.getSpecificPlugin(OverviewPlugin.class).quickWizard; EditText buttonEdit; EditText carbsEdit; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java index 0eb8d93720..e2edb1e76a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/NewTreatmentDialog.java @@ -20,6 +20,7 @@ import com.crashlytics.android.answers.Answers; import com.crashlytics.android.answers.CustomEvent; import java.text.DecimalFormat; +import java.util.Objects; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; @@ -86,7 +87,7 @@ public class NewTreatmentDialog extends DialogFragment implements OnClickListene confirmMessage += getString(R.string.bolus) + ": " + insulinAfterConstraints + "U"; confirmMessage += "\n" + getString(R.string.carbs) + ": " + carbsAfterConstraints + "g"; - if (insulinAfterConstraints - insulin != 0 || carbsAfterConstraints != carbs) + if (insulinAfterConstraints - insulin != 0 || !Objects.equals(carbsAfterConstraints, carbs)) confirmMessage += "\n" + getString(R.string.constraintapllied); final double finalInsulinAfterConstraints = insulinAfterConstraints; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java index c68bbb19d7..bda03a8a27 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/Dialogs/WizardDialog.java @@ -129,7 +129,7 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com @Override public void onResume() { - super.onPause(); + super.onResume(); MainApp.bus().register(this); } @@ -243,7 +243,8 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com editBg.setParams(0d, 0d, 500d, 0.1d, new DecimalFormat("0.0"), false, textWatcher); editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, textWatcher); - editCorr.setParams(0d, -maxCorrection, maxCorrection, 0.05d, new DecimalFormat("0.00"), false, textWatcher); + double bolusstep = MainApp.getConfigBuilder().getPumpDescription().bolusStep; + editCorr.setParams(0d, -maxCorrection, maxCorrection, bolusstep, new DecimalFormat("0.00"), false, textWatcher); editCarbTime.setParams(0d, -60d, 60d, 5d, new DecimalFormat("0"), false); initDialog(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/NotificationStore.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/NotificationStore.java index e869d1191b..8c70d3eea6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/NotificationStore.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/NotificationStore.java @@ -56,7 +56,7 @@ public class NotificationStore { } store.add(n); - WearPlugin wearPlugin = (WearPlugin) MainApp.getSpecificPlugin(WearPlugin.class); + WearPlugin wearPlugin = MainApp.getSpecificPlugin(WearPlugin.class); if(wearPlugin!= null && wearPlugin.isEnabled()) { wearPlugin.overviewNotification(n.id, "OverviewNotification:\n" + n.text); } 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 342f6bd20f..d871bd4c40 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 java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Objects; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; @@ -615,7 +616,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, finalLastRun.lastEnact = new Date(); finalLastRun.lastOpenModeAccept = new Date(); NSUpload.uploadDeviceStatus(); - ObjectivesPlugin objectivesPlugin = (ObjectivesPlugin) MainApp.getSpecificPlugin(ObjectivesPlugin.class); + ObjectivesPlugin objectivesPlugin = MainApp.getSpecificPlugin(ObjectivesPlugin.class); if (objectivesPlugin != null) { ObjectivesPlugin.manualEnacts++; ObjectivesPlugin.saveProgress(); @@ -912,6 +913,34 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, return; } + Double lowLine = SP.getDouble("low_mark", 0d); + Double highLine = SP.getDouble("high_mark", 0d); + + //Start with updating the BG as it is unaffected by loop. + // **** BG value **** + if (lastBG != null) { + int color = MainApp.sResources.getColor(R.color.inrange); + if (lastBG.valueToUnits(units) < lowLine) + color = MainApp.sResources.getColor(R.color.low); + else if (lastBG.valueToUnits(units) > highLine) + color = MainApp.sResources.getColor(R.color.high); + bgView.setText(lastBG.valueToUnitsToString(units)); + arrowView.setText(lastBG.directionToSymbol()); + bgView.setTextColor(color); + arrowView.setTextColor(color); + GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData(); + if (glucoseStatus != null) { + deltaView.setText("Δ " + Profile.toUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) + " " + units); + if (avgdeltaView != null) + avgdeltaView.setText("øΔ15m: " + Profile.toUnitsString(glucoseStatus.short_avgdelta, glucoseStatus.short_avgdelta * Constants.MGDL_TO_MMOLL, units) + + " øΔ40m: " + Profile.toUnitsString(glucoseStatus.long_avgdelta, glucoseStatus.long_avgdelta * Constants.MGDL_TO_MMOLL, units)); + } else { + deltaView.setText("Δ " + MainApp.sResources.getString(R.string.notavailable)); + if (avgdeltaView != null) + avgdeltaView.setText(""); + } + } + // open loop mode final LoopPlugin.LastRun finalLastRun = LoopPlugin.lastRun; if (Config.APS && MainApp.getConfigBuilder().getPumpDescription().isTempBasalCapable) { @@ -952,11 +981,11 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, tempTargetView.setTextColor(Color.BLACK); tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetBackground)); tempTargetView.setVisibility(View.VISIBLE); - tempTargetView.setText(Profile.toTargetRangeString(tempTarget.low, tempTarget.high, units)); + tempTargetView.setText(Profile.toTargetRangeString(tempTarget.low, tempTarget.high, Constants.MGDL, units)); } else { tempTargetView.setTextColor(Color.WHITE); tempTargetView.setBackgroundColor(MainApp.sResources.getColor(R.color.tempTargetDisabledBackground)); - tempTargetView.setText(Profile.toTargetRangeString(profile.getTargetLow(), profile.getTargetHigh(), units)); + tempTargetView.setText(Profile.toTargetRangeString(profile.getTargetLow(), profile.getTargetHigh(), units, units)); tempTargetView.setVisibility(View.VISIBLE); } if (Config.NSCLIENT && tempTarget == null) { @@ -1105,8 +1134,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, treatmentButton.setVisibility(View.GONE); } - Double lowLine = SP.getDouble("low_mark", 0d); - Double highLine = SP.getDouble("high_mark", 0d); + if (lowLine < 1) { lowLine = Profile.fromMgdlToUnits(OverviewPlugin.bgTargetLow, units); } @@ -1115,28 +1143,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, } // **** BG value **** - if (lastBG != null) { - int color = MainApp.sResources.getColor(R.color.inrange); - if (lastBG.valueToUnits(units) < lowLine) - color = MainApp.sResources.getColor(R.color.low); - else if (lastBG.valueToUnits(units) > highLine) - color = MainApp.sResources.getColor(R.color.high); - bgView.setText(lastBG.valueToUnitsToString(units)); - arrowView.setText(lastBG.directionToSymbol()); - bgView.setTextColor(color); - arrowView.setTextColor(color); - GlucoseStatus glucoseStatus = GlucoseStatus.getGlucoseStatusData(); - if (glucoseStatus != null) { - deltaView.setText("Δ " + Profile.toUnitsString(glucoseStatus.delta, glucoseStatus.delta * Constants.MGDL_TO_MMOLL, units) + " " + units); - if (avgdeltaView != null) - avgdeltaView.setText("øΔ15m: " + Profile.toUnitsString(glucoseStatus.short_avgdelta, glucoseStatus.short_avgdelta * Constants.MGDL_TO_MMOLL, units) + - " øΔ40m: " + Profile.toUnitsString(glucoseStatus.long_avgdelta, glucoseStatus.long_avgdelta * Constants.MGDL_TO_MMOLL, units)); - } else { - deltaView.setText("Δ " + MainApp.sResources.getString(R.string.notavailable)); - if (avgdeltaView != null) - avgdeltaView.setText(""); - } - } else { + if (lastBG == null) { //left this here as it seems you want to exit at this point if it is null... + return; } Integer flag = bgView.getPaintFlags(); @@ -1598,8 +1606,6 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, for (int tx = 0; tx < treatments.size(); tx++) { Treatment t = treatments.get(tx); - if (!t.isValid) - continue; if (t.getX() < fromTime || t.getX() > endTime) continue; t.setY(getNearestBg((long) t.getX(), bgReadingsArray)); filteredTreatments.add(t); @@ -1740,7 +1746,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, public void onBindViewHolder(NotificationsViewHolder holder, int position) { Notification notification = notificationsList.get(position); holder.dismiss.setTag(notification); - if(notification.text == MainApp.sResources.getString(R.string.nsalarm_staledata)) + if(Objects.equals(notification.text, MainApp.sResources.getString(R.string.nsalarm_staledata))) holder.dismiss.setText("snooze"); holder.text.setText(notification.text); holder.time.setText(DateUtil.timeString(notification.date)); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/activities/QuickWizardListActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/activities/QuickWizardListActivity.java index ef2ebe240c..9fc731b4f5 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Overview/activities/QuickWizardListActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Overview/activities/QuickWizardListActivity.java @@ -124,7 +124,7 @@ public class QuickWizardListActivity extends AppCompatActivity implements View.O llm = new LinearLayoutManager(this); recyclerView.setLayoutManager(llm); - RecyclerViewAdapter adapter = new RecyclerViewAdapter(((OverviewPlugin) MainApp.getSpecificPlugin(OverviewPlugin.class)).quickWizard, getSupportFragmentManager()); + RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainApp.getSpecificPlugin(OverviewPlugin.class).quickWizard, getSupportFragmentManager()); recyclerView.setAdapter(adapter); adButton = (Button) findViewById(R.id.overview_quickwizardactivity_add_button); @@ -164,7 +164,7 @@ public class QuickWizardListActivity extends AppCompatActivity implements View.O activity.runOnUiThread(new Runnable() { @Override public void run() { - RecyclerViewAdapter adapter = new RecyclerViewAdapter(((OverviewPlugin) MainApp.getSpecificPlugin(OverviewPlugin.class)).quickWizard, getSupportFragmentManager()); + RecyclerViewAdapter adapter = new RecyclerViewAdapter(MainApp.getSpecificPlugin(OverviewPlugin.class).quickWizard, getSupportFragmentManager()); recyclerView.swapAdapter(adapter, false); } }); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java index 32d3f625d3..758521d5a8 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ProfileNS/NSProfilePlugin.java @@ -109,7 +109,7 @@ public class NSProfilePlugin implements PluginBase, ProfileInterface { PumpInterface pump = MainApp.getConfigBuilder(); if (SP.getBoolean("syncprofiletopump", false)) { if (pump.setNewBasalProfile(MainApp.getConfigBuilder().getProfile()) == PumpInterface.SUCCESS) { - SmsCommunicatorPlugin smsCommunicatorPlugin = (SmsCommunicatorPlugin) MainApp.getSpecificPlugin(SmsCommunicatorPlugin.class); + SmsCommunicatorPlugin smsCommunicatorPlugin = MainApp.getSpecificPlugin(SmsCommunicatorPlugin.class); if (smsCommunicatorPlugin != null && smsCommunicatorPlugin.isEnabled(PluginBase.GENERAL)) { smsCommunicatorPlugin.sendNotificationToAllNumbers(MainApp.sResources.getString(R.string.profile_set_ok)); } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java index 2e01ee662d..bc5b23ad92 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/DanaRPlugin.java @@ -104,7 +104,7 @@ public class DanaRPlugin implements PluginBase, PumpInterface, DanaRInterface, C pumpDescription.isRefillingCapable = true; } - ServiceConnection mConnection = new ServiceConnection() { + private ServiceConnection mConnection = new ServiceConnection() { public void onServiceDisconnected(ComponentName name) { log.debug("Service is disconnected"); @@ -298,7 +298,7 @@ public class DanaRPlugin implements PluginBase, PumpInterface, DanaRInterface, C ConfigBuilderPlugin configBuilderPlugin = MainApp.getConfigBuilder(); detailedBolusInfo.insulin = configBuilderPlugin.applyBolusConstraints(detailedBolusInfo.insulin); if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) { - Treatment t = new Treatment(detailedBolusInfo.insulinInterface); + Treatment t = new Treatment(); boolean connectionOK = false; if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) connectionOK = sExecutionService.bolus(detailedBolusInfo.insulin, (int) detailedBolusInfo.carbs, t); PumpEnactResult result = new PumpEnactResult(); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/services/DanaRExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/services/DanaRExecutionService.java index a1d8ecff87..606eab3794 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/services/DanaRExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaR/services/DanaRExecutionService.java @@ -318,7 +318,7 @@ public class DanaRExecutionService extends Service { } Date now = new Date(); - if (danaRPump.lastSettingsRead.getTime() + 60 * 60 * 1000L < now.getTime() || !((DanaRPlugin)MainApp.getSpecificPlugin(DanaRPlugin.class)).isInitialized()) { + if (danaRPump.lastSettingsRead.getTime() + 60 * 60 * 1000L < now.getTime() || !MainApp.getSpecificPlugin(DanaRPlugin.class).isInitialized()) { mSerialIOThread.sendMessage(new MsgSettingShippingInfo()); mSerialIOThread.sendMessage(new MsgSettingActiveProfile()); mSerialIOThread.sendMessage(new MsgSettingMeal()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java index 84552946ae..354db54c48 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java @@ -72,8 +72,6 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, DanaRInterf public static PumpDescription pumpDescription = new PumpDescription(); - String textStatus = ""; - public DanaRKoreanPlugin() { useExtendedBoluses = SP.getBoolean("danar_useextended", false); @@ -107,7 +105,7 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, DanaRInterf pumpDescription.isRefillingCapable = true; } - ServiceConnection mConnection = new ServiceConnection() { + private ServiceConnection mConnection = new ServiceConnection() { public void onServiceDisconnected(ComponentName name) { log.debug("Service is disconnected"); @@ -301,7 +299,7 @@ public class DanaRKoreanPlugin implements PluginBase, PumpInterface, DanaRInterf ConfigBuilderPlugin configBuilderPlugin = MainApp.getConfigBuilder(); detailedBolusInfo.insulin = configBuilderPlugin.applyBolusConstraints(detailedBolusInfo.insulin); if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) { - Treatment t = new Treatment(detailedBolusInfo.insulinInterface); + Treatment t = new Treatment(); boolean connectionOK = false; if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) connectionOK = sExecutionService.bolus(detailedBolusInfo.insulin, (int) detailedBolusInfo.carbs, t); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/services/DanaRKoreanExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/services/DanaRKoreanExecutionService.java index f7ad5976b5..b7c9f8ca2c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/services/DanaRKoreanExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/services/DanaRKoreanExecutionService.java @@ -315,7 +315,7 @@ public class DanaRKoreanExecutionService extends Service { } Date now = new Date(); - if (danaRPump.lastSettingsRead.getTime() + 60 * 60 * 1000L < now.getTime() || !((DanaRKoreanPlugin)MainApp.getSpecificPlugin(DanaRKoreanPlugin.class)).isInitialized()) { + if (danaRPump.lastSettingsRead.getTime() + 60 * 60 * 1000L < now.getTime() || !MainApp.getSpecificPlugin(DanaRKoreanPlugin.class).isInitialized()) { mSerialIOThread.sendMessage(new MsgSettingShippingInfo()); mSerialIOThread.sendMessage(new MsgSettingMeal()); mSerialIOThread.sendMessage(new MsgSettingBasal_k()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java index 0697a69af7..ca1e1e6e3e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java @@ -73,8 +73,6 @@ public class DanaRv2Plugin implements PluginBase, PumpInterface, DanaRInterface, public static PumpDescription pumpDescription = new PumpDescription(); public DanaRv2Plugin() { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext()); - Context context = MainApp.instance().getApplicationContext(); Intent intent = new Intent(context, DanaRv2ExecutionService.class); context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE); @@ -105,7 +103,7 @@ public class DanaRv2Plugin implements PluginBase, PumpInterface, DanaRInterface, pumpDescription.isRefillingCapable = true; } - ServiceConnection mConnection = new ServiceConnection() { + private ServiceConnection mConnection = new ServiceConnection() { public void onServiceDisconnected(ComponentName name) { log.debug("Service is disconnected"); @@ -288,7 +286,7 @@ public class DanaRv2Plugin implements PluginBase, PumpInterface, DanaRInterface, detailedBolusInfo.insulin = configBuilderPlugin.applyBolusConstraints(detailedBolusInfo.insulin); if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) { DetailedBolusInfoStorage.add(detailedBolusInfo); // will be picked up on reading history - Treatment t = new Treatment(detailedBolusInfo.insulinInterface); + Treatment t = new Treatment(); boolean connectionOK = false; if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) connectionOK = sExecutionService.bolus(detailedBolusInfo.insulin, (int) detailedBolusInfo.carbs, System.currentTimeMillis() + detailedBolusInfo.carbTime * 60 * 1000 + 1000, t); // +1000 to make the record different diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java index 98d869e09c..0ac333787a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/services/DanaRv2ExecutionService.java @@ -289,7 +289,7 @@ public class DanaRv2ExecutionService extends Service { } Date now = new Date(); - if (danaRPump.lastSettingsRead.getTime() + 60 * 60 * 1000L < now.getTime() || !((DanaRv2Plugin)MainApp.getSpecificPlugin(DanaRv2Plugin.class)).isInitialized()) { + if (danaRPump.lastSettingsRead.getTime() + 60 * 60 * 1000L < now.getTime() || !MainApp.getSpecificPlugin(DanaRv2Plugin.class).isInitialized()) { mSerialIOThread.sendMessage(new MsgSettingShippingInfo()); mSerialIOThread.sendMessage(new MsgSettingActiveProfile()); mSerialIOThread.sendMessage(new MsgSettingMeal()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java index 1cf17881af..bb6fb80132 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/SmsCommunicator/SmsCommunicatorPlugin.java @@ -269,7 +269,7 @@ public class SmsCommunicatorPlugin implements PluginBase { switch (splited[1].toUpperCase()) { case "DISABLE": case "STOP": - LoopPlugin loopPlugin = (LoopPlugin) MainApp.getSpecificPlugin(LoopPlugin.class); + LoopPlugin loopPlugin = MainApp.getSpecificPlugin(LoopPlugin.class); if (loopPlugin != null && loopPlugin.isEnabled(PluginBase.LOOP)) { loopPlugin.setFragmentEnabled(PluginBase.LOOP, false); PumpEnactResult result = MainApp.getConfigBuilder().cancelTempBasal(true); @@ -283,7 +283,7 @@ public class SmsCommunicatorPlugin implements PluginBase { break; case "ENABLE": case "START": - loopPlugin = (LoopPlugin) MainApp.getSpecificPlugin(LoopPlugin.class); + loopPlugin = MainApp.getSpecificPlugin(LoopPlugin.class); if (loopPlugin != null && !loopPlugin.isEnabled(PluginBase.LOOP)) { loopPlugin.setFragmentEnabled(PluginBase.LOOP, true); reply = MainApp.sResources.getString(R.string.smscommunicator_loophasbeenenabled); @@ -294,7 +294,7 @@ public class SmsCommunicatorPlugin implements PluginBase { Answers.getInstance().logCustom(new CustomEvent("SMS_Loop_Start")); break; case "STATUS": - loopPlugin = (LoopPlugin) MainApp.getSpecificPlugin(LoopPlugin.class); + loopPlugin = MainApp.getSpecificPlugin(LoopPlugin.class); if (loopPlugin != null) { if (loopPlugin.isEnabled(PluginBase.LOOP)) { if (loopPlugin.isSuspended()) @@ -371,12 +371,12 @@ public class SmsCommunicatorPlugin implements PluginBase { } break; case "DANAR": - DanaRPlugin danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); + DanaRPlugin danaRPlugin = MainApp.getSpecificPlugin(DanaRPlugin.class); if (danaRPlugin != null && danaRPlugin.isEnabled(PluginBase.PUMP)) { reply = danaRPlugin.shortStatus(true); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); } - DanaRKoreanPlugin danaRKoreanPlugin = (DanaRKoreanPlugin) MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); + DanaRKoreanPlugin danaRKoreanPlugin = MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); if (danaRKoreanPlugin != null && danaRKoreanPlugin.isEnabled(PluginBase.PUMP)) { reply = danaRKoreanPlugin.shortStatus(true); sendSMS(new Sms(receivedSms.phoneNumber, reply, new Date())); @@ -463,7 +463,7 @@ public class SmsCommunicatorPlugin implements PluginBase { bolusWaitingForConfirmation.processed = true; PumpInterface pumpInterface = MainApp.getConfigBuilder(); if (pumpInterface != null) { - danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); + danaRPlugin = MainApp.getSpecificPlugin(DanaRPlugin.class); DetailedBolusInfo detailedBolusInfo = new DetailedBolusInfo(); detailedBolusInfo.insulin = bolusWaitingForConfirmation.bolusRequested; detailedBolusInfo.source = Source.USER; @@ -486,7 +486,7 @@ public class SmsCommunicatorPlugin implements PluginBase { tempBasalWaitingForConfirmation.processed = true; PumpInterface pumpInterface = MainApp.getConfigBuilder(); if (pumpInterface != null) { - danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); + danaRPlugin = MainApp.getSpecificPlugin(DanaRPlugin.class); PumpEnactResult result = pumpInterface.setTempBasalAbsolute(tempBasalWaitingForConfirmation.tempBasal, 30, false); if (result.success) { reply = String.format(MainApp.sResources.getString(R.string.smscommunicator_tempbasalset), result.absolute, result.duration); @@ -505,7 +505,7 @@ public class SmsCommunicatorPlugin implements PluginBase { cancelTempBasalWaitingForConfirmation.processed = true; PumpInterface pumpInterface = MainApp.getConfigBuilder(); if (pumpInterface != null) { - danaRPlugin = (DanaRPlugin) MainApp.getSpecificPlugin(DanaRPlugin.class); + danaRPlugin = MainApp.getSpecificPlugin(DanaRPlugin.class); PumpEnactResult result = pumpInterface.cancelTempBasal(true); if (result.success) { reply = MainApp.sResources.getString(R.string.smscommunicator_tempbasalcanceled); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java index 3050d431bc..e2a7fae7ab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Treatments/TreatmentsPlugin.java @@ -185,7 +185,11 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { total.iob += tIOB.iobContrib; total.activity += tIOB.activityContrib; if (!t.isSMB) { - Iob bIOB = t.iobCalc(time, dia / SP.getDouble("openapsama_bolussnooze_dia_divisor", 2.0)); + // instead of dividing the DIA that only worked on the bilinear curves, + // multiply the time the treatment is seen active. + long timeSinceTreatment = time - t.date; + long snoozeTime = t.date + (long)(timeSinceTreatment * SP.getDouble("openapsama_bolussnooze_dia_divisor", 2.0)); + Iob bIOB = t.iobCalc(snoozeTime, dia); total.bolussnooze += bIOB.iobContrib; } else { total.basaliob += t.insulin; @@ -411,7 +415,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { @Override public boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo) { - Treatment treatment = new Treatment(detailedBolusInfo.insulinInterface); + Treatment treatment = new Treatment(); treatment.date = detailedBolusInfo.date; treatment.source = detailedBolusInfo.source; treatment.pumpId = detailedBolusInfo.pumpId; @@ -425,7 +429,7 @@ public class TreatmentsPlugin implements PluginBase, TreatmentsInterface { boolean newRecordCreated = MainApp.getDbHelper().createOrUpdate(treatment); //log.debug("Adding new Treatment record" + treatment.toString()); if (detailedBolusInfo.carbTime != 0) { - Treatment carbsTreatment = new Treatment(detailedBolusInfo.insulinInterface); + Treatment carbsTreatment = new Treatment(); carbsTreatment.source = detailedBolusInfo.source; carbsTreatment.pumpId = detailedBolusInfo.pumpId; // but this should never happen carbsTreatment.date = detailedBolusInfo.date + detailedBolusInfo.carbTime * 60 * 1000L + 1000L; // add 1 sec to make them different records diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java index a4bbd34f1c..e60e30d158 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/ActionStringHandler.java @@ -242,7 +242,7 @@ public class ActionStringHandler { } else if("opencpp".equals(act[0])){ Object activeProfile = MainApp.getConfigBuilder().getActiveProfileInterface(); - CircadianPercentageProfilePlugin cpp = (CircadianPercentageProfilePlugin) MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); + CircadianPercentageProfilePlugin cpp = MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); if(cpp == null || activeProfile==null || cpp != activeProfile){ sendError("CPP not activated!"); @@ -256,7 +256,7 @@ public class ActionStringHandler { } else if("cppset".equals(act[0])){ Object activeProfile = MainApp.getConfigBuilder().getActiveProfileInterface(); - CircadianPercentageProfilePlugin cpp = (CircadianPercentageProfilePlugin) MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); + CircadianPercentageProfilePlugin cpp = MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); if(cpp == null || activeProfile==null || cpp != activeProfile){ sendError("CPP not activated!"); @@ -271,9 +271,9 @@ public class ActionStringHandler { } else if("tddstats".equals(act[0])){ Object activePump = MainApp.getConfigBuilder().getActivePump(); - PumpInterface dana = (PumpInterface) MainApp.getSpecificPlugin(DanaRPlugin.class); - PumpInterface danaV2 = (PumpInterface) MainApp.getSpecificPlugin(DanaRv2Plugin.class); - PumpInterface danaKorean = (PumpInterface) MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); + PumpInterface dana = MainApp.getSpecificPlugin(DanaRPlugin.class); + PumpInterface danaV2 = MainApp.getSpecificPlugin(DanaRv2Plugin.class); + PumpInterface danaKorean = MainApp.getSpecificPlugin(DanaRKoreanPlugin.class); if((dana == null || dana != activePump) && @@ -336,7 +336,7 @@ public class ActionStringHandler { DateFormat df = new SimpleDateFormat("dd.MM."); String message = ""; - CircadianPercentageProfilePlugin cpp = (CircadianPercentageProfilePlugin) MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); + CircadianPercentageProfilePlugin cpp = MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); boolean isCPP = (cpp!= null && cpp.isEnabled(PluginBase.PROFILE)); double refTDD = 100; if(isCPP) refTDD = cpp.baseBasalSum()*2; @@ -472,7 +472,7 @@ public class ActionStringHandler { //Check for Temp-Target: TempTarget tempTarget = MainApp.getConfigBuilder().getTempTargetFromHistory(System.currentTimeMillis()); if (tempTarget != null) { - ret += "Temp Target: " + Profile.toTargetRangeString(tempTarget.low, tempTarget.low, profile.getUnits()); + ret += "Temp Target: " + Profile.toTargetRangeString(tempTarget.low, tempTarget.low, Constants.MGDL, profile.getUnits()); ret += "\nuntil: " + DateUtil.timeString(tempTarget.originalEnd()); ret += "\n\n"; } @@ -572,7 +572,7 @@ public class ActionStringHandler { private static void setCPP(int percentage, int timeshift) { Object activeProfile = MainApp.getConfigBuilder().getActiveProfileInterface(); - CircadianPercentageProfilePlugin cpp = (CircadianPercentageProfilePlugin) MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); + CircadianPercentageProfilePlugin cpp = MainApp.getSpecificPlugin(CircadianPercentageProfilePlugin.class); if(cpp == null || activeProfile==null || cpp != activeProfile){ sendError("CPP not activated!"); diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 99275d8cb8..c8317565ee 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -144,7 +144,7 @@ NO APS SELECTED OR PROVIDED RESULT Test Alarm Avg. delta - Bolus Einschränkung angewendet + Bolus Beschränkung angewendet Ankündigung BZ Check Kohlehydrat Korrektur @@ -155,18 +155,18 @@ Eingegeben durch Anderes Split - Constraints + Beschränkungen Generell Treatments - Constraint applied! - Constraints violation + Beschränkungen sind aktiv! + Beschränkungen wurden verletzt oder Limit erreicht Czech Gesetzt durch Pumpe - LOOP DISABLED BY CONSTRAINTS - After processed constraints + LOOP DEAKTIVIERT DURCH DIE BESCHRÄNKUNG + Nach Beschränkungen Loop Manual enacts - Carbs constraint applied + Kohlenhydrate Beschränkung erreicht Reset Datenbanken Minimale Dauer Erneure Behandlungen von NS @@ -300,7 +300,7 @@ Knopf 3 Config Builder vor %d min - "AKT" + AKT WEAR VP TREAT @@ -317,7 +317,7 @@ DANA "CONF" "CPP" - "CP" + CP Bitte verwenden Sie nur Ziffern. Pflichtfeld Telefonnummer ist nicht gültig. @@ -462,7 +462,7 @@ Aktiviere lokalen Broadcast. Logge App-Start in NS Kein Upload zu NS - Alle an NS gesendete Daten verworfen. AAPS ist verbunden, aber keine Änderungen in NS ist fertig + Alle an NS gesendete Daten werden verworfen. AAPS ist verbunden, aber es wird keine Änderungen in NS gemacht Hoch Niedrig Gesetzt zu %f @@ -478,9 +478,9 @@ Nightscout URL eingeben Nightscout URL Verifiziere, dass der BZ und Pumpen Insulin Daten in Nightscout erfolgreich hoch geladen wurden - Konfiguriere Anzeige und das Monitoring und analysiere Basal und die Faktoren + Konfiguriere die Anzeige und das Monitoring (NS) und analysiere die Basal-Rate und die Faktoren Lasse den OpenLoop Modus für ein paar Tage laufen und setzte manuell temp Basal-Raten - Starte ein OpenLoop + Starte den OpenLoop Modus VERALTETE DATEN Laufende Benachrichtigungen Öffne Einstellungen auf der Uhr @@ -496,7 +496,7 @@ Basal Wert [U/h] Profil Setzten vom Basal Profil fehlgeschlagen - Basal Profil in der Pumpe erfolgreich aktualisiert + Basal Profil in der Pumpe aktualisiert Profilwechsel Pumpe Pumpe nicht initialisiert! @@ -561,7 +561,7 @@ Durschnittliche Sensitivität Einstellung Extended Bolus vor %dMin - "Um das temp Basal zu stoppen, antworte mit dem Code %s" + Um das temp Basal zu stoppen, antworte mit dem Code %s Bolus %.2fU erfolgreich abgegeben xDrip hat die Kalbrierung nicht erhalten Um die Kalibrierung %.2f zu senden, antworte mit dem Code %s @@ -591,4 +591,33 @@ Model: %02X Protokoll: %02X Code: %02X Empfindlichkeitserkennung COB + Aktiviere die SuperBolus-Funktion im Wizard. Nicht aktivieren, wenn du nicht weißt, was es macht! ES KANN ZU EINER ÜBERDOSIERUNG AN INSULIN KOMMEN, WENN DU ES BLIND BENUTZT! + "Verstehen des OpenLoops und der Temp-Basal-Empfehlungen + Verwende AMA Autosense + Um Basal mit %.2fU/h zu starten, antworte mit dem Code %s + Fiasp + Ultra-Rapid Oref + Zeige die Übersichtsbenachrichtigungen auch als Wear Bestätigungsmeldung auf der Uhr an. + Kurzes Durschnitts-Delta + Rapid-Acting Oref + Default Eintrag: true. Erlaubt Autosense den Ziel-BZ-Bereich in Verbindung mit ISF und Basal anzupassen. + Intervall für Autosense [h] + Anzahl der Stunde von der Vergangenheit, die verwendet werden um die Sensitivität zu erkennen (Kohlenhydrate absorptuinszeit ist nicht enthalten) + Anhand von dieser Erfahrung, entscheide wie hoch max Basal sein sollte und setzte dies in der Pumpe und den Einstellungen + Lasse es im ClosedLoop Modus mit max IOB = 0 für ein paar Tage laufen ohne zu viele Unterzuckeren zu haben + Starte den ClosedLoop Modus mit Abschaltung bei niedrigen Werte + Verwende es ein paar Tage, und zumindest eine Nacht ohne Niedrig-Alarme (UZ), bevor du den BZ-Zielbereich senkst. + Fein-Einstellung des Closed-Loops, Erhöhen von max IOB über 0 und langsames Heruntersetzen des Zielbereichs. + Eine Woche erfolgreiches Looping am Tag mit regelmäßiger Kohlenhydrat-Eingabe + Passe Basal und Faktoren an, falls notwendig, und aktiviere dann die Autosense-Funktion + Aktiviere zusätzliche Funktionen tagsüber, wie z.B. den Mahlzeitenassistent + Stark veraltete Daten + Stark veraltete Daten nach [min] + Dutch + Peak Time [min] + IOB Kurve Peak Time + Free-Peak Oref + DIA von %s ist zu kurz - aaps nutzt stattdessen %s! + Möglicherweise ungenau, wenn zum Befüllen ein Bolus verwendet wurde! + Verhältnis diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 0365cc5461..33cf3ef855 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -1,10 +1,10 @@ - Treatments 안전설정 + 관리 안전설정 최대 허용 식사주입인슐린 [U] 최대 허용 탄수화물 [g] 설정 - NS에서 Treatments 새로고침 + NS에서 관리 새로고침 백업 테스트 알람 데이터베이스 초기화 @@ -50,7 +50,7 @@ 가상 펌프 기본 기초주입량 임시기초주입 - 확장 식사주입 + 확장식사주입 배터리 인슐린 잔량 OK @@ -58,7 +58,7 @@ 최근 실행 입력 변수 혈당 상태 - Current temp + 현재 임시기초 IOB 데이터 프로파일 식사 데이터 @@ -68,24 +68,25 @@ No pump available 변경사항 없음 요청 - Rate + 주입량 기간 근거 혈당 Delta Delta: Avg. delta - Config Builder + 구성 관리자 목표 OpenAPS MA - Overview + 개요 NS 프로파일 Simple 프로파일 - Treatments + 임시기초 + 관리 가상펌프 - Careportal + 케어포털 펌프 - Treatments + 관리 임시기초주입 프로파일 APS @@ -96,8 +97,8 @@ Loop Loop APS - After processed constraints - Set by pump + 제약 적용 후 + 펌프로 설정 최근 주입 OK 취소 @@ -106,7 +107,7 @@ 플러그인이 사용불가능 합니다 제한 위반 식사주입 전송 에러 - Tempbasal delivery error + 임시기초 전송 에러 기초주입 값 [%] % (100% = 현재) 새 임시기초주입 적용: @@ -128,9 +129,12 @@ APS 모드 Closed Loop Open Loop - Loop Disabled + Loop 비활성화됨 + Loop 비활성화하기 + Loop 활성화하기 새로운 제안이 있습니다 지원하지 않는 NSClient 버전입니다 + 지원하지 않는 Nightscout 버전입니다 NSClient 가 설치되지 않았습니다. 기록이 삭제됩니다! NS에서 혈당데이터가 확인 가능합니다. NS에서 펌프상태가 확인 가능합니다. @@ -141,40 +145,40 @@ 기초주입 IOB 식사주입 제한이 적용되었습니다 탄수화물 제한이 적용되었습니다 - BG Check - Announcement - Note - Question - Exercise - Pump Site Change - CGM Sensor Insert - CGM Sensor Start - Insulin Cartridge Change + 혈당 체크 + 알림 + 노트 + 의문 + 운동 + 펌프 위치 변경 + CGM 센서 삽입 + CGM 센서 시작 + 인슐린 카트리지 교체 프로파일 변경 - Snack Bolus - Meal Bolus - Correction Bolus - Combo Bolus - Temp Basal Start - Temp Basal End - Carbs correction - OpenAPS Offline - Event type - Other - Meter - Sensor - Carbs - Insulin - Carb time - Split - Duration - Percent - Absolute - Notes - Event time - Profile + 간식 주입 + 식사 주입 + 교정 주입 + 콤보 주입 + 임시 기초 시작 + 임시 기초 종료 + 탄수화물 교정 + OpenAPS 오프라인 + 이벤트 종류 + 기타 + 측정기 + 센서 + 탄수화물 + 인슐린 + 탄수화물 시간 + 분할 + 기간 + 퍼센트 + 절대값 + 노트 + 이벤트 시간 + 프로파일 Entered By - Glucose type + 혈당 종류 아직 NS에서 프로파일을 로드하지 못했습니다. 임시기초주입 확장식사주입 @@ -191,13 +195,17 @@ 파일을 찾을 수 없습니다 설정 저장하기 설정 불러오기 + Dutch German Spanish Greek + Italian + Russian + Swedish 임시기초주입 최대량 [U/hr] 이 값은 OpenAPS에서 Max Basal(임시기초주입 최대량)로 설정되는 값입니다 OpenAPS가 주입할수 있는 최대 기초주입 IOB [U] - 이 값은 OpenAPS에서 Max IOB라고 부르는 값입니다\n기본값은 0으로 설정되어 있습니다. 몇일 혹은 몇주 정도 사용 후에 적정한 정도에 따라 값을 조정할 수 있습니다. + 이 값은 OpenAPS에서 Max IOB라고 부르는 값입니다\n기본값은 0으로 설정되어 있습니다. 몇일 혹은 몇주 정도 사용 후 적절한 값으로 변경할 수 있습니다. Bulgarian 닫기 언어 @@ -208,16 +216,15 @@ 프로파일을 펌프에 동기화하기 다나R 펌프 설정 Nightscout - End User License Agreement + 최종 사용자 라이선스 동의서 MUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - I UNDERSTAND AND AGREE + 모두 이해하였고 동의합니다. 저장 블루투스 어댑터를 찾지 못했습니다 선택된 기기를 찾지 못했습니다 펌프 연결 에러 - 최근 연결 펌프 IOB - Daily units + 하루 인슐린양 최근 식사주입: 시간 전 사용할수 없는 입력 데이터 @@ -246,14 +253,14 @@ Finger Sensor Manual - Temporary Target - Temporary Target Cancel + 임시 목표 + 임시 목표 취소 DanaR 프로파일 설정 인슐린활동시간(DIA) [h] Duration of Insulin Activity 기초주입 프로파일 갱신 실패 - History - Reload + 과거기록 + 새로고침 업로드중 E bolus DS bolus @@ -263,11 +270,11 @@ basal hour 혈당 탄수화물 - alarm + 알람 Total %d records uploaded S bolus - Alarms - Basal Hours + 알람 + 기초주입 시간 식사주입 탄수화물 일일 인슐린 @@ -284,8 +291,8 @@ 막힘 정지 정지 누름 - Waiting for pump - 펌프를 기다리고 있습니다. Click to refresh. + 펌프를 기다리는 중 + 펌프를 기다리고 있습니다. 새로고침 하려면 클릭하세요. %.2fU을 주입합니다 나이트스카우트를 세팅하고, 기초주입과 비율을 분석한다. 나이트스카우트에서 혈당 데이터가 잘 들어오는지, 펌프데이터가 업로드 되는지 확인한다. @@ -309,15 +316,17 @@ %.2f limited to %.2f 값 %s 은 하드리밋(Hard Limit)를 벗어났습니다 원격 기초주입설정이 허가되지 않았습니다 + 원격 명령이 허가되지 않았습니다 기초주입 %.2fU/h 을 실행하려면 %s 를 입력하고 답장하세요 + %d분동안 Loop 일시중지하려면 %s 를 입력하고 답장하세요 Temp basal %.2fU/h for %d min started successfully - Temp basal start failed + 임시기초 시작을 실패하였습니다. 임시기초주입을 중지하려면 %s 를 입력하고 답장하세요 - Temp basal canceled - Canceling temp basal failed - 알려지지 않은 명령이거나 잘못된 답장입니다 - 퀵마법사 - 퀵마법사 설정 + 임시기초가 취소되었습니다. + 임시기초 취소를 실패하였습니다. + 알려지지 않은 명령이거나 잘못된 답장입니다. + 빠른마법사 + 빠른마법사 설정 버튼명: 탄수화물: 유효기간: @@ -327,10 +336,10 @@ Meal Corr 한국어 - 액션 + 실행 AndroidAPS 시작 - NS upload only (disabled sync) - NS upload only. 로컬소스(xDrip)가 선택되지 않으면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다. + NS에 업로드만 하기(동기화 불능) + NS에 업로드만 하기. 로컬소스(xDrip)가 선택되지 않으면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다. 펌프가 초기화 되지 않았습니다! 펌프가 초기화와 프로파일 설정이 되지 않았습니다! 공기/채움 @@ -347,14 +356,14 @@ mg/dl mmol/l DIA: - Target range: + 목표 범위: Edit Base-Basal: Edit Base-ISF: Edit Base-IC: Base Profile: CircadianPercentageProfile 차트 표시 범위 - Overview/스마트워치 차트 표시용 고/저혈당 선 + 개요/스마트워치 차트 표시용 고/저혈당 선 저혈당 선 고혈당 선 웨어 @@ -366,7 +375,7 @@ 펌프배터리 방전 다나R 한글 펌프 드라이버가 잘못 선택되었습니다 - Basal rate: + 기초주입량: 기초주입 프로파일 설정이 실패하였습니다 기초주입 프로파일이 펌프에 업데이트 되었습니다 펌프에서 EasyUI모드를 해제하세요 @@ -377,36 +386,37 @@ Last BG: MDI MM640g - Ongoing Notification + 연속 알림 OLD DATA - %dmin ago + %d분전 %dmin ago Local Profile OpenAPS AMA Short avg. delta Long avg. delta Array of %d elements.\nActual value: - Autosens data + Autosens 정보 Script debug AMA autosens 기능 사용하기 + NS에서 이벤트 새로고침 Eating Soon Activity Remove record: - DanaR Stats - Cumulative TDD - Exponentially Weighted TDD - Basal - Bolus - TDD - Date - Ratio - # Days - Weight + DanaR 통계 + 누적 일총량 + 지수가중 일총량 + 기초주입 + 식사주입 + 일총량 + 날짜 + 비율 + #일 + 가중 Possibly inaccurate if using boluses for priming/filling! Old Data Please Press "RELOAD" - Total Base Basal - TBB * 2 - Initializing ... + 총기초량 + 총기초량 * 2 + 초기화중 ... ACT CONF LOOP @@ -430,7 +440,6 @@ Always use short average delta instead of simple delta Useful when data from unfiltered sources like xDrip gets noisy. 고급 설정 - Firmware: Model: %02X Protocol: %02X Code: %02X 프로파일 Default value: 3\nThis is a key OpenAPS safety cap. What this does is limit your basals to be 3x (in this people) your biggest basal rate. You likely will not need to change this, but you should be aware that’s what is discussed about “3x max daily; 4x current” for safety caps. @@ -449,7 +458,7 @@ SMS폰번호가 유효하지 않습니다 Copy To Clipboard Copied to clipboard - Show log + 로그 보기 보정 혈당 보정 보정값 %.1f을 xDrip에 전송하시겠습니까? @@ -458,7 +467,7 @@ 원격보정이 허용되지 않았습니다 보정 전송됨. xDrip에서 수신이 되도록 설정되어 있어야 합니다. xDrip에서 보정을 받지 못합니다. - Don\'t show again + 다시 보지 않기 펌프 일시중지. 상태를 새로고치려면 클릭하세요 펌프 일시중지됨 펌프 상태 가져오는중 @@ -496,17 +505,149 @@ Status: Paused Clear log - NSCLIENT이 쓰기 권한이 없습니다. 잘못된 API secret? + NSCLIENT이 쓰기 권한이 없습니다. 잘못된 API secret인지 확인해보세요 웨어 설정 IOB 자세하게 보여주기 워치페이스에 IOB를 식사주입IOB와 기초주입IOB로 나누어서 보여줍니다. not successful - please check phone - Not available + 알수없음 나이 어린이 청소년 성인 안전제한을 설정하기 위해 당뇨인의 나이를 선택하세요 - Italian + Glimp + Device does not appear to support battery optimization whitelisting! + 권한을 허용하세요. + %s needs battery optimalization whitelisting for proper performance + Loop 일시중지 + 일시중지중 (%d분) + Superbolus (%d분) + Loop 메뉴 + 1시간동안 Loop 일시중지 + 2시간동안 Loop 일시중지 + 3시간동안 Loop 일시중지 + 10시간동안 Loop 일시중지 + 30분동안 펌프 일시중지 + 1시간동안 펌프 일시중지 + 2시간동안 펌프 일시중지 + 3시간동안 펌프 일시중지 + 10시간동안 펌프 일시중지 + 재시작 + 기간이 잘못되었습니다. + Loop 일시중지됨 + Loop 재시작됨 + 15분 추이 + COB + Superbolus + 앱시작을 NS에 기록하기 + 설정을 적용하기위해 앱을 종료합니다. + DanaRv2 + 인슐린 + Fast Acting Insulin + Novorapid, Novolog, Humalog + Fiasp + INS + Fast Acting Insulin Prolonged + Enable superbolus in wizard + Enable superbolus functionality in wizard. Do not enable until you learn what it really does. IT MAY CAUSE INSULIN OVERDOSE IF USED BLINDLY! + IOB + COB + PRE + BAS + 펌웨어 + 최근 연결 + 블루투스 상태 + About + Missing SMS permission + DEV + xDrip 상태(워치) + xDrip 상태표시라인(워치) + xds + BGI 보기 + BGI를 상태라인에 추가하기 + NS에 업로드하지 않기 + NS로 보낼 모든 데이터가 버려집니다. AAPS는 NS에 연결되어 있지만 NS에는 변화가 없을것입니다. + 기초주입 최소단위 + 식사주입 최소단위 + 확장식사 + 임시목표 + 확장 식사주입 취소 + 센서 나이 + 캐뉼라 나이 + 인슐린 나이 + 시간 + 기초주입 종류 + 프로파일에서 ISF가 누락되었습니다. 가본값을 사용합니다. + 프로파일에서 IC가 누락되었습니다. 가본값을 사용합니다. + 프로파일에서 기초주입량이 누락되었습니다. 가본값을 사용합니다. + 프로파일에서 목표범위가 누락되었습니다. 가본값을 사용합니다. + 프로파일이 잘못되었습니다 !!! + 프로파일변경 + 펌프 배터리 나이 + 펌프 배터리 교체 + 알람 옵션 + Urgent high + High + Low + Urgent low + Currently set to %f + Stale data + Urgent stale data + Stale data threshold [min] + Urgent stale data threshold [min] + Interval for autosens [h] + Amount of hours in the past for sensitivity detection (carbs absorption time is excluded) + SEN + Ignore profile switch events + All profile switch events are ignored and active profile is always used + Pump + OpenAPS + Device + Uploader + 민감도 감지 + SENS + Sensitivity Oref0 + Sensitivity AAPS + 흡수 설정 + Meal max absorption time [h] + Time in hours where is expected all carbs from meal will be absorbed + 확장식사주입을 %로 표시하기 + SAGE + IAGE + CAGE + PBAGE + OAPS + UPLD + BAS + EXT + 화면 잠금 + 잠금 + By turning on Autosense feature remember to enter all eated carbs. Otherwise carbs deviations will be identified wrong as sensitivity change !! + Sensitivity WeightedAverage + OK + Cancel + needs to be activated to send values to the pump! + Not all profiles loaded! + Values not stored! + 개요 알림 + 개요 알림을 웨어확인메세지로 전달합니다. + (xDrip 같은) 다른 앱으로 브로드캐스트를 활성화합니다. + Local Broadcasts 활성화하기 + 활동 & 조절 + 탄수화물 & 식사주입 + CGM & OPENAPS + 펌프 + Basal value [U/h] + Duration [min] + IOB Curve Peak Time + Peak Time [min] + Free-Peak Oref + Rapid-Acting Oref + Ultra-Rapid Oref + "DIA of %s too short - using %s instead!" + ACTIVATE PROFILE + Date + INVALID AndroidAPS diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 91d1dec374..f8aff3bad7 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -73,7 +73,7 @@ Pump Kanyl Byte Fråga CP - Bolus för Mellis + Snack Bolus Temp Basal Slut Temp Basal Start Temp Mål BG @@ -142,7 +142,7 @@ Datum Exponentiellt viktad TDD Gammal Data Vg tryck \"Ladda om\" - Ratio + Kvot Använd förlängd bolus med >200% Värde ej korrekt angivet Se profil @@ -169,7 +169,7 @@ Frånkoppla pump i 2 h Frånkoppla pump i 30 min Frånkoppla pump i 3 h - AVBÖJ + TA BORT Ignorera profilbyten Alla profilbyten ignoreras och aktiv profil används alltid Visa inte detta igen @@ -329,7 +329,7 @@ Enheter: Säkerhet vid behandling Max tillåtna KH (g) - Max tillåten + Max tillåten bolus [E] E TOTAL Korr @@ -581,5 +581,9 @@ Delta: IOB: %dmin sedan - AndroidAPS - \ No newline at end of file + Gammal data tröskelvärde + Bråttom gammal data tröskelvärde + Bråttom hög + Bråttom låg + Bråttom gammal data +