From 2b98b127239fc7520e31723d572f9efb3852d73a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 20 Oct 2020 16:13:57 -0500 Subject: [PATCH] Add 'is subtask' filter --- .../tasks/filters/FilterCriteriaProvider.kt | 18 ++++++++++++++++++ app/src/main/res/values/strings.xml | 1 + 2 files changed, 19 insertions(+) diff --git a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt index c0e2a596a..8ee589c1c 100644 --- a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt @@ -5,6 +5,7 @@ import com.todoroo.andlib.sql.Criterion.Companion.and import com.todoroo.andlib.sql.Criterion.Companion.or import com.todoroo.andlib.sql.Field.Companion.field import com.todoroo.andlib.sql.Join.Companion.inner +import com.todoroo.andlib.sql.Join.Companion.left import com.todoroo.andlib.sql.Query.Companion.select import com.todoroo.astrid.api.* import com.todoroo.astrid.data.Task @@ -35,6 +36,7 @@ class FilterCriteriaProvider @Inject constructor( IDENTIFIER_RECUR -> recurringFilter IDENTIFIER_COMPLETED -> completedFilter IDENTIFIER_HIDDEN -> hiddenFilter + IDENTIFIER_SUBTASK -> subtaskFilter else -> throw RuntimeException("Unknown identifier: $identifier") } } @@ -63,6 +65,7 @@ class FilterCriteriaProvider @Inject constructor( result.add(recurringFilter) result.add(completedFilter) result.add(hiddenFilter) + result.add(subtaskFilter) return result } @@ -120,6 +123,20 @@ class FilterCriteriaProvider @Inject constructor( .toString() ) + private val subtaskFilter: CustomFilterCriterion + get() = BooleanCriterion( + IDENTIFIER_SUBTASK, + context.getString(R.string.custom_filter_is_subtask), + select(Task.ID) + .from(Task.TABLE) + .join(left(GoogleTask.TABLE, GoogleTask.TASK.eq(Task.ID))) + .where(or( + field("${Task.PARENT}>0").eq(1), + field("${GoogleTask.PARENT}>0").eq(1) + )) + .toString() + ) + val tagNameContainsFilter: CustomFilterCriterion get() = TextInputCriterion( IDENTIFIER_TAG_CONTAINS, @@ -265,5 +282,6 @@ class FilterCriteriaProvider @Inject constructor( private const val IDENTIFIER_RECUR = "recur" private const val IDENTIFIER_COMPLETED = "completed" private const val IDENTIFIER_HIDDEN = "hidden" + private const val IDENTIFIER_SUBTASK = "subtask" } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 97cdfbc3d..9c1beac76 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -656,4 +656,5 @@ File %1$s contained %2$s.\n\n Reschedule Multiple Delete this comment? + Is subtask