Add toggle to disable completion date sorting

pull/1763/head
Alex Baker 2 years ago
parent bd485aa431
commit 23f24f78e4

@ -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}"
}

@ -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 (

@ -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()

@ -17,5 +17,7 @@ interface QueryPreferences {
val completedTasksAtBottom: Boolean
val sortCompletedByCompletionDate: Boolean
fun usePagedQueries(): Boolean
}

@ -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();

@ -448,4 +448,5 @@
<string name="p_app_bar_position">app_bar_position</string>
<string name="p_app_bar_collapse">app_bar_collapse</string>
<string name="p_completed_tasks_at_bottom">completed_tasks_at_bottom</string>
<string name="p_completed_tasks_sort">completed_tasks_sort</string>
</resources>

@ -714,5 +714,6 @@ File %1$s contained %2$s.\n\n
<string name="completed">Completed</string>
<string name="snackbar_task_completed">Task completed</string>
<string name="completed_tasks_at_bottom">Move completed tasks to bottom</string>
<string name="completed_tasks_sort">Sort by completion date</string>
<string name="snackbar_tasks_completed">%d tasks completed</string>
</resources>

@ -108,9 +108,16 @@
<SwitchPreferenceCompat
android:defaultValue="true"
app:allowDividerAbove="true"
android:key="@string/p_completed_tasks_at_bottom"
android:title="@string/completed_tasks_at_bottom" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="@string/p_completed_tasks_sort"
android:dependency="@string/p_completed_tasks_at_bottom"
android:title="@string/completed_tasks_sort" />
<SwitchPreferenceCompat
android:defaultValue="false"
app:allowDividerAbove="true"

Loading…
Cancel
Save