From bfacf1ca52ad6dc729c452105c55b56e06af7ef6 Mon Sep 17 00:00:00 2001 From: Trevor Terris Date: Wed, 23 Jun 2021 14:25:21 -0400 Subject: [PATCH 1/2] Add "now" option for due date filter --- app/src/main/java/org/tasks/dialogs/NewFilterDialog.kt | 2 +- .../main/java/org/tasks/filters/FilterCriteriaProvider.kt | 6 ++++-- app/src/main/res/values/arrays.xml | 2 ++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/tasks/dialogs/NewFilterDialog.kt b/app/src/main/java/org/tasks/dialogs/NewFilterDialog.kt index b23c44654..c09362604 100644 --- a/app/src/main/java/org/tasks/dialogs/NewFilterDialog.kt +++ b/app/src/main/java/org/tasks/dialogs/NewFilterDialog.kt @@ -61,7 +61,7 @@ class NewFilterDialog : DialogFragment() { val list = ArrayList() when (title) { R.string.filter_overdue -> - list.add(newMultiSelect(provider.dueDateFilter, 1, TYPE_INTERSECT)) + list.add(newMultiSelect(provider.dueDateFilter, 7, TYPE_INTERSECT)) R.string.filter_today_only -> { list.add(newMultiSelect(provider.dueDateFilter, 1, TYPE_SUBTRACT)) list.add(newMultiSelect(provider.dueDateFilter, 2, TYPE_INTERSECT)) diff --git a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt index 02148682d..593568510 100644 --- a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt @@ -179,7 +179,8 @@ class FilterCriteriaProvider @Inject constructor( PermaSql.VALUE_EOD_TOMORROW, PermaSql.VALUE_EOD_DAY_AFTER, PermaSql.VALUE_EOD_NEXT_WEEK, - PermaSql.VALUE_EOD_NEXT_MONTH) + PermaSql.VALUE_EOD_NEXT_MONTH, + PermaSql.VALUE_NOW) val values: MutableMap = HashMap() values[Task.DUE_DATE.name] = "?" return MultipleSelectCriterion( @@ -208,7 +209,8 @@ class FilterCriteriaProvider @Inject constructor( PermaSql.VALUE_EOD_TOMORROW, PermaSql.VALUE_EOD_DAY_AFTER, PermaSql.VALUE_EOD_NEXT_WEEK, - PermaSql.VALUE_EOD_NEXT_MONTH) + PermaSql.VALUE_EOD_NEXT_MONTH, + PermaSql.VALUE_NOW) val values: MutableMap = HashMap() values[Task.HIDE_UNTIL.name] = "?" return MultipleSelectCriterion( diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 558943adf..574fd6aff 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -106,6 +106,7 @@ @string/day_after_tomorrow @string/next_week @string/next_month + @string/now @@ -116,6 +117,7 @@ @string/day_after_tomorrow @string/next_week @string/next_month + @string/now diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ae3971821..c4ffba87d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -287,6 +287,7 @@ File %1$s contained %2$s.\n\n 1 task %d tasks + Now Today today Tomorrow From 4b522a7ce8e052a2d3480f630436fb15c6a4943f Mon Sep 17 00:00:00 2001 From: Trevor Terris Date: Mon, 28 Jun 2021 16:06:28 -0400 Subject: [PATCH 2/2] Change NOW() query to check for all-day tasks Update query logic in FilterCriteriaProvider to use EOD time instead of current time for all-day tasks. Also, change the default start time for tasks to be non-time-specific (only relevant for when the filter being used to create a task is NOW). --- .../main/java/com/todoroo/astrid/service/TaskCreator.kt | 3 ++- .../main/java/org/tasks/filters/FilterCriteriaProvider.kt | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt index 8bdba2cbd..6f347493b 100644 --- a/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt +++ b/app/src/main/java/com/todoroo/astrid/service/TaskCreator.kt @@ -111,7 +111,8 @@ class TaskCreator @Inject constructor( when (key) { Tag.KEY -> tags.add(value as String) GoogleTask.KEY, CaldavTask.KEY, Place.KEY -> task.putTransitory(key, value) - DUE_DATE.name -> value.substitute()?.toLongOrNull()?.let { task.dueDate = it } + DUE_DATE.name -> value.substitute()?.toLongOrNull()?.let { task.dueDate = + createDueDate(Task.URGENCY_SPECIFIC_DAY, it) } IMPORTANCE.name -> value.substitute()?.toIntOrNull()?.let { task.priority = it } HIDE_UNTIL.name -> value.substitute()?.toLongOrNull()?.let { task.hideUntil = it.startOfDay() } diff --git a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt index 593568510..e0711741d 100644 --- a/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt +++ b/app/src/main/java/org/tasks/filters/FilterCriteriaProvider.kt @@ -192,7 +192,13 @@ class FilterCriteriaProvider @Inject constructor( and( activeAndVisible(), or(field("?").eq(0), Task.DUE_DATE.gt(0)), - Task.DUE_DATE.lte("?"))) + // find tasks that have due dates before the specified + // date, or all-day tasks that have due dates before + // EOD today if the specified date is NOW + or(Task.DUE_DATE.lte("?"), + and(field("${Task.DUE_DATE} / 1000 % 60").eq(0), + field("?").eq(field("${PermaSql.VALUE_NOW}")), + Task.DUE_DATE.lte("${PermaSql.VALUE_EOD}"))))) .toString(), values, r.getStringArray(R.array.CFC_dueBefore_entries),