From 1edd76ae8c495f09f558f3ecb72f906e2fd56647 Mon Sep 17 00:00:00 2001 From: derebaba Date: Thu, 2 Nov 2017 14:21:27 +0300 Subject: [PATCH 1/2] Added delete button to statistics screen --- .../habits/show/ShowHabitScreen.java | 20 ++++++++++++- .../habits/show/ShowHabitsMenu.java | 4 +++ .../src/main/res/menu/show_habit.xml | 5 ++++ .../habits/show/ShowHabitMenuBehavior.java | 29 +++++++++++++++++-- 4 files changed, 55 insertions(+), 3 deletions(-) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitScreen.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitScreen.java index eeb11c6aa..a929d25b9 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitScreen.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitScreen.java @@ -27,6 +27,7 @@ import org.isoron.uhabits.activities.common.dialogs.*; import org.isoron.uhabits.activities.habits.edit.*; import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.core.ui.screens.habits.show.*; +import org.isoron.uhabits.core.ui.callbacks.OnConfirmedCallback; import javax.inject.*; @@ -45,6 +46,9 @@ public class ShowHabitScreen extends BaseScreen @NonNull private final EditHabitDialogFactory editHabitDialogFactory; + @NonNull + private final ConfirmDeleteDialogFactory confirmDeleteDialogFactory; + private final Lazy behavior; @Inject @@ -53,10 +57,12 @@ public class ShowHabitScreen extends BaseScreen @NonNull ShowHabitRootView view, @NonNull ShowHabitsMenu menu, @NonNull - EditHabitDialogFactory editHabitDialogFactory, + EditHabitDialogFactory editHabitDialogFactory, + @NonNull ConfirmDeleteDialogFactory confirmDeleteDialogFactory, @NonNull Lazy behavior) { super(activity); + this.confirmDeleteDialogFactory = confirmDeleteDialogFactory; setMenu(menu); setRootView(view); @@ -116,6 +122,18 @@ public class ShowHabitScreen extends BaseScreen { case COULD_NOT_EXPORT: showMessage(R.string.could_not_export); + case HABIT_DELETED: + showMessage(R.string.delete_habits_message); } } + + @Override + public void showDeleteConfirmationScreen(OnConfirmedCallback callback) { + activity.showDialog(confirmDeleteDialogFactory.create(callback)); + } + + @Override + public void endActivity() { + activity.finish(); + } } diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitsMenu.java b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitsMenu.java index fe30a3e31..733db302c 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitsMenu.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitsMenu.java @@ -57,6 +57,10 @@ public class ShowHabitsMenu extends BaseMenu behavior.get().onExportCSV(); return true; + case R.id.action_delete: + behavior.get().onDeleteHabit(); + return true; + default: return false; } diff --git a/uhabits-android/src/main/res/menu/show_habit.xml b/uhabits-android/src/main/res/menu/show_habit.xml index 366a53e6c..e14ce108c 100644 --- a/uhabits-android/src/main/res/menu/show_habit.xml +++ b/uhabits-android/src/main/res/menu/show_habit.xml @@ -26,6 +26,11 @@ android:title="@string/export" app:showAsAction="never"/> + + selected = Collections.singletonList(habit); + + screen.showDeleteConfirmationScreen(() -> { + commandRunner.execute(new DeleteHabitsCommand(habitList, selected), + null); + screen.showMessage(Message.HABIT_DELETED); + screen.endActivity(); + }); + } + public enum Message { - COULD_NOT_EXPORT + COULD_NOT_EXPORT, HABIT_DELETED } public interface Screen @@ -89,6 +109,11 @@ public class ShowHabitMenuBehavior void showMessage(Message m); void showSendFileScreen(String filename); + + void showDeleteConfirmationScreen( + @NonNull OnConfirmedCallback callback); + + void endActivity(); } public interface System From 10be875b48533f2062f22b08c2d9eba728c0745e Mon Sep 17 00:00:00 2001 From: derebaba Date: Wed, 15 Nov 2017 10:57:00 +0300 Subject: [PATCH 2/2] Fixed test --- .../core/ui/screens/habits/show/ShowHabitMenuBehaviorTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/habits/show/ShowHabitMenuBehaviorTest.java b/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/habits/show/ShowHabitMenuBehaviorTest.java index 08aa1a7ea..fefade28e 100644 --- a/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/habits/show/ShowHabitMenuBehaviorTest.java +++ b/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/habits/show/ShowHabitMenuBehaviorTest.java @@ -50,7 +50,7 @@ public class ShowHabitMenuBehaviorTest extends BaseUnitTest habit = fixtures.createShortHabit(); menu = new ShowHabitMenuBehavior(habitList, habit, taskRunner, screen, - system); + system, commandRunner); } @Test