Refresh after manual sort changes

pull/996/head
Alex Baker 4 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.data.Task
import com.todoroo.astrid.subtasks.SubtasksFilterUpdater
import org.tasks.LocalBroadcastManager
import org.tasks.Strings.isNullOrEmpty
import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao
@ -20,7 +21,9 @@ class AstridTaskAdapter internal constructor(
private val updater: SubtasksFilterUpdater,
googleTaskDao: GoogleTaskDao,
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>>())
@ -50,6 +53,7 @@ class AstridTaskAdapter internal constructor(
for (i in 0 until abs(delta)) {
updater.indent(list, filter, targetTaskId, delta)
}
localBroadcastManager.broadcastRefresh()
} catch (e: Exception) {
Timber.e(e)
}

@ -1,11 +1,18 @@
package com.todoroo.astrid.adapter
import com.todoroo.astrid.dao.TaskDao
import org.tasks.LocalBroadcastManager
import org.tasks.data.CaldavDao
import org.tasks.data.GoogleTaskDao
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 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
}
caldavDao.move(task, newParent, newPosition)
taskDao.touch(task.id)
localBroadcastManager.broadcastRefresh()
}
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 org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.data.CaldavDao
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
@ -31,6 +37,7 @@ class GoogleTaskManualSortAdapter internal constructor(private val googleTaskDao
}
}
taskDao.touch(task.id)
localBroadcastManager.broadcastRefresh()
if (BuildConfig.DEBUG) {
googleTaskDao.validateSorting(task.googleTaskList!!)
}

@ -8,6 +8,7 @@ package com.todoroo.astrid.adapter
import com.todoroo.astrid.dao.TaskDao
import com.todoroo.astrid.data.Task
import org.tasks.BuildConfig
import org.tasks.LocalBroadcastManager
import org.tasks.data.*
import org.tasks.date.DateTimeUtils.toAppleEpoch
import java.util.*
@ -17,7 +18,8 @@ open class TaskAdapter(
private val newTasksOnTop: Boolean,
private val googleTaskDao: GoogleTaskDao,
private val caldavDao: CaldavDao,
private val taskDao: TaskDao) {
private val taskDao: TaskDao,
private val localBroadcastManager: LocalBroadcastManager) {
private val selected = HashSet<Long>()
private val collapsed = HashSet<Long>()
@ -255,5 +257,6 @@ open class TaskAdapter(
}
taskDao.setParent(newParentId, null, listOf(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.SubtasksHelper;
import javax.inject.Inject;
import org.tasks.LocalBroadcastManager;
import org.tasks.data.CaldavDao;
import org.tasks.data.GoogleTaskDao;
import org.tasks.data.TagData;
@ -30,6 +31,7 @@ public class TaskAdapterProvider {
private final GoogleTaskDao googleTaskDao;
private final CaldavDao caldavDao;
private final SubtasksHelper subtasksHelper;
private final LocalBroadcastManager localBroadcastManager;
@Inject
public TaskAdapterProvider(
@ -39,7 +41,8 @@ public class TaskAdapterProvider {
TaskDao taskDao,
GoogleTaskDao googleTaskDao,
CaldavDao caldavDao,
SubtasksHelper subtasksHelper) {
SubtasksHelper subtasksHelper,
LocalBroadcastManager localBroadcastManager) {
this.context = context;
this.preferences = preferences;
this.taskListMetadataDao = taskListMetadataDao;
@ -47,6 +50,7 @@ public class TaskAdapterProvider {
this.googleTaskDao = googleTaskDao;
this.caldavDao = caldavDao;
this.subtasksHelper = subtasksHelper;
this.localBroadcastManager = localBroadcastManager;
}
public TaskAdapter createTaskAdapter(Filter filter) {
@ -54,14 +58,14 @@ public class TaskAdapterProvider {
if (filter instanceof TagFilter) {
return createManualTagTaskAdapter((TagFilter) filter);
} else if (filter instanceof GtasksFilter) {
return new GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao);
return new GoogleTaskManualSortAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} else if (filter instanceof CaldavFilter) {
return new CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao);
return new CaldavManualSortTaskAdapter(googleTaskDao, caldavDao, taskDao, localBroadcastManager);
} else if (subtasksHelper.shouldUseSubtasksFragmentForFilter(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) {
@ -75,7 +79,7 @@ public class TaskAdapterProvider {
}
SubtasksFilterUpdater updater = new SubtasksFilterUpdater(taskListMetadataDao, taskDao);
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) {
@ -105,6 +109,6 @@ public class TaskAdapterProvider {
}
SubtasksFilterUpdater updater = new SubtasksFilterUpdater(taskListMetadataDao, taskDao);
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
&& completionDate == original.completionDate
&& deletionDate == original.deletionDate
&& parent == original.parent && notes == original.notes
&& parent == original.parent
&& notes == original.notes
}
fun caldavUpToDate(original: Task?): Boolean {
@ -363,7 +364,8 @@ class Task : Parcelable {
&& deletionDate == original.deletionDate
&& notes == original.notes
&& recurrence == original.recurrence
&& parent == original.parent && repeatUntil == original.repeatUntil
&& parent == original.parent
&& repeatUntil == original.repeatUntil
}
val isSaved: Boolean

Loading…
Cancel
Save