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