This commit is contained in:
Milos Kozak 2018-06-27 20:13:37 +02:00
commit a99b478eea
19 changed files with 103 additions and 93 deletions

View file

@ -45,7 +45,8 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
}
public DanaRKoreanPlugin() {
super();
pluginDescription.description(R.string.description_pump_dana_r_korean);
log = LoggerFactory.getLogger(DanaRKoreanPlugin.class);
useExtendedBoluses = SP.getBoolean("danar_useextended", false);

View file

@ -44,6 +44,8 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
}
private DanaRv2Plugin() {
pluginDescription.description(R.string.description_pump_dana_r_v2);
log = LoggerFactory.getLogger(DanaRv2Plugin.class);
useExtendedBoluses = false;

View file

@ -738,11 +738,14 @@ public class WatchUpdaterService extends WearableListenerService implements
public static int getBatteryLevel(Context context) {
Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
if (level == -1 || scale == -1) {
return 50;
if (batteryIntent != null) {
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
if (level == -1 || scale == -1) {
return 50;
}
return (int) (((float) level / (float) scale) * 100.0f);
}
return (int) (((float) level / (float) scale) * 100.0f);
return 50;
}
}

View file

@ -98,14 +98,7 @@ public class SWDefinition {
add(new SWScreen(R.string.nav_setupwizard)
.add(new SWInfotext()
.label(R.string.welcometosetupwizard))
.add(new SWButton()
.text(R.string.nav_import)
.action(() -> ImportExportPrefs.importSharedPreferences(getActivity()))
.visibility(ImportExportPrefs.file::exists))
.add(new SWInfotext()
.label(R.string.backupismissing)
.visibility(() -> !ImportExportPrefs.file.exists()))
)
)
.add(new SWScreen(R.string.language)
.skippable(false)
.add(new SWRadioButton()
@ -169,6 +162,15 @@ public class SWDefinition {
.visibility(() -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
.validator(() -> !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)))
)
.add(new SWScreen(R.string.nav_import)
.add(new SWInfotext()
.label(R.string.storedsettingsfound))
.add(new SWBreak())
.add(new SWButton()
.text(R.string.nav_import)
.action(() -> ImportExportPrefs.importSharedPreferences(getActivity())))
.visibility(() -> ImportExportPrefs.file.exists() && !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)))
)
.add(new SWScreen(R.string.nsclientinternal_title)
.skippable(true)
.add(new SWInfotext()
@ -223,21 +225,14 @@ public class SWDefinition {
)
.add(new SWScreen(R.string.configbuilder_insulin)
.skippable(false)
.add(new SWInfotext()
.label(MainApp.gs(R.string.rapid_acting_oref) + ": " + MainApp.gs(R.string.fastactinginsulincomment)))
.add(new SWInfotext()
.label(MainApp.gs(R.string.ultrarapid_oref) + ": " + MainApp.gs(R.string.ultrafastactinginsulincomment)))
.add(new SWInfotext()
.label(MainApp.gs(R.string.free_peak_oref) + ": " + MainApp.gs(R.string.free_peak_oref_description)))
.add(new SWPlugin()
.option(PluginType.INSULIN, R.string.configbuilder_insulin_description)
.makeVisible(false)
.label(R.string.configbuilder_insulin))
.add(new SWBreak())
.add(new SWInfotext()
.label(R.string.diawarning))
.add(new SWBreak())
.add(new SWPlugin()
.option(PluginType.INSULIN)
.makeVisible(false)
.label(R.string.configbuilder_insulin))
.add(new SWBreak())
.add(new SWButton()
.text(R.string.insulinsourcesetup)
.action(() -> {
@ -253,10 +248,8 @@ public class SWDefinition {
)
.add(new SWScreen(R.string.configbuilder_bgsource)
.skippable(false)
.add(new SWInfotext()
.label(R.string.setupwizard_bgsource_description))
.add(new SWPlugin()
.option(PluginType.BGSOURCE)
.option(PluginType.BGSOURCE, R.string.configbuilder_bgsource_description)
.label(R.string.configbuilder_bgsource))
.add(new SWBreak())
.add(new SWButton()
@ -278,7 +271,7 @@ public class SWDefinition {
.label(R.string.setupwizard_profile_description))
.add(new SWBreak())
.add(new SWPlugin()
.option(PluginType.PROFILE)
.option(PluginType.PROFILE, R.string.configbuilder_profile_description)
.label(R.string.configbuilder_profile))
.validator(() -> MainApp.getConfigBuilder().getActiveProfileInterface() != null)
)
@ -324,8 +317,9 @@ public class SWDefinition {
.add(new SWScreen(R.string.configbuilder_pump)
.skippable(false)
.add(new SWPlugin()
.option(PluginType.PUMP)
.option(PluginType.PUMP, R.string.configbuilder_pump_description)
.label(R.string.configbuilder_pump))
.add(new SWBreak())
.add(new SWButton()
.text(R.string.pumpsetup)
.action(() -> {
@ -360,7 +354,7 @@ public class SWDefinition {
.label("https://openaps.readthedocs.io/en/latest/"))
.add(new SWBreak())
.add(new SWPlugin()
.option(PluginType.APS)
.option(PluginType.APS, R.string.configbuilder_aps_description)
.label(R.string.configbuilder_aps))
.add(new SWButton()
.text(R.string.apssetup)
@ -402,7 +396,7 @@ public class SWDefinition {
.label(R.string.setupwizard_sensitivity_url))
.add(new SWBreak())
.add(new SWPlugin()
.option(PluginType.SENSITIVITY)
.option(PluginType.SENSITIVITY, R.string.configbuilder_sensitivity_description)
.label(R.string.configbuilder_sensitivity))
.add(new SWBreak())
.add(new SWButton()
@ -454,13 +448,6 @@ public class SWDefinition {
add(new SWScreen(R.string.nav_setupwizard)
.add(new SWInfotext()
.label(R.string.welcometosetupwizard))
.add(new SWButton()
.text(R.string.nav_import)
.action(() -> ImportExportPrefs.importSharedPreferences(getActivity()))
.visibility(ImportExportPrefs.file::exists))
.add(new SWInfotext()
.label(R.string.backupismissing)
.visibility(() -> !ImportExportPrefs.file.exists()))
)
.add(new SWScreen(R.string.language)
.skippable(false)
@ -513,6 +500,15 @@ public class SWDefinition {
.visibility(() -> Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE))
.validator(() -> !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)))
)
.add(new SWScreen(R.string.nav_import)
.add(new SWInfotext()
.label(R.string.storedsettingsfound))
.add(new SWBreak())
.add(new SWButton()
.text(R.string.nav_import)
.action(() -> ImportExportPrefs.importSharedPreferences(getActivity())))
.visibility(() -> ImportExportPrefs.file.exists() && !(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !AndroidPermission.checkForPermission(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)))
)
.add(new SWScreen(R.string.nsclientinternal_title)
.skippable(true)
.add(new SWInfotext()
@ -567,21 +563,14 @@ public class SWDefinition {
)
.add(new SWScreen(R.string.configbuilder_insulin)
.skippable(false)
.add(new SWInfotext()
.label(MainApp.gs(R.string.rapid_acting_oref) + ": " + MainApp.gs(R.string.fastactinginsulincomment)))
.add(new SWInfotext()
.label(MainApp.gs(R.string.ultrarapid_oref) + ": " + MainApp.gs(R.string.ultrafastactinginsulincomment)))
.add(new SWInfotext()
.label(MainApp.gs(R.string.free_peak_oref) + ": " + MainApp.gs(R.string.free_peak_oref_description)))
.add(new SWPlugin()
.option(PluginType.INSULIN, R.string.configbuilder_insulin_description)
.makeVisible(false)
.label(R.string.configbuilder_insulin))
.add(new SWBreak())
.add(new SWInfotext()
.label(R.string.diawarning))
.add(new SWBreak())
.add(new SWPlugin()
.option(PluginType.INSULIN)
.makeVisible(false)
.label(R.string.configbuilder_insulin))
.add(new SWBreak())
.add(new SWButton()
.text(R.string.insulinsourcesetup)
.action(() -> {
@ -603,7 +592,7 @@ public class SWDefinition {
.label(R.string.setupwizard_sensitivity_url))
.add(new SWBreak())
.add(new SWPlugin()
.option(PluginType.SENSITIVITY)
.option(PluginType.SENSITIVITY, R.string.configbuilder_sensitivity_description)
.label(R.string.configbuilder_sensitivity))
.add(new SWBreak())
.add(new SWButton()

View file

@ -46,11 +46,11 @@ public class SWEventListener extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
textView = new TextView(context);
textView.setId(view.generateViewId());
textView.setId(layout.generateViewId());
textView.setText((textLabel != 0 ? MainApp.gs(textLabel) : "") + " " + status);
layout.addView(textView);
if (listener != null)

View file

@ -129,7 +129,7 @@ public class SetupWizardActivity extends AppCompatActivity {
LinearLayout layout = SWItem.generateLayout(this.findViewById(R.id.sw_content_fields));
for (int i = 0; i < currentScreen.items.size(); i++) {
SWItem currentItem = currentScreen.items.get(i);
currentItem.generateDialog(this.findViewById(R.id.sw_content_fields), layout);
currentItem.generateDialog(layout);
}
scrollView.smoothScrollTo(0,0);
}

View file

@ -27,8 +27,8 @@ public class SWBreak extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
l = new TextView(context);
l.setId(View.generateViewId());

View file

@ -39,8 +39,8 @@ public class SWButton extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
button = new Button(context);
button.setText(buttonText);
@ -50,7 +50,7 @@ public class SWButton extends SWItem {
});
processVisibility();
layout.addView(button);
super.generateDialog(view, layout);
super.generateDialog(layout);
}
@Override

View file

@ -40,8 +40,8 @@ public class SWCheckbox extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
// Get if there is already value in SP
Boolean previousValue;
previousValue = SP.getBoolean(preferenceId, false);
@ -68,7 +68,7 @@ public class SWCheckbox extends SWItem {
}
});
layout.addView(checkBox);
super.generateDialog(view, layout);
super.generateDialog(layout);
}
public void save(boolean value){
SP.putBoolean(preferenceID, value);

View file

@ -27,28 +27,28 @@ public class SWEditString extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
TextView l = new TextView(context);
l.setId(view.generateViewId());
l.setId(layout.generateViewId());
l.setText(label);
l.setTypeface(l.getTypeface(), Typeface.BOLD);
layout.addView(l);
TextView c = new TextView(context);
c.setId(view.generateViewId());
c.setId(layout.generateViewId());
c.setText(comment);
c.setTypeface(c.getTypeface(), Typeface.ITALIC);
layout.addView(c);
EditText editText = new EditText(context);
editText.setId(view.generateViewId());
editText.setId(layout.generateViewId());
editText.setInputType(InputType.TYPE_CLASS_TEXT);
editText.setMaxLines(1);
editText.setText(SP.getString(preferenceId, ""));
layout.addView(editText);
super.generateDialog(view, layout);
super.generateDialog(layout);
editText.addTextChangedListener(new TextWatcher() {
@Override

View file

@ -27,8 +27,8 @@ public class SWEditUrl extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
TextView l = new TextView(context);
l.setId(View.generateViewId());
@ -48,7 +48,7 @@ public class SWEditUrl extends SWItem {
editText.setMaxLines(1);
editText.setText(SP.getString(preferenceId, ""));
layout.addView(editText);
super.generateDialog(view, layout);
super.generateDialog(layout);
editText.addTextChangedListener(new TextWatcher() {
@Override

View file

@ -27,7 +27,7 @@ public class SWFragment extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
public void generateDialog(LinearLayout layout) {
definition.getActivity().getSupportFragmentManager().beginTransaction().add(layout.getId(), fragment, fragment.getTag()).commit();
}

View file

@ -39,8 +39,8 @@ public class SWHtmlLink extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
l = new TextView(context);
l.setId(View.generateViewId());

View file

@ -38,8 +38,8 @@ public class SWInfotext extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
l = new TextView(context);
l.setId(View.generateViewId());

View file

@ -78,7 +78,7 @@ public class SWItem {
return layout;
}
public void generateDialog(View view, LinearLayout layout) {
public void generateDialog(LinearLayout layout) {
}
public void processVisibility() {

View file

@ -2,9 +2,11 @@ package info.nightscout.androidaps.setupwizard.elements;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -24,6 +26,7 @@ public class SWPlugin extends SWItem {
private PluginType pType;
private RadioGroup radioGroup;
private int pluginDescription;
private boolean makeVisible = true;
@ -31,8 +34,9 @@ public class SWPlugin extends SWItem {
super(Type.PLUGIN);
}
public SWPlugin option(PluginType pType) {
public SWPlugin option(PluginType pType, int pluginDescription) {
this.pType = pType;
this.pluginDescription = pluginDescription;
return this;
}
@ -42,8 +46,9 @@ public class SWPlugin extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
radioGroup = new RadioGroup(context);
radioGroup.clearCheck();
@ -52,6 +57,13 @@ public class SWPlugin extends SWItem {
radioGroup.setOrientation(LinearLayout.VERTICAL);
radioGroup.setVisibility(View.VISIBLE);
TextView pdesc = new TextView(context);
pdesc.setText(pluginDescription);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, 40);
pdesc.setLayoutParams(params);
layout.addView(pdesc);
for (int i = 0; i < pluginsInCategory.size(); i++) {
RadioButton rdbtn = new RadioButton(context);
PluginBase p = pluginsInCategory.get(i);
@ -61,6 +73,12 @@ public class SWPlugin extends SWItem {
rdbtn.setChecked(true);
rdbtn.setTag(p);
radioGroup.addView(rdbtn);
params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(80, 0, 0, 0);
TextView desc = new TextView(context);
desc.setText(p.getDescription());
desc.setLayoutParams(params);
radioGroup.addView(desc);
}
radioGroup.setOnCheckedChangeListener((group, checkedId) -> {
@ -74,6 +92,6 @@ public class SWPlugin extends SWItem {
MainApp.bus().post(new EventSWUpdate());
});
layout.addView(radioGroup);
super.generateDialog(view, layout);
super.generateDialog(layout);
}
}

View file

@ -38,8 +38,8 @@ public class SWRadioButton extends SWItem {
}
@Override
public void generateDialog(View view, LinearLayout layout) {
Context context = view.getContext();
public void generateDialog(LinearLayout layout) {
Context context = layout.getContext();
// Get if there is already value in SP
String previousValue = SP.getString(preferenceId, "none");
radioGroup = new RadioGroup(context);
@ -62,7 +62,7 @@ public class SWRadioButton extends SWItem {
save(values()[i]);
});
layout.addView(radioGroup);
super.generateDialog(view, layout);
super.generateDialog(layout);
}
public SWRadioButton preferenceId(int preferenceId) {

View file

@ -614,7 +614,6 @@
<string name="free_peak_oref">Oref Fără-Vârf</string>
<string name="rapid_acting_oref">Oref Insulină-Rapidă</string>
<string name="ultrarapid_oref">Oref Insulină-UltraRapidă</string>
<string name="free_peak_oref_description">Insulină personalizată</string>
<string name="dia_too_short" formatted="false">DIA din %f prea scurtă - se folosește %f în schimb!</string>
<string name="activate_profile">Activează profil</string>
<string name="date">Data</string>
@ -955,12 +954,10 @@
<string name="readstatus">Citire stare</string>
<string name="adjustprofileinns">Schimbările trebuie făcute în NS</string>
<string name="exitwizard">Ignoră asistentul pentru setări</string>
<string name="setupwizard_bgsource_description">Care este sursa de glicemii?</string>
<string name="setupwizard_loop_description">Apăsați butonul pentru a permite AndroidAPS să sugereze/facă schimbări ale bazalei</string>
<string name="setupwizard_objectives_description">Apăsați butonul pentru a activa Obiectivele. După terminarea procesului de setare, alegeți fereastra Obiective pentru a face AndroidAPS complet funcțional.</string>
<string name="enableobjectives">Activați Obiectivele</string>
<string name="apssetup">Configurați plugin APS</string>
<string name="backupismissing">Nu există configurații exportate, decin nu se poate face import de configurații.</string>
<string name="sensitivitysetup">Configurați pluginul pentru Sensibilitate</string>
<string name="setupwizard_sensitivity_description">Pluginul Sensibilitate este folosit pentru estimarea sensibilității și calcularea COB. Pentru mai multe info vizitați:</string>
<string name="nsclientinfotext">NSClient răspunde de conexiunea cu Nightscout. Puteți ignora această secțiune, dar nu veți putea completa obiectivele până nu îl configurați.</string>

View file

@ -25,7 +25,7 @@
<string name="description_ns_client">Synchronizes your data with Nightscout</string>
<string name="description_ma">State of the algorithm in 2016</string>
<string name="description_ama">State of the algorithm in 2017</string>
<string name="description_smb">Most recent and most stable</string>
<string name="description_smb">Most recent algorithm for advanced users</string>
<string name="description_overview">Displays the current state of your loop and buttons for most common actions</string>
<string name="description_persistent_notification">Shows an ongoing notification with a short overview of what your loop is doing</string>
<string name="description_profile_local">Define a profile which is offline available.</string>
@ -33,13 +33,15 @@
<string name="description_profile_simple">Define a profile with only one time block.</string>
<string name="description_pump_combo">Pump integration for Accu-Chek Combo pumps, requires having ruffy installed</string>
<string name="description_pump_dana_r">Pump integration for DANA Diabecare R pumps</string>
<string name="description_pump_dana_r_korean">Pump integration for domestic DANA Diabecare R pumps</string>
<string name="description_pump_dana_r_v2">Pump integration for DANA Diabecare R pumps with upgraded firmware</string>
<string name="description_pump_dana_rs">Pump integration for DANA Diabecare RS pumps</string>
<string name="description_pump_insight">Pump integration for Accu-Chek Insight pumps, requires having SightRemote installed</string>
<string name="description_pump_mdi">Pump integration for people who do multiple daily injections for their diabetes therapy</string>
<string name="description_pump_virtual">Pump integration for pumps which don\'t have any driver yet (Open Loop)</string>
<string name="description_sensitivity_aaps">Sensitivity is calculated the same way like Oref0, but you can specify timeframe to the past. Minimal carb absorption is calculated from max carb absorption time from preferences.</string>
<string name="description_sensitivity_oref0">Sensitivity is calculated from 24h data in the past and carbs (if not absorbed) are cut after time specified in preferences.</string>
<string name="description_sensitivity_oref1">Sensitivity is calculated from 24h data in the past and carbs (if not absorbed) are cut after time specified in preferences. Plugin also calculates UAM.</string>
<string name="description_sensitivity_oref1">Sensitivity is calculated from 8h data in the past and carbs (if not absorbed) are cut after time specified in preferences. Plugin also calculates UAM.</string>
<string name="description_sensitivity_weighted_average">Sensitivity is calculated as a weighted average from deviations. Newer deviations have higher weight. Minimal carb absorption is calculated from max carb absorption time from preferences. This algorithm is the fastest in following sensitivity changes.</string>
<string name="description_source_dexcom_g5">Receive BG values from the patched Dexcom G5 app.</string>
<string name="description_source_glimp">Receive BG values from Glimp.</string>
@ -717,7 +719,6 @@
<string name="free_peak_oref">Free-Peak Oref</string>
<string name="rapid_acting_oref">Rapid-Acting Oref</string>
<string name="ultrarapid_oref">Ultra-Rapid Oref</string>
<string name="free_peak_oref_description">Custom insulin</string>
<string name="dia_too_short" formatted="false">DIA of %f too short - using %f instead!</string>
<string name="activate_profile">Activate profile</string>
<string name="date">Date</string>
@ -1117,12 +1118,10 @@
<string name="readstatus">Read status</string>
<string name="adjustprofileinns">Changes must be done in NS</string>
<string name="exitwizard">Skip setup wizard</string>
<string name="setupwizard_bgsource_description">Where should blood glucose(BG) data be coming from ?\n</string>
<string name="setupwizard_loop_description">Press the button below to enable AndroidAPS to suggest/make basal changes</string>
<string name="setupwizard_objectives_description">Press the button below to enable Objectives. Look in the Objectives tab, after you finish this wizard, to make AndroidAPS completely functional.\n</string>
<string name="enableobjectives">Enable Objectives</string>
<string name="apssetup">Configure APS plugin</string>
<string name="backupismissing">Exported configuration is missing thus import configuration is not possible.\n</string>
<string name="key_setupwizard_processed" translatable="false">startupwizard_processed</string>
<string name="sensitivitysetup">Configure Sensitivity plugin</string>
<string name="setupwizard_sensitivity_description">Sensitivity plugin is used for sensitivity detection and COB calculation. For more info visit:</string>
@ -1178,6 +1177,7 @@
<string name="largetimediff">Large time difference:\nTime in pump is off by more than 1.5 hours.\nPlease adjust the time manually on the pump and make sure that reading the history from the pump does not cause unexpected behaviour.\nIf possible, remove the history from the pump before changing the time or disable the closed loop for one DIA after the last wrong history entry but minimum one DIA from now.</string>
<string name="key_keep_screen_on" translatable="false">keep_screen_on</string>
<string name="careportal_removestartedevents">Clean AndroidAPS started</string>
<string name="storedsettingsfound">Stored settings found</string>
<plurals name="objective_days">
<item quantity="one">%d day</item>