Expand/collapse all subtasks for list

gtask_related_email
Alex Baker 6 years ago
parent 7e4279bdb6
commit 0208f00502

@ -313,7 +313,10 @@ public final class TaskListFragment extends InjectingFragment
hidden.setChecked(preferences.getBoolean(R.string.p_show_hidden_tasks, false)); hidden.setChecked(preferences.getBoolean(R.string.p_show_hidden_tasks, false));
completed.setChecked(preferences.getBoolean(R.string.p_show_completed_tasks, false)); completed.setChecked(preferences.getBoolean(R.string.p_show_completed_tasks, false));
} }
if (taskAdapter.supportsManualSorting()) {
menu.findItem(R.id.menu_collapse_subtasks).setVisible(false);
menu.findItem(R.id.menu_expand_subtasks).setVisible(false);
}
menu.findItem(R.id.menu_voice_add).setVisible(device.voiceInputAvailable()); menu.findItem(R.id.menu_voice_add).setVisible(device.voiceInputAvailable());
search = menu.findItem(R.id.menu_search).setOnActionExpandListener(this); search = menu.findItem(R.id.menu_search).setOnActionExpandListener(this);
@ -401,6 +404,14 @@ public final class TaskListFragment extends InjectingFragment
tagSettings.putExtra(TagSettingsActivity.EXTRA_TAG_DATA, ((TagFilter) filter).getTagData()); tagSettings.putExtra(TagSettingsActivity.EXTRA_TAG_DATA, ((TagFilter) filter).getTagData());
startActivityForResult(tagSettings, REQUEST_TAG_SETTINGS); startActivityForResult(tagSettings, REQUEST_TAG_SETTINGS);
return true; return true;
case R.id.menu_expand_subtasks:
taskDao.setCollapsed(taskListViewModel.getValue(), false);
localBroadcastManager.broadcastRefresh();
return true;
case R.id.menu_collapse_subtasks:
taskDao.setCollapsed(taskListViewModel.getValue(), true);
localBroadcastManager.broadcastRefresh();
return true;
default: default:
return onOptionsItemSelected(item); return onOptionsItemSelected(item);
} }

@ -6,10 +6,13 @@
package com.todoroo.astrid.dao; package com.todoroo.astrid.dao;
import static com.google.common.collect.Iterables.filter;
import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Lists.transform; import static com.google.common.collect.Lists.transform;
import static com.todoroo.andlib.sql.SqlConstants.COUNT; import static com.todoroo.andlib.sql.SqlConstants.COUNT;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop;
import static com.todoroo.andlib.utility.DateUtilities.now; import static com.todoroo.andlib.utility.DateUtilities.now;
import static org.tasks.db.DbUtils.batch;
import androidx.room.Dao; import androidx.room.Dao;
import androidx.room.Insert; import androidx.room.Insert;
@ -165,6 +168,16 @@ public abstract class TaskDao {
@Query("UPDATE tasks SET collapsed = :collapsed WHERE _id = :id") @Query("UPDATE tasks SET collapsed = :collapsed WHERE _id = :id")
public abstract void setCollapsed(long id, boolean collapsed); public abstract void setCollapsed(long id, boolean collapsed);
@Transaction
public void setCollapsed(List<TaskContainer> tasks, boolean collapsed) {
batch(
transform(filter(tasks, TaskContainer::hasChildren), TaskContainer::getId),
l -> collapse(l, collapsed));
}
@Query("UPDATE tasks SET collapsed = :collapsed WHERE _id IN (:ids)")
abstract void collapse(List<Long> ids, boolean collapsed);
/** /**
* Saves the given task to the database.getDatabase(). Task must already exist. Returns true on * Saves the given task to the database.getDatabase(). Task must already exist. Returns true on
* success. * success.

@ -30,6 +30,14 @@
android:checkable="true" android:checkable="true"
android:title="@string/show_completed"/> android:title="@string/show_completed"/>
</group> </group>
<item
android:id="@+id/menu_expand_subtasks"
android:title="@string/expand_subtasks"
app:showAsAction="never" />
<item
android:id="@+id/menu_collapse_subtasks"
android:title="@string/collapse_subtasks"
app:showAsAction="never" />
<item <item
android:id="@+id/menu_clear_completed" android:id="@+id/menu_clear_completed"
android:title="@string/gtasks_GTA_clear_completed" android:title="@string/gtasks_GTA_clear_completed"

@ -554,4 +554,6 @@ File %1$s contained %2$s.\n\n
<string name="monthly">Monthly</string> <string name="monthly">Monthly</string>
<string name="annually">Yearly</string> <string name="annually">Yearly</string>
<string name="caldav_account_repeating_tasks">Let server schedule recurring tasks</string> <string name="caldav_account_repeating_tasks">Let server schedule recurring tasks</string>
<string name="expand_subtasks">Expand subtasks</string>
<string name="collapse_subtasks">Collapse subtasks</string>
</resources> </resources>

Loading…
Cancel
Save