Refresh after manual sort changes

pull/996/head
Alex Baker 6 years ago
parent 037d6fa9e2
commit ba9759344a

@ -5,6 +5,7 @@ import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import com.todoroo.astrid.subtasks.SubtasksFilterUpdater import com.todoroo.astrid.subtasks.SubtasksFilterUpdater
import org.tasks.LocalBroadcastManager
import org.tasks.Strings.isNullOrEmpty import org.tasks.Strings.isNullOrEmpty
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
@ -20,7 +21,9 @@ class AstridTaskAdapter internal constructor(
private val updater: SubtasksFilterUpdater, private val updater: SubtasksFilterUpdater,
googleTaskDao: GoogleTaskDao, googleTaskDao: GoogleTaskDao,
caldavDao: CaldavDao, caldavDao: CaldavDao,
private val taskDao: TaskDao) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao) { private val taskDao: TaskDao,
private val localBroadcastManager: LocalBroadcastManager)
: TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager) {
private val chainedCompletions = Collections.synchronizedMap(HashMap<String, ArrayList<String>>()) private val chainedCompletions = Collections.synchronizedMap(HashMap<String, ArrayList<String>>())
@ -50,6 +53,7 @@ class AstridTaskAdapter internal constructor(
for (i in 0 until abs(delta)) { for (i in 0 until abs(delta)) {
updater.indent(list, filter, targetTaskId, delta) updater.indent(list, filter, targetTaskId, delta)
} }
localBroadcastManager.broadcastRefresh()
} catch (e: Exception) { } catch (e: Exception) {
Timber.e(e) Timber.e(e)
} }

@ -1,11 +1,18 @@
package com.todoroo.astrid.adapter package com.todoroo.astrid.adapter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import org.tasks.LocalBroadcastManager
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
class CaldavManualSortTaskAdapter internal constructor(googleTaskDao: GoogleTaskDao, private val caldavDao: CaldavDao, private val taskDao: TaskDao) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao) { class CaldavManualSortTaskAdapter internal constructor(
googleTaskDao: GoogleTaskDao,
private val caldavDao: CaldavDao,
private val taskDao: TaskDao,
private val localBroadcastManager: LocalBroadcastManager)
: TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager) {
override fun supportsManualSorting() = true override fun supportsManualSorting() = true
override fun moved(from: Int, to: Int, indent: Int) { override fun moved(from: Int, to: Int, indent: Int) {
@ -28,8 +35,8 @@ class CaldavManualSortTaskAdapter internal constructor(googleTaskDao: GoogleTask
else -> getTask((to - 1 downTo 0).find { getTask(it).indent == indent }!!).caldavSortOrder + 1 else -> getTask((to - 1 downTo 0).find { getTask(it).indent == indent }!!).caldavSortOrder + 1
} }
caldavDao.move(task, newParent, newPosition) caldavDao.move(task, newParent, newPosition)
taskDao.touch(task.id) taskDao.touch(task.id)
localBroadcastManager.broadcastRefresh()
} }
private fun changeParent(task: TaskContainer, indent: Int, to: Int): Long { private fun changeParent(task: TaskContainer, indent: Int, to: Int): Long {

@ -2,10 +2,16 @@ package com.todoroo.astrid.adapter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.data.CaldavDao import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao import org.tasks.data.GoogleTaskDao
class GoogleTaskManualSortAdapter internal constructor(private val googleTaskDao: GoogleTaskDao, caldavDao: CaldavDao, private val taskDao: TaskDao) : TaskAdapter(false, googleTaskDao, caldavDao, taskDao) { class GoogleTaskManualSortAdapter internal constructor(
private val googleTaskDao: GoogleTaskDao,
caldavDao: CaldavDao,
private val taskDao: TaskDao,
private val localBroadcastManager: LocalBroadcastManager)
: TaskAdapter(false, googleTaskDao, caldavDao, taskDao, localBroadcastManager) {
override fun supportsManualSorting() = true override fun supportsManualSorting() = true
@ -31,6 +37,7 @@ class GoogleTaskManualSortAdapter internal constructor(private val googleTaskDao
} }
} }
taskDao.touch(task.id) taskDao.touch(task.id)
localBroadcastManager.broadcastRefresh()
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
googleTaskDao.validateSorting(task.googleTaskList!!) googleTaskDao.validateSorting(task.googleTaskList!!)
} }

@ -8,6 +8,7 @@ package com.todoroo.astrid.adapter
import com.todoroo.astrid.dao.TaskDao import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.tasks.BuildConfig import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.data.* import org.tasks.data.*
import org.tasks.date.DateTimeUtils.toAppleEpoch import org.tasks.date.DateTimeUtils.toAppleEpoch
import java.util.* import java.util.*
@ -17,7 +18,8 @@ open class TaskAdapter(
private val newTasksOnTop: Boolean, private val newTasksOnTop: Boolean,
private val googleTaskDao: GoogleTaskDao, private val googleTaskDao: GoogleTaskDao,
private val caldavDao: CaldavDao, private val caldavDao: CaldavDao,
private val taskDao: TaskDao) { private val taskDao: TaskDao,
private val localBroadcastManager: LocalBroadcastManager) {
private val selected = HashSet<Long>() private val selected = HashSet<Long>()
private val collapsed = HashSet<Long>() private val collapsed = HashSet<Long>()
@ -255,5 +257,6 @@ open class TaskAdapter(
} }
taskDao.setParent(newParentId, null, listOf(task.id)) taskDao.setParent(newParentId, null, listOf(task.id))
taskDao.touch(task.id) taskDao.touch(task.id)
localBroadcastManager.broadcastRefresh()
} }
} }

