Add toggle to disable completion date sorting

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

@ -20,7 +20,6 @@ internal object TaskListQueryNonRecursive {
private val TAGS = private val TAGS =
field("group_concat(distinct(${TaskListFragment.TAGS_METADATA_JOIN}.tag_uid))") field("group_concat(distinct(${TaskListFragment.TAGS_METADATA_JOIN}.tag_uid))")
.`as`("tags") .`as`("tags")
private const val COMPLETION_SORT = "parentComplete ASC, tasks.completed DESC, "
private val FIELDS = private val FIELDS =
TaskListQuery.FIELDS.plus(listOf( TaskListQuery.FIELDS.plus(listOf(
TAGS, TAGS,
@ -32,18 +31,21 @@ internal object TaskListQueryNonRecursive {
val sortMode = preferences.sortMode val sortMode = preferences.sortMode
val sortGroup = field(SortHelper.getSortGroup(sortMode) ?: "NULL").`as`("sortGroup") val sortGroup = field(SortHelper.getSortGroup(sortMode) ?: "NULL").`as`("sortGroup")
val query = SortHelper.adjustQueryForFlagsAndSort(preferences, joinedQuery, sortMode) val query = SortHelper.adjustQueryForFlagsAndSort(preferences, joinedQuery, sortMode)
val completionSort = if (preferences.completedTasksAtBottom) { val completeAtBottom = if (preferences.completedTasksAtBottom) "parentComplete ASC," else ""
COMPLETION_SORT val completionSort =
} else { if (preferences.completedTasksAtBottom && preferences.sortCompletedByCompletionDate) {
"" "tasks.completed DESC,"
} } else {
""
}
val orderBy = "$completeAtBottom $completionSort"
val groupedQuery = when { val groupedQuery = when {
filter is RecentlyModifiedFilter -> filter is RecentlyModifiedFilter ->
query.replace("ORDER BY", "GROUP BY ${Task.ID} ORDER BY") query.replace("ORDER BY", "GROUP BY ${Task.ID} ORDER BY")
query.contains("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 -> preferences.completedTasksAtBottom ->
"$query GROUP BY ${Task.ID} ORDER BY $completionSort" "$query GROUP BY ${Task.ID} ORDER BY $orderBy"
else -> else ->
"$query GROUP BY ${Task.ID}" "$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 reverseSort = preferences.isReverseSort && sortMode != SortHelper.SORT_GTASKS && sortMode != SortHelper.SORT_CALDAV
val sortSelect = SortHelper.orderSelectForSortTypeRecursive(sortMode) val sortSelect = SortHelper.orderSelectForSortTypeRecursive(sortMode)
val parentCompleted = if (preferences.completedTasksAtBottom) { val parentCompleted = if (preferences.completedTasksAtBottom) "tasks.completed > 0" else "0"
"tasks.completed > 0" val completionSort =
} else { if (preferences.completedTasksAtBottom && preferences.sortCompletedByCompletionDate) {
"0" "tasks.completed"
} } else {
val completionSort = if (preferences.completedTasksAtBottom) { "0"
"tasks.completed" }
} else {
"0"
}
val withClause =""" val withClause ="""
CREATE TEMPORARY TABLE `recursive_tasks` AS 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 ( 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 override val completedTasksAtBottom: Boolean
get() = getBoolean(R.string.p_completed_tasks_at_bottom, true) 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) { private fun setPublicPref(key: String, value: Int) {
val edit = publicPrefs.edit() val edit = publicPrefs.edit()
edit?.putInt(key, value)?.apply() edit?.putInt(key, value)?.apply()

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

@ -289,6 +289,11 @@ public class WidgetPreferences implements QueryPreferences {
return preferences.getCompletedTasksAtBottom(); return preferences.getCompletedTasksAtBottom();
} }
@Override
public boolean getSortCompletedByCompletionDate() {
return preferences.getSortCompletedByCompletionDate();
}
@Override @Override
public boolean usePagedQueries() { public boolean usePagedQueries() {
return preferences.usePagedQueries(); return preferences.usePagedQueries();

@ -448,4 +448,5 @@
<string name="p_app_bar_position">app_bar_position</string> <string name="p_app_bar_position">app_bar_position</string>
<string name="p_app_bar_collapse">app_bar_collapse</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_at_bottom">completed_tasks_at_bottom</string>
<string name="p_completed_tasks_sort">completed_tasks_sort</string>
</resources> </resources>

@ -714,5 +714,6 @@ File %1$s contained %2$s.\n\n
<string name="completed">Completed</string> <string name="completed">Completed</string>
<string name="snackbar_task_completed">Task 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_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> <string name="snackbar_tasks_completed">%d tasks completed</string>
</resources> </resources>

@ -108,9 +108,16 @@
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:defaultValue="true" android:defaultValue="true"
app:allowDividerAbove="true"
android:key="@string/p_completed_tasks_at_bottom" android:key="@string/p_completed_tasks_at_bottom"
android:title="@string/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 <SwitchPreferenceCompat
android:defaultValue="false" android:defaultValue="false"
app:allowDividerAbove="true" app:allowDividerAbove="true"

Loading…
Cancel
Save