From f3000d8b824a68db318dff1ad483767662b3efdd Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Wed, 30 Sep 2020 12:44:08 -0500 Subject: [PATCH] Hide widget due dates when sorting by due date --- .../tasks/widget/ScrollableViewsFactory.kt | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt index c6cfd28e1..223292e24 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt @@ -27,6 +27,7 @@ import org.tasks.locale.Locale import org.tasks.preferences.DefaultFilterProvider import org.tasks.preferences.Preferences import org.tasks.tasklist.SectionedDataSource +import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.ui.CheckBoxProvider import timber.log.Timber import java.time.format.FormatStyle @@ -223,7 +224,7 @@ internal class ScrollableViewsFactory( } row.setFloat(R.id.widget_text, "setTextSize", textSize) if (showDueDates) { - formatDueDate(row, task) + formatDueDate(row, taskContainer) } else { row.setViewVisibility(R.id.widget_due_bottom, View.GONE) row.setViewVisibility(R.id.widget_due_end, View.GONE) @@ -312,7 +313,7 @@ internal class ScrollableViewsFactory( return queries } - private fun formatDueDate(row: RemoteViews, task: Task) { + private fun formatDueDate(row: RemoteViews, task: TaskContainer) { val dueDateRes = if (endDueDate) R.id.widget_due_end else R.id.widget_due_bottom row.setViewVisibility(if (endDueDate) R.id.widget_due_bottom else R.id.widget_due_end, View.GONE) val hasDueDate = task.hasDueDate() @@ -323,10 +324,18 @@ internal class ScrollableViewsFactory( row.setViewPadding(R.id.widget_due_end, hPad, vPad, hPad, vPad) } row.setViewVisibility(dueDateRes, View.VISIBLE) - row.setTextViewText( - dueDateRes, - DateUtilities.getRelativeDateTime( - context, task.dueDate, locale.locale, FormatStyle.MEDIUM)) + val text = if (filter?.supportsSorting() == true + && sortMode == SortHelper.SORT_DUE + && !disableGroups + && task.sortGroup?.startOfDay() == task.dueDate.startOfDay()) { + task.takeIf { it.hasDueTime() }?.let { + DateUtilities.getTimeString(context, DateTimeUtils.newDateTime(task.dueDate)) + } + } else { + DateUtilities.getRelativeDateTime( + context, task.dueDate, locale.locale, FormatStyle.MEDIUM) + } + row.setTextViewText(dueDateRes, text) row.setTextColor( dueDateRes, if (task.isOverdue) context.getColor(R.color.overdue) else textColorSecondary) @@ -335,7 +344,7 @@ internal class ScrollableViewsFactory( row.setOnClickFillInIntent( dueDateRes, Intent(WidgetClickActivity.RESCHEDULE_TASK) - .putExtra(WidgetClickActivity.EXTRA_TASK, task)) + .putExtra(WidgetClickActivity.EXTRA_TASK, task.task)) } else { row.setInt(dueDateRes, "setBackgroundResource", 0) } @@ -362,7 +371,11 @@ internal class ScrollableViewsFactory( dueDateTextSize = max(10f, textSize - 2) filter = defaultFilterProvider.getFilterFromPreference(widgetPreferences.filterId) showDividers = widgetPreferences.showDividers() - disableGroups = widgetPreferences.disableGroups() + disableGroups = widgetPreferences.disableGroups() || filter?.let { + !it.supportsSorting() + || (it.supportsManualSort() && preferences.isManualSort) + || (it.supportsAstridSorting() && preferences.isAstridSort) + } == true showPlaces = widgetPreferences.showPlaces() showSubtasks = widgetPreferences.showSubtasks() showLists = widgetPreferences.showLists()