From 7b4976e990174ecd0c862a8525e1672e78ef1ff0 Mon Sep 17 00:00:00 2001 From: pkorove Date: Fri, 12 Jun 2020 22:09:41 +0300 Subject: [PATCH] Add the function of the reset button in the settings menu Change some of the code to follow the current standard. --- .../gradle/wrapper/gradle-wrapper.properties | 3 +- .../habits/list/ListHabitsScreen.kt | 5 +- .../core/commands/ResetHabitsCommand.java | 51 +++++++++++++++++-- .../habits/list/ListHabitsBehavior.java | 10 ++-- .../list/ListHabitsSelectionMenuBehavior.java | 15 ++++-- 5 files changed, 67 insertions(+), 17 deletions(-) diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 1ba7206f8..d521cabf4 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Mon Jun 01 18:02:11 EEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip 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 4efd4d76c..d97ebbbae 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 @@ -120,14 +120,15 @@ class ListHabitsScreen } private fun onSettingsResult(resultCode: Int) { - val liist = habitList.getFiltered(HabitMatcher(true,true,true)) + //val liist = habitList.getFiltered(HabitMatcher(true,true,true)) when (resultCode) { RESULT_IMPORT_DATA -> showImportScreen() RESULT_EXPORT_CSV -> behavior.get().onExportCSV() RESULT_EXPORT_DB -> onExportDB() RESULT_BUG_REPORT -> behavior.get().onSendBugReport() RESULT_REPAIR_DB -> behavior.get().onRepairDB() - RESET_HABITS -> ResetHabitsCommand(liist, liist.toList()).execute() + RESET_HABITS -> /*ResetHabitsCommand(liist, liist.toList()).execute()*/ behavior.get().onResetHabits() + } } 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 cf070c67b..c5a42b428 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 @@ -23,14 +23,28 @@ public class ResetHabitsCommand extends Command this.selected = new LinkedList<>(selected); } + public ResetHabitsCommand(@NonNull HabitList habitList) { + this.habitList = habitList; + selected = null; + } + @Override public void execute() { - for (Habit h : selected) { - RepetitionList repetitionList = h.getRepetitions(); - repetitionList.removeAll(); + if (selected != null) { + for (Habit h : selected) { + RepetitionList repetitionList = h.getRepetitions(); + repetitionList.removeAll(); + } + } else { + for (Habit h : habitList) { + RepetitionList repetitionList = h.getRepetitions(); + repetitionList.removeAll(); + } } } + + public List getSelected() { return Collections.unmodifiableList(selected); @@ -38,8 +52,37 @@ public class ResetHabitsCommand extends Command @NonNull @Override - public Object toRecord() { return null;} + public Object toRecord() {return new Record(this);} + + public static class Record { + @NonNull + public String id; + + @NonNull + public String event = "ResetHabit"; + @NonNull + public List habits; + + public Record(ResetHabitsCommand command) { + id = command.getId(); + habits = new LinkedList<>(); + for (Habit h : command.selected) { + if (!h.hasId()) throw new RuntimeException("Habit not saved"); + habits.add(h.getId()); + } + } + + public ResetHabitsCommand toCommand(@NonNull HabitList habitList) { + List selected = new LinkedList<>(); + for (Long id : this.habits) selected.add(habitList.getById(id)); + + ResetHabitsCommand command; + command = new ResetHabitsCommand(habitList, selected); + command.setId(id); + return command; + } + } @Override public void undo() { throw new UnsupportedOperationException();} } 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 97caf579f..9fcdbe190 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 @@ -128,11 +128,11 @@ public class ListHabitsBehavior } public void onResetHabits() { - taskRunner.execute(() -> - { - habitList.repair(); - screen.showMessage(Message.DATABASE_REPAIRED); - }); + //ResetHabitsCommand rst = new ResetHabitsCommand(habitList); + //rst.execute(); + commandRunner.execute(new ResetHabitsCommand(habitList), + null); + habitList.repair(); } public void onSendBugReport() { diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsSelectionMenuBehavior.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsSelectionMenuBehavior.java index bdf8b06f0..d14a3ed77 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsSelectionMenuBehavior.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsSelectionMenuBehavior.java @@ -109,6 +109,16 @@ public class ListHabitsSelectionMenuBehavior }); } + public void onResetHabits() + { + //ResetHabitsCommand command = new ResetHabitsCommand(habitList, adapter.getSelected()); + //command.execute(); + List selected = adapter.getSelected(); + commandRunner.execute(new ResetHabitsCommand(habitList, selected), + null); + adapter.clearSelection(); + } + public void onEditHabits() { screen.showEditHabitsScreen(adapter.getSelected()); @@ -129,11 +139,6 @@ public class ListHabitsSelectionMenuBehavior void performRemove(List selected); } - public void onResetHabits() - { - ResetHabitsCommand command = new ResetHabitsCommand(habitList, adapter.getSelected()); - command.execute(); - } public interface Screen {