diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java index 1424013440..458351cd62 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesFragment.java @@ -67,24 +67,20 @@ public class ObjectivesFragment extends SubscriberFragment { holder.startButton.setTag(o); holder.verifyButton.setTag(o); - holder.startButton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - ObjectivesPlugin.Objective o = (ObjectivesPlugin.Objective) v.getTag(); - o.started = new Date(); + holder.startButton.setOnClickListener(v -> { + ObjectivesPlugin.Objective o1 = (ObjectivesPlugin.Objective) v.getTag(); + o1.started = new Date(); + updateGUI(); + ObjectivesPlugin.saveProgress(); + }); + holder.verifyButton.setOnClickListener(v -> { + ObjectivesPlugin.Objective o12 = (ObjectivesPlugin.Objective) v.getTag(); + if (ObjectivesPlugin.getPlugin().requirementsMet(o12.num).done || enableFake.isChecked()) { + o12.accomplished = new Date(); updateGUI(); ObjectivesPlugin.saveProgress(); } }); - holder.verifyButton.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - ObjectivesPlugin.Objective o = (ObjectivesPlugin.Objective) v.getTag(); - if (ObjectivesPlugin.getPlugin().requirementsMet(o.num).done || enableFake.isChecked()) { - o.accomplished = new Date(); - updateGUI(); - ObjectivesPlugin.saveProgress(); - } - } - }); long prevObjectiveAccomplishedTime = position > 0 ? objectives.get(position - 1).accomplished.getTime() : -1; diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java index 5a899bebe5..293029b80f 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/ObjectivesPlugin.java @@ -22,6 +22,7 @@ import info.nightscout.androidaps.interfaces.PluginDescription; import info.nightscout.androidaps.interfaces.PluginType; import info.nightscout.androidaps.interfaces.PumpInterface; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.ConstraintsObjectives.events.EventObjectivesSaved; import info.nightscout.androidaps.plugins.ConstraintsSafety.SafetyPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.NSClientInternal.NSClientPlugin; @@ -87,7 +88,7 @@ public class ObjectivesPlugin extends PluginBase implements ConstraintsInterface this.started = started; } - boolean isStarted() { + public boolean isStarted() { return started.getTime() > 0; } @@ -233,6 +234,7 @@ public class ObjectivesPlugin extends PluginBase implements ConstraintsInterface editor.apply(); if (Config.logPrefsChange) log.debug("Objectives stored"); + MainApp.bus().post(new EventObjectivesSaved()); } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/events/EventObjectivesSaved.java b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/events/EventObjectivesSaved.java new file mode 100644 index 0000000000..1822368cf9 --- /dev/null +++ b/app/src/main/java/info/nightscout/androidaps/plugins/ConstraintsObjectives/events/EventObjectivesSaved.java @@ -0,0 +1,6 @@ +package info.nightscout.androidaps.plugins.ConstraintsObjectives.events; + +import info.nightscout.androidaps.events.Event; + +public class EventObjectivesSaved extends Event { +} diff --git a/app/src/main/java/info/nightscout/androidaps/startupwizard/SWDefinition.java b/app/src/main/java/info/nightscout/androidaps/startupwizard/SWDefinition.java index 76cb43d12a..ef566d94a1 100644 --- a/app/src/main/java/info/nightscout/androidaps/startupwizard/SWDefinition.java +++ b/app/src/main/java/info/nightscout/androidaps/startupwizard/SWDefinition.java @@ -8,6 +8,7 @@ import com.squareup.otto.Subscribe; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.File; import java.util.ArrayList; import java.util.List; @@ -23,6 +24,7 @@ import info.nightscout.androidaps.plugins.Careportal.Dialogs.NewNSTreatmentDialo import info.nightscout.androidaps.plugins.Careportal.OptionsToShow; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderFragment; import info.nightscout.androidaps.plugins.ConfigBuilder.ConfigBuilderPlugin; +import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesFragment; import info.nightscout.androidaps.plugins.ConstraintsObjectives.ObjectivesPlugin; import info.nightscout.androidaps.plugins.Loop.LoopPlugin; import info.nightscout.androidaps.plugins.NSClientInternal.NSClientPlugin; @@ -34,6 +36,7 @@ import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfileFragment; import info.nightscout.androidaps.plugins.ProfileSimple.SimpleProfilePlugin; import info.nightscout.androidaps.startupwizard.events.EventSWLabel; import info.nightscout.androidaps.startupwizard.events.EventSWUpdate; +import info.nightscout.utils.ImportExportPrefs; import info.nightscout.utils.LocaleHelper; import info.nightscout.utils.PasswordProtection; import info.nightscout.utils.SP; @@ -66,7 +69,14 @@ public class SWDefinition { // List all the screens here add(new SWScreen(R.string.nav_setupwizard) .add(new SWInfotext() - .label(R.string.welcometosetupwizard) ) + .label(R.string.welcometosetupwizard)) + .add(new SWButton() + .text(R.string.nav_import) + .action(() -> ImportExportPrefs.importSharedPreferences(getActivity())) + .visibility(ImportExportPrefs.file::exists)) + .add(new SWButton() + .text(R.string.exitwizard) + .action(() -> getActivity().finish())) ) .add(new SWScreen(R.string.language) .skippable(false) @@ -215,6 +225,17 @@ public class SWDefinition { .add(new SWPlugin() .option(PluginType.APS) .label(R.string.configbuilder_aps)) + .add(new SWButton() + .text(R.string.apssetup) + .action(() -> { + final PluginBase plugin = (PluginBase) MainApp.getConfigBuilder().getActiveAPS(); + PasswordProtection.QueryPassword(activity, R.string.settings_password, "settings_password", () -> { + Intent i = new Intent(activity, PreferencesActivity.class); + i.putExtra("id", plugin.getPreferencesId()); + activity.startActivity(i); + }, null); + }) + .visibility(() -> MainApp.getConfigBuilder().getActiveAPS() != null && ((PluginBase) MainApp.getConfigBuilder().getActiveAPS()).getPreferencesId() > 0)) .validator(() -> MainApp.getConfigBuilder().getActiveAPS() != null) ) .add(new SWScreen(R.string.configbuilder_loop) @@ -239,7 +260,7 @@ public class SWDefinition { .add(new SWInfotext() .label(R.string.setupwizard_objectives_description)) .add(new SWButton() - .text(R.string.objectives_button_start) + .text(R.string.enableobjectives) .action(() -> { ObjectivesPlugin.getPlugin().setPluginEnabled(PluginType.CONSTRAINTS, true); ObjectivesPlugin.getPlugin().setFragmentVisible(PluginType.CONSTRAINTS, true); @@ -251,6 +272,13 @@ public class SWDefinition { .validator(() -> ObjectivesPlugin.getPlugin().isEnabled(PluginType.CONSTRAINTS)) .visibility(() -> !ObjectivesPlugin.getPlugin().isFragmentVisible()) ) + .add(new SWScreen(R.string.objectives) + .skippable(false) + .add(new SWFragment(this) + .add(new ObjectivesFragment())) + .validator(() -> ObjectivesPlugin.getPlugin().objectives.get(0).isStarted()) + .visibility(() -> !ObjectivesPlugin.getPlugin().objectives.get(0).isStarted()) + ) ; } diff --git a/app/src/main/java/info/nightscout/androidaps/startupwizard/SetupWizardActivity.java b/app/src/main/java/info/nightscout/androidaps/startupwizard/SetupWizardActivity.java index 67af63326b..129159f93a 100644 --- a/app/src/main/java/info/nightscout/androidaps/startupwizard/SetupWizardActivity.java +++ b/app/src/main/java/info/nightscout/androidaps/startupwizard/SetupWizardActivity.java @@ -18,7 +18,9 @@ import info.nightscout.androidaps.MainActivity; import info.nightscout.androidaps.MainApp; import info.nightscout.androidaps.R; import info.nightscout.androidaps.events.EventProfileStoreChanged; +import info.nightscout.androidaps.events.EventProfileSwitchChange; import info.nightscout.androidaps.events.EventPumpStatusChanged; +import info.nightscout.androidaps.plugins.ConstraintsObjectives.events.EventObjectivesSaved; import info.nightscout.androidaps.plugins.NSClientInternal.events.EventNSClientStatus; import info.nightscout.androidaps.startupwizard.events.EventSWUpdate; import info.nightscout.utils.LocaleHelper; @@ -95,6 +97,16 @@ public class SetupWizardActivity extends AppCompatActivity { updateButtons(); } + @Subscribe + public void onEventProfileSwitchChange(EventProfileSwitchChange ignored) { + updateButtons(); + } + + @Subscribe + public void onEventObjectivesSaved(EventObjectivesSaved ignored) { + updateButtons(); + } + private void generateLayout() { SWScreen currentScreen = screens.get(currentWizardPage); LinearLayout layout = SWItem.generateLayout(this.findViewById(R.id.sw_content_fields)); diff --git a/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java b/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java index c2fbbf581e..22175e0281 100644 --- a/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java +++ b/app/src/main/java/info/nightscout/utils/ImportExportPrefs.java @@ -33,7 +33,7 @@ import info.nightscout.androidaps.events.EventAppExit; public class ImportExportPrefs { private static Logger log = LoggerFactory.getLogger(ImportExportPrefs.class); static File path = new File(Environment.getExternalStorageDirectory().toString()); - static final File file = new File(path, MainApp.gs(R.string.app_name) + "Preferences"); + static public final File file = new File(path, MainApp.gs(R.string.app_name) + "Preferences"); private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index e8980d3b65..70b22a620c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -545,7 +545,7 @@ Zrušit prodloužený bolus Hodnota bazálu [U/h] Typ bazálu - PřepnutíProfilu + Přepnutí profilu Pumpa Statusový řádek xDripu (hodinky) Status z xDripu (hodinky) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 35fff2ce20..c9459cafe2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1063,9 +1063,11 @@ Pump setup Read status Changes must be done in NS - Exit setup wizard? + Skip setup wizard Where should blood glucose(BG) data be comming from ? 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. + Enable Objectives + Configure APS plugin