diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt index abe789c79c..84bc71daf7 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSAMA/OpenAPSAMAFragment.kt @@ -114,7 +114,7 @@ class OpenAPSAMAFragment : DaggerFragment() { if (openAPSAMAPlugin.lastAPSRun != 0L) { binding.lastrun.text = dateUtil.dateAndTimeString(openAPSAMAPlugin.lastAPSRun) } - openAPSAMAPlugin.lastAutosensResult?.let { + openAPSAMAPlugin.lastAutosensResult.let { binding.autosensdata.text = JSONFormatter.format(it.json()) } } diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt index 507e2cd1eb..63c1719a45 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/ObjectivesFragment.kt @@ -196,19 +196,19 @@ class ObjectivesFragment : DaggerFragment() { if (task.shouldBeIgnored()) continue // name val name = TextView(holder.binding.progress.context) - name.text = resourceHelper.gs(task.task) + ":" + name.text = "${resourceHelper.gs(task.task)}:" name.setTextColor(-0x1) holder.binding.progress.addView(name, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) // hint task.hints.forEach { h -> - if (!task.isCompleted) - holder.binding.progress.addView(h.generate(context)) + if (!task.isCompleted()) + context?.let { holder.binding.progress.addView(h.generate(it)) } } // state val state = TextView(holder.binding.progress.context) state.setTextColor(-0x1) val basicHTML = "%2\$s" - val formattedHTML = String.format(basicHTML, if (task.isCompleted) "#4CAF50" else "#FF9800", task.progress) + val formattedHTML = String.format(basicHTML, if (task.isCompleted()) "#4CAF50" else "#FF9800", task.progress) state.text = HtmlHelper.fromHtml(formattedHTML) state.gravity = Gravity.END holder.binding.progress.addView(state, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT) @@ -307,7 +307,7 @@ class ObjectivesFragment : DaggerFragment() { holder.binding.unstart.setOnClickListener { activity?.let { activity -> OKDialog.showConfirmation(activity, resourceHelper.gs(R.string.objectives), resourceHelper.gs(R.string.doyouwantresetstart), Runnable { - uel.log("OBJECTVE UNSTARTED", i1 = position + 1) + uel.log("OBJECTIVE UNSTARTED", i1 = position + 1) objective.startedOn = 0 scrollToCurrentObjective() rxBus.send(EventObjectivesUpdateGui()) @@ -332,7 +332,7 @@ class ObjectivesFragment : DaggerFragment() { holder.binding.inputhint.visibility = View.VISIBLE holder.binding.enterbutton.setOnClickListener { val input = holder.binding.input.text.toString() - objective.specialAction(activity, input) + activity?.let { activity -> objective.specialAction(activity, input) } rxBus.send(EventObjectivesUpdateGui()) } } else { diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt index 97da62bbac..c45d61bfd4 100644 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt +++ b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/activities/ObjectivesExamDialog.kt @@ -80,28 +80,30 @@ class ObjectivesExamDialog : DaggerDialogFragment() { // Options binding.examOptions.removeAllViews() task.options.forEach { - val cb = it.generate(context) - if (task.answered) { - cb.isEnabled = false - if (it.isCorrect) - cb.isChecked = true + context?.let { context -> + val cb = it.generate(context) + if (task.answered) { + cb.isEnabled = false + if (it.isCorrect) + cb.isChecked = true + } + binding.examOptions.addView(cb) } - binding.examOptions.addView(cb) } // Hints binding.examHints.removeAllViews() for (h in task.hints) { - binding.examHints.addView(h.generate(context)) + context?.let { binding.examHints.addView(h.generate(it)) } } // Disabled to binding.examDisabledto.text = resourceHelper.gs(R.string.answerdisabledto, dateUtil.timeString(task.disabledTo)) - binding.examDisabledto.visibility = if (task.isEnabledAnswer) View.GONE else View.VISIBLE + binding.examDisabledto.visibility = if (task.isEnabledAnswer()) View.GONE else View.VISIBLE // Buttons - binding.examVerify.isEnabled = !task.answered && task.isEnabledAnswer + binding.examVerify.isEnabled = !task.answered && task.isEnabledAnswer() binding.examVerify.setOnClickListener { var result = true for (o in task.options) { - val option: Option = o as Option + val option: Option = o result = result && option.evaluate() } task.answered = result @@ -133,14 +135,14 @@ class ObjectivesExamDialog : DaggerDialogFragment() { binding.nextUnansweredButton.isEnabled = !objective.isCompleted binding.nextUnansweredButton.setOnClickListener { for (i in (currentTask + 1) until objective.tasks.size) { - if (!objective.tasks[i].isCompleted) { + if (!objective.tasks[i].isCompleted()) { currentTask = i updateGui() return@setOnClickListener } } for (i in 0..currentTask) { - if (!objective.tasks[i].isCompleted) { + if (!objective.tasks[i].isCompleted()) { currentTask = i updateGui() return@setOnClickListener diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective.java b/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective.java deleted file mode 100644 index 95942c4ed2..0000000000 --- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/objectives/Objective.java +++ /dev/null @@ -1,295 +0,0 @@ -package info.nightscout.androidaps.plugins.constraints.objectives.objectives; - -import android.content.Context; -import android.graphics.Color; -import android.text.util.Linkify; -import android.widget.CheckBox; -import android.widget.TextView; - -import androidx.annotation.StringRes; -import androidx.fragment.app.FragmentActivity; - -import java.util.ArrayList; -import java.util.List; - -import javax.inject.Inject; - -import dagger.android.HasAndroidInjector; -import info.nightscout.androidaps.R; -import info.nightscout.androidaps.utils.DateUtil; -import info.nightscout.androidaps.utils.T; -import info.nightscout.androidaps.utils.resources.ResourceHelper; -import info.nightscout.androidaps.utils.sharedPreferences.SP; - -public abstract class Objective { - @Inject public SP sp; - @Inject public ResourceHelper resourceHelper; - - private final String spName; - @StringRes private final int objective; - @StringRes private final int gate; - private long startedOn; - private long accomplishedOn; - List tasks = new ArrayList<>(); - public boolean hasSpecialInput = false; - - public Objective(HasAndroidInjector injector, String spName, @StringRes int objective, @StringRes int gate) { - injector.androidInjector().inject(this); - this.spName = spName; - this.objective = objective; - this.gate = gate; - startedOn = sp.getLong("Objectives_" + spName + "_started", 0L); - accomplishedOn = sp.getLong("Objectives_" + spName + "_accomplished", 0L); - if ((accomplishedOn - DateUtil.now()) > T.hours(3).msecs() || (startedOn - DateUtil.now()) > T.hours(3).msecs()) { // more than 3 hours in the future - startedOn = 0; - accomplishedOn = 0; - } - setupTasks(tasks); - for (Task task : tasks) task.objective = this; - } - - public boolean isCompleted() { - for (Task task : tasks) { - if (!task.shouldBeIgnored() && !task.isCompleted()) - return false; - } - return true; - } - - public boolean isCompleted(long trueTime) { - for (Task task : tasks) { - if (!task.shouldBeIgnored() && !task.isCompleted(trueTime)) - return false; - } - return true; - } - - public boolean isAccomplished() { - return accomplishedOn != 0 && accomplishedOn < DateUtil.now(); - } - - public boolean isStarted() { - return startedOn != 0; - } - - public long getStartedOn() { - return startedOn; - } - - public int getObjective() { - return objective; - } - - public int getGate() { - return gate; - } - - public void setStartedOn(long startedOn) { - this.startedOn = startedOn; - sp.putLong("Objectives_" + spName + "_started", startedOn); - } - - public void setAccomplishedOn(long accomplishedOn) { - this.accomplishedOn = accomplishedOn; - sp.putLong("Objectives_" + spName + "_accomplished", accomplishedOn); - } - - public long getAccomplishedOn() { - return accomplishedOn; - } - - protected void setupTasks(List tasks) { - - } - - public List getTasks() { - return tasks; - } - - public boolean specialActionEnabled() { - return true; - } - - public void specialAction(FragmentActivity activity, String input) { - } - - public abstract class Task { - @StringRes - private final int task; - private Objective objective; - ArrayList hints = new ArrayList<>(); - - public Task(@StringRes int task) { - this.task = task; - } - - public @StringRes int getTask() { - return task; - } - - protected Objective getObjective() { - return objective; - } - - public abstract boolean isCompleted(); - - public boolean isCompleted(long trueTime) { - return isCompleted(); - } - - public String getProgress() { - return resourceHelper.gs(isCompleted() ? R.string.completed_well_done : R.string.not_completed_yet); - } - - Task hint(Hint hint) { - hints.add(hint); - return this; - } - - public ArrayList getHints() { - return hints; - } - - public boolean shouldBeIgnored() { - return false; - } - } - - public class MinimumDurationTask extends Task { - - private final long minimumDuration; - - MinimumDurationTask(long minimumDuration) { - super(R.string.time_elapsed); - this.minimumDuration = minimumDuration; - } - - @Override - public boolean isCompleted() { - return getObjective().isStarted() && System.currentTimeMillis() - getObjective().getStartedOn() >= minimumDuration; - } - - @Override - public boolean isCompleted(long trueTime) { - return getObjective().isStarted() && trueTime - getObjective().getStartedOn() >= minimumDuration; - } - - @Override - public String getProgress() { - return getDurationText(System.currentTimeMillis() - getObjective().getStartedOn()) - + " / " + getDurationText(minimumDuration); - } - - private String getDurationText(long duration) { - int days = (int) Math.floor((double) duration / T.days(1).msecs()); - int hours = (int) Math.floor((double) duration / T.hours(1).msecs()); - int minutes = (int) Math.floor((double) duration / T.mins(1).msecs()); - if (days > 0) return resourceHelper.gq(R.plurals.days, days, days); - else if (hours > 0) return resourceHelper.gq(R.plurals.hours, hours, hours); - else return resourceHelper.gq(R.plurals.minutes, minutes, minutes); - } - } - - public class ExamTask extends Task { - @StringRes - int question; - ArrayList