Fix due time display issues

* Fix due date and time on recently modified
* Fix due date for subtasks
pull/1157/head
Alex Baker 5 years ago
parent f3000d8b82
commit a71aa2b22c

@ -6,6 +6,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.todoroo.astrid.activity.TaskListFragment import com.todoroo.astrid.activity.TaskListFragment
import com.todoroo.astrid.adapter.TaskAdapter import com.todoroo.astrid.adapter.TaskAdapter
import com.todoroo.astrid.adapter.TaskAdapterDataSource import com.todoroo.astrid.adapter.TaskAdapterDataSource
import com.todoroo.astrid.core.SortHelper.SORT_DUE
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
@ -20,10 +21,14 @@ abstract class TaskListRecyclerAdapter internal constructor(
= viewHolderFactory.newViewHolder(parent, taskList) = viewHolderFactory.newViewHolder(parent, taskList)
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val sortMode = preferences.sortMode val filter = taskList.getFilter()
val sortByDueDate = filter.supportsSorting()
&& preferences.sortMode == SORT_DUE
&& !(filter.supportsManualSort() && preferences.isManualSort)
&& !(filter.supportsAstridSorting() && preferences.isAstridSort)
val task = getItem(position) val task = getItem(position)
if (task != null) { if (task != null) {
(holder as TaskViewHolder).bindView(task, taskList.getFilter(), sortMode) (holder as TaskViewHolder).bindView(task, filter, sortByDueDate)
holder.moving = false holder.moving = false
val indent = adapter.getIndent(task) val indent = adapter.getIndent(task)
task.setIndent(indent) task.setIndent(indent)

@ -15,13 +15,13 @@ import butterknife.OnLongClick
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.Filter import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.core.SortHelper
import com.todoroo.astrid.ui.CheckableImageView import com.todoroo.astrid.ui.CheckableImageView
import org.tasks.R import org.tasks.R
import org.tasks.data.TaskContainer import org.tasks.data.TaskContainer
import org.tasks.date.DateTimeUtils.newDateTime import org.tasks.date.DateTimeUtils.newDateTime
import org.tasks.dialogs.Linkify import org.tasks.dialogs.Linkify
import org.tasks.preferences.Preferences import org.tasks.preferences.Preferences
import org.tasks.time.DateTimeUtils.startOfDay
import org.tasks.ui.CheckBoxProvider import org.tasks.ui.CheckBoxProvider
import org.tasks.ui.ChipProvider import org.tasks.ui.ChipProvider
import java.time.format.FormatStyle import java.time.format.FormatStyle
@ -135,13 +135,13 @@ class TaskViewHolder internal constructor(
private fun getIndentSize(indent: Int) = (indent * shiftSize).roundToInt() private fun getIndentSize(indent: Int) = (indent * shiftSize).roundToInt()
fun bindView(task: TaskContainer, filter: Filter, sortMode: Int) { fun bindView(task: TaskContainer, filter: Filter, sortByDueDate: Boolean) {
this.task = task this.task = task
indent = task.indent indent = task.indent
nameView.text = task.title nameView.text = task.title
hiddenIcon.visibility = if (task.isHidden) View.VISIBLE else View.GONE hiddenIcon.visibility = if (task.isHidden) View.VISIBLE else View.GONE
setupTitleAndCheckbox() setupTitleAndCheckbox()
setupDueDate(sortMode) setupDueDate(sortByDueDate)
setupChips(filter) setupChips(filter)
if (preferences.getBoolean(R.string.p_show_description, true)) { if (preferences.getBoolean(R.string.p_show_description, true)) {
description.text = task.notes description.text = task.notes
@ -182,15 +182,19 @@ class TaskViewHolder internal constructor(
completeBox.invalidate() completeBox.invalidate()
} }
private fun setupDueDate(sortMode: Int) { private fun setupDueDate(sortByDueDate: Boolean) {
if (task.hasDueDate()) { if (task.hasDueDate()) {
if (task.isOverdue) { if (task.isOverdue) {
dueDate.setTextColor(textColorOverdue) dueDate.setTextColor(textColorOverdue)
} else { } else {
dueDate.setTextColor(textColorSecondary) dueDate.setTextColor(textColorSecondary)
} }
val dateValue: String? = if (sortMode == SortHelper.SORT_DUE && task.sortGroup != null && preferences.showGroupHeaders()) { val dateValue: String? = if (sortByDueDate
if (task.hasDueTime()) DateUtilities.getTimeString(context, newDateTime(task.dueDate)) else null && task.sortGroup?.startOfDay() == task.dueDate.startOfDay()
&& preferences.showGroupHeaders()) {
task.takeIf { it.hasDueTime() }?.let {
DateUtilities.getTimeString(context, newDateTime(task.dueDate))
}
} else { } else {
DateUtilities.getRelativeDateTime(context, task.dueDate, locale, FormatStyle.MEDIUM) DateUtilities.getRelativeDateTime(context, task.dueDate, locale, FormatStyle.MEDIUM)
} }

Loading…
Cancel
Save