mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Merge branch 'add-delete-button-to-stats' of git://github.com/derebaba/uhabits into pull/delete-button
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class ShowHabitMenuBehaviorTest extends BaseUnitTest
|
|||||||
|
|
||||||
habit = fixtures.createShortHabit();
|
habit = fixtures.createShortHabit();
|
||||||
menu = new ShowHabitMenuBehavior(habitList, habit, taskRunner, screen,
|
menu = new ShowHabitMenuBehavior(habitList, habit, taskRunner, screen,
|
||||||
system);
|
system, commandRunner);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user