@ -13,6 +13,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.subtasks.SubtasksFilterUpdater; import com.todoroo.astrid.subtasks.SubtasksFilterUpdater;
import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.subtasks.SubtasksHelper;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.LocalBroadcastManager;
import org.tasks.data.CaldavDao; import org.tasks.data.CaldavDao;
import org.tasks.data.GoogleTaskDao; import org.tasks.data.GoogleTaskDao;
import org.tasks.data.TagData; import org.tasks.data.TagData;
@ -30,6 +31,7 @@ public class TaskAdapterProvider {
private final GoogleTaskDao googleTaskDao; private final GoogleTaskDao googleTaskDao;
private final CaldavDao caldavDao; private final CaldavDao caldavDao;
private final SubtasksHelper subtasksHelper; private final SubtasksHelper subtasksHelper;
private final LocalBroadcastManager localBroadcastManager;
@Inject @Inject
public TaskAdapterProvider( public TaskAdapterProvider(
@ -39,7 +41,8 @@ public class TaskAdapterProvider {
TaskDao taskDao, TaskDao taskDao,
GoogleTaskDao googleTaskDao, GoogleTaskDao googleTaskDao,
CaldavDao caldavDao, CaldavDao caldavDao,
SubtasksHelper subtasksHelper) { SubtasksHelper subtasksHelper,
LocalBroadcastManager localBroadcastManager) {
this.context = context; this.context = context;
this.preferences = preferences; this.preferences = preferences;
this.taskListMetadataDao = taskListMetadataDao; this.taskListMetadataDao = taskListMetadataDao;
@ -47,6 +50,7 @@ public class TaskAdapterProvider {
this.googleTaskDao = googleTaskDao; this.googleTaskDao = googleTaskDao;
this.caldavDao = caldavDao; this.caldavDao = caldavDao;
this.subtasksHelper = subtasksHelper; this.subtasksHelper = subtasksHelper;
this.localBroadcastManager = localBroadcastManager;
} }
public TaskAdapter createTaskAdapter(Filter filter) { public TaskAdapter createTaskAdapter(Filter filter) {
@ -54,14 +58,14 @@ public class TaskAdapterProvider {
if (filter instanceof TagFilter) { if (filter instanceof TagFilter) {
return createManualTagTaskAdapter((TagFilter) filter); return createManualTagTaskAdapter((TagFilter) filter);
} else if (filter instanceof GtasksFilter) { } else if (filter instanceof GtasksFilter) {
return new GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao); return new GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} else if (filter instanceof CaldavFilter) { } else if (filter instanceof CaldavFilter) {
return new CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao); return new CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} else if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) { } else if (subtasksHelper.shouldUseSubtasksFragmentForFilter(filter)) {
return createManualFilterTaskAdapter(filter); return createManualFilterTaskAdapter(filter);
} }
} }
return new TaskAdapter(preferences.addTasksToTop(), googleTaskDao, caldavDao, taskDao); return new TaskAdapter(preferences.addTasksToTop(), googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} }
private TaskAdapter createManualTagTaskAdapter(TagFilter filter) { private TaskAdapter createManualTagTaskAdapter(TagFilter filter) {
@ -75,7 +79,7 @@ public class TaskAdapterProvider {
} }
SubtasksFilterUpdater updater = new SubtasksFilterUpdater(taskListMetadataDao, taskDao); SubtasksFilterUpdater updater = new SubtasksFilterUpdater(taskListMetadataDao, taskDao);
updater.initialize(list, filter); updater.initialize(list, filter);
return new AstridTaskAdapter(list, filter, updater, googleTaskDao, caldavDao, taskDao); return new AstridTaskAdapter(list, filter, updater, googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} }
private TaskAdapter createManualFilterTaskAdapter(Filter filter) { private TaskAdapter createManualFilterTaskAdapter(Filter filter) {
@ -105,6 +109,6 @@ public class TaskAdapterProvider {
} }
SubtasksFilterUpdater updater = new SubtasksFilterUpdater(taskListMetadataDao, taskDao); SubtasksFilterUpdater updater = new SubtasksFilterUpdater(taskListMetadataDao, taskDao);
updater.initialize(list, filter); updater.initialize(list, filter);
return new AstridTaskAdapter(list, filter, updater, googleTaskDao, caldavDao, taskDao); return new AstridTaskAdapter(list, filter, updater, googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} }
} }

@ -347,7 +347,8 @@ class Task : Parcelable {
&& dueDate == original.dueDate && dueDate == original.dueDate
&& completionDate == original.completionDate && completionDate == original.completionDate
&& deletionDate == original.deletionDate && deletionDate == original.deletionDate
&& parent == original.parent && notes == original.notes && parent == original.parent
&& notes == original.notes
} }
fun caldavUpToDate(original: Task?): Boolean { fun caldavUpToDate(original: Task?): Boolean {
@ -363,7 +364,8 @@ class Task : Parcelable {
&& deletionDate == original.deletionDate && deletionDate == original.deletionDate
&& notes == original.notes && notes == original.notes
&& recurrence == original.recurrence && recurrence == original.recurrence
&& parent == original.parent && repeatUntil == original.repeatUntil && parent == original.parent
&& repeatUntil == original.repeatUntil
} }
val isSaved: Boolean val isSaved: Boolean

Loading…
Cancel
Save