Add select all to multi-select menu

pull/996/head
Alex Baker 6 years ago
parent 33725ce667
commit 2ee587479e

@ -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)

@ -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<Long> ids) {
selected.clear();
selected.addAll(asList(ids));
selected.addAll(ids);
}
public void clearSelections() {

@ -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<TaskContainer> fetchTasks(Preferences preferences, Filter filter) {
return fetchTasks(
(includeGoogleTaskSubtasks, includeCaldavSubtasks) ->
TaskListQuery.getQuery(
preferences, filter, includeGoogleTaskSubtasks, includeCaldavSubtasks));
}
@RawQuery
abstract List<TaskContainer> fetchTasks(SimpleSQLiteQuery query);

@ -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<TaskContainer> 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());
}

@ -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

@ -0,0 +1,5 @@
<vector android:autoMirrored="true" android:height="24dp"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z"/>
</vector>

@ -14,6 +14,12 @@
android:title="@string/move"
app:showAsAction="ifRoom" />
<item
android:id="@+id/menu_select_all"
android:icon="@drawable/ic_select_all_24px"
android:title="@string/select_all"
app:showAsAction="ifRoom" />
<item
android:id="@+id/copy_tasks"
android:icon="@drawable/ic_outline_file_copy_24px"

@ -581,4 +581,5 @@ File %1$s contained %2$s.\n\n
<string name="auto_dismiss_datetime">Autoclose date time picker</string>
<string name="auto_dismiss_datetime_summary">Close date time picker after selecting a date or time</string>
<string name="calendar_event_created">Calendar event created for %s</string>
<string name="select_all">Select all</string>
</resources>

Loading…
Cancel
Save