From d6e0c0bdcf46e15d29f3d0b9a355d028d8ec795b Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 30 May 2024 04:24:13 -0500 Subject: [PATCH] Fix showing completed tasks in subtask filter --- .../java/com/todoroo/astrid/api/Filter.kt | 1 + .../java/org/tasks/filters/SubtaskFilter.kt | 34 +++++++++++++++++++ .../java/org/tasks/ui/SubtaskControlSet.kt | 17 ++-------- .../java/org/tasks/ui/TaskListViewModel.kt | 8 ++--- 4 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 app/src/main/java/org/tasks/filters/SubtaskFilter.kt diff --git a/app/src/main/java/com/todoroo/astrid/api/Filter.kt b/app/src/main/java/com/todoroo/astrid/api/Filter.kt index ce3669848..fb892e25b 100644 --- a/app/src/main/java/com/todoroo/astrid/api/Filter.kt +++ b/app/src/main/java/com/todoroo/astrid/api/Filter.kt @@ -30,6 +30,7 @@ interface Filter : FilterListItem, Parcelable { fun supportsHiddenTasks(): Boolean = true fun supportsSubtasks(): Boolean = true fun supportsSorting(): Boolean = true + fun disableHeaders(): Boolean = !supportsSorting() } @Deprecated("Use manual ordering") diff --git a/app/src/main/java/org/tasks/filters/SubtaskFilter.kt b/app/src/main/java/org/tasks/filters/SubtaskFilter.kt new file mode 100644 index 000000000..c2dd0190c --- /dev/null +++ b/app/src/main/java/org/tasks/filters/SubtaskFilter.kt @@ -0,0 +1,34 @@ +package org.tasks.filters + +import com.todoroo.astrid.api.Filter +import com.todoroo.astrid.api.FilterListItem +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize +import org.tasks.data.dao.TaskDao +import org.tasks.data.entity.Task +import org.tasks.data.sql.Criterion +import org.tasks.data.sql.QueryTemplate + +@Parcelize +data class SubtaskFilter( + private val parent: Long, +) : Filter { + @IgnoredOnParcel + override val title: String = "subtasks" + + @IgnoredOnParcel + override val sql: String = + QueryTemplate() + .where( + Criterion.and( + TaskDao.TaskCriteria.activeAndVisible(), + Task.PARENT.eq(parent) + ) + ) + .toString() + + override fun disableHeaders() = true + + override fun areItemsTheSame(other: FilterListItem): Boolean = + other is SubtaskFilter && parent == other.parent +} \ No newline at end of file diff --git a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt index c49c1f2bf..532c1b117 100644 --- a/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt +++ b/app/src/main/java/org/tasks/ui/SubtaskControlSet.kt @@ -9,12 +9,8 @@ import androidx.fragment.app.activityViewModels import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.google.android.material.composethemeadapter.MdcTheme -import org.tasks.data.sql.Criterion -import org.tasks.data.sql.QueryTemplate import com.todoroo.astrid.activity.MainActivityViewModel -import com.todoroo.astrid.api.FilterImpl import com.todoroo.astrid.dao.TaskDao -import org.tasks.data.entity.Task import com.todoroo.astrid.service.TaskCompleter import com.todoroo.astrid.service.TaskCreator import dagger.hilt.android.AndroidEntryPoint @@ -23,7 +19,8 @@ import org.tasks.R import org.tasks.compose.collectAsStateLifecycleAware import org.tasks.compose.edit.SubtaskRow import org.tasks.data.dao.GoogleTaskDao -import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible +import org.tasks.data.entity.Task +import org.tasks.filters.SubtaskFilter import org.tasks.preferences.Preferences import org.tasks.tasklist.SectionedDataSource import org.tasks.themes.ColorProvider @@ -47,7 +44,7 @@ class SubtaskControlSet : TaskEditControlFragment() { override fun createView(savedInstanceState: Bundle?) { viewModel.task.takeIf { it.id > 0 }?.let { - listViewModel.setFilter(FilterImpl("subtasks", getQueryTemplate(it))) + listViewModel.setFilter(SubtaskFilter(it.id)) } } @@ -112,13 +109,5 @@ class SubtaskControlSet : TaskEditControlFragment() { companion object { val TAG = R.string.TEA_ctrl_subtask_pref - private fun getQueryTemplate(task: Task): String = QueryTemplate() - .where( - Criterion.and( - activeAndVisible(), - Task.PARENT.eq(task.id) - ) - ) - .toString() } } diff --git a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt index fd1f907d4..b75e856b6 100644 --- a/app/src/main/java/org/tasks/ui/TaskListViewModel.kt +++ b/app/src/main/java/org/tasks/ui/TaskListViewModel.kt @@ -30,11 +30,11 @@ import org.tasks.R import org.tasks.analytics.Firebase import org.tasks.billing.Inventory import org.tasks.compose.throttleLatest -import org.tasks.data.dao.DeletionDao -import org.tasks.data.entity.Task import org.tasks.data.TaskContainer -import org.tasks.data.dao.TaskDao import org.tasks.data.TaskListQuery.getQuery +import org.tasks.data.dao.DeletionDao +import org.tasks.data.dao.TaskDao +import org.tasks.data.entity.Task import org.tasks.data.fetchTasks import org.tasks.db.QueryUtils import org.tasks.preferences.Preferences @@ -156,7 +156,7 @@ class TaskListViewModel @Inject constructor( tasks = TasksResults.Results( SectionedDataSource( tasks = tasks, - disableHeaders = !it.filter.supportsSorting() + disableHeaders = it.filter.disableHeaders() || (it.filter.supportsManualSort() && preferences.isManualSort) || (it.filter is AstridOrderingFilter && preferences.isAstridSort), groupMode = preferences.groupMode,