Added delete button to statistics screen

pull/352/head
derebaba 8 years ago
parent 7613e6e1cb
commit 1edd76ae8c

@ -27,6 +27,7 @@ import org.isoron.uhabits.activities.common.dialogs.*;
import org.isoron.uhabits.activities.habits.edit.*; import org.isoron.uhabits.activities.habits.edit.*;
import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.ui.screens.habits.show.*; import org.isoron.uhabits.core.ui.screens.habits.show.*;
import org.isoron.uhabits.core.ui.callbacks.OnConfirmedCallback;
import javax.inject.*; import javax.inject.*;
@ -45,6 +46,9 @@ public class ShowHabitScreen extends BaseScreen
@NonNull @NonNull
private final EditHabitDialogFactory editHabitDialogFactory; private final EditHabitDialogFactory editHabitDialogFactory;
@NonNull
private final ConfirmDeleteDialogFactory confirmDeleteDialogFactory;
private final Lazy<ShowHabitBehavior> behavior; private final Lazy<ShowHabitBehavior> behavior;
@Inject @Inject
@ -53,10 +57,12 @@ public class ShowHabitScreen extends BaseScreen
@NonNull ShowHabitRootView view, @NonNull ShowHabitRootView view,
@NonNull ShowHabitsMenu menu, @NonNull ShowHabitsMenu menu,
@NonNull @NonNull
EditHabitDialogFactory editHabitDialogFactory, EditHabitDialogFactory editHabitDialogFactory,
@NonNull ConfirmDeleteDialogFactory confirmDeleteDialogFactory,
@NonNull Lazy<ShowHabitBehavior> behavior) @NonNull Lazy<ShowHabitBehavior> behavior)
{ {
super(activity); super(activity);
this.confirmDeleteDialogFactory = confirmDeleteDialogFactory;
setMenu(menu); setMenu(menu);
setRootView(view); setRootView(view);
@ -116,6 +122,18 @@ public class ShowHabitScreen extends BaseScreen
{ {
case COULD_NOT_EXPORT: case COULD_NOT_EXPORT:
showMessage(R.string.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();
}
} }

@ -57,6 +57,10 @@ public class ShowHabitsMenu extends BaseMenu
behavior.get().onExportCSV(); behavior.get().onExportCSV();
return true; return true;
case R.id.action_delete:
behavior.get().onDeleteHabit();
return true;
default: default:
return false; return false;
} }

@ -26,6 +26,11 @@
android:title="@string/export" android:title="@string/export"
app:showAsAction="never"/> app:showAsAction="never"/>
<item
android:id="@+id/action_delete"
android:title="@string/delete"
app:showAsAction="never"/>
<item <item
android:id="@+id/action_edit_habit" android:id="@+id/action_edit_habit"
android:icon="?iconEdit" android:icon="?iconEdit"

@ -21,8 +21,11 @@ package org.isoron.uhabits.core.ui.screens.habits.show;
import android.support.annotation.*; import android.support.annotation.*;
import org.isoron.uhabits.core.commands.CommandRunner;
import org.isoron.uhabits.core.commands.DeleteHabitsCommand;
import org.isoron.uhabits.core.models.*; import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.tasks.*; import org.isoron.uhabits.core.tasks.*;
import org.isoron.uhabits.core.ui.callbacks.OnConfirmedCallback;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
@ -45,18 +48,23 @@ public class ShowHabitMenuBehavior
@NonNull @NonNull
private System system; private System system;
@NonNull
private CommandRunner commandRunner;
@Inject @Inject
public ShowHabitMenuBehavior(@NonNull HabitList habitList, public ShowHabitMenuBehavior(@NonNull HabitList habitList,
@NonNull Habit habit, @NonNull Habit habit,
@NonNull TaskRunner taskRunner, @NonNull TaskRunner taskRunner,
@NonNull Screen screen, @NonNull Screen screen,
@NonNull System system) @NonNull System system,
@NonNull CommandRunner commandRunner)
{ {
this.habitList = habitList; this.habitList = habitList;
this.habit = habit; this.habit = habit;
this.taskRunner = taskRunner; this.taskRunner = taskRunner;
this.screen = screen; this.screen = screen;
this.system = system; this.system = system;
this.commandRunner = commandRunner;
} }
public void onEditHabit() public void onEditHabit()
@ -77,9 +85,21 @@ public class ShowHabitMenuBehavior
})); }));
} }
public void onDeleteHabit()
{
List<Habit> selected = Collections.singletonList(habit);
screen.showDeleteConfirmationScreen(() -> {
commandRunner.execute(new DeleteHabitsCommand(habitList, selected),
null);
screen.showMessage(Message.HABIT_DELETED);
screen.endActivity();
});
}
public enum Message public enum Message
{ {
COULD_NOT_EXPORT COULD_NOT_EXPORT, HABIT_DELETED
} }
public interface Screen public interface Screen
@ -89,6 +109,11 @@ public class ShowHabitMenuBehavior
void showMessage(Message m); void showMessage(Message m);
void showSendFileScreen(String filename); void showSendFileScreen(String filename);
void showDeleteConfirmationScreen(
@NonNull OnConfirmedCallback callback);
void endActivity();
} }
public interface System public interface System

Loading…
Cancel
Save