From 74e44e9843df9e617a40e28d752964f1f3f53067 Mon Sep 17 00:00:00 2001 From: Febon <32780971+Febon@users.noreply.github.com> Date: Sun, 14 Jun 2020 21:15:44 +0300 Subject: [PATCH] Fixed habit list refresh problem added a pop-app message when habit reser is executed and toggled off deleted repetitions --- .../activities/habits/list/ListHabitsScreen.kt | 1 + .../uhabits-android/src/main/res/values/strings.xml | 1 + .../isoron/uhabits/core/commands/CommandParser.java | 3 +++ .../uhabits/core/commands/ResetHabitsCommand.java | 13 ++++++++++--- .../ui/screens/habits/list/ListHabitsBehavior.java | 6 +++--- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt index d97ebbbae..770fe5748 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt @@ -225,6 +225,7 @@ class ListHabitsScreen is DeleteHabitsCommand -> return R.string.toast_habit_deleted is EditHabitCommand -> return R.string.toast_habit_changed is UnarchiveHabitsCommand -> return R.string.toast_habit_unarchived + is ResetHabitsCommand -> return R.string.toast_habit_reset else -> return null } } diff --git a/android/uhabits-android/src/main/res/values/strings.xml b/android/uhabits-android/src/main/res/values/strings.xml index 075d3a647..e31a277d5 100644 --- a/android/uhabits-android/src/main/res/values/strings.xml +++ b/android/uhabits-android/src/main/res/values/strings.xml @@ -39,6 +39,7 @@ Habit changed back Habits archived Habits unarchived + Habits reset Overview diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java index 8a5919ce4..cdfe4e59c 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java @@ -79,6 +79,9 @@ public class CommandParser if (event.equals("Unarchive")) return gson .fromJson(json, UnarchiveHabitsCommand.Record.class) .toCommand(habitList); + if(event.equals("HabitReset")) return gson + .fromJson(json, ResetHabitsCommand.Record.class) + .toCommand(habitList); throw new IllegalStateException("Unknown command"); } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java index c5a42b428..e3c5cfe16 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java @@ -4,6 +4,7 @@ import androidx.annotation.NonNull; import org.isoron.uhabits.core.models.Habit; import org.isoron.uhabits.core.models.HabitList; +import org.isoron.uhabits.core.models.Repetition; import org.isoron.uhabits.core.models.RepetitionList; import java.util.Collections; @@ -34,12 +35,18 @@ public class ResetHabitsCommand extends Command if (selected != null) { for (Habit h : selected) { RepetitionList repetitionList = h.getRepetitions(); - repetitionList.removeAll(); + Repetition rep; + while(repetitionList.getTotalCount() != 0) { + rep = repetitionList.getOldest(); + repetitionList.toggle(rep.getTimestamp()); + repetitionList.remove(rep); + } } + habitList.update(selected); } else { for (Habit h : habitList) { - RepetitionList repetitionList = h.getRepetitions(); - repetitionList.removeAll(); + h.getRepetitions().removeAll(); + habitList.update(h); } } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java index 9fcdbe190..460564e68 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java @@ -26,7 +26,6 @@ import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.core.preferences.*; import org.isoron.uhabits.core.tasks.*; import org.isoron.uhabits.core.utils.*; - import java.io.*; import java.util.*; @@ -128,11 +127,12 @@ public class ListHabitsBehavior } public void onResetHabits() { - //ResetHabitsCommand rst = new ResetHabitsCommand(habitList); - //rst.execute(); commandRunner.execute(new ResetHabitsCommand(habitList), null); habitList.repair(); + HabitCardListCache hclc = new HabitCardListCache(habitList, commandRunner, taskRunner); + hclc.refreshAllHabits(); + } public void onSendBugReport() {