From 2ee587479eb3d0472a2a26acd9d4bdb88512dca8 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 3 Apr 2020 11:58:03 -0500 Subject: [PATCH] Add select all to multi-select menu --- .../com/todoroo/astrid/activity/TaskListFragment.java | 7 +++++++ .../java/com/todoroo/astrid/adapter/TaskAdapter.java | 8 ++++++-- app/src/main/java/com/todoroo/astrid/dao/TaskDao.java | 9 +++++++++ .../java/com/todoroo/astrid/service/TaskDeleter.java | 8 +------- app/src/main/java/org/tasks/themes/CustomIcons.kt | 3 ++- app/src/main/res/drawable/ic_select_all_24px.xml | 5 +++++ app/src/main/res/menu/menu_multi_select.xml | 6 ++++++ app/src/main/res/values/strings.xml | 1 + 8 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 app/src/main/res/drawable/ic_select_all_24px.xml diff --git a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 93ff6ce93..e05504b17 100644 --- a/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/app/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -9,6 +9,7 @@ package com.todoroo.astrid.activity; import static android.app.Activity.RESULT_OK; import static androidx.core.content.ContextCompat.getColor; import static com.google.common.collect.Lists.newArrayList; +import static com.google.common.collect.Lists.transform; import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread; import static org.tasks.activities.RemoteListPicker.newRemoteListSupportPicker; import static org.tasks.caldav.CaldavCalendarSettingsActivity.EXTRA_CALDAV_CALENDAR; @@ -750,6 +751,12 @@ public final class TaskListFragment extends InjectingFragment : newRemoteListSupportPicker(singleFilter, this, REQUEST_MOVE_TASKS)) .show(getFragmentManager(), FRAG_TAG_REMOTE_LIST_PICKER); return true; + case R.id.menu_select_all: + taskAdapter.setSelected( + transform(taskDao.fetchTasks(preferences, filter), TaskContainer::getId)); + updateModeTitle(); + recyclerAdapter.notifyDataSetChanged(); + return true; case R.id.delete: dialogBuilder .newDialog(R.string.delete_selected_tasks) diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index 0072a9ae4..ab9ef503d 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -11,8 +11,8 @@ import static com.google.common.primitives.Longs.asList; import com.todoroo.astrid.data.Task; import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; import org.tasks.data.TaskContainer; import org.tasks.tasklist.TaskListRecyclerAdapter; @@ -45,8 +45,12 @@ public class TaskAdapter { } public void setSelected(long... ids) { + setSelected(asList(ids)); + } + + public void setSelected(Collection ids) { selected.clear(); - selected.addAll(asList(ids)); + selected.addAll(ids); } public void clearSelections() { diff --git a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java index b4a895b47..d13394b22 100644 --- a/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java +++ b/app/src/main/java/com/todoroo/astrid/dao/TaskDao.java @@ -38,7 +38,9 @@ import java.util.List; import org.tasks.BuildConfig; import org.tasks.data.Place; import org.tasks.data.TaskContainer; +import org.tasks.data.TaskListQuery; import org.tasks.jobs.WorkManager; +import org.tasks.preferences.Preferences; import timber.log.Timber; @Dao @@ -155,6 +157,13 @@ public abstract class TaskDao { return result; } + public List fetchTasks(Preferences preferences, Filter filter) { + return fetchTasks( + (includeGoogleTaskSubtasks, includeCaldavSubtasks) -> + TaskListQuery.getQuery( + preferences, filter, includeGoogleTaskSubtasks, includeCaldavSubtasks)); + } + @RawQuery abstract List fetchTasks(SimpleSQLiteQuery query); diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java b/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java index 4b3ce535a..884aec166 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java +++ b/app/src/main/java/com/todoroo/astrid/service/TaskDeleter.java @@ -21,7 +21,6 @@ import org.tasks.data.GoogleTaskAccount; import org.tasks.data.GoogleTaskDao; import org.tasks.data.GoogleTaskList; import org.tasks.data.TaskContainer; -import org.tasks.data.TaskListQuery; import org.tasks.jobs.WorkManager; import org.tasks.preferences.Preferences; @@ -90,12 +89,7 @@ public class TaskDeleter { Filter deleteFilter = new Filter(null, null); deleteFilter.setFilterQueryOverride( removeOrder(showHiddenAndCompleted(filter.getOriginalSqlQuery()))); - List tasks = - taskDao.fetchTasks( - (includeGoogleSubtasks, includeCaldavSubtasks) -> - TaskListQuery.getQuery( - preferences, deleteFilter, includeGoogleSubtasks, includeCaldavSubtasks)); - for (TaskContainer task : tasks) { + for (TaskContainer task : taskDao.fetchTasks(preferences, deleteFilter)) { if (task.isCompleted()) { completed.add(task.getId()); } diff --git a/app/src/main/java/org/tasks/themes/CustomIcons.kt b/app/src/main/java/org/tasks/themes/CustomIcons.kt index ef8e09c57..b20c6c865 100644 --- a/app/src/main/java/org/tasks/themes/CustomIcons.kt +++ b/app/src/main/java/org/tasks/themes/CustomIcons.kt @@ -174,7 +174,8 @@ object CustomIcons { 1134 to R.drawable.ic_nights_stay_24px, 1135 to R.drawable.ic_single_bed_24px, 1136 to R.drawable.ic_weather_sunset, - 1137 to R.drawable.ic_calendar_today_24px + 1137 to R.drawable.ic_calendar_today_24px, + 1138 to R.drawable.ic_select_all_24px ) @kotlin.jvm.JvmStatic diff --git a/app/src/main/res/drawable/ic_select_all_24px.xml b/app/src/main/res/drawable/ic_select_all_24px.xml new file mode 100644 index 000000000..aa71160d5 --- /dev/null +++ b/app/src/main/res/drawable/ic_select_all_24px.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/menu/menu_multi_select.xml b/app/src/main/res/menu/menu_multi_select.xml index 3e3c19fa3..a576b2aec 100644 --- a/app/src/main/res/menu/menu_multi_select.xml +++ b/app/src/main/res/menu/menu_multi_select.xml @@ -14,6 +14,12 @@ android:title="@string/move" app:showAsAction="ifRoom" /> + + Autoclose date time picker Close date time picker after selecting a date or time Calendar event created for %s + Select all