From 1edd76ae8c495f09f558f3ecb72f906e2fd56647 Mon Sep 17 00:00:00 2001 From: derebaba Date: Thu, 2 Nov 2017 14:21:27 +0300 Subject: [PATCH] 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