diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.kt b/app/src/main/java/org/tasks/ui/ChipProvider.kt index 4e36a017d..d760b6947 100644 --- a/app/src/main/java/org/tasks/ui/ChipProvider.kt +++ b/app/src/main/java/org/tasks/ui/ChipProvider.kt @@ -24,6 +24,7 @@ import org.tasks.preferences.Preferences import org.tasks.themes.ColorProvider import org.tasks.themes.CustomIcons.getIconResId import org.tasks.themes.ThemeColor +import org.tasks.time.DateTimeUtils.startOfDay import java.time.format.FormatStyle import java.util.* import javax.inject.Inject @@ -52,10 +53,13 @@ class ChipProvider @Inject constructor( private fun newStartDateChip(task: TaskContainer, compact: Boolean, timeOnly: Boolean): Chip? { val chip = newChip(task) - val text = if (timeOnly) { + val text = if (timeOnly + && task.sortGroup?.startOfDay() == task.startDate.startOfDay() + && preferences.showGroupHeaders() + ) { task.startDate .takeIf { Task.hasDueTime(it) } - ?.let { DateUtilities.getTimeString(activity, task.startDate.toDateTime()) } + ?.let { DateUtilities.getTimeString(activity, it.toDateTime()) } ?: return null } else { DateUtilities.getRelativeDateTime( diff --git a/app/src/main/java/org/tasks/widget/ChipProvider.kt b/app/src/main/java/org/tasks/widget/ChipProvider.kt index 8875b0053..e9f628eb3 100644 --- a/app/src/main/java/org/tasks/widget/ChipProvider.kt +++ b/app/src/main/java/org/tasks/widget/ChipProvider.kt @@ -7,14 +7,17 @@ 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.data.Task import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.BuildConfig import org.tasks.R import org.tasks.data.TaskContainer +import org.tasks.date.DateTimeUtils.toDateTime import org.tasks.filters.PlaceFilter import org.tasks.locale.Locale import org.tasks.preferences.Preferences import org.tasks.themes.CustomIcons +import org.tasks.time.DateTimeUtils.startOfDay import org.tasks.ui.ChipListCache import java.time.format.FormatStyle import javax.inject.Inject @@ -47,20 +50,25 @@ class ChipProvider @Inject constructor( return chip } - fun getStartDateChip(task: TaskContainer, showFullDate: Boolean): RemoteViews? { + fun getStartDateChip(task: TaskContainer, showFullDate: Boolean, sortByStartDate: Boolean): RemoteViews? { return if (task.isHidden) { val chip = newChip() - chip.setTextViewText( - R.id.chip_text, - DateUtilities.getRelativeDateTime( - context, - task.startDate, - locale.locale, - FormatStyle.MEDIUM, - showFullDate, - false - ) - ) + val time = if (sortByStartDate && task.sortGroup?.startOfDay() == task.startDate.startOfDay()) { + task.startDate + .takeIf { Task.hasDueTime(it) } + ?.let { DateUtilities.getTimeString(context, it.toDateTime()) } + ?: return null + } else { + DateUtilities.getRelativeDateTime( + context, + task.startDate, + locale.locale, + FormatStyle.MEDIUM, + showFullDate, + false + ) + } + chip.setTextViewText(R.id.chip_text, time) chip.setImageViewResource(R.id.chip_icon, R.drawable.ic_pending_actions_24px) chip } else { diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt index 238a1c028..b8e060396 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt @@ -270,8 +270,9 @@ internal class ScrollableViewsFactory( ) } if (taskContainer.isHidden && showStartDates) { + val sortByDate = sortMode == SortHelper.SORT_START && !disableGroups chipProvider - .getStartDateChip(taskContainer, showFullDate) + .getStartDateChip(taskContainer, showFullDate, sortByDate) ?.let { row.addView(R.id.chips, it) } } if (taskContainer.hasLocation() && showPlaces) { @@ -320,8 +321,7 @@ internal class ScrollableViewsFactory( row.setViewPadding(R.id.widget_due_end, hPad, vPad, hPad, vPad) } row.setViewVisibility(dueDateRes, View.VISIBLE) - val text = if (filter?.supportsSorting() == true - && sortMode == SortHelper.SORT_DUE + val text = if (sortMode == SortHelper.SORT_DUE && !disableGroups && task.sortGroup?.startOfDay() == task.dueDate.startOfDay()) { task.takeIf { it.hasDueTime() }?.let {