From 23f24f78e4d517aef0de7e5702b55c54c837405b Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 4 Feb 2022 23:25:20 -0600 Subject: [PATCH] Add toggle to disable completion date sorting --- .../tasks/data/TaskListQueryNonRecursive.kt | 18 ++++++++++-------- .../org/tasks/data/TaskListQueryRecursive.kt | 17 +++++++---------- .../java/org/tasks/preferences/Preferences.kt | 3 +++ .../org/tasks/preferences/QueryPreferences.kt | 2 ++ .../org/tasks/widget/WidgetPreferences.java | 5 +++++ app/src/main/res/values/keys.xml | 1 + app/src/main/res/values/strings.xml | 1 + .../main/res/xml/preferences_look_and_feel.xml | 7 +++++++ 8 files changed, 36 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt b/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt index 15fc85696..bb959fda5 100644 --- a/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt +++ b/app/src/main/java/org/tasks/data/TaskListQueryNonRecursive.kt @@ -20,7 +20,6 @@ internal object TaskListQueryNonRecursive { private val TAGS = field("group_concat(distinct(${TaskListFragment.TAGS_METADATA_JOIN}.tag_uid))") .`as`("tags") - private const val COMPLETION_SORT = "parentComplete ASC, tasks.completed DESC, " private val FIELDS = TaskListQuery.FIELDS.plus(listOf( TAGS, @@ -32,18 +31,21 @@ internal object TaskListQueryNonRecursive { val sortMode = preferences.sortMode val sortGroup = field(SortHelper.getSortGroup(sortMode) ?: "NULL").`as`("sortGroup") val query = SortHelper.adjustQueryForFlagsAndSort(preferences, joinedQuery, sortMode) - val completionSort = if (preferences.completedTasksAtBottom) { - COMPLETION_SORT - } else { - "" - } + val completeAtBottom = if (preferences.completedTasksAtBottom) "parentComplete ASC," else "" + val completionSort = + if (preferences.completedTasksAtBottom && preferences.sortCompletedByCompletionDate) { + "tasks.completed DESC," + } else { + "" + } + val orderBy = "$completeAtBottom $completionSort" val groupedQuery = when { filter is RecentlyModifiedFilter -> query.replace("ORDER BY", "GROUP BY ${Task.ID} ORDER BY") query.contains("ORDER BY") -> - query.replace("ORDER BY", "GROUP BY ${Task.ID} ORDER BY $completionSort") + query.replace("ORDER BY", "GROUP BY ${Task.ID} ORDER BY $orderBy") preferences.completedTasksAtBottom -> - "$query GROUP BY ${Task.ID} ORDER BY $completionSort" + "$query GROUP BY ${Task.ID} ORDER BY $orderBy" else -> "$query GROUP BY ${Task.ID}" } diff --git a/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt b/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt index 93c6a2f03..521c199cd 100644 --- a/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt +++ b/app/src/main/java/org/tasks/data/TaskListQueryRecursive.kt @@ -98,16 +98,13 @@ internal object TaskListQueryRecursive { } val reverseSort = preferences.isReverseSort && sortMode != SortHelper.SORT_GTASKS && sortMode != SortHelper.SORT_CALDAV val sortSelect = SortHelper.orderSelectForSortTypeRecursive(sortMode) - val parentCompleted = if (preferences.completedTasksAtBottom) { - "tasks.completed > 0" - } else { - "0" - } - val completionSort = if (preferences.completedTasksAtBottom) { - "tasks.completed" - } else { - "0" - } + val parentCompleted = if (preferences.completedTasksAtBottom) "tasks.completed > 0" else "0" + val completionSort = + if (preferences.completedTasksAtBottom && preferences.sortCompletedByCompletionDate) { + "tasks.completed" + } else { + "0" + } val withClause =""" CREATE TEMPORARY TABLE `recursive_tasks` AS WITH RECURSIVE recursive_tasks (task, parent_complete, subtask_complete, completion_sort, parent, collapsed, hidden, indent, title, sortField, primary_sort, secondary_sort, sort_group) AS ( diff --git a/app/src/main/java/org/tasks/preferences/Preferences.kt b/app/src/main/java/org/tasks/preferences/Preferences.kt index 866e3ae94..554e629d5 100644 --- a/app/src/main/java/org/tasks/preferences/Preferences.kt +++ b/app/src/main/java/org/tasks/preferences/Preferences.kt @@ -361,6 +361,9 @@ class Preferences @JvmOverloads constructor( override val completedTasksAtBottom: Boolean get() = getBoolean(R.string.p_completed_tasks_at_bottom, true) + override val sortCompletedByCompletionDate: Boolean + get() = getBoolean(R.string.p_completed_tasks_sort, true) + private fun setPublicPref(key: String, value: Int) { val edit = publicPrefs.edit() edit?.putInt(key, value)?.apply() diff --git a/app/src/main/java/org/tasks/preferences/QueryPreferences.kt b/app/src/main/java/org/tasks/preferences/QueryPreferences.kt index bc53788b5..58e6e455a 100644 --- a/app/src/main/java/org/tasks/preferences/QueryPreferences.kt +++ b/app/src/main/java/org/tasks/preferences/QueryPreferences.kt @@ -17,5 +17,7 @@ interface QueryPreferences { val completedTasksAtBottom: Boolean + val sortCompletedByCompletionDate: Boolean + fun usePagedQueries(): Boolean } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/widget/WidgetPreferences.java b/app/src/main/java/org/tasks/widget/WidgetPreferences.java index e180a8bcd..a930f1912 100644 --- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java +++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java @@ -289,6 +289,11 @@ public class WidgetPreferences implements QueryPreferences { return preferences.getCompletedTasksAtBottom(); } + @Override + public boolean getSortCompletedByCompletionDate() { + return preferences.getSortCompletedByCompletionDate(); + } + @Override public boolean usePagedQueries() { return preferences.usePagedQueries(); diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index 1c19b897d..c0b215170 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -448,4 +448,5 @@ app_bar_position app_bar_collapse completed_tasks_at_bottom + completed_tasks_sort diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5dbf65da0..53ecc771f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -714,5 +714,6 @@ File %1$s contained %2$s.\n\n Completed Task completed Move completed tasks to bottom + Sort by completion date %d tasks completed diff --git a/app/src/main/res/xml/preferences_look_and_feel.xml b/app/src/main/res/xml/preferences_look_and_feel.xml index 71f8e17e5..92e0941fc 100644 --- a/app/src/main/res/xml/preferences_look_and_feel.xml +++ b/app/src/main/res/xml/preferences_look_and_feel.xml @@ -108,9 +108,16 @@ + +