Add start date custom filter criteria

pull/1295/head
Alex Baker 3 years ago
parent 3405f54ad7
commit 5d6ce3de22

@ -55,6 +55,7 @@ class TranslationTests {
forEachLocale { r: Resources ->
contains(r, string.CFC_tag_text, failures, "?")
contains(r, string.CFC_title_contains_text, failures, "?")
contains(r, string.CFC_startBefore_text, failures, "?")
contains(r, string.CFC_dueBefore_text, failures, "?")
contains(r, string.CFC_tag_contains_text, failures, "?")
contains(r, string.CFC_gtasks_list_text, failures, "?")

@ -32,6 +32,8 @@ class NewFilterDialog : DialogFragment() {
R.string.filter_today_only,
R.string.tomorrow,
R.string.filter_after_today,
R.string.filter_any_start_date,
R.string.no_start_date,
R.string.filter_any_due_date,
R.string.no_due_date,
R.string.filter_no_tags,
@ -72,6 +74,12 @@ class NewFilterDialog : DialogFragment() {
list.add(newMultiSelect(provider.dueDateFilter, 0, TYPE_SUBTRACT))
list.add(newMultiSelect(provider.dueDateFilter, 2, TYPE_SUBTRACT))
}
R.string.no_start_date -> {
list.add(newMultiSelect(provider.startDateFilter, 0, TYPE_INTERSECT))
}
R.string.filter_any_start_date -> {
list.add(newMultiSelect(provider.startDateFilter, 0, TYPE_SUBTRACT))
}
R.string.no_due_date ->
list.add(newMultiSelect(provider.dueDateFilter, 0, TYPE_INTERSECT))
R.string.filter_any_due_date -> {

@ -28,6 +28,7 @@ class FilterCriteriaProvider @Inject constructor(
IDENTIFIER_UNIVERSE -> startingUniverse
IDENTIFIER_TITLE -> taskTitleContainsFilter
IDENTIFIER_IMPORTANCE -> priorityFilter
IDENTIFIER_STARTDATE -> startDateFilter
IDENTIFIER_DUEDATE -> dueDateFilter
IDENTIFIER_GTASKS -> gtasksFilterCriteria()
IDENTIFIER_CALDAV -> caldavFilterCriteria()
@ -56,6 +57,7 @@ class FilterCriteriaProvider @Inject constructor(
with(result) {
add(tagFilter())
add(tagNameContainsFilter)
add(startDateFilter)
add(dueDateFilter)
add(priorityFilter)
add(taskTitleContainsFilter)
@ -197,6 +199,35 @@ class FilterCriteriaProvider @Inject constructor(
r.getString(R.string.CFC_dueBefore_name))
}
val startDateFilter: CustomFilterCriterion
get() {
val entryValues = arrayOf(
"0",
PermaSql.VALUE_EOD_YESTERDAY,
PermaSql.VALUE_EOD,
PermaSql.VALUE_EOD_TOMORROW,
PermaSql.VALUE_EOD_DAY_AFTER,
PermaSql.VALUE_EOD_NEXT_WEEK,
PermaSql.VALUE_EOD_NEXT_MONTH)
val values: MutableMap<String?, Any> = HashMap()
values[Task.HIDE_UNTIL.name] = "?"
return MultipleSelectCriterion(
IDENTIFIER_STARTDATE,
r.getString(R.string.CFC_startBefore_text),
select(Task.ID)
.from(Task.TABLE)
.where(
and(
activeAndVisible(),
or(field("?").eq(0), Task.HIDE_UNTIL.gt(0)),
Task.HIDE_UNTIL.lte("?")))
.toString(),
values,
r.getStringArray(R.array.CFC_startBefore_entries),
entryValues,
r.getString(R.string.CFC_startBefore_name))
}
val priorityFilter: CustomFilterCriterion
get() {
val entryValues = arrayOf(
@ -292,6 +323,7 @@ class FilterCriteriaProvider @Inject constructor(
private const val IDENTIFIER_UNIVERSE = "active"
private const val IDENTIFIER_TITLE = "title"
private const val IDENTIFIER_IMPORTANCE = "importance"
private const val IDENTIFIER_STARTDATE = "startDate"
private const val IDENTIFIER_DUEDATE = "dueDate"
private const val IDENTIFIER_GTASKS = "gtaskslist"
private const val IDENTIFIER_CALDAV = "caldavlist"

@ -106,6 +106,16 @@
<item>@string/next_month</item>
</string-array>
<string-array name="CFC_startBefore_entries">
<item>@string/no_start_date</item>
<item>@string/yesterday</item>
<item>@string/today</item>
<item>@string/tomorrow</item>
<item>@string/day_after_tomorrow</item>
<item>@string/next_week</item>
<item>@string/next_month</item>
</string-array>
<string-array name="TEA_reminder_random">
<item>@string/random_reminder_hour</item>
<item>@string/random_reminder_day</item>

@ -136,8 +136,11 @@ File %1$s contained %2$s.\n\n
<string name="CFA_button_add">Add Criteria</string>
<string name="CFC_dueBefore_text">Due By: ?</string>
<string name="CFC_dueBefore_name">Due By…</string>
<string name="CFC_startBefore_text">Start by: ?</string>
<string name="CFC_startBefore_name">Start by…</string>
<string name="no_due_date">No due date</string>
<string name="no_start_date">No start date</string>
<string name="filter_any_start_date">Any start date</string>
<string name="next_month">Next Month</string>
<string name="CFC_importance_text">Priority at least ?</string>
<string name="CFC_importance_name">Priority…</string>

Loading…
Cancel
Save