|
|
|
@ -29,6 +29,7 @@ import com.todoroo.astrid.utility.Flags;
|
|
|
|
import org.tasks.R;
|
|
|
|
import org.tasks.R;
|
|
|
|
import org.tasks.analytics.Tracker;
|
|
|
|
import org.tasks.analytics.Tracker;
|
|
|
|
import org.tasks.analytics.Tracking;
|
|
|
|
import org.tasks.analytics.Tracking;
|
|
|
|
|
|
|
|
import org.tasks.dialogs.DialogBuilder;
|
|
|
|
import org.tasks.ui.MenuColorizer;
|
|
|
|
import org.tasks.ui.MenuColorizer;
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
@ -49,6 +50,7 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> im
|
|
|
|
private final TaskDeleter taskDeleter;
|
|
|
|
private final TaskDeleter taskDeleter;
|
|
|
|
private final TaskDuplicator taskDuplicator;
|
|
|
|
private final TaskDuplicator taskDuplicator;
|
|
|
|
private final Tracker tracker;
|
|
|
|
private final Tracker tracker;
|
|
|
|
|
|
|
|
private final DialogBuilder dialogBuilder;
|
|
|
|
private final ItemTouchHelper itemTouchHelper;
|
|
|
|
private final ItemTouchHelper itemTouchHelper;
|
|
|
|
|
|
|
|
|
|
|
|
private ActionMode mode = null;
|
|
|
|
private ActionMode mode = null;
|
|
|
|
@ -56,7 +58,8 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> im
|
|
|
|
public TaskListRecyclerAdapter(Activity activity, TaskAdapter adapter,
|
|
|
|
public TaskListRecyclerAdapter(Activity activity, TaskAdapter adapter,
|
|
|
|
ViewHolderFactory viewHolderFactory,
|
|
|
|
ViewHolderFactory viewHolderFactory,
|
|
|
|
TaskListFragment taskList, TaskDeleter taskDeleter,
|
|
|
|
TaskListFragment taskList, TaskDeleter taskDeleter,
|
|
|
|
TaskDuplicator taskDuplicator, Tracker tracker) {
|
|
|
|
TaskDuplicator taskDuplicator, Tracker tracker,
|
|
|
|
|
|
|
|
DialogBuilder dialogBuilder) {
|
|
|
|
this.activity = activity;
|
|
|
|
this.activity = activity;
|
|
|
|
this.adapter = adapter;
|
|
|
|
this.adapter = adapter;
|
|
|
|
this.viewHolderFactory = viewHolderFactory;
|
|
|
|
this.viewHolderFactory = viewHolderFactory;
|
|
|
|
@ -64,6 +67,7 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> im
|
|
|
|
this.taskDeleter = taskDeleter;
|
|
|
|
this.taskDeleter = taskDeleter;
|
|
|
|
this.taskDuplicator = taskDuplicator;
|
|
|
|
this.taskDuplicator = taskDuplicator;
|
|
|
|
this.tracker = tracker;
|
|
|
|
this.tracker = tracker;
|
|
|
|
|
|
|
|
this.dialogBuilder = dialogBuilder;
|
|
|
|
itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback());
|
|
|
|
itemTouchHelper = new ItemTouchHelper(new ItemTouchHelperCallback());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -172,24 +176,14 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> im
|
|
|
|
for (int position : Ordering.natural().reverse().sortedCopy(multiSelector.getSelectedPositions())) {
|
|
|
|
for (int position : Ordering.natural().reverse().sortedCopy(multiSelector.getSelectedPositions())) {
|
|
|
|
notifyItemRemoved(position);
|
|
|
|
notifyItemRemoved(position);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
taskList.makeSnackbar(activity.getString(R.string.delete_multiple_tasks_confirmation, Integer.toString(result)))
|
|
|
|
taskList.makeSnackbar(activity.getString(R.string.delete_multiple_tasks_confirmation, Integer.toString(result))).show();
|
|
|
|
.setAction(R.string.DLG_undo, v -> {
|
|
|
|
|
|
|
|
taskDeleter.undelete(tasks);
|
|
|
|
|
|
|
|
taskList.loadTaskListContent();
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.show();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void copySelectedItems() {
|
|
|
|
private void copySelectedItems() {
|
|
|
|
tracker.reportEvent(Tracking.Events.MULTISELECT_CLONE);
|
|
|
|
tracker.reportEvent(Tracking.Events.MULTISELECT_CLONE);
|
|
|
|
List<Task> duplicates = taskDuplicator.duplicate(getTasks());
|
|
|
|
List<Task> duplicates = taskDuplicator.duplicate(getTasks());
|
|
|
|
taskList.onTaskCreated(duplicates);
|
|
|
|
taskList.onTaskCreated(duplicates);
|
|
|
|
taskList.makeSnackbar(activity.getString(R.string.copy_multiple_tasks_confirmation, Integer.toString(duplicates.size())))
|
|
|
|
taskList.makeSnackbar(activity.getString(R.string.copy_multiple_tasks_confirmation, Integer.toString(duplicates.size()))).show();
|
|
|
|
.setAction(R.string.DLG_undo, v -> {
|
|
|
|
|
|
|
|
taskDeleter.delete(duplicates);
|
|
|
|
|
|
|
|
taskList.onTaskDelete(duplicates);
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.show();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void updateModeTitle() {
|
|
|
|
private void updateModeTitle() {
|
|
|
|
@ -211,12 +205,22 @@ public class TaskListRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> im
|
|
|
|
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
|
|
|
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
|
|
|
switch (item.getItemId()) {
|
|
|
|
switch (item.getItemId()) {
|
|
|
|
case R.id.delete:
|
|
|
|
case R.id.delete:
|
|
|
|
|
|
|
|
dialogBuilder.newMessageDialog(R.string.delete_selected_tasks)
|
|
|
|
|
|
|
|
.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> {
|
|
|
|
deleteSelectedItems();
|
|
|
|
deleteSelectedItems();
|
|
|
|
mode.finish();
|
|
|
|
mode.finish();
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
|
|
|
|
.show();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
case R.id.copy_tasks:
|
|
|
|
case R.id.copy_tasks:
|
|
|
|
|
|
|
|
dialogBuilder.newMessageDialog(R.string.copy_selected_tasks)
|
|
|
|
|
|
|
|
.setPositiveButton(android.R.string.ok, ((dialogInterface, i) -> {
|
|
|
|
copySelectedItems();
|
|
|
|
copySelectedItems();
|
|
|
|
mode.finish();
|
|
|
|
mode.finish();
|
|
|
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
.setNegativeButton(android.R.string.cancel, null)
|
|
|
|
|
|
|
|
.show();
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
|