From 2da4dcd17a1f0d7a2aba291055f723ee3ffe5218 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Mon, 1 May 2023 20:59:12 -0500 Subject: [PATCH] Use drawer ordering for 'By list' sort mode --- app/src/main/java/com/todoroo/andlib/sql/Order.kt | 4 ++-- app/src/main/java/com/todoroo/astrid/core/SortHelper.java | 6 ++++-- app/src/main/java/org/tasks/data/CaldavCalendar.kt | 1 + 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/todoroo/andlib/sql/Order.kt b/app/src/main/java/com/todoroo/andlib/sql/Order.kt index b246b1bc7..ce9baece2 100644 --- a/app/src/main/java/com/todoroo/andlib/sql/Order.kt +++ b/app/src/main/java/com/todoroo/andlib/sql/Order.kt @@ -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() - fun addSecondaryExpression(secondary: Order) { + fun addSecondaryExpression(secondary: Order): Order { secondaryExpressions.add(secondary) + return this } override fun toString() = diff --git a/app/src/main/java/com/todoroo/astrid/core/SortHelper.java b/app/src/main/java/com/todoroo/astrid/core/SortHelper.java index 369aa90fc..456af7470 100644 --- a/app/src/main/java/com/todoroo/astrid/core/SortHelper.java +++ b/app/src/main/java/com/todoroo/astrid/core/SortHelper.java @@ -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 " diff --git a/app/src/main/java/org/tasks/data/CaldavCalendar.kt b/app/src/main/java/org/tasks/data/CaldavCalendar.kt index 918937f9d..b23a9262d 100644 --- a/app/src/main/java/org/tasks/data/CaldavCalendar.kt +++ b/app/src/main/java/org/tasks/data/CaldavCalendar.kt @@ -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") } } \ No newline at end of file