diff --git a/.idea/misc.xml b/.idea/misc.xml index fbb68289f4..5d19981032 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/build.gradle b/app/build.gradle index 8cb1da059d..9a0cf4ba5b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -36,25 +36,16 @@ android { careportal { buildConfigField "boolean", "APS", "false" buildConfigField "boolean", "PUMPDRIVERS", "false" - buildConfigField "boolean", "OBJECTIVES", "false" buildConfigField "boolean", "CLOSEDLOOP", "false" } openloop { buildConfigField "boolean", "APS", "true" buildConfigField "boolean", "PUMPDRIVERS", "true" - buildConfigField "boolean", "OBJECTIVES", "false" buildConfigField "boolean", "CLOSEDLOOP", "false" } full { buildConfigField "boolean", "APS", "true" buildConfigField "boolean", "PUMPDRIVERS", "true" - buildConfigField "boolean", "OBJECTIVES", "true" - buildConfigField "boolean", "CLOSEDLOOP", "true" - } - full_noobjectives { - buildConfigField "boolean", "APS", "true" - buildConfigField "boolean", "PUMPDRIVERS", "true" - buildConfigField "boolean", "OBJECTIVES", "false" buildConfigField "boolean", "CLOSEDLOOP", "true" } } diff --git a/app/src/main/java/info/nightscout/androidaps/Config.java b/app/src/main/java/info/nightscout/androidaps/Config.java index d453d1af8f..90d4c56199 100644 --- a/app/src/main/java/info/nightscout/androidaps/Config.java +++ b/app/src/main/java/info/nightscout/androidaps/Config.java @@ -10,7 +10,6 @@ public class Config { public static final boolean LOWSUSPEDENABLED = APS; public static final boolean OPENAPSMAENABLED = APS; public static final boolean LOOPENABLED = APS; - public static final boolean OBJECTIVESENABLED = APS && BuildConfig.OBJECTIVES; public static final boolean CAREPORTALENABLED = true; public static final boolean SMSCOMMUNICATORENABLED = true; diff --git a/app/src/main/java/info/nightscout/androidaps/MainApp.java b/app/src/main/java/info/nightscout/androidaps/MainApp.java index f7d78758b4..fd18f01c19 100644 --- a/app/src/main/java/info/nightscout/androidaps/MainApp.java +++ b/app/src/main/java/info/nightscout/androidaps/MainApp.java @@ -75,7 +75,7 @@ public class MainApp extends Application { pluginsList.add(TreatmentsFragment.newInstance()); pluginsList.add(TempBasalsFragment.newInstance()); pluginsList.add(SafetyFragment.newInstance()); - if (Config.OBJECTIVESENABLED) pluginsList.add(ObjectivesFragment.newInstance()); + if (Config.APS) pluginsList.add(ObjectivesFragment.newInstance()); pluginsList.add(SourceXdripFragment.newInstance()); pluginsList.add(SourceNSClientFragment.newInstance()); if (Config.SMSCOMMUNICATORENABLED) pluginsList.add(SmsCommunicatorFragment.newInstance()); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java index 89b819ec46..e6bc68bfab 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/DanaR/DanaRFragment.java @@ -91,8 +91,6 @@ public class DanaRFragment extends Fragment implements PluginBase, PumpInterface Button viewProfileButton; Button historyButton; - // TODO: password in prefs - public static DanaRPump getDanaRPump() { return sDanaRPump; } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java index a663d4f3a0..3e05ccdaf0 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Objectives/ObjectivesFragment.java @@ -27,13 +27,11 @@ import java.util.Date; import java.util.List; import info.nightscout.androidaps.Config; -import info.nightscout.androidaps.MainActivity; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventNewBG; import info.nightscout.androidaps.interfaces.ConstraintsInterface; import info.nightscout.androidaps.interfaces.PluginBase; -import info.nightscout.androidaps.plugins.Loop.APSResult; import info.nightscout.androidaps.plugins.Loop.LoopFragment; public class ObjectivesFragment extends Fragment implements View.OnClickListener, PluginBase, ConstraintsInterface { @@ -41,7 +39,7 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener RecyclerView recyclerView; LinearLayoutManager llm; - CheckBox enableFake; // TODO: remove faking + CheckBox enableFake; boolean fragmentVisible = true; @@ -133,11 +131,11 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener switch (objNum) { case 0: return new RequirementResult(bgIsAvailableInNS && pumpStatusIsAvailableInNS, - getString(R.string.bgavailableinns) + ": " + yesOrNo(bgIsAvailableInNS) - + " " + getString(R.string.pumpstatusavailableinns) + ": " + yesOrNo(pumpStatusIsAvailableInNS)); + getString(R.string.objectives_bgavailableinns) + ": " + yesOrNo(bgIsAvailableInNS) + + " " + getString(R.string.objectives_pumpstatusavailableinns) + ": " + yesOrNo(pumpStatusIsAvailableInNS)); case 1: return new RequirementResult(manualEnacts >= manualEnactsNeeded, - getString(R.string.manualenacts) + ": " + manualEnacts + "/" + manualEnactsNeeded); + getString(R.string.objectives_manualenacts) + ": " + manualEnacts + "/" + manualEnactsNeeded); case 2: return new RequirementResult(true, ""); default: @@ -151,43 +149,43 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener private void initializeData() { objectives = new ArrayList<>(); objectives.add(new Objective(0, - "Setting up visualization and monitoring, and analyzing basals and ratios", - "Verify that BG is available in Nightscout, and pump insulin data is being uploaded", + MainApp.sResources.getString(R.string.objectives_0_objective), + MainApp.sResources.getString(R.string.objectives_0_gate), new Date(0, 0, 0), 1, // 1 day new Date(0, 0, 0))); objectives.add(new Objective(1, - "Starting on an open loop", - "Run in Open Loop mode for a few days, and manually enact lots of temp basals", + MainApp.sResources.getString(R.string.objectives_1_objective), + MainApp.sResources.getString(R.string.objectives_1_gate), new Date(0, 0, 0), 7, // 7 days new Date(0, 0, 0))); objectives.add(new Objective(2, - "Understanding your open loop, including its temp basal recommendations", - "Based on that experience, decide what max basal should be, and set it on the pump and preferences", + MainApp.sResources.getString(R.string.objectives_2_objective), + MainApp.sResources.getString(R.string.objectives_2_gate), new Date(0, 0, 0), 0, // 0 days new Date(0, 0, 0))); objectives.add(new Objective(3, - "Starting to close the loop with Low Glucose Suspend", - "Run in closed loop with max IOB = 0 for a few days without too many LGS events", + MainApp.sResources.getString(R.string.objectives_3_objective), + MainApp.sResources.getString(R.string.objectives_3_gate), new Date(0, 0, 0), 5, // 5 days new Date(0, 0, 0))); objectives.add(new Objective(4, - "Tuning the closed loop, raising max IOB above 0 and gradually lowering BG targets", - "Run for a few days, and at least one night with no low BG alarms, before dropping BG", + MainApp.sResources.getString(R.string.objectives_4_objective), + MainApp.sResources.getString(R.string.objectives_4_gate), new Date(0, 0, 0), 1, new Date(0, 0, 0))); objectives.add(new Objective(5, - "Adjust basals and ratios if needed, and then enable auto-sens", - "1 week successful daytime looping with regular carb entry", + MainApp.sResources.getString(R.string.objectives_5_objective), + MainApp.sResources.getString(R.string.objectives_5_gate), new Date(0, 0, 0), 7, new Date(0, 0, 0))); objectives.add(new Objective(6, - "Enabling additional features for daytime use, such as advanced meal assist", + MainApp.sResources.getString(R.string.objectives_6_objective), "", new Date(0, 0, 0), 1, @@ -205,7 +203,7 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener editor.putBoolean("Objectives" + "bgIsAvailableInNS", bgIsAvailableInNS); editor.putBoolean("Objectives" + "pumpStatusIsAvailableInNS", pumpStatusIsAvailableInNS); editor.putInt("Objectives" + "manualEnacts", manualEnacts); - editor.commit(); + editor.apply(); if (Config.logPrefsChange) log.debug("Objectives stored"); } @@ -246,7 +244,7 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener holder.position.setText(String.valueOf(position + 1)); holder.objective.setText(o.objective); holder.gate.setText(o.gate); - holder.duration.setText(context.getString(R.string.minimalduration) + " " + o.durationInDays + " " + context.getString(R.string.days)); + holder.duration.setText(context.getString(R.string.objectives_minimalduration) + " " + o.durationInDays + " " + context.getString(R.string.days)); holder.progress.setText(requirementsMet.comment); holder.started.setText(o.started.toLocaleString()); holder.accomplished.setText(o.accomplished.toLocaleString()); @@ -360,8 +358,7 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener } public static ObjectivesFragment newInstance() { - ObjectivesFragment fragment = new ObjectivesFragment(); - return fragment; + return new ObjectivesFragment(); } @Override @@ -384,6 +381,21 @@ public class ObjectivesFragment extends Fragment implements View.OnClickListener updateGUI(); } }); + + // Add correct translations to array after app is initialized + objectives.get(0).objective = MainApp.sResources.getString(R.string.objectives_0_objective); + objectives.get(1).objective = MainApp.sResources.getString(R.string.objectives_1_objective); + objectives.get(2).objective = MainApp.sResources.getString(R.string.objectives_2_objective); + objectives.get(3).objective = MainApp.sResources.getString(R.string.objectives_3_objective); + objectives.get(4).objective = MainApp.sResources.getString(R.string.objectives_4_objective); + objectives.get(5).objective = MainApp.sResources.getString(R.string.objectives_5_objective); + objectives.get(6).objective = MainApp.sResources.getString(R.string.objectives_6_objective); + objectives.get(0).gate = MainApp.sResources.getString(R.string.objectives_0_gate); + objectives.get(1).gate = MainApp.sResources.getString(R.string.objectives_1_gate); + objectives.get(2).gate = MainApp.sResources.getString(R.string.objectives_2_gate); + objectives.get(3).gate = MainApp.sResources.getString(R.string.objectives_3_gate); + objectives.get(4).gate = MainApp.sResources.getString(R.string.objectives_4_gate); + objectives.get(5).gate = MainApp.sResources.getString(R.string.objectives_5_gate); updateGUI(); return view; diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java index feb78b1589..663196bced 100644 --- a/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java +++ b/app/src/main/java/info/nightscout/androidaps/receivers/KeepAliveReceiver.java @@ -44,7 +44,7 @@ public class KeepAliveReceiver extends BroadcastReceiver { Thread t = new Thread(new Runnable() { @Override public void run() { - danaRFragment.doConnect("KeepAlive"); // TODO: only if if last conn > 30 min + danaRFragment.doConnect("KeepAlive"); } }); t.start(); diff --git a/app/src/main/res/layout/objectives_fragment.xml b/app/src/main/res/layout/objectives_fragment.xml index c28805aac8..0af18aa142 100644 --- a/app/src/main/res/layout/objectives_fragment.xml +++ b/app/src/main/res/layout/objectives_fragment.xml @@ -13,7 +13,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Enable fake time and progress" - android:id="@+id/objectives_fake" /> + android:id="@+id/objectives_fake" + android:visibility="gone" /> APS режим Ср. изменение Базал - КЗ достъпна в NS + КЗ достъпна в NS Болус Приложено ограничение на болус Откажи @@ -74,9 +74,9 @@ Loop отказан от ограниченията Low Suspend Граница за ниска КЗ - Manual enacts + Manual enacts Low projected - Минимална продължителност + Минимална продължителност Архивиране Изход Опции @@ -124,7 +124,7 @@ % (100% = current) Болус NS профил - Статус на помпа в NS + Статус на помпа в NS Стойност Основание Искате ли да обновите treatments от Nightscout @@ -220,7 +220,7 @@ End User License Agreement MUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +XXXXXXXXXX;+YYYYYYYYYY - Болус %.2fU беше доставен успешно + Болус %.2fU беше доставен успешно Болусът не е доставен Откажи временен базал Последно свързване: @@ -229,7 +229,7 @@ Позволени телефонни номера Разреши болус чрез SMS Успех - За да доставите болус %.2fU отговорете с код %s + За да доставите болус %.2fU отговорете с код %s Отдалечен болус не е разрешен Обнови профила Процент diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index dde2b6e86a..a04e3843f0 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -6,7 +6,7 @@ Typ smyčky Prům. změna Bazál - Glykémie dostupná v NS + Glykémie dostupná v NS Bolus Aplikováno omezení bolusu Zrušit @@ -74,10 +74,10 @@ SMYČKA ZAKÁZÁNA OMEZENÍM Low Suspend Hodnota nízké glykémie - Ručně spuštěno + Ručně spuštěno Předpokládaná nízká glykémie m zpět - Minimální trvání + Minimální trvání Záloha Ukončit Nastavení @@ -125,7 +125,7 @@ % (100% = současný) Bolus NS profil - Stav pumpy dostupný v NS + Stav pumpy dostupný v NS Hodnota Zdůvodnění Opravdu aktualizovat ošetření z NS @@ -277,7 +277,7 @@ Nahrávám Pumpa je zaneprázdněna Špatné heslo k pumpě - + MM 640g Heslo k pumpě (pouze verze 2016) Okluze Podáno @@ -286,4 +286,17 @@ STISKNUTO STOP Čekání na pumpu Podávání %.2fU inzulínu + Zkontrolovat, zda jsou glykémie a údaje z pumpy viditelné v Nightscoutu + Nastavit vizualizaci a monitoring, analyzovat bazály a koeficienty + Provozovat několik dní otevřenou smyčku a ručně potrvrzovat doporučené dočasné bazály + Začít s otevřenou smyčkou + Na základě předchozích zkušeností rozhodnout, jaký je třeba maximální bazál a nastavit ho v pumpě a v aplikaci + Porozumět otevřené smyčce a doporučeným dočasným bazálům + Spustit uzavřenou smyčku s max IOB = 0 na několik dní s minimem nutných korekcí na nízkou glykémii + Začít uzavřenou smyčku pouze s hlídáním nizké glykémie + Provozovat smyčku několik dní s alespoň jednou nocí bez alarmů na nízkou glykémii + Zapnout uzavřenou smyčku, zvyšovat max IOB nad 0 a snižovat cílovou glykémii + Jeden týden úspěšného používání s běžným příjmem sacharidů + Upravit bazály a koeficinty, když bude potřeba a povolit automatickou detekci citlivosti na inzulín + Povolit další fukce pro běžné používání jako AMA \ No newline at end of file diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e99b9645da..39b91736c7 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -2,7 +2,7 @@ AndroidAPS APS Modus - BZ verfügbar in NS + BZ verfügbar in NS Abbrechen Kohlehydrate Careportal @@ -121,7 +121,7 @@ Akzeptiere neue temp Basalrate: Benutze extended Bolus für hohe temps (\>200%)> Möchtest du die Treatments von Nightscout abrufen - Pumpen Status verfügbar in NS + Pumpen Status verfügbar in NS % (100% = current) Basal Wert Extended Bolus @@ -179,10 +179,10 @@ LOW: Temp basal 0% Low projected LOW PROJECTED: Temp basal 0% - Manual enacts + Manual enacts Carbs constraint applied Reset Datenbanken - Minimale Dauer + Minimale Dauer min ago Erneure treatments von NS Exit diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ef607d4123..403dfef6fd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -101,7 +101,7 @@ APS General days - Minimal duration + Minimal duration Constraints Loop @@ -142,9 +142,9 @@ New suggestion available Unsupported version of NSClient NSClient not installed. Record lost! - BG available in NS - Pump status available in NS - Manual enacts + BG available in NS + Pump status available in NS + Manual enacts LOOP DISABLED BY CONSTRAINTS Czech English @@ -295,5 +295,18 @@ STOP PRESSED Waiting for pump Going to deliver %.2fU + Setting up visualization and monitoring, and analyzing basals and ratios + Verify that BG is available in Nightscout, and pump insulin data is being uploaded + Starting on an open loop + Run in Open Loop mode for a few days, and manually enact lots of temp basals + Understanding your open loop, including its temp basal recommendations + Based on that experience, decide what max basal should be, and set it on the pump and preferences + Starting to close the loop with Low Glucose Suspend + Run in closed loop with max IOB = 0 for a few days without too many LGS events + Tuning the closed loop, raising max IOB above 0 and gradually lowering BG targets + Run for a few days, and at least one night with no low BG alarms, before dropping BG + Adjust basals and ratios if needed, and then enable auto-sens + 1 week successful daytime looping with regular carb entry + Enabling additional features for daytime use, such as advanced meal assist