Use drawer ordering for 'By list' sort mode

pull/2298/head
Alex Baker 3 years ago
parent 1d58292a07
commit 2da4dcd17a

@ -2,13 +2,13 @@ package com.todoroo.andlib.sql
import com.todoroo.andlib.sql.OrderType.ASC
import com.todoroo.andlib.sql.OrderType.DESC
import java.util.*
class Order private constructor(private val expression: Any, private val orderType: OrderType = ASC) {
private val secondaryExpressions = ArrayList<Order>()
fun addSecondaryExpression(secondary: Order) {
fun addSecondaryExpression(secondary: Order): Order {
secondaryExpressions.add(secondary)
return this
}
override fun toString() =

@ -50,7 +50,9 @@ public class SortHelper {
private static final String ADJUSTED_START_DATE =
"(CASE WHEN (hideUntil / 1000) % 60 > 0 THEN hideUntil ELSE (hideUntil + 86399000) END)";
private static final Order ORDER_TITLE = Order.asc(Functions.upper(Task.TITLE));
private static final Order ORDER_LIST = Order.asc(Functions.upper(CaldavCalendar.NAME));
private static final Order ORDER_LIST =
Order.asc(Functions.upper(CaldavCalendar.ORDER))
.addSecondaryExpression(Order.asc(CaldavCalendar.NAME));
/** Takes a SQL query, and if there isn't already an order, creates an order. */
public static String adjustQueryForFlagsAndSort(
@ -176,7 +178,7 @@ public class SortHelper {
case SORT_CREATED -> "tasks.created";
case SORT_GTASKS -> "tasks.`order`";
case SORT_CALDAV -> CALDAV_ORDER_COLUMN;
case SORT_LIST -> "cdl_name";
case SORT_LIST -> "CASE WHEN cdl_order = -1 THEN cdl_name ELSE cdl_order END";
default -> "(CASE WHEN (tasks.dueDate=0) "
+ // if no due date
"THEN (strftime('%s','now')*1000)*2 "

@ -52,5 +52,6 @@ data class CaldavCalendar(
val ACCOUNT = TABLE.column("cdl_account")
val UUID = TABLE.column("cdl_uuid")
@JvmField val NAME = TABLE.column("cdl_name")
@JvmField val ORDER = TABLE.column("cdl_order")
}
}
Loading…
Cancel
Save