diff --git a/app/src/androidTest/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapterTest.kt b/app/src/androidTest/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapterTest.kt index 0c40a534a..c8b16b01b 100644 --- a/app/src/androidTest/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapterTest.kt +++ b/app/src/androidTest/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapterTest.kt @@ -43,7 +43,7 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() { @Inject lateinit var localBroadcastManager: LocalBroadcastManager @Inject lateinit var taskMover: TaskMover - private lateinit var adapter: CaldavManualSortTaskAdapter + private lateinit var adapter: TaskAdapter private val tasks = ArrayList() private val filter = CaldavFilter(CaldavCalendar(name = "calendar", uuid = "1234")) private val dataSource = object : TaskAdapterDataSource { @@ -58,7 +58,7 @@ class CaldavManualSortTaskAdapterTest : InjectingTestCase() { preferences.clear() preferences.setBoolean(R.string.p_manual_sort, true) tasks.clear() - adapter = CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) + adapter = TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) adapter.setDataSource(dataSource) } diff --git a/app/src/androidTest/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapterTest.kt b/app/src/androidTest/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapterTest.kt index fa03c3ac9..6b7d85e6a 100644 --- a/app/src/androidTest/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapterTest.kt +++ b/app/src/androidTest/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapterTest.kt @@ -40,7 +40,7 @@ class GoogleTaskManualSortAdapterTest : InjectingTestCase() { @Inject lateinit var localBroadcastManager: LocalBroadcastManager @Inject lateinit var taskMover: TaskMover - private lateinit var adapter: GoogleTaskManualSortAdapter + private lateinit var adapter: TaskAdapter private val tasks = ArrayList() private val filter = GtasksFilter(newCaldavCalendar(with(CaldavCalendarMaker.UUID, "1234"))) private val dataSource = object : TaskAdapterDataSource { @@ -417,7 +417,7 @@ class GoogleTaskManualSortAdapterTest : InjectingTestCase() { preferences.clear() preferences.setBoolean(R.string.p_manual_sort, true) tasks.clear() - adapter = GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) + adapter = TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) adapter.setDataSource(dataSource) } diff --git a/app/src/main/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapter.kt deleted file mode 100644 index 90868eea7..000000000 --- a/app/src/main/java/com/todoroo/astrid/adapter/CaldavManualSortTaskAdapter.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.todoroo.astrid.adapter - -import com.todoroo.astrid.dao.TaskDao -import com.todoroo.astrid.service.TaskMover -import org.tasks.LocalBroadcastManager -import org.tasks.data.CaldavDao -import org.tasks.data.GoogleTaskDao - -class CaldavManualSortTaskAdapter internal constructor( - googleTaskDao: GoogleTaskDao, - caldavDao: CaldavDao, - taskDao: TaskDao, - localBroadcastManager: LocalBroadcastManager, - taskMover: TaskMover, -) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) { - - override suspend fun moved(from: Int, to: Int, indent: Int) { - moveCaldavTask(from, to, indent) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.kt deleted file mode 100644 index fa2ff626e..000000000 --- a/app/src/main/java/com/todoroo/astrid/adapter/GoogleTaskManualSortAdapter.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.todoroo.astrid.adapter - -import com.todoroo.astrid.dao.TaskDao -import com.todoroo.astrid.service.TaskMover -import org.tasks.LocalBroadcastManager -import org.tasks.data.CaldavDao -import org.tasks.data.GoogleTaskDao - -class GoogleTaskManualSortAdapter internal constructor( - googleTaskDao: GoogleTaskDao, - caldavDao: CaldavDao, - taskDao: TaskDao, - localBroadcastManager: LocalBroadcastManager, - taskMover: TaskMover, -) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) { - - override suspend fun moved(from: Int, to: Int, indent: Int) { - moveGoogleTask(from, to, indent) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt index 134730848..9288b5506 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.kt @@ -137,30 +137,38 @@ open class TaskAdapter( open suspend fun moved(from: Int, to: Int, indent: Int) { val task = getTask(from) - val newParent = findParent(indent, to) - if ((newParent?.id ?: 0) == task.parent) { - if (indent == 0) { - changeSortGroup(task, if (from < to) to - 1 else to) - } else if (dataSource.subtaskSortMode == SORT_MANUAL) { - if (task.isGoogleTask) { - moveGoogleTask(from, to, indent) - } else { - moveCaldavTask(from, to, indent) - } + if (dataSource.sortMode == SORT_MANUAL) { + if (task.isGoogleTask) { + moveGoogleTask(from, to, indent) + } else { + moveCaldavTask(from, to, indent) } - return - } else if (newParent != null) { - if (task.caldav != newParent.caldav) { - caldavDao.markDeleted(listOf(task.id)) + } else { + val newParent = findParent(indent, to) + if ((newParent?.id ?: 0) == task.parent) { + if (indent == 0) { + changeSortGroup(task, if (from < to) to - 1 else to) + } else if (dataSource.subtaskSortMode == SORT_MANUAL) { + if (task.isGoogleTask) { + moveGoogleTask(from, to, indent) + } else { + moveCaldavTask(from, to, indent) + } + } + return + } else if (newParent != null) { + if (task.caldav != newParent.caldav) { + caldavDao.markDeleted(listOf(task.id)) + } } - } - when { - newParent == null -> { - moveToTopLevel(task) - changeSortGroup(task, if (from < to) to - 1 else to) + when { + newParent == null -> { + moveToTopLevel(task) + changeSortGroup(task, if (from < to) to - 1 else to) + } + newParent.isGoogleTask -> changeGoogleTaskParent(task, newParent) + newParent.isCaldavTask() -> changeCaldavParent(task, newParent) } - newParent.isGoogleTask -> changeGoogleTaskParent(task, newParent) - newParent.isCaldavTask() -> changeCaldavParent(task, newParent) } } diff --git a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt index 3bde054ed..94735802f 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt +++ b/app/src/main/java/com/todoroo/astrid/adapter/TaskAdapterProvider.kt @@ -1,9 +1,7 @@ package com.todoroo.astrid.adapter import android.content.Context -import com.todoroo.astrid.api.CaldavFilter import com.todoroo.astrid.api.Filter -import com.todoroo.astrid.api.GtasksFilter import com.todoroo.astrid.api.TagFilter import com.todoroo.astrid.core.BuiltInFilterExposer import com.todoroo.astrid.dao.TaskDao @@ -44,13 +42,14 @@ class TaskAdapterProvider @Inject constructor( } } } - if (filter.supportsManualSort() && preferences.isManualSort) { - when (filter) { - is GtasksFilter -> return GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) - is CaldavFilter -> return CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) - } - } - return TaskAdapter(preferences.addTasksToTop(), googleTaskDao, caldavDao, taskDao, localBroadcastManager, taskMover) + return TaskAdapter( + newTasksOnTop = if (filter.supportsManualSort() && preferences.isManualSort) false else preferences.addTasksToTop(), + googleTaskDao = googleTaskDao, + caldavDao = caldavDao, + taskDao = taskDao, + localBroadcastManager = localBroadcastManager, + taskMover = taskMover + ) } private fun createManualTagTaskAdapter(filter: TagFilter): TaskAdapter = runBlocking {