From 77245c027e3a63d981dd02622c110e33ac98f51e Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 26 Jun 2018 10:45:56 +0200 Subject: [PATCH 1/4] prevent NPE --- .../Wear/wearintegration/WatchUpdaterService.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java index 696b8b0b57..b5d30ad071 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/Wear/wearintegration/WatchUpdaterService.java @@ -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; } } From 520f2e1518d88797d1a03a5811ee2a1df48a282e Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 26 Jun 2018 12:28:53 +0200 Subject: [PATCH 2/4] plugin descritpions to setup wizard --- .../androidaps/setupwizard/SWEventListener.java | 6 +++--- .../setupwizard/SetupWizardActivity.java | 2 +- .../androidaps/setupwizard/elements/SWBreak.java | 4 ++-- .../androidaps/setupwizard/elements/SWButton.java | 6 +++--- .../setupwizard/elements/SWCheckbox.java | 6 +++--- .../setupwizard/elements/SWEditString.java | 12 ++++++------ .../setupwizard/elements/SWEditUrl.java | 6 +++--- .../setupwizard/elements/SWFragment.java | 2 +- .../setupwizard/elements/SWHtmlLink.java | 4 ++-- .../setupwizard/elements/SWInfotext.java | 4 ++-- .../androidaps/setupwizard/elements/SWItem.java | 2 +- .../androidaps/setupwizard/elements/SWPlugin.java | 15 ++++++++++++--- .../setupwizard/elements/SWRadioButton.java | 6 +++--- 13 files changed, 42 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java index 40979a3efd..487a80d91c 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWEventListener.java @@ -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) diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java index 523970d6df..5102e36ac6 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SetupWizardActivity.java @@ -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); } diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWBreak.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWBreak.java index f513cccf4e..c6a9cf3f86 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWBreak.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWBreak.java @@ -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()); diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWButton.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWButton.java index 4f22720091..afa28c1803 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWButton.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWButton.java @@ -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 diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWCheckbox.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWCheckbox.java index 816fb79a97..ed96b37944 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWCheckbox.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWCheckbox.java @@ -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); diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditString.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditString.java index b464ae6316..d02f10acf0 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditString.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditString.java @@ -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 diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java index 6039577bff..04b02a5bc2 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWEditUrl.java @@ -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 diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java index 9e470fa687..a061f57eb6 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWFragment.java @@ -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(); } diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWHtmlLink.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWHtmlLink.java index 1ee27be6ae..fd4ffdd524 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWHtmlLink.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWHtmlLink.java @@ -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()); diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWInfotext.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWInfotext.java index f98fbee82f..91e5c2da2d 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWInfotext.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWInfotext.java @@ -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()); diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java index c82d4f5683..4f454b843d 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWItem.java @@ -78,7 +78,7 @@ public class SWItem { return layout; } - public void generateDialog(View view, LinearLayout layout) { + public void generateDialog(LinearLayout layout) { } public void processVisibility() { diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java index 06735ee72e..15c9befdc2 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java @@ -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; @@ -42,8 +44,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(); @@ -61,6 +64,12 @@ public class SWPlugin extends SWItem { rdbtn.setChecked(true); rdbtn.setTag(p); radioGroup.addView(rdbtn); + LinearLayout.LayoutParams 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 +83,6 @@ public class SWPlugin extends SWItem { MainApp.bus().post(new EventSWUpdate()); }); layout.addView(radioGroup); - super.generateDialog(view, layout); + super.generateDialog(layout); } } diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWRadioButton.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWRadioButton.java index e034e86ba8..80346c433c 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWRadioButton.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWRadioButton.java @@ -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) { From 4df3561b4baffa7a55a7264171bb2ddf45e38b2a Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 26 Jun 2018 12:53:43 +0200 Subject: [PATCH 3/4] setup wizard cleanup --- .../PumpDanaRKorean/DanaRKoreanPlugin.java | 3 +- .../plugins/PumpDanaRv2/DanaRv2Plugin.java | 2 + .../androidaps/setupwizard/SWDefinition.java | 45 +++++++------------ .../setupwizard/elements/SWPlugin.java | 13 +++++- app/src/main/res/values-ro/strings.xml | 2 - app/src/main/res/values/strings.xml | 8 ++-- 6 files changed, 34 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java index b7b100a3a6..4ae239cab9 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRKorean/DanaRKoreanPlugin.java @@ -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); diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java index b4004fecb3..5b529d1fa7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/PumpDanaRv2/DanaRv2Plugin.java @@ -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; diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java index 0e7ba0e623..ccca95440a 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java @@ -223,21 +223,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 +246,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 +269,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 +315,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 +352,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 +394,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() @@ -567,21 +559,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 +588,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() diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java index 15c9befdc2..80f60eb678 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/elements/SWPlugin.java @@ -26,6 +26,7 @@ public class SWPlugin extends SWItem { private PluginType pType; private RadioGroup radioGroup; + private int pluginDescription; private boolean makeVisible = true; @@ -33,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; } @@ -55,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); @@ -64,7 +73,7 @@ public class SWPlugin extends SWItem { rdbtn.setChecked(true); rdbtn.setTag(p); radioGroup.addView(rdbtn); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + 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()); diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index f50e2bb919..8cd757d949 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -614,7 +614,6 @@ Oref Fără-Vârf Oref Insulină-Rapidă Oref Insulină-UltraRapidă - Insulină personalizată DIA din %f prea scurtă - se folosește %f în schimb! Activează profil Data @@ -955,7 +954,6 @@ Citire stare Schimbările trebuie făcute în NS Ignoră asistentul pentru setări - Care este sursa de glicemii? Apăsați butonul pentru a permite AndroidAPS să sugereze/facă schimbări ale bazalei Apăsați butonul pentru a activa Obiectivele. După terminarea procesului de setare, alegeți fereastra Obiective pentru a face AndroidAPS complet funcțional. Activați Obiectivele diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cc3ea04674..c903f341a2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -25,7 +25,7 @@ Synchronizes your data with Nightscout State of the algorithm in 2016 State of the algorithm in 2017 - Most recent and most stable + Most recent algorithm for advanced users Displays the current state of your loop and buttons for most common actions Shows an ongoing notification with a short overview of what your loop is doing Define a profile which is offline available. @@ -33,13 +33,15 @@ Define a profile with only one time block. Pump integration for Accu-Chek Combo pumps, requires having ruffy installed Pump integration for DANA Diabecare R pumps + Pump integration for domestic DANA Diabecare R pumps + Pump integration for DANA Diabecare R pumps with upgraded firmware Pump integration for DANA Diabecare RS pumps Pump integration for Accu-Chek Insight pumps, requires having SightRemote installed Pump integration for people who do multiple daily injections for their diabetes therapy Pump integration for pumps which don\'t have any driver yet (Open Loop) 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. Sensitivity is calculated from 24h data in the past and carbs (if not absorbed) are cut after time specified in preferences. - 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. + 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. 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. Receive BG values from the patched Dexcom G5 app. Receive BG values from Glimp. @@ -717,7 +719,6 @@ Free-Peak Oref Rapid-Acting Oref Ultra-Rapid Oref - Custom insulin DIA of %f too short - using %f instead! Activate profile Date @@ -1117,7 +1118,6 @@ Read status Changes must be done in NS Skip setup wizard - Where should blood glucose(BG) data be coming from ?\n Press the button below to enable AndroidAPS to suggest/make basal changes Press the button below to enable Objectives. Look in the Objectives tab, after you finish this wizard, to make AndroidAPS completely functional.\n Enable Objectives From 2b799d9f71a4449327fc509cece90281a97af046 Mon Sep 17 00:00:00 2001 From: Milos Kozak Date: Tue, 26 Jun 2018 13:15:50 +0200 Subject: [PATCH 4/4] SW: ask for import after storage permission --- .../androidaps/setupwizard/SWDefinition.java | 34 +++++++++++-------- app/src/main/res/values-ro/strings.xml | 1 - app/src/main/res/values/strings.xml | 2 +- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java index ccca95440a..a8402dc1a5 100644 --- a/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java +++ b/app/src/main/java/info/nightscout/androidaps/setupwizard/SWDefinition.java @@ -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() @@ -446,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) @@ -505,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() diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 8cd757d949..2a80de2bbf 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -958,7 +958,6 @@ Apăsați butonul pentru a activa Obiectivele. După terminarea procesului de setare, alegeți fereastra Obiective pentru a face AndroidAPS complet funcțional. Activați Obiectivele Configurați plugin APS - Nu există configurații exportate, decin nu se poate face import de configurații. Configurați pluginul pentru Sensibilitate Pluginul Sensibilitate este folosit pentru estimarea sensibilității și calcularea COB. Pentru mai multe info vizitați: 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. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c903f341a2..b940b328a1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1122,7 +1122,6 @@ Press the button below to enable Objectives. Look in the Objectives tab, after you finish this wizard, to make AndroidAPS completely functional.\n Enable Objectives Configure APS plugin - Exported configuration is missing thus import configuration is not possible.\n startupwizard_processed Configure Sensitivity plugin Sensitivity plugin is used for sensitivity detection and COB calculation. For more info visit: @@ -1178,6 +1177,7 @@ 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. keep_screen_on Clean AndroidAPS started + Stored settings found %d day