diff --git a/app/src/main/java/info/nightscout/androidaps/Constants.java b/app/src/main/java/info/nightscout/androidaps/Constants.java index 2ecabfe965..f87e13d41f 100644 --- a/app/src/main/java/info/nightscout/androidaps/Constants.java +++ b/app/src/main/java/info/nightscout/androidaps/Constants.java @@ -31,7 +31,7 @@ public class Constants { public static final long remoteBolusMinDistance = 15 * 60 * 1000L; // Circadian Percentage Profile - public static final int CPP_MIN_PERCENTAGE = 50; + public static final int CPP_MIN_PERCENTAGE = 30; public static final int CPP_MAX_PERCENTAGE = 200; public static final int CPP_MIN_TIMESHIFT = -6; public static final int CPP_MAX_TIMESHIFT = 23; diff --git a/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.java b/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.java index 77ea7715cc..bf61df4564 100644 --- a/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/activities/HistoryBrowseActivity.java @@ -52,7 +52,7 @@ public class HistoryBrowseActivity extends AppCompatActivity { ImageButton chartButton; boolean showBasal = true; - boolean showIob, showCob, showDev, showRat, showDevslope; + boolean showIob, showCob, showDev, showRat, showActPrim, showActSec, showDevslope; @BindView(R.id.historybrowse_date) @@ -285,6 +285,10 @@ public class HistoryBrowseActivity extends AppCompatActivity { // set manual x bounds to have nice steps graphData.formatAxis(fromTime, toTime); + if(showActPrim) { + graphData.addActivity(fromTime, toTime, false,1d); + } + // Treatments graphData.addTreatments(fromTime, toTime); @@ -305,6 +309,7 @@ public class HistoryBrowseActivity extends AppCompatActivity { boolean useCobForScale = false; boolean useDevForScale = false; boolean useRatioForScale = false; + boolean useIAForScale = false; boolean useDSForScale = false; if (showIob) { @@ -315,6 +320,8 @@ public class HistoryBrowseActivity extends AppCompatActivity { useDevForScale = true; } else if (showRat) { useRatioForScale = true; + } else if (showActSec) { + useIAForScale = true; } else if (showDevslope) { useDSForScale = true; } @@ -327,6 +334,8 @@ public class HistoryBrowseActivity extends AppCompatActivity { secondGraphData.addDeviations(fromTime, toTime, useDevForScale, 1d); if (showRat) secondGraphData.addRatio(fromTime, toTime, useRatioForScale, 1d); + if (showActSec) + secondGraphData.addActivity(fromTime, toTime, useIAForScale, useIAForScale? 2d: 1d); if (showDevslope) secondGraphData.addDeviationSlope(fromTime, toTime, useDSForScale, 1d); @@ -337,14 +346,14 @@ public class HistoryBrowseActivity extends AppCompatActivity { // do GUI update runOnUiThread(() -> { - if (showIob || showCob || showDev || showRat || showDevslope) { + if (showIob || showCob || showDev || showRat || showActSec || showDevslope) { iobGraph.setVisibility(View.VISIBLE); } else { iobGraph.setVisibility(View.GONE); } // finally enforce drawing of graphs graphData.performUpdate(); - if (showIob || showCob || showDev || showRat || showDevslope) + if (showIob || showCob || showDev || showRat || showActSec || showDevslope) secondGraphData.performUpdate(); }); }).start(); @@ -353,22 +362,37 @@ public class HistoryBrowseActivity extends AppCompatActivity { private void setupChartMenu() { chartButton = (ImageButton) findViewById(R.id.overview_chartMenuButton); chartButton.setOnClickListener(v -> { - MenuItem item; + MenuItem item,dividerItem; CharSequence title; + int titleMaxChars = 0; SpannableString s; PopupMenu popup = new PopupMenu(v.getContext(), v); item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.BAS.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_basals)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.basal, null)), 0, s.length(), 0); item.setTitle(s); item.setCheckable(true); item.setChecked(showBasal); + item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.ACTPRIM.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_activity)); + title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); + s = new SpannableString(title); + s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.activity, null)), 0, s.length(), 0); + item.setTitle(s); + item.setCheckable(true); + item.setChecked(showActPrim); + + dividerItem = popup.getMenu().add(""); + dividerItem.setEnabled(false); + item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.IOB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_iob)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.iob, null)), 0, s.length(), 0); item.setTitle(s); @@ -377,6 +401,7 @@ public class HistoryBrowseActivity extends AppCompatActivity { item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.COB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_cob)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.cob, null)), 0, s.length(), 0); item.setTitle(s); @@ -385,6 +410,7 @@ public class HistoryBrowseActivity extends AppCompatActivity { item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.DEV.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_deviations)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.deviations, null)), 0, s.length(), 0); item.setTitle(s); @@ -393,15 +419,27 @@ public class HistoryBrowseActivity extends AppCompatActivity { item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.SEN.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_sensitivity)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.ratio, null)), 0, s.length(), 0); item.setTitle(s); item.setCheckable(true); item.setChecked(showRat); + item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.ACTSEC.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_activity)); + title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); + s = new SpannableString(title); + s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.activity, null)), 0, s.length(), 0); + item.setTitle(s); + item.setCheckable(true); + item.setChecked(showActSec); + + if (MainApp.devBranch) { item = popup.getMenu().add(Menu.NONE, OverviewFragment.CHARTTYPE.DEVSLOPE.ordinal(), Menu.NONE, "Deviation slope"); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.devslopepos, null)), 0, s.length(), 0); item.setTitle(s); @@ -409,6 +447,10 @@ public class HistoryBrowseActivity extends AppCompatActivity { item.setChecked(showDevslope); } + // Fairly good guestimate for required divider text size... + title = new String(new char[titleMaxChars+10]).replace("\0", "_"); + dividerItem.setTitle(title); + popup.setOnMenuItemClickListener(item1 -> { if (item1.getItemId() == OverviewFragment.CHARTTYPE.BAS.ordinal()) { showBasal = !item1.isChecked(); @@ -420,6 +462,10 @@ public class HistoryBrowseActivity extends AppCompatActivity { showDev = !item1.isChecked(); } else if (item1.getItemId() == OverviewFragment.CHARTTYPE.SEN.ordinal()) { showRat = !item1.isChecked(); + } else if (item1.getItemId() == OverviewFragment.CHARTTYPE.ACTPRIM.ordinal()) { + showActPrim = !item1.isChecked(); + } else if (item1.getItemId() == OverviewFragment.CHARTTYPE.ACTSEC.ordinal()) { + showActSec = !item1.isChecked(); } else if (item1.getItemId() == OverviewFragment.CHARTTYPE.DEVSLOPE.ordinal()) { showDevslope = !item1.isChecked(); } diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java b/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java index a5c9773012..4bc894405e 100644 --- a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java +++ b/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java @@ -7,8 +7,10 @@ import java.util.List; import info.nightscout.androidaps.data.DetailedBolusInfo; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.data.PumpEnactResult; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; +import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; /** * Created by mike on 04.06.2016. @@ -53,8 +55,8 @@ public interface PumpInterface { // Status to be passed to NS JSONObject getJSONStatus(Profile profile, String profileName); - String manufacter(); - String model(); + ManufacturerType manufacturer(); + PumpType model(); String serialNumber(); // Pump capabilities diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java b/app/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java new file mode 100644 index 0000000000..0f61dd3320 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java @@ -0,0 +1,27 @@ +package info.nightscout.androidaps.plugins.common; + +public enum ManufacturerType { + + AndroidAPS("AndroidAPS"), + Medtronic("Medtronic"), + Sooil("SOOIL"), + + Tandem("Tandem"), + Insulet("Insulet"), + Animas("Animas"), Cellnovo("Cellnovo"), Roche("Roche"); + + + + private String description; + + ManufacturerType(String description) { + + this.description = description; + } + + public String getDescription() { + return description; + } + + +} diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/FillDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/FillDialog.java index e5ba4b9a13..be5a557fa4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/FillDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/FillDialog.java @@ -103,7 +103,7 @@ public class FillDialog extends DialogFragment implements OnClickListener { Double maxInsulin = MainApp.getConstraintChecker().getMaxBolusAllowed().value(); double bolusstep = ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().bolusStep; editInsulin = view.findViewById(R.id.fill_insulinamount); - editInsulin.setParams(0d, 0d, maxInsulin, bolusstep, DecimalFormatter.pumpSupportedBolusFormat(), false, textWatcher); + editInsulin.setParams(0d, 0d, maxInsulin, bolusstep, DecimalFormatter.pumpSupportedBolusFormat(), false, view.findViewById(R.id.ok), textWatcher); Button preset1Button = view.findViewById(R.id.fill_preset_button1); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewExtendedBolusDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewExtendedBolusDialog.java index 9b5b7af515..99e877efcc 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewExtendedBolusDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewExtendedBolusDialog.java @@ -42,12 +42,12 @@ public class NewExtendedBolusDialog extends DialogFragment implements View.OnCli Double maxInsulin = MainApp.getConstraintChecker().getMaxExtendedBolusAllowed().value(); editInsulin = (NumberPicker) view.findViewById(R.id.overview_newextendedbolus_insulin); - editInsulin.setParams(0d, 0d, maxInsulin, 0.1d, new DecimalFormat("0.00"), false); + editInsulin.setParams(0d, 0d, maxInsulin, 0.1d, new DecimalFormat("0.00"), false, view.findViewById(R.id.ok)); double extendedDurationStep = ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().extendedBolusDurationStep; double extendedMaxDuration = ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().extendedBolusMaxDuration; editDuration = (NumberPicker) view.findViewById(R.id.overview_newextendedbolus_duration); - editDuration.setParams(extendedDurationStep, extendedDurationStep, extendedMaxDuration, extendedDurationStep, new DecimalFormat("0"), false); + editDuration.setParams(extendedDurationStep, extendedDurationStep, extendedMaxDuration, extendedDurationStep, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); view.findViewById(R.id.ok).setOnClickListener(this); view.findViewById(R.id.cancel).setOnClickListener(this); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewTempBasalDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewTempBasalDialog.java index 30b6e60dbd..cad2e22f85 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewTempBasalDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/dialogs/NewTempBasalDialog.java @@ -66,17 +66,17 @@ public class NewTempBasalDialog extends DialogFragment implements View.OnClickLi basalPercent = (NumberPicker) view.findViewById(R.id.overview_newtempbasal_basalpercentinput); double maxTempPercent = pumpDescription.maxTempPercent; double tempPercentStep = pumpDescription.tempPercentStep; - basalPercent.setParams(100d, 0d, maxTempPercent, tempPercentStep, new DecimalFormat("0"), true); + basalPercent.setParams(100d, 0d, maxTempPercent, tempPercentStep, new DecimalFormat("0"), true, view.findViewById(R.id.ok)); Profile profile = ProfileFunctions.getInstance().getProfile(); Double currentBasal = profile != null ? profile.getBasal() : 0d; basalAbsolute = (NumberPicker) view.findViewById(R.id.overview_newtempbasal_basalabsoluteinput); - basalAbsolute.setParams(currentBasal, 0d, pumpDescription.maxTempAbsolute, pumpDescription.tempAbsoluteStep, new DecimalFormat("0.00"), true); + basalAbsolute.setParams(currentBasal, 0d, pumpDescription.maxTempAbsolute, pumpDescription.tempAbsoluteStep, new DecimalFormat("0.00"), true, view.findViewById(R.id.ok)); double tempDurationStep = pumpDescription.tempDurationStep; double tempMaxDuration = pumpDescription.tempMaxDuration; duration = (NumberPicker) view.findViewById(R.id.overview_newtempbasal_duration); - duration.setParams(tempDurationStep, tempDurationStep, tempMaxDuration, tempDurationStep, new DecimalFormat("0"), false); + duration.setParams(tempDurationStep, tempDurationStep, tempMaxDuration, tempDurationStep, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); if ((pumpDescription.tempBasalStyle & PumpDescription.PERCENT) == PumpDescription.PERCENT && (pumpDescription.tempBasalStyle & PumpDescription.ABSOLUTE) == PumpDescription.ABSOLUTE) { // Both allowed diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java index 078b3fc1ce..91cabe35c1 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/careportal/Dialogs/NewNSTreatmentDialog.java @@ -266,14 +266,14 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick editBg = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_bginput); editTemptarget = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_temptarget); if (profile == null) { - editBg.setParams(bg, 0d, 500d, 0.1d, new DecimalFormat("0.0"), false, bgTextWatcher); - editTemptarget.setParams(bg, 0d, 500d, 0.1d, new DecimalFormat("0.0"), false); + editBg.setParams(bg, 0d, 500d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.ok), bgTextWatcher); + editTemptarget.setParams(bg, 0d, 500d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.ok)); } else if (units.equals(Constants.MMOL)) { - editBg.setParams(bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false, bgTextWatcher); - editTemptarget.setParams(bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false); + editBg.setParams(bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.ok), bgTextWatcher); + editTemptarget.setParams(bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.ok)); } else { - editBg.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false, bgTextWatcher); - editTemptarget.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false); + editBg.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), bgTextWatcher); + editTemptarget.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); } sensorRadioButton.setOnCheckedChangeListener((buttonView, isChecked) -> { @@ -287,16 +287,16 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick Integer maxCarbs = MainApp.getConstraintChecker().getMaxCarbsAllowed().value(); editCarbs = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_carbsinput); - editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false); + editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); Double maxInsulin = MainApp.getConstraintChecker().getMaxBolusAllowed().value(); editInsulin = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_insulininput); - editInsulin.setParams(0d, 0d, maxInsulin, 0.05d, new DecimalFormat("0.00"), false); + editInsulin.setParams(0d, 0d, maxInsulin, 0.05d, new DecimalFormat("0.00"), false, view.findViewById(R.id.ok)); editSplit = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_splitinput); - editSplit.setParams(100d, 0d, 100d, 5d, new DecimalFormat("0"), true); + editSplit.setParams(100d, 0d, 100d, 5d, new DecimalFormat("0"), true, view.findViewById(R.id.ok)); editDuration = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_durationinput); - editDuration.setParams(0d, 0d, 24 * 60d, 10d, new DecimalFormat("0"), false); + editDuration.setParams(0d, 0d, 24 * 60d, 10d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); TextWatcher percentTextWatcher = new TextWatcher() { @Override @@ -320,7 +320,7 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick if (profile != null) maxPercent = MainApp.getConstraintChecker().getMaxBasalPercentAllowed(profile).value(); editPercent = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_percentinput); - editPercent.setParams(0d, -100d, (double) maxPercent, 5d, new DecimalFormat("0"), true, percentTextWatcher); + editPercent.setParams(0d, -100d, (double) maxPercent, 5d, new DecimalFormat("0"), true, view.findViewById(R.id.ok), percentTextWatcher); TextWatcher absoluteTextWatcher = new TextWatcher() { @Override @@ -344,16 +344,16 @@ public class NewNSTreatmentDialog extends DialogFragment implements View.OnClick if (profile != null) maxAbsolute = MainApp.getConstraintChecker().getMaxBasalAllowed(profile).value(); editAbsolute = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_absoluteinput); - editAbsolute.setParams(0d, 0d, maxAbsolute, 0.05d, new DecimalFormat("0.00"), true, absoluteTextWatcher); + editAbsolute.setParams(0d, 0d, maxAbsolute, 0.05d, new DecimalFormat("0.00"), true, view.findViewById(R.id.ok), absoluteTextWatcher); editCarbTime = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_carbtimeinput); - editCarbTime.setParams(0d, -60d, 60d, 5d, new DecimalFormat("0"), false); + editCarbTime.setParams(0d, -60d, 60d, 5d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); editPercentage = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_percentage); - editPercentage.setParams(100d, (double) Constants.CPP_MIN_PERCENTAGE, (double) Constants.CPP_MAX_PERCENTAGE, 1d, new DecimalFormat("0"), false); + editPercentage.setParams(100d, (double) Constants.CPP_MIN_PERCENTAGE, (double) Constants.CPP_MAX_PERCENTAGE, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); editTimeshift = (NumberPicker) view.findViewById(R.id.careportal_newnstreatment_timeshift); - editTimeshift.setParams(0d, (double) Constants.CPP_MIN_TIMESHIFT, (double) Constants.CPP_MAX_TIMESHIFT, 1d, new DecimalFormat("0"), false); + editTimeshift.setParams(0d, (double) Constants.CPP_MIN_TIMESHIFT, (double) Constants.CPP_MAX_TIMESHIFT, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); ProfileSwitch ps = TreatmentsPlugin.getPlugin().getProfileSwitchFromHistory(DateUtil.now()); if (ps != null && ps.isCPP) { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java index 23d65e16e4..31df9c233e 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/OverviewFragment.java @@ -189,7 +189,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, Handler sLoopHandler = new Handler(); Runnable sRefreshLoop = null; - public enum CHARTTYPE {PRE, BAS, IOB, COB, DEV, SEN, DEVSLOPE} + public enum CHARTTYPE {PRE, BAS, IOB, COB, DEV, SEN, ACTPRIM, ACTSEC, DEVSLOPE} private static final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor(); private static ScheduledFuture scheduledUpdate = null; @@ -350,14 +350,15 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, else predictionsAvailable = false; - MenuItem item; + MenuItem item,dividerItem; CharSequence title; + int titleMaxChars = 0; SpannableString s; PopupMenu popup = new PopupMenu(v.getContext(), v); - if (predictionsAvailable) { item = popup.getMenu().add(Menu.NONE, CHARTTYPE.PRE.ordinal(), Menu.NONE, "Predictions"); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.prediction, null)), 0, s.length(), 0); item.setTitle(s); @@ -367,14 +368,28 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, item = popup.getMenu().add(Menu.NONE, CHARTTYPE.BAS.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_basals)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.basal, null)), 0, s.length(), 0); item.setTitle(s); item.setCheckable(true); item.setChecked(SP.getBoolean("showbasals", true)); + item = popup.getMenu().add(Menu.NONE, CHARTTYPE.ACTPRIM.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_activity)); + title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); + s = new SpannableString(title); + s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.activity, null)), 0, s.length(), 0); + item.setTitle(s); + item.setCheckable(true); + item.setChecked(SP.getBoolean("showactivityprimary", true)); + + dividerItem = popup.getMenu().add(""); + dividerItem.setEnabled(false); + item = popup.getMenu().add(Menu.NONE, CHARTTYPE.IOB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_iob)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.iob, null)), 0, s.length(), 0); item.setTitle(s); @@ -383,6 +398,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, item = popup.getMenu().add(Menu.NONE, CHARTTYPE.COB.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_cob)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.cob, null)), 0, s.length(), 0); item.setTitle(s); @@ -391,6 +407,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, item = popup.getMenu().add(Menu.NONE, CHARTTYPE.DEV.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_deviations)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.deviations, null)), 0, s.length(), 0); item.setTitle(s); @@ -399,15 +416,26 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, item = popup.getMenu().add(Menu.NONE, CHARTTYPE.SEN.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_sensitivity)); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.ratio, null)), 0, s.length(), 0); item.setTitle(s); item.setCheckable(true); item.setChecked(SP.getBoolean("showratios", false)); + item = popup.getMenu().add(Menu.NONE, CHARTTYPE.ACTSEC.ordinal(), Menu.NONE, MainApp.gs(R.string.overview_show_activity)); + title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); + s = new SpannableString(title); + s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.activity, null)), 0, s.length(), 0); + item.setTitle(s); + item.setCheckable(true); + item.setChecked(SP.getBoolean("showactivitysecondary", true)); + if (MainApp.devBranch) { item = popup.getMenu().add(Menu.NONE, CHARTTYPE.DEVSLOPE.ordinal(), Menu.NONE, "Deviation slope"); title = item.getTitle(); + if (titleMaxChars < title.length()) titleMaxChars = title.length(); s = new SpannableString(title); s.setSpan(new ForegroundColorSpan(ResourcesCompat.getColor(getResources(), R.color.devslopepos, null)), 0, s.length(), 0); item.setTitle(s); @@ -415,6 +443,10 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, item.setChecked(SP.getBoolean("showdevslope", false)); } + // Fairly good guestimate for required divider text size... + title = new String(new char[titleMaxChars+10]).replace("\0", "_"); + dividerItem.setTitle(title); + popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { @@ -430,6 +462,10 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, SP.putBoolean("showdeviations", !item.isChecked()); } else if (item.getItemId() == CHARTTYPE.SEN.ordinal()) { SP.putBoolean("showratios", !item.isChecked()); + } else if (item.getItemId() == CHARTTYPE.ACTPRIM.ordinal()) { + SP.putBoolean("showactivityprimary", !item.isChecked()); + } else if (item.getItemId() == CHARTTYPE.ACTSEC.ordinal()) { + SP.putBoolean("showactivitysecondary", !item.isChecked()); } else if (item.getItemId() == CHARTTYPE.DEVSLOPE.ordinal()) { SP.putBoolean("showdevslope", !item.isChecked()); } @@ -1424,6 +1460,10 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, // set manual x bounds to have nice steps graphData.formatAxis(fromTime, endTime); + if(SP.getBoolean("showactivityprimary", true)) { + graphData.addActivity(fromTime, endTime, false,1d); + } + // Treatments graphData.addTreatments(fromTime, endTime); @@ -1449,6 +1489,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, boolean useDevForScale = false; boolean useRatioForScale = false; boolean useDSForScale = false; + boolean useIAForScale = false; if (SP.getBoolean("showiob", true)) { useIobForScale = true; @@ -1458,6 +1499,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, useDevForScale = true; } else if (SP.getBoolean("showratios", false)) { useRatioForScale = true; + } else if (SP.getBoolean("showactivitysecondary", false)) { + useIAForScale = true; } else if (SP.getBoolean("showdevslope", false)) { useDSForScale = true; } @@ -1470,6 +1513,8 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, secondGraphData.addDeviations(fromTime, now, useDevForScale, 1d); if (SP.getBoolean("showratios", false)) secondGraphData.addRatio(fromTime, now, useRatioForScale, 1d); + if(SP.getBoolean("showactivitysecondary", true)) + secondGraphData.addActivity(fromTime, endTime, useIAForScale,useIAForScale ? 2d: 1d); if (SP.getBoolean("showdevslope", false) && MainApp.devBranch) secondGraphData.addDeviationSlope(fromTime, now, useDSForScale, 1d); @@ -1486,6 +1531,7 @@ public class OverviewFragment extends Fragment implements View.OnClickListener, || SP.getBoolean("showcob", true) || SP.getBoolean("showdeviations", false) || SP.getBoolean("showratios", false) + || SP.getBoolean("showactivitysecondary", false) || SP.getBoolean("showdevslope", false)) { iobGraph.setVisibility(View.VISIBLE); } else { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/CalibrationDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/CalibrationDialog.java index 7ec20254f2..a82f94d2ff 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/CalibrationDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/CalibrationDialog.java @@ -66,9 +66,9 @@ public class CalibrationDialog extends DialogFragment implements View.OnClickLis bgNumber = (NumberPicker) view.findViewById(R.id.overview_calibration_bg); if (units.equals(Constants.MMOL)) - bgNumber.setParams(bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false); + bgNumber.setParams(bg, 0d, 30d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.ok)); else - bgNumber.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false); + bgNumber.setParams(bg, 0d, 500d, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); unitsView = (TextView) view.findViewById(R.id.overview_calibration_units); unitsView.setText(units); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewCarbsDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewCarbsDialog.java index 2a79a17bbd..3f7fd53c02 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewCarbsDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewCarbsDialog.java @@ -130,15 +130,15 @@ public class NewCarbsDialog extends DialogFragment implements OnClickListener, C startHypoTTCheckbox = view.findViewById(R.id.newcarbs_hypo_tt); editTime = view.findViewById(R.id.newcarbs_time); - editTime.setParams(0d, -12 * 60d, 12 * 60d, 5d, new DecimalFormat("0"), false, textWatcher); + editTime.setParams(0d, -12 * 60d, 12 * 60d, 5d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), textWatcher); editDuration = view.findViewById(R.id.new_carbs_duration); - editDuration.setParams(0d, 0d, 10d, 1d, new DecimalFormat("0"), false, textWatcher); + editDuration.setParams(0d, 0d, 10d, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), textWatcher); maxCarbs = MainApp.getConstraintChecker().getMaxCarbsAllowed().value(); editCarbs = view.findViewById(R.id.newcarb_carbsamount); - editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, textWatcher); + editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), textWatcher); Button fav1Button = view.findViewById(R.id.newcarbs_plus1); fav1Button.setOnClickListener(this); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewInsulinDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewInsulinDialog.java index ab43e0b6f0..bb2174772f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewInsulinDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewInsulinDialog.java @@ -126,12 +126,12 @@ public class NewInsulinDialog extends DialogFragment implements OnClickListener editLayout = view.findViewById(R.id.newinsulin_time_layout); editLayout.setVisibility(View.GONE); editTime = view.findViewById(R.id.newinsulin_time); - editTime.setParams(0d, -12 * 60d, 12 * 60d, 5d, new DecimalFormat("0"), false, textWatcher); + editTime.setParams(0d, -12 * 60d, 12 * 60d, 5d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), textWatcher); maxInsulin = MainApp.getConstraintChecker().getMaxBolusAllowed().value(); editInsulin = view.findViewById(R.id.newinsulin_amount); - editInsulin.setParams(0d, 0d, maxInsulin, ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().bolusStep, DecimalFormatter.pumpSupportedBolusFormat(), false, textWatcher); + editInsulin.setParams(0d, 0d, maxInsulin, ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().bolusStep, DecimalFormatter.pumpSupportedBolusFormat(), false, view.findViewById(R.id.ok), textWatcher); Button plus1Button = view.findViewById(R.id.newinsulin_plus05); plus1Button.setOnClickListener(this); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewTreatmentDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewTreatmentDialog.java index c3a9d76fb5..5c7ad412d6 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewTreatmentDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/NewTreatmentDialog.java @@ -101,8 +101,8 @@ public class NewTreatmentDialog extends DialogFragment implements OnClickListene editCarbs = (NumberPicker) view.findViewById(R.id.treatments_newtreatment_carbsamount); editInsulin = (NumberPicker) view.findViewById(R.id.treatments_newtreatment_insulinamount); - editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, textWatcher); - editInsulin.setParams(0d, 0d, maxInsulin, ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().bolusStep, DecimalFormatter.pumpSupportedBolusFormat(), false, textWatcher); + editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), textWatcher); + editInsulin.setParams(0d, 0d, maxInsulin, ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().bolusStep, DecimalFormatter.pumpSupportedBolusFormat(), false, view.findViewById(R.id.ok), textWatcher); recordOnlyCheckbox = (CheckBox) view.findViewById(R.id.newtreatment_record_only); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/WizardDialog.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/WizardDialog.java index 9638f3ef9b..7400729a38 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/WizardDialog.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/dialogs/WizardDialog.java @@ -238,11 +238,11 @@ public class WizardDialog extends DialogFragment implements OnClickListener, Com Integer maxCarbs = MainApp.getConstraintChecker().getMaxCarbsAllowed().value(); Double maxCorrection = MainApp.getConstraintChecker().getMaxBolusAllowed().value(); - 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); + editBg.setParams(0d, 0d, 500d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.ok), textWatcher); + editCarbs.setParams(0d, 0d, (double) maxCarbs, 1d, new DecimalFormat("0"), false, view.findViewById(R.id.ok), textWatcher); double bolusstep = ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription().bolusStep; - editCorr.setParams(0d, -maxCorrection, maxCorrection, bolusstep, DecimalFormatter.pumpSupportedBolusFormat(), false, textWatcher); - editCarbTime.setParams(0d, -60d, 60d, 5d, new DecimalFormat("0"), false); + editCorr.setParams(0d, -maxCorrection, maxCorrection, bolusstep, DecimalFormatter.pumpSupportedBolusFormat(), false, view.findViewById(R.id.ok), textWatcher); + editCarbTime.setParams(0d, -60d, 60d, 5d, new DecimalFormat("0"), false, view.findViewById(R.id.ok)); initDialog(); setCancelable(true); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.java index c081567a4c..29e190055a 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphData/GraphData.java @@ -21,6 +21,7 @@ import java.util.List; import info.nightscout.androidaps.Constants; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.data.IobTotal; import info.nightscout.androidaps.data.Profile; import info.nightscout.androidaps.db.BgReading; import info.nightscout.androidaps.db.CareportalEvent; @@ -46,6 +47,7 @@ import info.nightscout.androidaps.plugins.general.overview.graphExtensions.TimeA import info.nightscout.androidaps.plugins.treatments.Treatment; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; import info.nightscout.androidaps.utils.Round; +import info.nightscout.androidaps.utils.SP; /** * Created by mike on 18.10.2017. @@ -344,6 +346,59 @@ public class GraphData { ? Profile.fromMgdlToUnits(bgReadingsArray.get(0).value, units) : Profile.fromMgdlToUnits(100, units); } + public void addActivity(long fromTime, long toTime, boolean useForScale, double scale) { + FixedLineGraphSeries actSeriesHist; + List actArrayHist = new ArrayList<>(); + FixedLineGraphSeries actSeriesPred; + List actArrayPred = new ArrayList<>(); + + double now = System.currentTimeMillis(); + Scale actScale = new Scale(); + IobTotal total = null; + + for (long time = fromTime; time <= toTime; time += 5 * 60 * 1000L) { + Profile profile = ProfileFunctions.getInstance().getProfile(time); + double act = 0d; + if (profile == null) continue; + total = iobCobCalculatorPlugin.calculateFromTreatmentsAndTempsSynchronized(time, profile); + act = total.activity; + + if(time<=now) + actArrayHist.add(new ScaledDataPoint(time, act, actScale)); + else + actArrayPred.add(new ScaledDataPoint(time, act, actScale)); + } + + ScaledDataPoint[] actData = new ScaledDataPoint[actArrayHist.size()]; + actData = actArrayHist.toArray(actData); + actSeriesHist = new FixedLineGraphSeries<>(actData); + actSeriesHist.setDrawBackground(false); + actSeriesHist.setColor(MainApp.gc(R.color.activity)); + actSeriesHist.setThickness(3); + + addSeries(actSeriesHist); + + actData = new ScaledDataPoint[actArrayPred.size()]; + actData = actArrayPred.toArray(actData); + actSeriesPred = new FixedLineGraphSeries<>(actData); + + Paint paint = new Paint(); + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(3); + paint.setPathEffect(new DashPathEffect(new float[]{4, 4}, 0)); + paint.setColor(MainApp.gc(R.color.activity)); + actSeriesPred.setCustomPaint(paint); + + double maxIAValue = SP.getDouble(R.string.key_scale_insulin_activity, 0.05); + if (useForScale) { + maxY = maxIAValue; + minY = -maxIAValue; + } + actScale.setMultiplier(maxY * scale / maxIAValue); + + addSeries(actSeriesPred); + } + // scale in % of vertical size (like 0.3) public void addIob(long fromTime, long toTime, boolean useForScale, double scale) { FixedLineGraphSeries iobSeries; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java index 181bdd86d2..4d6975bb77 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/general/smsCommunicator/SmsCommunicatorPlugin.java @@ -790,7 +790,7 @@ public class SmsCommunicatorPlugin extends PluginBase { passCode += Character.toString((char) (startChar2 + Math.random() * ('z' - 'a' + 1))); int startChar3 = Math.random() > 0.5 ? 'a' : 'A'; passCode += Character.toString((char) (startChar3 + Math.random() * ('z' - 'a' + 1))); - passCode.replace('l', 'k').replace('I', 'J'); + passCode = passCode.replace('l', 'k').replace('I', 'J'); return passCode; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.java index 9fe86c087f..b919f18196 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/profile/local/LocalProfileFragment.java @@ -78,7 +78,7 @@ public class LocalProfileFragment extends SubscriberFragment { PumpDescription pumpDescription = ConfigBuilderPlugin.getPlugin().getActivePump().getPumpDescription(); View layout = inflater.inflate(R.layout.localprofile_fragment, container, false); diaView = (NumberPicker) layout.findViewById(R.id.localprofile_dia); - diaView.setParams(LocalProfilePlugin.getPlugin().dia, 2d, 48d, 0.1d, new DecimalFormat("0.0"), false, textWatch); + diaView.setParams(LocalProfilePlugin.getPlugin().dia, 2d, 48d, 0.1d, new DecimalFormat("0.0"), false, layout.findViewById(R.id.localprofile_save), textWatch); mgdlView = (RadioButton) layout.findViewById(R.id.localprofile_mgdl); mmolView = (RadioButton) layout.findViewById(R.id.localprofile_mmol); icView = new TimeListEdit(getContext(), layout, R.id.localprofile_ic, MainApp.gs(R.string.nsprofileview_ic_label) + ":", LocalProfilePlugin.getPlugin().ic, null, 0.5, 50d, 0.1d, new DecimalFormat("0.0"), save); @@ -124,7 +124,7 @@ public class LocalProfileFragment extends SubscriberFragment { LocalProfilePlugin.getPlugin().loadSettings(); mgdlView.setChecked(LocalProfilePlugin.getPlugin().mgdl); mmolView.setChecked(LocalProfilePlugin.getPlugin().mmol); - diaView.setParams(LocalProfilePlugin.getPlugin().dia, 5d, 12d, 0.1d, new DecimalFormat("0.0"), false, textWatch); + diaView.setParams(LocalProfilePlugin.getPlugin().dia, 5d, 12d, 0.1d, new DecimalFormat("0.0"), false, view.findViewById(R.id.localprofile_save), textWatch); icView = new TimeListEdit(getContext(), layout, R.id.localprofile_ic, MainApp.gs(R.string.nsprofileview_ic_label) + ":", LocalProfilePlugin.getPlugin().ic, null, 0.5, 50d, 0.1d, new DecimalFormat("0.0"), save); isfView = new TimeListEdit(getContext(), layout, R.id.localprofile_isf, MainApp.gs(R.string.nsprofileview_isf_label) + ":", LocalProfilePlugin.getPlugin().isf, null, 0.5, 500d, 0.1d, new DecimalFormat("0.0"), save); basalView = new TimeListEdit(getContext(), layout, R.id.localprofile_basal, MainApp.gs(R.string.nsprofileview_basal_label) + ": " + getSumLabel(), LocalProfilePlugin.getPlugin().basal, null, pumpDescription.basalMinimumRate, 10, 0.01d, new DecimalFormat("0.00"), save); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java index 7b6bf2d452..5f0ee072ec 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/combo/ComboPlugin.java @@ -39,6 +39,7 @@ import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderFragment; import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin; import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions; @@ -1313,13 +1314,13 @@ public class ComboPlugin extends PluginBase implements PumpInterface, Constraint } @Override - public String manufacter() { - return "Roche"; + public ManufacturerType manufacturer() { + return ManufacturerType.Roche; } @Override - public String model() { - return "Combo"; + public PumpType model() { + return PumpType.AccuChekCombo; } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java index ecea843aa8..ebfeb2ee03 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java @@ -6,6 +6,7 @@ import java.util.Map; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.pump.common.data.DoseSettings; import info.nightscout.androidaps.utils.Round; @@ -18,7 +19,7 @@ import info.nightscout.androidaps.utils.Round; public enum PumpType { - GenericAAPS("Generic AAPS", "AndroidAPS", "VirutalPump", 0.1d, null, // + GenericAAPS("Generic AAPS", ManufacturerType.AndroidAPS, "VirutalPump", 0.1d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Percent, // new DoseSettings(10, 30, 24 * 60, 0d, 500d), PumpCapability.BasalRate_Duration15and30minAllowed, // @@ -26,7 +27,7 @@ public enum PumpType { // Cellnovo - Cellnovo1("Cellnovo", "Cellnovo", "Cellnovo", 0.05d, null, // + Cellnovo1("Cellnovo", ManufacturerType.Cellnovo, "Cellnovo", 0.05d, null, // new DoseSettings(0.05d, 30, 24 * 60, 1d, null), PumpTempBasalType.Percent, new DoseSettings(5, 30, 24 * 60, 0d, 200d), PumpCapability.BasalRate_Duration30minAllowed, // @@ -34,32 +35,32 @@ public enum PumpType { // Accu-Chek - AccuChekCombo("Accu-Chek Combo", "Roche", "Combo", 0.1d, null, // + AccuChekCombo("Accu-Chek Combo", ManufacturerType.Roche, "Combo", 0.1d, null, // new DoseSettings(0.1d, 15, 12 * 60, 0.1d), // PumpTempBasalType.Percent, new DoseSettings(10, 15, 12 * 60, 0d, 500d), PumpCapability.BasalRate_Duration15and30minAllowed, // 0.01d, 0.01d, DoseStepSize.ComboBasal, PumpCapability.ComboCapabilities), // - AccuChekSpirit("Accu-Chek Spirit", "Roche", "Spirit", 0.1d, null, // + AccuChekSpirit("Accu-Chek Spirit", ManufacturerType.Roche, "Spirit", 0.1d, null, // new DoseSettings(0.1d, 15, 12 * 60, 0.1d), // PumpTempBasalType.Percent, new DoseSettings(10, 15, 12 * 60, 0d, 500d), PumpCapability.BasalRate_Duration15and30minAllowed, // 0.01d, 0.1d, null, PumpCapability.VirtualPumpCapabilities), // - AccuChekInsight("Accu-Chek Insight", "Roche", "Insight", 0.05d, DoseStepSize.InsightBolus, // + AccuChekInsight("Accu-Chek Insight", ManufacturerType.Roche, "Insight", 0.05d, DoseStepSize.InsightBolus, // new DoseSettings(0.05d, 15, 24 * 60, 0.05d), // PumpTempBasalType.Percent, new DoseSettings(10, 15, 24 * 60, 0d, 250d), PumpCapability.BasalRate_Duration15and30minAllowed, // 0.02d, 0.01d, null, PumpCapability.InsightCapabilities), // - AccuChekInsightBluetooth("Accu-Chek Insight", "Roche", "Insight", 0.01d, null, // + AccuChekInsightBluetooth("Accu-Chek Insight", ManufacturerType.Roche, "Insight", 0.01d, null, // new DoseSettings(0.01d, 15, 24 * 60, 0.05d), // PumpTempBasalType.Percent, new DoseSettings(10, 15, 24 * 60, 0d, 250d), PumpCapability.BasalRate_Duration15and30minAllowed, // 0.02d, 0.01d, DoseStepSize.InsightBolus, PumpCapability.InsightCapabilities), // // Animas - AnimasVibe("Animas Vibe","Animas", "Vibe", 0.05d, null, // AnimasBolus? + AnimasVibe("Animas Vibe",ManufacturerType.Animas, "Vibe", 0.05d, null, // AnimasBolus? new DoseSettings(0.05d, 30, 12 * 60, 0.05d), // PumpTempBasalType.Percent, // new DoseSettings(10, 30, 24 * 60, 0d, 300d), PumpCapability.BasalRate_Duration30minAllowed, // @@ -68,19 +69,19 @@ public enum PumpType { AnimasPing("Animas Ping", "Ping", AnimasVibe), // Dana - DanaR("DanaR", "SOOIL", "DanaR", 0.05d, null, // + DanaR("DanaR", ManufacturerType.Sooil, "DanaR", 0.05d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Percent, // new DoseSettings(10d, 60, 24 * 60, 0d, 200d), PumpCapability.BasalRate_Duration15and30minNotAllowed, // 0.04d, 0.01d, null, PumpCapability.DanaCapabilities), - DanaRKorean("DanaR Korean", "SOOIL", "DanaRKorean", 0.05d, null, // + DanaRKorean("DanaR Korean", ManufacturerType.Sooil, "DanaRKorean", 0.05d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Percent, // new DoseSettings(10d, 60, 24 * 60, 0d, 200d), PumpCapability.BasalRate_Duration15and30minNotAllowed, // 0.1d, 0.01d, null, PumpCapability.DanaCapabilities), - DanaRS("DanaRS", "SOOIL", "DanaRS", 0.05d, null, // + DanaRS("DanaRS", ManufacturerType.Sooil, "DanaRS", 0.05d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Percent, // new DoseSettings(10d, 60, 24 * 60, 0d, 200d), PumpCapability.BasalRate_Duration15and30minAllowed, // @@ -90,14 +91,14 @@ public enum PumpType { // Insulet - Insulet_Omnipod("Insulet Omnipod", "Insulet", "Omnipod", 0.05d, null, // + Insulet_Omnipod("Insulet Omnipod", ManufacturerType.Insulet, "Omnipod", 0.05d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Absolute, // new DoseSettings(0.05d, 30, 12 * 60, 0d, 30.0d), PumpCapability.BasalRate_Duration30minAllowed, // cannot exceed max basal rate 30u/hr 0.05d, 0.05d, null, PumpCapability.VirtualPumpCapabilities), // Medtronic - Medtronic_512_712("Medtronic 512/712", "Medtronic", "512/712", 0.05d, null, // + Medtronic_512_712("Medtronic 512/712", ManufacturerType.Medtronic, "512/712", 0.05d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Absolute, // new DoseSettings(0.05d, 30, 24 * 60, 0d, 35d), PumpCapability.BasalRate_Duration30minAllowed, // @@ -106,7 +107,7 @@ public enum PumpType { Medtronic_515_715("Medtronic 515/715", "515/715", Medtronic_512_712), Medtronic_522_722("Medtronic 522/722", "522/722", Medtronic_512_712), - Medtronic_523_723_Revel("Medtronic 523/723 (Revel)", "Medtronic", "523/723 (Revel)", 0.05d, null, // + Medtronic_523_723_Revel("Medtronic 523/723 (Revel)", ManufacturerType.Medtronic, "523/723 (Revel)", 0.05d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Absolute, // new DoseSettings(0.05d, 30, 24 * 60, 0d, 35d), PumpCapability.BasalRate_Duration30minAllowed, // @@ -114,14 +115,14 @@ public enum PumpType { Medtronic_554_754_Veo("Medtronic 554/754 (Veo)", "554/754 (Veo)", Medtronic_523_723_Revel), // TODO - Medtronic_640G("Medtronic 640G", "Medtronic", "640G", 0.025d, null, // + Medtronic_640G("Medtronic 640G", ManufacturerType.Medtronic, "640G", 0.025d, null, // new DoseSettings(0.05d, 30, 8 * 60, 0.05d), // PumpTempBasalType.Absolute, // new DoseSettings(0.05d, 30, 24 * 60, 0d, 35d), PumpCapability.BasalRate_Duration30minAllowed, // 0.025d, 0.025d, DoseStepSize.MedtronicVeoBasal, PumpCapability.VirtualPumpCapabilities), // // Tandem - TandemTSlim("Tandem t:slim", "Tandem", "t:slim", 0.01d, null, // + TandemTSlim("Tandem t:slim", ManufacturerType.Tandem, "t:slim", 0.01d, null, // new DoseSettings(0.01d, 15, 8 * 60, 0.4d), PumpTempBasalType.Percent, new DoseSettings(1, 15, 8 * 60, 0d, 250d), PumpCapability.BasalRate_Duration15and30minAllowed, // @@ -130,10 +131,14 @@ public enum PumpType { TandemTFlex("Tandem t:flex", "t:flex", TandemTSlim), // TandemTSlimG4("Tandem t:slim G4", "t:slim G4", TandemTSlim), // TandemTSlimX2("Tandem t:slim X2", "t:slim X2", TandemTSlim), // + + // MDI + MDI("MDI", ManufacturerType.AndroidAPS, "MDI") ; + private String description; - private String manufacter; + private ManufacturerType manufacturer; private String model; private double bolusSize; private DoseStepSize specialBolusSize; @@ -163,9 +168,18 @@ public enum PumpType { { this.description = description; this.parent = parent; - parent.model = model; + this.model = model; } + + PumpType(String description, ManufacturerType manufacturer, String model) + { + this.description = description; + this.manufacturer = manufacturer; + this.model = model; + } + + PumpType(String description, String model, PumpType parent, PumpCapability pumpCapability) { this.description = description; @@ -174,20 +188,20 @@ public enum PumpType { parent.model = model; } - PumpType(String description, String manufacter, String model, double bolusSize, DoseStepSize specialBolusSize, // + PumpType(String description, ManufacturerType manufacturer, String model, double bolusSize, DoseStepSize specialBolusSize, // DoseSettings extendedBolusSettings, // PumpTempBasalType pumpTempBasalType, DoseSettings tbrSettings, PumpCapability specialBasalDurations, // double baseBasalMinValue, double baseBasalStep, DoseStepSize baseBasalSpecialSteps, PumpCapability pumpCapability) { - this(description, manufacter, model, bolusSize, specialBolusSize, extendedBolusSettings, pumpTempBasalType, tbrSettings, specialBasalDurations, baseBasalMinValue, null, baseBasalStep, baseBasalSpecialSteps, pumpCapability); + this(description, manufacturer, model, bolusSize, specialBolusSize, extendedBolusSettings, pumpTempBasalType, tbrSettings, specialBasalDurations, baseBasalMinValue, null, baseBasalStep, baseBasalSpecialSteps, pumpCapability); } - PumpType(String description, String manufacter, String model, double bolusSize, DoseStepSize specialBolusSize, // + PumpType(String description, ManufacturerType manufacturer, String model, double bolusSize, DoseStepSize specialBolusSize, // DoseSettings extendedBolusSettings, // PumpTempBasalType pumpTempBasalType, DoseSettings tbrSettings, PumpCapability specialBasalDurations, // double baseBasalMinValue, Double baseBasalMaxValue, double baseBasalStep, DoseStepSize baseBasalSpecialSteps, PumpCapability pumpCapability) { this.description = description; - this.manufacter = manufacter; + this.manufacturer = manufacturer; this.model = model; this.bolusSize = bolusSize; this.specialBolusSize = specialBolusSize; @@ -207,8 +221,8 @@ public enum PumpType { return description; } - public String getManufacter() { - return isParentSet() ? parent.manufacter : manufacter; + public ManufacturerType getManufacturer() { + return isParentSet() ? parent.manufacturer : manufacturer; } public String getModel() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java index b8b5409607..526a96c38c 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java @@ -28,6 +28,7 @@ import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification; @@ -376,9 +377,9 @@ public abstract class AbstractDanaRPlugin extends PluginBase implements PumpInte } @Override - public String manufacter() { - return "SOOIL"; - }; + public ManufacturerType manufacturer() { + return ManufacturerType.Sooil; + } @Override public String serialNumber() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java index cbb06656fd..0c2c7ea41b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java @@ -361,8 +361,8 @@ public class DanaRPlugin extends AbstractDanaRPlugin { } @Override - public String model() { - return "DanaR"; + public PumpType model() { + return PumpType.DanaR; } private PumpEnactResult cancelRealTempBasal() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java index 0f2ec5f4d2..6b99b2d553 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.java @@ -97,10 +97,10 @@ public class DanaRUserOptionsActivity extends Activity { + "\npumpUnits:" + pump.units + "\nlowReservoir:" + pump.lowReservoirRate); - screenTimeout.setParams((double) pump.lcdOnTimeSec, 5d, 240d, 5d, new DecimalFormat("1"), false); - backlightTimeout.setParams((double) pump.backlightOnTimeSec, 1d, 60d, 1d, new DecimalFormat("1"), false); - shutdown.setParams((double) pump.shutdownHour, 0d, 24d, 1d, new DecimalFormat("1"), true); - lowReservoir.setParams((double) pump.lowReservoirRate, 10d, 60d, 10d, new DecimalFormat("10"), false); + screenTimeout.setParams((double) pump.lcdOnTimeSec, 5d, 240d, 5d, new DecimalFormat("1"), false, findViewById(R.id.ok)); + backlightTimeout.setParams((double) pump.backlightOnTimeSec, 1d, 60d, 1d, new DecimalFormat("1"), false, findViewById(R.id.ok)); + shutdown.setParams((double) pump.shutdownHour, 0d, 24d, 1d, new DecimalFormat("1"), true, findViewById(R.id.ok)); + lowReservoir.setParams((double) pump.lowReservoirRate, 10d, 60d, 10d, new DecimalFormat("10"), false, findViewById(R.id.ok)); switch (pump.beepAndAlarm) { case 0x01: pumpAlarmSound.setChecked(true); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java index 84e9cdf1e1..31eb4faf85 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java @@ -365,8 +365,8 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin { } @Override - public String model() { - return "DanaRKorean"; + public PumpType model() { + return PumpType.DanaRKorean; } private PumpEnactResult cancelRealTempBasal() { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java index 4ec17af6d8..ada8515ea0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPlugin.java @@ -38,6 +38,7 @@ import info.nightscout.androidaps.interfaces.ProfileInterface; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderFragment; import info.nightscout.androidaps.plugins.configBuilder.DetailedBolusInfoStorage; import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions; @@ -769,13 +770,13 @@ public class DanaRSPlugin extends PluginBase implements PumpInterface, DanaRInte } @Override - public String manufacter() { - return "SOOIL"; + public ManufacturerType manufacturer() { + return ManufacturerType.Sooil; } @Override - public String model() { - return "DanaRS"; + public PumpType model() { + return PumpType.DanaRS; } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java index 13af8fff1b..57d6828924 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java @@ -403,8 +403,8 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin { } @Override - public String model() { - return "DanaRv2"; + public PumpType model() { + return PumpType.DanaRv2; } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java index 9114b38b40..cb6879cd04 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/insight/LocalInsightPlugin.java @@ -8,6 +8,7 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; import info.nightscout.androidaps.plugins.pump.insight.app_layer.parameter_blocks.*; @@ -945,13 +946,13 @@ public class LocalInsightPlugin extends PluginBase implements PumpInterface, Con } @Override - public String manufacter() { - return "Roche"; + public ManufacturerType manufacturer() { + return ManufacturerType.Roche; } @Override - public String model() { - return "Insight"; + public PumpType model() { + return PumpType.AccuChekInsightBluetooth; } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java index 13c2853ac7..339d91254b 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/mdi/MDIPlugin.java @@ -19,8 +19,10 @@ import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; +import info.nightscout.androidaps.plugins.pump.common.defs.PumpType; import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin; import info.nightscout.androidaps.utils.DateUtil; import info.nightscout.androidaps.utils.InstanceId; @@ -237,13 +239,13 @@ public class MDIPlugin extends PluginBase implements PumpInterface { } @Override - public String manufacter() { - return "AndroidAPS"; + public ManufacturerType manufacturer() { + return ManufacturerType.AndroidAPS; } @Override - public String model() { - return "MDI"; + public PumpType model() { + return PumpType.MDI; } @Override @@ -258,7 +260,7 @@ public class MDIPlugin extends PluginBase implements PumpInterface { @Override public String shortStatus(boolean veryShort) { - return model(); + return model().getModel(); } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java index 31b0e5456f..9bdc980677 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPlugin.java @@ -28,6 +28,7 @@ import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.PumpDescription; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.logging.L; +import info.nightscout.androidaps.plugins.common.ManufacturerType; import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctions; import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction; import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType; @@ -438,13 +439,13 @@ public class VirtualPumpPlugin extends PluginBase implements PumpInterface { } @Override - public String manufacter() { - return pumpDescription.pumpType.getManufacter(); + public ManufacturerType manufacturer() { + return pumpDescription.pumpType.getManufacturer(); } @Override - public String model() { - return pumpDescription.pumpType.getModel(); + public PumpType model() { + return pumpDescription.pumpType; } @Override diff --git a/app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java b/app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java index c7a3f2dd5b..9196f3a060 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java @@ -235,13 +235,13 @@ public class DateUtil { t = t / 60; if (t != 1) unit = MainApp.gs(R.string.unit_hours); if (t > 24) { - unit = MainApp.gs(R.string.unit_day); + unit = MainApp.gs(R.string.unit_day) + "\""; t = t / 24; - if (t != 1) unit = MainApp.gs(R.string.unit_days); + if (t != 1) unit = MainApp.gs(R.string.unit_days) + "\""; if (t > 28) { - unit = MainApp.gs(R.string.unit_week); + unit = MainApp.gs(R.string.unit_week) + "\""; t = t / 7; - if (t != 1) unit = MainApp.gs(R.string.unit_weeks); + if (t != 1) unit = MainApp.gs(R.string.unit_weeks) + "\""; } } } diff --git a/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java b/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java index f32b79c439..baeff5f239 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java @@ -14,7 +14,6 @@ import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; -import android.widget.TextView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +37,7 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, void onValueChanged(double value); } - TextView editText; + EditText editText; Button minusButton; Button plusButton; @@ -50,6 +49,8 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, boolean allowZero = false; TextWatcher textWatcher = null; + Button okButton = null; + private Handler mHandler; private ScheduledExecutorService mUpdater; private OnValueChangedListener mOnValueChangedListener; @@ -61,7 +62,7 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, private final int doubleLimit = 5; - public UpdateCounterTask(boolean inc) { + UpdateCounterTask(boolean inc) { mInc = inc; } @@ -90,39 +91,32 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, public NumberPicker(Context context, AttributeSet attrs) { super(context, attrs); - this.initialize(context, attrs); + this.initialize(context); } - public NumberPicker(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - private void initialize(Context context, AttributeSet attrs) { + private void initialize(Context context) { // set layout view LayoutInflater.from(context).inflate(R.layout.number_picker_layout, this, true); // init ui components - minusButton = (Button) findViewById(R.id.decrement); + minusButton = findViewById(R.id.decrement); minusButton.setId(View.generateViewId()); - plusButton = (Button) findViewById(R.id.increment); + plusButton = findViewById(R.id.increment); plusButton.setId(View.generateViewId()); - editText = (EditText) findViewById(R.id.display); + editText = findViewById(R.id.display); editText.setId(View.generateViewId()); - mHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - switch (msg.what) { - case MSG_INC: - inc(msg.arg1); - return; - case MSG_DEC: - dec(msg.arg1); - return; - } - super.handleMessage(msg); + mHandler = new Handler(msg -> { + switch (msg.what) { + case MSG_INC: + inc(msg.arg1); + return true; + case MSG_DEC: + dec(msg.arg1); + return true; } - }; + return false; + }); minusButton.setOnTouchListener(this); minusButton.setOnKeyListener(this); @@ -145,6 +139,12 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, public void afterTextChanged(Editable s) { value = SafeParse.stringToDouble(editText.getText().toString()); callValueChangedListener(); + if (okButton != null) { + if (value > maxValue || value < minValue) + okButton.setVisibility(INVISIBLE); + else + okButton.setVisibility(VISIBLE); + } } }); } @@ -156,18 +156,35 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, public void setTextWatcher(TextWatcher textWatcher) { this.textWatcher = textWatcher; editText.addTextChangedListener(textWatcher); + editText.setOnFocusChangeListener((v, hasFocus) -> { + if (!hasFocus) { + value = SafeParse.stringToDouble(editText.getText().toString()); + if (value > maxValue) { + value = maxValue; + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.youareonallowedlimit)); + updateEditText(); + okButton.setVisibility(VISIBLE); + } + if (value < minValue) { + value = minValue; + ToastUtils.showToastInUiThread(MainApp.instance().getApplicationContext(), MainApp.gs(R.string.youareonallowedlimit)); + updateEditText(); + okButton.setVisibility(VISIBLE); + } + } + }); } - public void setParams(Double initValue, Double minValue, Double maxValue, Double step, NumberFormat formater, boolean allowZero, TextWatcher textWatcher) { + public void setParams(Double initValue, Double minValue, Double maxValue, Double step, NumberFormat formater, boolean allowZero, Button okButton, TextWatcher textWatcher) { if (this.textWatcher != null) { editText.removeTextChangedListener(this.textWatcher); } - setParams(initValue, minValue, maxValue, step, formater, allowZero); + setParams(initValue, minValue, maxValue, step, formater, allowZero, okButton); this.textWatcher = textWatcher; editText.addTextChangedListener(textWatcher); } - public void setParams(Double initValue, Double minValue, Double maxValue, Double step, NumberFormat formater, boolean allowZero) { + public void setParams(Double initValue, Double minValue, Double maxValue, Double step, NumberFormat formater, boolean allowZero, Button okButton) { this.value = initValue; this.minValue = minValue; this.maxValue = maxValue; @@ -175,6 +192,7 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener, this.formater = formater; this.allowZero = allowZero; callValueChangedListener(); + this.okButton = okButton; editText.setKeyListener(DigitsKeyListener.getInstance(minValue < 0, step != Math.rint(step))); diff --git a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java index c8f767f77e..6271ee95fa 100644 --- a/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java +++ b/app/src/main/java/info/nightscout/androidaps/utils/TimeListEdit.java @@ -244,8 +244,8 @@ public class TimeListEdit { if (i == 0) next = ONEHOURINSECONDS; fillSpinner(timeSpinner, secondFromMidnight(i), previous, next); - editText1.setParams(value1(i), min, max, step, formatter, false); - editText2.setParams(value2(i), min, max, step, formatter, false); + editText1.setParams(value1(i), min, max, step, formatter, false, view.findViewById(R.id.localprofile_save)); + editText2.setParams(value2(i), min, max, step, formatter, false, view.findViewById(R.id.localprofile_save)); if (data2 == null) { editText2.setVisibility(View.GONE); diff --git a/app/src/main/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml index f2b6a1bc8a..6ea81e359e 100644 --- a/app/src/main/res/values-af/strings.xml +++ b/app/src/main/res/values-af/strings.xml @@ -865,6 +865,7 @@ Fabric Upload Laat outomatiese Foutverslagdoening en kenmerk data stuur na die ontwikkelaars via die fabric.io diens. Hernuwe asseblief jou G5 toepassing na \'n ondersteunde weergawe + Dexcom toep is nie geïnstalleer nie. Begin aktiwiteit TT Begin eet gou TT TT @@ -874,6 +875,7 @@ Bolus sal slegs opgeneem word Autobackfill vermiste BGs vanaf NS SMB gestel deur pomp + Aktiwiteit Sensitiewiteit Afwykings Karbs AanBoord @@ -1148,6 +1150,31 @@ Skep geleentheid \"sensor verandering\" in NS automaties op sensor begin Tomato (MiaoMiao) Tomato + sekonde + minuut + uur + dag + week + sekondes + minute + ure + dae + weke + JouTidepool login gebruiker, normaallweg \'n email adres + Login Gebruiker Naam + Jou Tidepool login kode + Login wagwoord + Toets Tidepool Login + As ge-aktiveer sal data oplaai na https://int-app.tidepool.org instede van die gewone https://app.tidepool.org/ + Gebruik Integrasie (toets) bedieners + Tidepool + TDP + Laai data op na Tidepool + Laai CGM data op + Laai behandelings op (insulien, karbs) + Laai tydelike basale op + Laai profiel veranderings, tydelike teikens op + Laai BG toetse op Daglig spaar tyd verandering in 24 h of minder Daglig spaar tyd het verander minder as 3 ure terug - Geslote lus afgeskakel interne berging beperking @@ -1160,8 +1187,12 @@ ou weergawe baie ou weergawe Nuwe weergawe reeds beskikbaar vir %1$d! Sal na 60 dae terugval na LGS, lus sal ongeldig gemaak word na 90 dae + Grafiek skall insulien aktiwiteit [U/min] 2h %1$.2fU + DexcomG App (opgedateerde) + DXCM + Ontvang BG waardes vanaf die opgedateerde Dexcom app. %1$d dae %1$d dae diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 0c3b51a97c..82c18eebbd 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -865,6 +865,7 @@ Качване на статистики във Fabric Позволява автоматично изпращане на данни за грешки и статистически данни до разработчиците чрез услугата fabric.io . Моля обновете Dexcom приложението до поддържана версия + Приложението на Dexcom не е инсталирано. Старт на вр.цел за физ. активност Старт на вр. цел за Eating soon Вр.цел @@ -1148,6 +1149,27 @@ Създаване на събитие \"Смяна на сеснзор\" в NS автоматично при старт на сензор Tomato(MяоМяо) Tomato + секунда + минута + час + секунди + минути + часове + Потребителското Ви име за Tidepool, обикновено е Вашия имейл + Потребителско име + Tidepool парола + Парола + Тест на Tidepool + Когато е активирано, данните ще отиват към https://int-app.tidepool.org вместо към стандартния адрес https://app.tidepool.org/ + Използвай тестовите сървъри + Tidepool + TDP + Качване на данни в Tidepool + Качвай данни за КЗ + Качвай лечения (инсулин, въглехидрати) + Качвай временни базали + Качвай смени на профил и временни цели + Качвай ръчните измервания на КЗ Смяна на времето след по-малко от 24ч Смяна на времето след по-малко от 3 часа - минавам в отворен режим Ограничение поради липса на памет @@ -1162,6 +1184,9 @@ Има нова версия от най-малко %1$d дни! Връщане към LGS след 60 дни, цикълът ще бъде изключен след 90 дни %1$.2fЕ + Dexcom приложение (модифицирано) + DXCM + Да получава данни за КЗ от модифицираното приложение на Dexcom. %1$d дeн %1$d дни diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 96a66c5b8b..46ffe01b90 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -865,6 +865,7 @@ Odesílání do Fabric Automatické odesílání chyb aplikace a statistiky používání vývojářům pomocí služby fabric.io. Prosím aktualizujte Dexcom aplikaci na podporovanou verzi + Aplikace Dexcom není nainstalována. Spustit Dočasný cíl Aktivita Spustit Dočasný cíl Blížící se jídlo DoCíl @@ -874,6 +875,7 @@ Bolus bude pouze zaznamenán Automaticky doplňovat chybějící glykémie z NS SMB provedené pumpou + Aktivita Citlivost Odchylky Zbývající sacharidy @@ -1148,6 +1150,31 @@ Vytvořit událost \"Výměna senzoru\" v NS automaticky po spuštění senzoru Tomato (MiaoMiao) Tomato + sekunda + minuta + hodina + den + týden + sekund + minut + hodin + dnů + týdnů + Vaše uživatelské jméno na Tidepoolu, obvykle vaše e-mailová adresa + Uživatelské jméno + Heslo na Tidepoolu + Heslo + Otestovat přihlášení na Tidepool + Pokud je povoleno, data budou nahrávána na https://int-app.tidepool.org místo na https://app.tidepool.org/ + Používat testovací servery + Tidepool + TDP + Nahrávání dat do Tidepoolu + Nahrávat CGM data + Nahrávat ošetření (inzulín, sacharidy) + Nahrávat dočasné bazály + Nahrávat přepnutí profilu, dočasné cíle + Nahrávat měření z prstu Změna letního času za méně než 24 hodin Změna letního času za méně než 3 hodiny - Uzavřená smyčka zastavena omezení vnitřního úložiště @@ -1160,6 +1187,12 @@ stará verze velmi stará verze Nová verze je dostupná minimálně %1$d dní! Přepnutí na ochranu před nízkou glykémií po 60 dnech, vypnutí smyčky po 90 dnech + Měřítko grafu aktivity inzulinu [U/min] + 2h + %1$.2fU + Aplikace Dexcom (upravená) + DXCM + Příjem hodnot glykémií z upravené aplikace Dexcom. %1$d den %1$d dnů diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 589dafb8ef..03ad75916a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -866,6 +866,7 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate Fabric-Upload Erlauben, dass automatische Fehler-Berichte und Nutzungsstatistiken an die Entwickler über den Service von Fabric.io gesendet werden Bitte aktualisiere deine Dexcom App auf eine unterstützte Version + Dexcom App ist nicht installiert. Starte Aktivitäts-TT Starte Essens-TT TT @@ -875,6 +876,7 @@ maxIOB = durchschnittlicher Essensbolus + 3 x maximale Basalrate Bolus wird nur erfasst. Lade fehlende Blutzuckerwerte automatisch aus Nightscout nach. SMB von der Pumpe abgegeben + Aktivität Sensitivität Abweichungen Aktive Kohlenhydrate @@ -1150,6 +1152,31 @@ Unerwartetes Verhalten. Ereignis \"Sensorwechsel\" bei Sensorstart automatisch in NS erstellen Tomato (MiaoMiao) Tomato + Sekunde + Minute + Stunde + Tag + Woche + Sekunden + Minuten + Stunden + Tage + Wochen + Dein Tidepool-Login-Benutzername, normalerweise deine E-Mail-Adresse + Login-Benutzername + Dein Tidepool Anmeldekennwort + Anmeldekennwort + Teste den Tidepool Login + Wenn diese Option aktiviert ist, werden die Uploads an https://int-app.tidepool.org statt an die reguläre https://app.tidepool.org/ weitergeleitet + Integrations (Test) Server verwenden + Tidepool + TDP + Daten zu Tidepool hochladen + CGM Daten hochladen + Behandlungen (Insulin, Kohlenhydrate) hochladen + Temporäre Basalrate hochladen + Profilwechsel und temporäre Ziele hochladen + BZ-Werte (blutig) hochladen Zeitumstellung in weniger als 24 Stunden Zeitumstellung vor weniger als 3 Stunden - Closed Loop deaktiviert interne Speicherbegrenzung @@ -1162,8 +1189,12 @@ Unerwartetes Verhalten. Vorherige Version sehr alte Version Neue Version für mindestens %1$d Tage verfügbar! Rückfall zur sensorunterstützten Pumpentherapie nach 60 Tagen, Loop wird nach 90 Tagen deaktiviert + Skala Insulinaktivität [IE/min.] 2h %1$.2f IE + gepatchte Dexcom App + DXCM + Empfange Blutzucker-Werte von der gepatchten Dexcom App. %1$d Tag %1$d Tage diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 9872c77080..d793b9f938 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -865,6 +865,7 @@ Αποστολή δεδομένων στο εργοστάσιο Να επιτρέπεται η αυτόματη αποστολή αναφορών σφάλματος και χαρακτηριστικά χρήσης δεδομένων στους προγραμματιστές μέσω του fabric.io. service. Ενημερώστε την εφαρμογή G5 στην υποστηριζόμενη έκδοση + Η εφαρμογή Dexcom δεν είναι εγκατεστημένη. Εκκίνηση δραστηριότητας TT Εκκίνηση Τρώω σύντομα ΤΤ TT @@ -1148,6 +1149,27 @@ Δημιουργία συμβάντος «Αλλαγή αισθητήρα» στο NS αυτόματα με έναρξη αισθητήρα Tomato (MiaoMiao) Tomato + δευτερόλεπτο + λεπτό + ώρα + δευτερόλεπτα + λεπτά + ώρες + Το όνομα χρήστη του Tidepool, συνήθως το mail σας + Όνομα Χρήστη + Το συνθηματικό του Tidepool + Συνθηματικό εισόδου + Δοκιμή εισόδου Tidepool + Αν ενεργοποιήθηκε, τα δεδομένα θα ανέβουν στο https://int-app.tidepool.org αντί για το σύνηθες https://app.tidepool.org/ + Χρησιμοποιήστε διακομιστές ολοκλήρωσης (δοκιμής) + Tidepool + TDP + Αποστολή δεδομένων στο Tidepool + Αποστολή δεδομένων CGM + Αποστολή θεραπειών (ινσουλίνης, υδατανθράκων) + Αποστολή προσωρινών ρυθμών + Αποστολή αλλαγών προφίλ, προσωρινών στόχων + Αποστολή BG βαθμονομήσεων Αλλαγή σε Θερινή ώρα σε 24h ή λιγότερο Η Θερινή ώρα αλλάζει σε λιγότερο από 3 ώρες - Απενεργοποιήθηκε το κλειστό κύκλωμα περιορισμός εσωτερικής μνήμης @@ -1160,6 +1182,11 @@ παλιά έκδοση πολύ παλιά έκδοση Νέα έκδοση για τουλάχιστον %1$d ημέρες διαθέσιμη! Επιστροφή σε LGS μετά από 60 ημέρες, το κύκλωμα θα απενεργοποιηθεί μετά από 90 ημέρες + 2ώρες + %1$.2fU + Εφαρμογή Dexcom (τροποποιημένη) + DXCM + Λάβετε τις τιμές BG από την εφαρμογή του Dexcom. %1$d ημέρα %1$d ημέρες diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 93d2498e5a..40d39765bb 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -1,12 +1,15 @@ + Seguridad de tratamientos + Máximo Bolo permitido [U] Máximos carbohidratos permitidos [g] Preferencias Actualizar los tratamientos desde NS Restablecer las bases de datos ¿Realmente quiere restablecer las bases de datos? Salir + Usar bolos extendidos para >200%% Dispositivo Bluetooth DanaR Usar siempre valores basales absolutos Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importante para trazar y verificar que el algoritmo funcione correctamente) @@ -51,6 +54,7 @@ Usar tu reloj WearOS para observar y controlar AndroidAPS. Mostrar información sobre tu lazo en tu esfera xDrip+. Control remoto de AndroidAPS mediante comandos SMS. + Atrás Inicio Verificar Unidades @@ -143,6 +147,8 @@ Violación restricciones Error de administración del bolo Basal Temporal no emitida + Dosis basal [%%] + %% (100%% = actual) Aceptar nueva basal temporal: Tratamiento Calculadora @@ -242,6 +248,7 @@ Bomba IOB Unidades diarias Último bolo + Hace %1$.1fh Datos inválidos Valor no establecido correctamente Recargar Perfil @@ -259,6 +266,10 @@ Para entregar bolo %1$.2fU responder con código %2$s Para enviar calibración %1$.2f responder con código %2$s Bolo falló + El bolo %1$.2fU se ha infundido correctamente + Se van a infundir %1$.2fU + El bolo %1$.2fU se ha infundido correctamente + Infundiendo %1$.2fU Permitir comandos remotos vía SMS Dedo Sensor @@ -303,6 +314,7 @@ Detener DETENER PULSADO Esperando bomba + Se van a infundir %1$.2fU Configuración de visualización y monitorización, y análisis de basales y ratios Comprobar que los datos de BG están disponibles en Nightscout, y que los datos de la bomba de insulina se están subiendo Empezar con lazo abierto @@ -325,12 +337,26 @@ Lazo inactivo Lazo activo %1$.2f limitado a %2$.2f + El valor %1$s está fuera de límites Comando remoto no permitido + El bolo remoto no está disponible. Inténtalo de nuevo más tarde. + Para iniciar una basal de %1$.2fU/h responder con el código %2$s + Para cambiar el perfil a %1$s %2$d%% responder con el código %3$s + Para iniciar un bolo extendido de %1$.2fU durante %2$d minutos, responder con el código %3$s + Para iniciar una basal de %1$d%% durante %2$d min, responder con el código %3$s Para cancelar lazo por %1$d minutos responde con código %2$s Basal temporal %1$.2fU/h para %2$d min iniciada correctamente + Bolo ampliado de %1$.2fU durante %2$d min se inició correctamente + Basal temporal de %1$d%% durante %2$d min iniciada correctamente Fallo inicio basal temporal + Error al iniciar el bolo extendido + Para cancelar la basal temporal, responder con el código %1$s + Para parar el bolo extendido, responder con el código %1$s Basal temporal cancelada + Bolo extendido cancelado Fallo cancelación basal temporal + Error al cancelar el bolo extendido + Comando desconocido o respuesta incorrecta Asistente Asistente configuración Botón Texto: @@ -438,6 +464,7 @@ Perfiles Valor predeterminado: 3 Esta es una protección de seguridad en OpenAPS. Lo que esto hace es limitar tus basales a 3x (en este caso) tu mayor índice basal. Probablemente no necesites cambiar esto, pero debes tener en cuenta las discusiones sobre \"3x max diaria; 4x actual\" para protecciones de seguridad. Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de la protección de seguridad de \"3x max diaria, 4x actual\". Esto significa, que tu basal, independientemente de tu máxima basal ajustada en la bomba, no puede ser mas alta que este número de veces el actual nivel de basal. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la basal sin entender como trabaja el algoritmo. El ajuste por defecto es 4x; la mayoría de las personas nunca tendrá que cambiar estos ajustes, sino que debe modificar otros ajustes en la terapia si se encuentran cerca de este límite de seguridad. + Valor por defecto: 1.2\nEste es un límite multiplicador para autosens (y pronto autotune) para establecer un límite máximo de 20%% en cuanto puede ser la ratio de autosens, lo que determina a su vez cuán alto puede ajustar las basales autosens, cuán bajo puede ajustar ISF, y cuán bajo puede establecer el objetivo BG. Ajuste por defecto: 0.7\nEl otro lado de los límites de seguridad de autosens, limitando a cuanto puede autosens bajar la basal y a cuanto puede subir ISF y objetivo de glucosa en sangre (BG). Autosens también ajusta los objetivos Ajuste por defecto: true\nEsto se usa para permitir a autosens el ajuste de objetivos BG además de ISF y bases. @@ -450,6 +477,7 @@ Número de teléfono inválido Número de teléfono incorrecto para SMS Calibración + ¿Enviar la calibración %1$.1f a xDrip? xDrip+ no instalado Calibración mandada a xDrip Calibración enviada. La recepción debe estar habilitada en xDrip. @@ -500,6 +528,7 @@ Adulto resistente a la insulina Por favor elige la edad del paciente para ajustar los límites de seguridad Glimp + %1$s necesita una optimización de la batería para funcionar óptimamente Loop desactivado Desactivado (%1$d m) Superbolo (%1$d m) @@ -535,6 +564,8 @@ Habilitar las luces de estado para tiempo de la canula, tiempo de la insulina, tiempo del sensor y nivel de bateria en la pantalla de inicio. Umbral de advertencia de nivel de reservorio [U] Umbral crítico de nivel de reservorio [U] + Umbral de advertencia de nivel de batería [%%] + Umbral crítico de nivel de batería [%%] IOB COB Firmware @@ -587,6 +618,7 @@ Ajustes absorción Tiempo max absorción comida [h] Tiempo en horas en el que se espera que todos los carbohidratos hayan sido absorbidos + Visualizar el bolo extendido como %% SAGE IAGE CAGE @@ -699,6 +731,8 @@ Mandar datos BG a xDrip+ En xDrip+ elige 640g/Eversense como fuente de datos NSClient BG + Valor basal reemplazado por el valor mínimo soportado: %1$s + Valor basal reemplazado por el valor mínimo soportado: %1$s Cálculo BG Cálculo bolo IOB Cálculo basal IOB @@ -716,6 +750,8 @@ Lazo cerrado activado Máximo IOB ajustado correctamente BG disponible desde la fuente seleccionada + Valores basales no alineados a las horas: %1$s + Perfil inválido: %1$s Programando bomba para emitir bolo Actualizar Estado @@ -728,6 +764,7 @@ Funcionando Cancelando TBR Poniendo TBR (%1$d%% / %2$d min) + Inyectando (%1$.1f U) Actualizando Acción requerida no disponible por la bomba Uso inseguro: bolo extendido o multionda activo. El modo del lazo ha sido fijado a sólo suspensión en baja glucosa durante 6 horas. En modo lazo sólo se soportan los bolo estándar. @@ -828,6 +865,7 @@ Reporte fallos a Fabric.io Permita que los informes automáticos de errores y los datos de uso de funciones se envíen a los desarrolladores a través del servicio fabric.io. Actualice su aplicación Dexcom a una versión compatible + La aplicación Dexcom no está instalada. Inicio OT Actividad Inicio OT ComiendoPronto OT @@ -1050,11 +1088,13 @@ Silenciar Alerta de infusor Registro de cambios de cánulas + Registrar cambios de reservorio Registro de cambio de tubo Registro de cambio de bateria Registro de cambio de modo de funcionamiento Registro de alarmas Activar emulación de dosis basal temporal + Usa bolos extendidos en lugar de TBRs para pasar por alto el límite de 250%% Desconectar el retraso [s] Número de serie Versión de software @@ -1109,7 +1149,48 @@ Crear evento \"Cambio sensor\" en la automatización NS al iniciar el sensor Tomato (MiaoMiao) Tomato + segundo + minuto + hora + día + semana + segundos + minutos + horas + días + semanas + Tu nombre de usuario de Tidepool, normalmente tu dirección de correo electrónico + Nombre de usuario + Tu contraseña de acceso a Tidepool + Contraseña de inicio de sesión + Prueba de acceso Tidepool + Si está habilitado, las subidas irán a https://int-app.tidepool.org en lugar de a https://app.tidepool.org/ + Usar servidores de integración (prueba) + Tidepool + TDP + Carga datos a Tidepool + Carga tus datos + Subir tratamientos (insulina, carbohidratos) + Subir basales temporales + Subir conmutaciones de perfil, objetivos temps + Subir pruebas BG + Cambio al horario de verano/invierno en menos de 24 horas + Cambio al horario de verano/invierno hace menos de 3 horas - Lazo cerrado deshabilitado restricción de almacenamiento interno + Libera al menos %1$d MB de almacenamiento interno. ¡Loop desactivado! + Formato incorrecto + Código incorrecto. Comando cancelado. + Sin configurar + Cambio de perfil creado + Verificador de versión + versión antigua + versión muy antigua + Nueva versión desde al menos %1$d dias disponible! Respaldo a LGS después de 60 días, se deshabilitará el lazo después de 90 días + 2h + %1$.2fU + DexcomG App (parcheada) + DXCM + Recibir valores de glucosa de la app parcheada de Dexcom. %1$d día %1$d días diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8dd502b75c..d0e6d88f44 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -866,6 +866,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Téléchargement Fabric Autoriser l\'envoi automatique des rapports d\'erreur et des données d\'utilisation aux développeurs via le service fabric.io SVP actualisez votre app Dexcom vers une version compatible + L\'application Dexcom n\'est pas installée. Début Activités Début Repas Imminent Traitement @@ -1149,6 +1150,27 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Créer automatiquement sur NS un événement \"Changement de capteur\" au démarrage du capteur Tomato (MiaoMiao) Tomato + seconde + minute + heure + secondes + minutes + heures + Votre nom d\'utilisateur Tidepool, normalement votre adresse e-mail + Nom d\'utilisateur + Mot de passe de connexion Tidepool + Mot de passe de connexion + Test de la connexion Tidepool + Si activé, les transferts iront vers https://int-app.tidepool.org au lieu de https://app.tidepool.org/ + Utiliser les serveurs d\'Intégration (test) + Tidepool + TDP + Transfère les données vers Tidepool + Transférer les données CGM + Transférer les traitements (insuline, glucides) + Transférer les Basal temporaires + Transférer les changements de profils, les objectifs temporaires + Transférer les tests de glycémies Changement d\'heure d\'été dans moins de 24 heures Changement d\'heure d\'été dans moins de 3 heures - Boucle fermée désactivée stockage interne limité @@ -1163,6 +1185,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S Une nouvelle version est disponible depuis au moins %1$d jours ! Retour au traitement par pompe assistée par capteur (Arrêt par Glycémie Basse (AGB), Low Glucose Suspend (LGS) ) après 60 jours et la Boucle sera désactivée après 90 jours 2 h %1$.2fU + App Dexcom (patchée) + Dexcom + Recevoir les valeurs de glycémie de l’application Dexcom patchée. %1$d jour %1$d jours diff --git a/app/src/main/res/values-it/insight_alert_codes.xml b/app/src/main/res/values-it/insight_alert_codes.xml index 70489fbc5e..ece9e65a4a 100644 --- a/app/src/main/res/values-it/insight_alert_codes.xml +++ b/app/src/main/res/values-it/insight_alert_codes.xml @@ -1,3 +1,30 @@ - + + Promemoria R1 + Promemoria R2 + Promemoria R3 + Promemoria R4 + Promemoria R7 + Avviso W31 + Avviso W32 + Avviso W33 + Avviso W34 + Avviso W36 + Avviso W38 + Avviso W39 + Manutenzione M20 + Manutenzione M21 + Manutenzione M22 + Manutenzione M23 + Manutenzione M24 + Manutenzione M25 + Manutenzione M26 + Manutenzione M27 + Manutenzione M28 + Manutenzione M29 + Manutenzione M30 + Errore E6 + Errore E10 + Errore E13 + diff --git a/app/src/main/res/values-it/insight_alert_descriptions.xml b/app/src/main/res/values-it/insight_alert_descriptions.xml index 70489fbc5e..7d5fe2003a 100644 --- a/app/src/main/res/values-it/insight_alert_descriptions.xml +++ b/app/src/main/res/values-it/insight_alert_descriptions.xml @@ -1,3 +1,25 @@ - + + %1$d%%\nDurata: %2$s h]]> + %1$s U]]> + Cambia la batteria. + Imposta ora/data. + Contatta il supporto Accu-Chek. + %1$d%%
Durata: %2$s h]]>
+ %1$s U
Consegnato: %2$s U]]>
+ Inserisci cartuccia. + Cambia cartuccia. + Cambia la batteria. + Controlla lo stato della pompa. + Cambia set infusione. + Contatta il supporto Accu-Chek. + Cambia cartuccia. + Riavvia il download dei dati. + Controlla lo stato della pompa. + Imposta il tipo di batteria. + Imposta tipo di cartuccia. + Cambia batteria e cartuccia. + Cambia cartuccia. + Cambia lingua. +
diff --git a/app/src/main/res/values-it/insight_alert_titles.xml b/app/src/main/res/values-it/insight_alert_titles.xml index 70489fbc5e..d137c002cd 100644 --- a/app/src/main/res/values-it/insight_alert_titles.xml +++ b/app/src/main/res/values-it/insight_alert_titles.xml @@ -1,3 +1,30 @@ - + + Bolo consegnato + Bolo perso + Sveglia + Cambia set infusione + TBR completato + Cartuccia bassa + Batteria scarica + Ora/data non valida + Fine della garanzia + TBR annullato + Bolo annullato + Avviso di prestito + Cartuccia non inserita + Cartuccia vuota + Batteria vuota + Spegnimento automatico - pompa interrotta + Occlusione + Prestito oltre - fine operazione + Modifica cartuccia non completata + Download dati fallito + Timeout modalità pausa + Tipo di batteria non impostato + Tipo di cartuccia non impostato + Errore meccanico + Rivedi errore + Errore lingua + diff --git a/app/src/main/res/values-it/insight_exceptions.xml b/app/src/main/res/values-it/insight_exceptions.xml index 70489fbc5e..4d367aa78b 100644 --- a/app/src/main/res/values-it/insight_exceptions.xml +++ b/app/src/main/res/values-it/insight_exceptions.xml @@ -1,3 +1,15 @@ - + + Connessione non riuscita + Connessione persa + Accoppiamento rifiutato + Creazione documento fallita + Timeout + Numero massimo di tipi di boli già in esecuzione + Nessun TBR attivo da annullare + Nessun TBR attivo da modificare + Nessun bolo da annullare + Pompa già in questo stato + Modalità di esecuzione non consentita + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5d942f4818..db53185001 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -9,6 +9,7 @@ Ripristinare i database Vuoi davvero ripristinare le impostazioni? Uscita + Usa bolo esteso per >200%% Dispositivo Bluetooh DanaR Utilizzare sempre valori assoluti basali per favore riavvia il tuo telefonoo riavvia AndroidAPS dalle Impostazioni di Sistema o Android APS non lo registrera\' @@ -43,6 +44,8 @@ La sensibilità è calcolata dai dati delle ultime 8h e i carboidrati (se non assorbito) vengono recuperati dopo il tempo specificato nelle preferenze. Plugin calcola anche UAM. La sensibilità è calcolata come media ponderata da deviazioni. Le deviazioni più recenti hanno peso maggiore. Assorbimento minimo carb è calcolato da tempo di assorbimento max carb da preferenze. Questo algoritmo è il più veloce nei seguenti cambiamenti di sensibilità. Ricevi i valori BG dall\'app Dexcom G5 con patch. + Ricevi i valori BG dall\'app Eversense. + Ricevi i valori BG dall\'app Eversense. Ricevi valori Bg da Glimp. Ricevi valori BG da 600SeriesAndroidUploader. Scarica i valori BG da Nightscout @@ -51,6 +54,7 @@ Monitorare e controllare AndroidAPS usando il tuo orologio WearOS. Visualizza informazioni del loop sull\'interfaccia dell\'orologio. Controlla AndroidAPS in remoto dai comandi SMS. + Indietro Avvio Verificato Unita\' @@ -143,6 +147,8 @@ Vincolo Violato Errore di erogazione del bolo Errore di somministrazione basale temporale + Valore Basale [%%] + %% (100%%=corrente) Accettare il nuovo basale temp Boli Calcolatore @@ -242,6 +248,7 @@ IOB Microinfusore Unita\' giornaliera Ultimo Bolo + %1$.1f ore fa Data Errata Valore non impostato correttamente Aggiorna Profilo @@ -259,6 +266,10 @@ Per fornire risposta %1$.2fU bolo con codice %2$s Invia la taratura %1$.2f risposta con codice %2$s Bolo fallito + Bolo %1$.2fU inviato con successo + Pronto a inviare %1$.2fU + Bolo %1$.2fU inviato con successo + Inviato %1$.2fU Consenti comandi remoti tramite SMS Dito Sensore @@ -303,6 +314,7 @@ Arresta PREMUTO STOP In attesa del micro + Inviando %1$.2fU Impostazione di visualizzazione, monitoraggio e analisi basali e rapporti Verifica che Bg sia disponibile in Nightscout, e la data micro e\' ben allineata Partenza con Open loop @@ -325,12 +337,26 @@ Loop e\' disabilitato Loop abilitato %1$.2f limitato a %2$.2f + Il valore %1$s è fuori limite massimo il comando da remoto non e\' permesso + Bolo remoto non disponibile. Riprovare più tardi. + Per iniziare basale %1$.2fU/h per %2$d min risposta con il codice %3$s + Per passare al profilo a %2$d%% di risposta con codice %3$s + Per iniziare bolo esteso %1$.2fU/h per %2$d min risposta con il codice %3$s + Per iniziare basale %1$d%U/h per %2$d min risposta con il codice %3$s Sospendi il loop per %1$d minuti riprendi %2$s Basale temporanea %1$.2fU/h for %2$d min avviata con successo + Bolo esteso %1$.2fU/h for %2$d min avviato con successo + Basale temporanea %1$d%U/h per %2$d min avviata con successo Avvio Basale temporanea fallita + Partenza Bolo esteso fallito + Interrompere la basale temporanea con il codice %1$s + Per interrompere il bolo esteso con il codice %1$s Baasale temporanea cancellata + Bolo esteso cancellato Cancellazione temporanea fallita + Cancellazione bolo esteso fallito + comando sconosciuto o risposta errata QuickWizard Impostazioni QuickWizard Tasto testo: @@ -393,6 +419,7 @@ Matrice di %1$d elementi. \nActual valore: Autosens dati Debug di script + Usa la funzione Autosens Aggiornare gli eventi da NS Eliminare trattamenti in futuro Pranzo @@ -437,6 +464,7 @@ Profilo Valore predefinito: 3 Questo è una chiave di sicurezza di OpenAPS. Ciò che fa è limitare le tue basali a essere 3 volte la quantità massima. Probabilmente non avrai bisogno di cambiarlo, ma dovresti essere consapevole di ciò che viene discusso in merito a \"3x max al giorno; Corrente 4x \"per sicurezza. Valore predefinito: 4 questo è l\'altra metà delle chiavi di sicurezza di OpenAPS e l\'altra metà del \"3 volte al giorno max; 4 x corrente\"le chiavi di sicurezza. Ciò significa che il tuo basale, indipendentemente dal basale di max impostato sulla pompa, non può essere più in alto di questo numero di volte il livello attuale del tuo basale. Si tratta di impedire alle persone di entrare in regime pericoloso da basals max eccessivamente alta prima di capire come funziona l\'algoritmo. Ancora una volta, il valore predefinito è 4x; maggior parte delle persone non sarà necessario modificare questo e invece sono più probabili avere bisogno di regolare le altre impostazioni se si sentono come sono \"in esecuzione in\" questo chiave di sicurezza. + Valore predefinito: 1.2\n Questo è un valore di moltiplicatore per autosens (e presto autotune) per impostare un limite massimo del 20%% su quanto in alto può essere il rapporto di autosens, che a sua volta determina quanto in alto autosens può regolare la basale, quanto in basso può regolare ISF e quanto in basso è possibile impostare la destinazione di BG. Valore predefinito: 0,7\n L\'altro lato dei limiti di sicurezza di autosens, mettendo un limite su quanto in basso gli autosens possono regolare le basili e quanto alto può regolare i target CF e BG. Autosens regolare obiettivi Valore predefinito: true\n viene utilizzato per consentire autosens regolare gli obiettivi di BG, oltre a Cf e basale. @@ -449,6 +477,7 @@ Numero di telefono non corretto Numero non valido per SMS Calibrazione + Invia calibrazione %1$.1f a xDrip? xDrip non installato Invio calibrazione xDrip La calibrazione è stata inviata. La ricezione deve essere abilitata in xDrip. @@ -499,6 +528,7 @@ Insulina resistente Si prega di selezionare l\'età paziente e di impostare i limiti di sicurezza Glimp + %1$s ha bisogno dell\'ottimizzazione della batteria per un buon funzionamento Sospensione Loop Sospendi (%1$d m) Superbolo (%1$d m) @@ -512,6 +542,7 @@ Sconnetti Micro per 2 H Sconnetti Micro per 3 H Storia + Ricollegare la pompa Durata errata Loop sospeso Storia del Loop @@ -529,6 +560,12 @@ INS Abilitare super bolus Abilita funzionalità superbolus nella procedura guidata. Non abilitare fino a quando non impari quello che realmente fa. PUÒ CAUSARE L\'INVERTIMENTO INSULINO SE USATO BLINDLY! + Mostra le luci di stato sulla schermata iniziale + Abilita indicatori di stato per ago, catetere, serbatoio e batteria livello sulla schermata iniziale. + Soglia di avviso serbatoio livello [U] + Soglia critica serbatoio livello [U] + Avviso livello batteria [%%] + Soglia livello batteria critica [%%] IOB COB Firmware @@ -536,6 +573,7 @@ Stato Bluetooh Spegnere Invio SMS permesso + Autorizzazione Stato del telefono mancante Stato xDripe XDrip in linea xdi @@ -580,6 +618,7 @@ Impostazioni di assorbimento Assorbimento max pasto tempo [h] Tempo in ore in cui è previsto che tutti i carboidrati del pasto vengano assorbiti + Visualizza bolo esteso come %% SAGE IAGE CAGE @@ -681,7 +720,10 @@ BT Watchdog Spegnere il bluetooth del telefono per un secondo se non è possibile alcuna connessione al micro. Questo può aiutare in alcuni telefoni. DexcomG5 App (con correzione) + DexcomG6 App (con correzione) + App Eversense (con patch) Caricare dati di BG al NS + Impostazioni caricamento BG Visualizza dettagliata delta Visualizza delta con una cifra decimale più Minuti max di basale per limitare SMB per @@ -689,6 +731,8 @@ Inviare i dati di BG xDrip + In xDrip + selezionare origine dati 640g/Eversense NSClient BG + Valore basale sostituito dal valore massimo: %1$s + Valore basale sostituito dal valore massimo: %1$s Calcolo di BG Calcolo di bolo Bolo Calcolo di bolo @@ -706,6 +750,8 @@ Chiusa modalità attivata IOB massima impostata correttamente BG disponibile da sorgente selezionata + Valori basali non allineati alle ore: %1$s + Profilo non valido: %1$s Programmazione micro per bolusing Aggiorna Stato @@ -718,6 +764,7 @@ In esecuzione Annullamento di TBR L\'impostazione di TBR (%1$d%% / %2$d min) + Bolusing (%1$.1f U) Aggiornando Richiesta operazione non supportata dal micro L\'utilizzo non sicuro: estesi o multiwave boli sono attivi. Modalità loop è stato impostato basso-sospendere solo 6 ore. Solo normali boli sono supportati in modalità loop @@ -742,6 +789,7 @@ Erogare il bolo e la verifica di storia della pompa non è riuscita, si prega di controllare la pompa. Se è stato somministrato un bolo, si aggiungerà ai trattamenti durante il successivo collegamento alla pompa. Poca insulina per erogare il bolo Errore di avvio bolo esteso + Vista Pompa di Insight Stato Cambia @@ -816,6 +864,8 @@ Opzioni dati Upload di fabbrica Consentire l\'invio degli errori a fine di ricerca agli sviluppatori tramite il servizio fabric.io. + Si prega di aggiornare l\'app di Dexcom a versione supportata + L\'applicazione Dexcom non installata. Inizia attività Iniziare a mangiare presto TT TT @@ -825,6 +875,7 @@ Sarà memorizzato solo il bolo Autobackfill missig BGs da NS SMB impostato dal micro + Attivita\' Sensibilità Deviazione Carboidrato attivi @@ -858,6 +909,8 @@ Modalità ciclo chiuso disattivata nelle preferenze Autosens disattivato nelle preferenze SMB disattivato nelle preferenze + SMB disattivato nelle preferenze + attivita\' La limitazione di velocità max basale a %1$.2f U/h a causa di %2$s limite micro esso deve essere il valore positivo @@ -979,6 +1032,7 @@ %1$d. Obiettivo Poctech Ricevere i valori BG da app Poctech + Ricevere i valori BG da Tomato app (dispositivo MiaoMiao) Genera temptarget ad alta sensibilità = 100]]> Temptarget basso. abbassare la sensibilità @@ -1020,7 +1074,125 @@ Violazione del limite di insulina Cambiare richiesta minima [%] Loop sarà nuova richiesta di modifica popup solo se il cambiamento è più grande di questo valore. Valore predefinito è 20% + Per favore accoppia la pompa con il tuo telefono! + Ricerca di dispositivi… + Attendi… + Collegamento completato + I codici mostrati su questo dispositivo e sulla pompa? + associazione Insight + Accu-Chek Insight + %1$.2fU / %2$.2fU consegnato + %1$s: %2$s + Cambio Catetere + Tempo di aggiornamento della pompa + Conferma + Muto + Avviso pompa + Registro modifiche al sito + Modifiche di registro serbatoio + Registro modifiche al sito + Registra modifiche batteria + Modifica modalità di funzionamento log + Avvisi log + Abilita emulazione TBR + Usa i bolli estesi invece dei TBR per aggirare il limite del 250%% + Disconnetti ritardo [s] + Numero di serie + Versione software di rilascio + Versione software di processore UI + Versione software del PC + Versione software di processore UI + Versione software del processore + Versione pagina info BT + Indirizzo Bluetooth + Accoglienza ID sistema + Data di produzione + Elimina accoppiamento + Informazioni di abbinamento + Aggiorna stato + Avvia pompa + Ferma pompa + Modalità operativa + Stato + Bolo TDD + TDD Basale + Totale TDD + Recuperando + Non accoppiato + Ultimo connesso + Avviato + Stoppato + %1$d%% per %2$d / %3$d min + Bolo Esteso + Portale Multi + %1$.2f / %2$.2f U per %3$d minuto + Abilita notifica di fine TBR e \n(impostazione pompa) + Abilita notifica di fine TBR e \n(impostazione pompa) + Ricarica + Integrazione pompa per pompe di Accu-Chek Insight + Non inserito + Ultima conn: %1$d minuti fa + TBR: %1$d% per %2$d/%3$d min + Esteso: %1$.2f / %2$.2f U per %3$d min + Esteso: %1$.2f/ %2$.2f U per %3$d min + TDD: %1$.2f + Reser.: %1$.2fU Batt: %1$d%% + Durata massima [s] + Durata Minima [s] + Durata recupero + Timeout durante la comunicazione - riavvia bluetooth + == ∑ %1$s U + U/o + g/U + /U + Cambia il sensore di log in NS + Crea evento \"Cambia sensore\" in NS all\'avvio del sensore + Tomato (MiaoMiao) + Pomodoro + secondi + minuto + ora + giorni + settimana + secondi + minuti + ore + giorni + settimane + Il tuo nome utente di accesso Tidepool, normalmente il tuo indirizzo email + Nome utente + La tua password di accesso Tidepool + Password di accesso + Test accesso Tidepool + Se abilitato, gli upload andranno su https://int-app.tidepool.org invece che su https://app.tidepool.org/ + Usa server di integrazione (test) + Tidepool + TDP + Carica dati in Tidepool + Carica i dati del CGM + Carica trattamenti (insulina, carbo) + Carica basali temporanee + Carica gli eventi del profilo, obiettivi temp + Carica i test BG + Il tempo di salvataggio cambia in 24h o meno + Il tempo di salvataggio dei dati avviene ogni 3 ore - ciclo chiuso disattivato + vincolo di archiviazione interna + Libera almeno %1$d MB dalla memoria interna! Loop disabilitato! + Formato errato + Codice errato. Comando annullato. + Non configurato + Cambia profilo creato + Controllo Versione + versione precedente + versione molto vecchia + Nuova versione per almeno %1$d giorni disponibile! Torna ai LGS dopo 60 giorni, il ciclo sarà disattivato dopo 90 giorni + Attività su scala grafica [U/min] + 2 ore + %1$.2fU + Dexcom App (con correzione) + DXCM + Ricevi i valori BG dall\'app Dexcom con patch. %1$d giorni %1$d giorni diff --git a/app/src/main/res/values-ko/insight_alert_codes.xml b/app/src/main/res/values-ko/insight_alert_codes.xml index 70489fbc5e..65e0d40df6 100644 --- a/app/src/main/res/values-ko/insight_alert_codes.xml +++ b/app/src/main/res/values-ko/insight_alert_codes.xml @@ -1,3 +1,30 @@ - + + R1 미리 알림 + R2 미리 알림 + R3 미리 알림 + R4 미리 알림 + R7 미리 알림 + 경고 W31 + 경고 W32 + 경고 W33 + 경고 W34 + 경고 W36 + 경고 W38 + 경고 W39 + 관리 M20 + 관리 M21 + 관리 M22 + 관리 M23 + 관리 M24 + 관리 M25 + 관리 M26 + 관리 M27 + 관리 M28 + 관리 M29 + 관리 M30 + 에러 E6 + 에러 E10 + 에러 E13 + diff --git a/app/src/main/res/values-ko/insight_alert_descriptions.xml b/app/src/main/res/values-ko/insight_alert_descriptions.xml index 70489fbc5e..cdb14ffbd2 100644 --- a/app/src/main/res/values-ko/insight_alert_descriptions.xml +++ b/app/src/main/res/values-ko/insight_alert_descriptions.xml @@ -1,3 +1,25 @@ - + + %1$d%%\n기간: %2$s h]]> + %1$s U]]> + 베터리 교체. + 시간/날짜 설정 + 아큐-첵 지원 문의 + %1$d%%
기간: %2$s h]]>
+ %1$s U
주입: %2$s U]]>
+ 카트리지를 삽입. + 카트리지를 교체. + 베터리를 교체. + 펌프 상태를 체크. + 주입세트를 교체. + 아큐-첵 지원 문의 + 카트리지를 교체. + 데이터 다운로드 재시작 + 펌프 상태를 체크. + 베터리 타입 설정. + 카트리지 타입 설정. + 베터리와 카트리지를 교체. + 카트리지를 교체. + 언어 변경. +
diff --git a/app/src/main/res/values-ko/insight_alert_titles.xml b/app/src/main/res/values-ko/insight_alert_titles.xml index 70489fbc5e..5d77b91094 100644 --- a/app/src/main/res/values-ko/insight_alert_titles.xml +++ b/app/src/main/res/values-ko/insight_alert_titles.xml @@ -1,3 +1,30 @@ - + + Bolus 주입. + Bolus 누락 + 알람 시계 + 주입세트를 교체 + TBR 완료 + 카트리지 부족 + 베터리 부족 + 유효하지 시간/날짜 + 보증기간 만료 + TBR 취소 + Bolus 취소 + Loantime 경고 + 카트리지가 삽입되지 않음 + 카트리지가 비어 있음 + 배터리 방전됨 + 오토매틱 오프 - 펌프 종료 + 막힘 + Loantime 종료 - 작동 종료 + 카트리지 변경이 완료되지 않음 + 데이터 다운로드 실패 + 일시정지 모드 시간초과 + 베터리 타입이 설정되지 않음 + 카트리지 타입이 설정되지 않음 + 기계적인 오류 + 되감기 오류 + 언어 오류 + diff --git a/app/src/main/res/values-ko/insight_exceptions.xml b/app/src/main/res/values-ko/insight_exceptions.xml index 70489fbc5e..e0b700a167 100644 --- a/app/src/main/res/values-ko/insight_exceptions.xml +++ b/app/src/main/res/values-ko/insight_exceptions.xml @@ -1,3 +1,15 @@ - + + 연결실패 + 연결 끊김 + 페어링 거절됨 + 소켓 생성 실패 + 시간 초과 + 최대치의 Bolus가 이미 실행중입니다. + 취소 할 활성 TBR 없음 + 변경 할 활성 TBR 없음 + 취소 할 Bolus가 없습니다. + 이미 그 상태로 펌프 중 + 실행 모드가 허용되지 않음 + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 46b451b602..5950fc0afb 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -9,6 +9,7 @@ 데이터베이스 초기화 데이터 베이스를 정말 초기화하시겠습니까? 종료 + 200%%이상 주입 위해 확장 Bolus 사용 다나R 블루투스 Basal 절대값 사용하기 폰을 재부팅하거나 AndroidAPS를 재시작하세요 \n그렇지 않으면 로그 기록이 되지 않습니다.(알고리즘이 정상적인 작동하는지 확인하기 위해 로그가 필요합니다.)! @@ -43,6 +44,8 @@ 민감도가 과거 8시간의 데이터로 부터 계산됩니다. (흡수되지 않은 경우) 탄수화물은 설정에서 설정된 시간이 지나면 없어집니다. UAM(알리지 않은 음식)도 계산합니다. 민감도가 편차의 가중평균으로 계산됩니다. 최근의 편차가 더 가중됩니다. 최소 탄수화물 흡수는 설정에서 최대 탄수화물 흡수 시간으로 부터 계산됩니다. 이 알고리즘의 민감도가 가장 빠릅니다. 패치된 DexcomG5 앱에서 혈당값 받기 + 패치된 DexcomG6 앱에서 혈당값 받기 + 패치된 Eversense 앱에서 혈당값 받기 Glimp에서 혈당값 받기 600SeriesAndroidUploader에서 혈당값 받기 Nightscout에서 다운로드하여 혈당값 받기 @@ -51,6 +54,7 @@ WearOS 워치를 이용하여 AndroidAPS를 모니터하고 제어합니다. xDrip+ 워치페이스에서 Loop정보 보여주기 SMS 전송을 이용하여 AndroidAPS를 원격 제어합니다. + 뒤로 시작 확인 단위 @@ -143,6 +147,8 @@ 제한 위반 Bolus 주입 에러 임시Basal 주입 에러 + Basal 값[%%] + %% (100%% = 현재) 새 임시Basal 적용: 관리 계산기 @@ -242,6 +248,7 @@ 펌프 IOB 일 인슐린 총량 최근 Bolus: + %1$.1f시간 전 사용할수 없는 입력 데이터 값이 제대로 설정되지 않았습니다 프로파일 새로고침 @@ -259,6 +266,10 @@ Bolus %1$.2fU 을 주입하려면 %2$s 를 입력하고 답장하세요 보정값 %1$.2f을 전송하려면 %2$s 를 입력하고 답장하세요 Bolus failed + Bolus %1$.2fU이 주입 완료되었습니다. + %1$.2fU을 주입합니다 + Bolus %1$.2fU이 주입 완료되었습니다 + %1$.2fU 주입중 SMS 원격 명령 사용하기 체혈 센서 @@ -303,6 +314,7 @@ 정지 정지 누름 펌프를 기다리는 중 + %1$.2fU을 주입합니다 표시설정과 모니터설정을 완료하고, Basal과 비율을 분석한다. 나이트스카우트에서 혈당 데이터가 잘 들어오는지, 펌프데이터가 업로드 되는지 확인한다. Open Loop를 시작한다. @@ -325,12 +337,26 @@ Loop가 중지중입니다. Loop가 실행중입니다. %1$.2f, %2$.2f으로 제한됨 + %1$s값이 하드한계를 벗어났습니다 원격 명령이 허가되지 않았습니다 + 원격 주입이 불가능합니다. 나중에 다시 시도해주세요. + %2$d분 동안 Basal %1$.2fU/h 주입하려면 %3$s 를 입력하고 답장하세요 + 프로파일을 %1$s %2$d%%로 변경하려면 %3$s 를 입력하고 답장하세요 + %2$d분 동안 확장 Bolus %1$.2fU 주입하려면 %3$s 를 입력하고 답장하세요 + %2$d 분 동안 Basal %1$d%% 주입하려면 %3$s을 입력하고 답장하세요 %1$d분동안 Loop 일시중지하려면 %2$s 를 입력하고 답장하세요 Temp Basal %1$.2fU/h for %2$d min started successfully + %2$d분 동안 확장Bolus %1$.2fU주입이 성공적으로 시작되었습니다 + %2$d분 동안 임시Basal %1$d%%주입이 성공적으로 시작되었습니다 Temp Basal start failed + 확장 Bolus 실행 실패 + 임시Basal을 중지하려면 %1$s 를 입력하고 답장하세요 + 확장 Bolus를 중지하려면 %1$s 를 입력하고 답장하세요 Temp Basal canceled + 확장 Bolus 취소 Canceling Temp Basal failed + 확장 Bolus 취소가 실패하였습니다. + 알려지지 않은 명령이거나 잘못된 답장입니다 빠른마법사 빠른마법사 설정 버튼명: @@ -393,6 +419,7 @@ %1$d 요소의 배열.\n실제 값: Autosens 정보 스크립트 디버그 + Autosens 기능 사용 NS에서 이벤트 새로고침 미래시점의 관리 삭제 식사직전 @@ -437,6 +464,7 @@ 프로파일 기본값: 3\n이 값은 중요한 OpenAPS 안전장치입니다. 이 값의 역할은 펌프에 설정되어 있는 최대Basal보다 3배를 초과할 수 없게 제한하는 것입니다. 이 값을 변경할 필요는 없을 것이지만, 안전을 위해 \"3x max daily; 4x current\"이 의미하는 바를 알고 있어야 합니다. 기본값: 4\n이 값은 \"3x max daily; 4x current\"의 나머지 절반에 해당하는 또 다른 중요한 OpenAPS 안전장치입니다. 이것은, 펌프에 설정된 최대 Basal과는 관계없이, Basal이 설정된 현재시간의 Basal에 이 값을 곱한 양을 초과할 수 없다는 것을 의미합니다. 이는 알고리즘의 작동 방식을 이해하기 전에 과도하게 높은 최대 기본을 설정하여 위험한 상황에 빠지지 않도록 보호하기 위한 것입니다. 다시한번, 기본 값은 4배인 것을 알아두세요; 일반적으로 이것을 조정할 필요는 전혀 없으며, 대신 이 안전장치를 변경해야할것처럼 생각이 된다면, 다른 설정을 변경해야 할 가능성이 더 큽니다. + 기본값: 1.2\n이 옵션은 autosens의 최대 한계 값을 20%%로 제한하기 위해 autosens(곧 autotune)이 이용하는 승수값입니다. 이 값이 autosens에 대한 Basal의 최대 값, 인슐린 민감도(ISF)의 최소값 및 혈당 목표의 최소값을 결정케 합니다. 기본값: 0.7\nautosens 안전 제한의 나머지 부분입니다. 이는 Basal을 얼마나 낮게 조절할 수 있는지, ISF와 혈당 목표범위를 얼마나 높게 설정할 수 있는지를 결정합니다. Autosens가 목표도 조절합니다. 기본값: 활성\n이것은 autosens가 ISF와 Basal뿐만 아니라, 혈당 목표범위를 조절할 수 있게 합니다. @@ -449,6 +477,7 @@ 폰번호가 유효하지 않습니다 SMS폰번호가 유효하지 않습니다 보정 + 보정값 %1$.1f을 xDrip에 전송하시겠습니까? xDrip+가 설치되지 않았습니다 보정이 xDrip으로 전송되었습니다 보정 전송됨. xDrip에서 수신이 되도록 설정되어 있어야 합니다. @@ -499,6 +528,7 @@ 인슐린 저항성 높은 성인 안전제한을 설정하기 위해 당뇨인의 나이를 선택하세요 Glimp + 최적의 성능을 위해 %1$s에서 배터리 최적화를 해제해야합니다. Loop 일시중지 일시중지중 (%d분) Superbolus (%1$d 분) @@ -512,6 +542,7 @@ 2시간동안 펌프 일시중지 3시간동안 펌프 일시중지 재실행 + 펌프 재연결 기간이 잘못되었습니다. Loop가 일시중지 되었습니다. Loop가 재실행 되었습니다. @@ -529,6 +560,12 @@ INS 마법사에서 Superbolus 활성화하기 마법사에서 Superbolus 기능을 활성화합니다. 어떤 기능인지 확실히 알기전까지 활성화 하지 마세요. 제대로 알지 못하고 사용하면 일슐린이 과다 주입될 수 있습니다! + 홈화면에 상태 표시등 보여주기 + 홈화면에 캐뉼라 사용기간, 인슐린 사용기간, 센서 사용기간, 펌프용 주사기와 배터리 남은 양의 표시등을 활성화합니다. + 주사기량 경고 기준값[U] + 주사기량 위험 기준값[U] + 배터리량 경고 기준값[%%] + 배터리량 위험 기준값[%%] IOB COB 펌웨어 @@ -536,6 +573,7 @@ 블루투스 상태 버전정보 SMS 권한 누락 + 전화 상태 권한이 허가되지 않았습니다 xDrip 상태(워치) xDrip 상태표시라인(워치) xds @@ -580,6 +618,7 @@ 흡수 설정 식사 최대 흡수 시간 [h] 식사로 섭취한 탄수화물이 모두 흡수될기까지 예상되는 시간 + 확장Bolus를 %%로 표시하기 SAGE IAGE CAGE @@ -681,7 +720,10 @@ 블루투스 감시기능 펌프에 연결이 되지 않을때 폰의 블루투스를 1초간 껐다 켭니다. 블루투스 스택이 정지되는 일부폰에 이 기능이 도움이 됩니다. DexcomG5 앱(패치버전) + DexcomG6 앱(패치버전) + Eversense 앱(패치버전) NS에 혈당데이터 업로드하기 + 혈당 업로드 설정 델타(혈당증분값) 자세히 보여주기 소수점 자리 추가된 증분값 보여주기 SMB가 Basal을 제한할 수 있는 최대 시간(분) @@ -689,6 +731,8 @@ 혈당 데이터를 xDrip+에 전송하기 xDrip+ 데이터 소스에서 640g/Eversense을 선택하세요 NSClient 혈당 + 지원되는 최소값으로 Basal값이 대체되었습니다:%1$s + 지원되는 최대값으로 Basal값이 대체되었습니다:%1$s 혈당 계산 Bolus IOB 계산 Basal IOB 계산 @@ -706,6 +750,8 @@ Closed 모드가 활성화됨 최대 IOB가 바르게 설정됨 선택한 소스에서 혈당이 들어옵니다. + Basal값이 시간단위로 설정되지 않았습니다: %1$s + 유효하지 않은 프로파일: %1$s Bolus 주입을 위한 펌프 프로그래밍 새로고침 상태 @@ -718,6 +764,7 @@ 실행중 임시기초주입 취소중 임시기초주입 설정중 (%1$d%% / %2$d분) + Bolus 주입중 (%1$.1f U) 새로고침중 요청하신 동작은 펌프에서 지원하지 않습니다. 위험한 사용: 확장Bolus 혹은 멀티웨이브Bolus가 활성화 됩니다. Loop 모드가 저혈당 방지로 오직 6시간만 설정됩니다. Loop 모드에선 일반 Bolus만 지원합니다. @@ -742,6 +789,7 @@ Bolus를 주입하고 펌프 이력을 확인하는데 실패하였습니다. 펌프를 확인해보세요. 만약 Bolus 주입이 되었다면 펌프와 다음번 연결시 그 내용이 관리에 추가될 것입니다. Bolus 주입 위한 인슐린이 주사기에 부족합니다. 확장Bolus 주입 에러 + Sight Insight 펌프 상태 변경됨 @@ -816,6 +864,8 @@ 데이터선택 Fabric 업로드 fabric.io 서비스를 통해 개발자에게 앱 오류 및 특정 데이터를 자동 전송합니다. + Dexcom앱을 지원가능한 버전으로 업데이트하세요. + Dexcom 앱이 설치되지 않았습니다. 활동 임시목표 시작 식사직전 임시목표 시작 TT @@ -825,6 +875,7 @@ Bolus가 기록만 됩니다. NS에서 누락된 혈당이 자동으로 채워집니다. 펌프에 의한 SMB 설정 + 활동 민감도 편차 체내탄수화물양(COB) @@ -858,6 +909,8 @@ 설정에서 Closed Loop 모드가 비활성화되었습니다. 설정에서 Autosens가 비활성화 되었습니다. 설정에서 SMB가 비활성화 되었습니다. + 설정에서 UAM이 비활성화 되었습니다. + Oref1 민감도 플러그인이 필요하므로 UAM이 비활성화 되었습니다. %2$s로 인해 최대 Basal양이 %1$.2f U/h으로 제한됩니다. 펌프 제한 양의 값이어야 합니다. @@ -979,6 +1032,7 @@ %1$d. 목표 Poctech Poctech 앱에서 혈당값 받기 + 혈당값이 Tomato앱(MiaoMaio장치) 으로부터 수신되었습니다. 높은 임시목표는 민감도를 올립니다. 낮은 임시목표는 민감도를 내립니다. @@ -1020,6 +1074,125 @@ 인슐린 제한 위반 최소 요청 변화 [%] 이 값보다 변화가 클때만 Loop가 새 변화 요청창을 띄울것 입니다. 기본 값은 20%입니다. + 펌프를 폰과 동기화 하십시오 + 장치 검색중... + 잠시 기다려 주세요... + 동기화 완료 + 이 장치에서 보여지는 코드와 펌프에서 보여지는 코드가 동일한가요? + Insight와 동기화 + 아큐-첵 Insight + %1$.2fU / %2$.2fU 주입됨 + %1$s: %2$s + 튜브 변경 + 펌프 시간 업데이트 + 확인 + 음소거 + 펌프 경고 + 위치 변경 기록 + 주사기 교체 기록 + 튜브 교체 기록 + 배터리 교체 기록 + 작동 모드 변경 기록 + 경고 기록 + 임시Basal 에뮬레이션 활성화 + 250%% 제한을 무시하기 위해 임시Basal 대신 확정Boluses 사용 + 연결해제 지연 [초] + 시리얼번호 + 출시 소프트웨어 버전 + UI 프로세서 소프트웨어 버전 + PC 프로세서 소프트웨어 버전 + MD tel 프로세서 소프트웨어 버전 + 안전 프로세서 소프트웨어 버전 + 블루투스 정보 페이지 버전 + 블루투스 주소 + 시스템 ID 부록 + 제조일 + 동기화 삭제 + 동기화 정보 + 상태 새로고침 + 펌프 시작 + 펌프 중지 + 작동 모드 + 상태 + TDD Bolus + TDD Basal + TDD Total + 복구중 + 동기화 되지 않음 + 최신 연결 + 시작됨 + 중지됨 + %2$d / %3$d분 동안 %1$d%% + 확장 Bolus + Multiwave Bolus + %3$d분 동안 %1$.2f / %2$.2f U + 임시Basal 종료 알림 활성\n(펌프설정) + 임시Basal 종료 알림 비활성\n(펌프설정) + 새로고침 + 아큐-첵 Insight 펌프 연동 + 삽입되지 않음 + 최신연결: %1$d 분전 + 임시: %2$d / %3$d 분 동안 %1$d%% + 확장: %3$d분 동안 %1$.2f / %2$.2f U + Multiwave: %3$d 분 동안 %1$.2f / %2$.2f U + TDD: %1$.2f + Reser.: %1$.2fU + Batt.: %1$d%% + 최대 복구 기간 [초] + 최소 복구 기간 [초] + 복구 기간 + 연결 시간 초과 - 블루투스 재설정 + == ∑ %1$s U + U/h + g/U + /U + 센서 교체 NS에 기록하기 + 센서교체시 NS에 자동으로 \"센서 교체\" 이벤트를 생성합니다. + Tomato (MiaoMiao) + Tomato + + + + + + + + + + + Tidepool 사용자명, 보통 이메일 주소입니다. + 로그인 사용자명 + Tidepool 로그인 비밀번호 + 로그인 비밀번호 + Tidepool 로그인 테스트하기 + 활성화하면 업로드 정보가 https://app.tidepool.org/이 아닌 https://int-app.tidepool.org/로 전송됩니다. + 테스트 서버 사용 + Tidepool + TDP + 데이터를 Tidepool로 업로드 + CGM 데이터 업로드 + 관리정보(인슐린, 탄수화물) 업로드 + 임시 Basal 업로드 + 프로파일변경, 임시목표 업로드 + 혈당 테스트 업로드 + 24시간 이내 썸머타임 변경 + 썸머타임 변경이 3시간 미만입니다 - Closed Loop 비활성됨 + 내부 저장 용량 제한 + 내부 저장 공간을 최소 %1$d MB 이상 비우세요! Loop가 비활성화되었습니다! + 잘못된 형식 + 잘못된 코드입니다. 명령이 취소됩니다. + 설정되지 않음 + 프로파일 변경 생성됨 + 버전 검사기 + 오래된 버전 + 아주 오래된 버전 + 최소 %1$d일 새버전이 가능합니다! 60일 후엔 LGS(저혈당 주입중지기능)으로 복귀되며, 90일이후엔 Loop가 비활성화 될 것입니다. + 인슐린 활동 그래프 크기[U/min] + 2h + %1$.2fU + Dexcom 앱(패치버전) + DXCM + 패치된 Dexcom 앱에서 혈당값 받기 %1$d 일 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index f95cd7627f..09f4cd4d7d 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -1148,6 +1148,14 @@ Sukurti įvykį \"Sensoriaus keitimas\" NS automatiškai, startavus sensorių Tomato (MiaoMiao) Tomato + sekundė + minutė + valanda + sekundės + minutės + valandos + Jūsų Tidepool vartotojo vardas, įprastai jūsų el. pašto adresas + Vartotojo vardas Laiko persukimas įvyks po 24 val ar mažiau Laikas persuktas prieš mažiau nei 3 val - Uždaras ciklas deaktyvuotas vidinės saugyklos apribojimas diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index b06da87522..72d7269a81 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -866,6 +866,7 @@ Przesyłanie danych fabric Zezwalaj na automatyczne zgłaszanie awarii i danych o użytkowaniu aplikacji do deweloperów za pośrednictwem usługi fabric.io. Proszę uaktualnij swoją Apkę Dexcom do wersji wspieranej + Apka Dexcom nie jest zainstalowana. Rozpocznij TT Ćwiczenia Rozpocznij TT WkrótcePosiłek TT @@ -1161,6 +1162,11 @@ stara wersja bardzo stara wersja Nowa wersja dostępna co najmniej %1$d dni! Powrót do LGS (zawieszania podawania bazy przy niskim poziomie) po 60 dniach, pętla zostanie wyłączona po 90 dniach + 2 h + %1$.2fU + Apka Dexcom (spatchowana) + DXCM + Pobieraj wartości BG ze spatchowanej aplikacji Dexcom. %1$d dzień %1$d dni diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 4da6630cef..18919f4b02 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1,28 +1,28 @@ - Segurança de tratamentos - Max bolus permitido [U] - Max hidratos permitidos [g] + Segurança do Tratamento + Máximo bolus permitido [U] + Máximo de carbs permitidos [g] Preferências - Atualizar tratamentos do NS - Reinicializar base de dados - Quer realmente reiniciar a base de dados? + Atualizar tratamentos de NS + Redefinir banco de dados + Você realmente quer redefinir os bancos de dados? Sair Usar bólus prolongado de >200%% Dispositivo Bluetooth DanaR - Usar sempre valores absolutos de basal - Por favor, reinicie o seu telefone ou reinicie o AndroidAPS a partir das Configurações do Sistema \ncaso contrário, o AndroidAPS não terá registro (importante para controlar e verificar se os algoritmos estão a funcionar corretamente)! - Alguns botões para aceder rapidamente a funções comuns - Inserir as entradas avançadas do livro de registo. + Sempre usar valores absolutos basais + Por favor, reinicie seu telefone ou reinicie o AndroidAPS nas Configurações do Sistema \nCaso contrário o Android APS não terá registro (importante para rastrear e verificar que os algoritmos estão funcionando corretamente)! + Alguns botões para acessar rapidamente a funções comuns + Digite as entradas avançadas do livro de log. Usado para configurar os plugins ativos Programa de aprendizagem Exibe as predefinições de comida definidas no Nightscout - Predefinição de Insulina Humalog e NovoRapid / NovoLog - Predefinição de Insulina Fiasp - Permite definir o pico de atividade da insulina e deve ser usado somente por usuários avançados + Predefinição de Insulina para Humalog e NovoRapid / NovoLog + Pré-ajuste de Insulina para Fiasp + Permite que você defina o pico da atividade de insulina, deve ser usado apenas por usuários avançados Ativar ou desativar a aplicação que desencadeia o loop. - Sincroniza os seus dados com o Nightscout + Sincroniza seus dados com o Nightscout Estado do algoritmo em 2016 Estado do algoritmo em 2017 Algoritmo mais recente para usuários avançados @@ -865,6 +865,7 @@ Envio Fabric Permitir que seja enviado automaticamente à equipa de desenvolvimento o report de crashes e das funções utilizadas, utilizando o serviço fabric.io. Por favor atualize as sua aplicação Dexcom para uma versão suportada + App Dexcom não está instalada. Iniciar atividade TT Iniciar Comer em breve TT TT @@ -1162,6 +1163,9 @@ Nova versão para pelo menos %1$d dias disponíveis! Voltar para o LGS após 60 dias, o loop será desativado após 90 dias 2h %1$.2fU + App Dexcom (com patch) + DXCM + Receber valores da Glicemia da app Dexcom (com patch). %1$d dia %1$d dias diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index af83011fb8..25d1b93afa 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -865,6 +865,7 @@ Загрузка отчета для разработчиков Разрешить отправлять сообщения о неполадках и данные об использовании опций разработчикам при помощи сервиса fabric.io. Пожалуйста, обновите приложение Dexcom до поддерживаемой версии + Приложение Dexcom не установлено Включить временную цель TT Нагрузка Включить временную цель TT Ожидаемый прием пищи Временная цель (TT) @@ -874,6 +875,7 @@ Болюс будет только записан Заполнять пропущенные данные из NS Супер микро болюс SMB задан помпой + Нагрузка Чувствительность Отклонение Активные углеводы COB @@ -1150,6 +1152,31 @@ Context | Edit Context Автоматически создать событие \"Замена сенсора\" в NS при запуске сенсора Томато (MiaoMiao) Томато + сек + мин + час + дн + нед + сек + мин + час + дн + нед + Имя пользователя Tidepool, обычно ваш адрес электронной почты + Имя пользователя + Ваш пароль для входа в Tidepool + Пароль для входа + Тест входа в Tidepool + Если активировано, загрузки перейдут на https://int-app.tidepool.org вместо обычного https://app.tidepool.org/ + Использовать серверы интеграции (тест) + Tidepool + TDP + Загружает данные в Tidepool + Загрузить данные мониторинга + Загрузить лечение (инсулин, углеводы) + Загрузить временные базалы + Загрузить переключения профиля, временные цели + Загрузить тесты ГК Переход на летнее/зимнее время через 24 часа или менее Переход на летнее время меньше 3 часов назад - Замкнутый цикл отключен ограничение по объему карты памяти @@ -1162,6 +1189,28 @@ Context | Edit Context старая версия очень старая версия Новая версия доступна не менее %1$d дней! После 60 дней переход на остановку при низкой гликемии LGS, замкнутый цикл будет отключен через 90 дней + Шкала активности инсулина [ед/мин] %1$.2f ед + Приложение Dexcom (модифицированное) + DXCM + Получать данные ГК от модифицированного приложения Dexcom. + + %1$d день + %1$d дня + %1$d дней + %1$d дня + + + %1$d час + %1$d часа + %1$d часов + %1$d часа + + + %1$d минута + %1$d минуты + %1$d минут + %1$d минут + diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index f9dacaef8b..faf9fba6c1 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -865,6 +865,7 @@ Odosielanie do Fabric Automatické odosielanie chýb aplikácie a štatistiky používania vývojárom pomocou služby fabric.io. Prosím aktualizuj tvoju Dexcom aplikáciu na podporovanú verziu + Dexcom aplikácia nie je nainštalovaná. Spustiť Dočasný cieľ Aktivita Spustiť Dočasný cieľ Blížiace sa jedlo DC @@ -874,6 +875,7 @@ Bolus bude iba zaznamenaný Automaticky doplňovať chýbajúcu glykémiu z NS SMB podané pumpou + Aktivita Citlivosť Odchýlky Aktívne sacharidy @@ -1148,6 +1150,31 @@ Vytvoriť udalosť \"Výmena senzora\" v NS automaticky pri spustení senzora Tomato (MiaoMiao) Tomato + sekunda + minúta + hodina + deň + týždeň + sekúnd + minút + hodín + dní + týždňov + Vaše meno používateľa na Tidepoole, obvykle Vaša E-mailová adresa + Meno používateľa + Heslo na Tidepool + Heslo + Odtestovať prihlásenie na Tidepool + Pokiaľ bude aktivované, dáta sa budú nahrávať na https://int-app.tidepool.org namiesto https://app.tidepool.org/ + Používať testovacie servery + Tidepool + TDP + Nahrávánie dát na Tidepool + Nahrávať CGM dáta + Nahrávať ošetrenia (inzulín, sacharidy) + Nahrávať dočasné bazály + Nahrávať prepnutia profilu, dočasné ciele + Nahrávať merania z prsta Zmena letného času za menej ako 24 hodín Zmena letného času za menej ako 3 hodiny - Uzavretý okruh pozastavený obmedzenie interného úložiska @@ -1160,6 +1187,11 @@ stará verzia veľmi stará verzia Nová verzia dostupná najmenej %1$d dní! Návrat k liečbe inzulínovou pumpou s podporou senzora po 60 dňoch, okruh bude deaktivovaný po 90 dňoch. + 2h + %1$.2fU + Dexcom aplikácia (upravená) + DXCM + Prijímaj hodnoty glykémie z upravenej Dexcom aplikácie. %1$d deň %1$d dní diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 409b7f21a6..441e56b013 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -148,6 +148,8 @@ Eversense-appen. Begränsning nådd Fel vid bolusleverans Fel vid justering av temp basal + Basaldos [%%] + %% (100%% = profilens värde) Acceptera ny temp basal: Behandling Kalkylator @@ -247,6 +249,7 @@ Eversense-appen. Pumpens IOB Enheter per dag Senaste bolus + %1$.1f tim sedan Fel på inmatning Misslyckades med inställning Ladda om profil @@ -526,6 +529,7 @@ Eversense-appen. Insulinresistent vuxen Vg ange personens ålder för inställningar av gränser Glimp + %1$s behöver kunna kringgå batterisparfunktionerna för att fungera korrekt Loop pausad Pausad (%1$d min) Superbolus (%1$d min) @@ -561,6 +565,8 @@ Eversense-appen. Aktivera statusindikationerna för cage, iage, sage, reservoar och batterinivå på hemskärmen. Varningsnivå för reservoar [U] Akut varningsnivå för reservoar [U] + Varningsnivå för batteri [%%] + Akut varningsnivå för batteri [%%] IOB COB Firmwareversion @@ -759,6 +765,7 @@ Eversense-appen. Körs Avbryter temp basal Sätter temp basal (%1$d%% / %2$d min) + Levererar bolus (%1$.1f enheter) Uppdaterar Önskad åtgärd stöds inte av pumpen Osäker användning: Förlängd- eller kombibolus är aktiv. Loop mode är satt till att bromsa vid lågt BG i 6 timmar. Endast normala bolusar tillåtna i loopläge. @@ -859,6 +866,7 @@ Eversense-appen. Uppladdning till Fabric Tillåt automatisk rapportering av appkrascher och användningsinformation till utvecklarna via fabric.io-tjänsten. Vänligen uppdatera din Dexcom-app till en supportad version + Dexcom-appen är inte installerad. Starta \"Träning\" Starta \"Äta snart\" TT @@ -868,6 +876,7 @@ Eversense-appen. Bolusen sparas bara i loggboken Hämta saknad BG-data från Nightscout SMB satt i pump + Aktivitet Känslighet (Sens) Avvikelser (Dev) Aktiva KH (COB) @@ -1142,6 +1151,31 @@ Eversense-appen. Loggar automatiskt ett sensorbyte i NS när en sensor startas Tomato (MiaoMiao) Tomato + sekund + minut + timme + day + vecka + sekunder + minuter + timmar + dagar + veckor + Ditt användarnamn på Tidepool. Normalt din e-postadress + Användarnamn + Ditt Tidepool-lösenord + Lösenord + Testlogin på Tidepool + Om man slår på denna, kommer datat skickas till https://int-app.tidepool.org istället för https://app.tidepool.org + Använd Integration (test) servrar + Tidepool + TDP + Laddar upp data till Tidepool + Ladda upp CGM-data + Ladda upp behandlingar (insulin, kolhydrater) + Ladda upp temp basaler + Ladda upp profilbyten och temp mål + Ladda upp BG-test Sommar/vintertid inträffar inom 24 timmar Sommar/vintertid ändrades för mindre än 3 timmar sedan. Closed Loop avstängt intern lagringsbegränsning @@ -1150,6 +1184,16 @@ Eversense-appen. Fel kod. Kommandot avbrutet. Inte konfigurerad Skapade ett profilbyte + Versionskontroll + gammal version + väldigt gammal version + Ny version tillgänglig sedan %1$d dagar! Systemet kommer att byta läge till \"stopp innan lågt\" efter 60 dagar och sluta loopa helt efter 90 dagar + Skala för insulinaktivitet [U/min] + 2 tim + %1$.2f enheter + Dexcoms app (modifierad) + DXCM + Ta emot BG-data från den modifierade Dexcom-appen. %1$d dag %1$d dagar diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index a70ff9fc9b..67499f3a2c 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -9,6 +9,7 @@ #c9bd60 #00d2d2 #FFFFFF + #d3f166 #FFFFFF00 #FFFF00FF #00FF00 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ed82ee915c..8e2ff34910 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1004,6 +1004,7 @@ Autobackfill missig BGs from NS ns_autobackfill SMB set by pump + Activity Sensitivity Deviations Carbs On Board @@ -1363,13 +1364,13 @@ second minute hour - day" - week" + day + week seconds minutes hours - days" - weeks" + days + weeks tidepool_username tidepool_password tidepool_dev_servers @@ -1429,6 +1430,8 @@ old version very old version New version for at least %1$d days available! Fallback to LGS after 60 days, loop will be disabled after 90 days + scale_insulin_activity + Graph scale insulin activity [U/min] 2h %1$.2fU diff --git a/app/src/main/res/xml/pref_overview.xml b/app/src/main/res/xml/pref_overview.xml index 0522108142..93e043c4bd 100644 --- a/app/src/main/res/xml/pref_overview.xml +++ b/app/src/main/res/xml/pref_overview.xml @@ -10,6 +10,18 @@ android:title="@string/keep_screen_on_title" android:summary="@string/keep_screen_on_summary"/> + +