Show start dates as chips

pull/1291/head
Alex Baker 3 years ago
parent 56d45f490d
commit 8cb71ac2f1

@ -54,6 +54,10 @@ public class TaskContainer {
return task.isHidden();
}
public long getStartDate() {
return task.getHideUntil();
}
public boolean isCompleted() {
return task.isCompleted();
}

@ -456,6 +456,9 @@ class Preferences @JvmOverloads constructor(
val showSubtaskChip: Boolean
get() = getBoolean(R.string.p_subtask_chips, true)
val showStartDateChip: Boolean
get() = getBoolean(R.string.p_start_date_chip, true)
val showPlaceChip: Boolean
get() = getBoolean(R.string.p_place_chips, true)

@ -83,6 +83,7 @@ class ScrollableWidget : InjectingPreferenceFragment() {
setupCheckbox(R.string.p_widget_show_checkboxes)
setupCheckbox(R.string.p_widget_show_dividers)
setupCheckbox(R.string.p_widget_show_subtasks)
setupCheckbox(R.string.p_widget_show_start_dates)
setupCheckbox(R.string.p_widget_show_places)
setupCheckbox(R.string.p_widget_show_lists)
setupCheckbox(R.string.p_widget_show_tags)

@ -67,9 +67,6 @@ class TaskViewHolder internal constructor(
@BindView(R.id.chip_group)
lateinit var chipGroup: ChipGroup
@BindView(R.id.hidden_icon)
lateinit var hiddenIcon: View
lateinit var task: TaskContainer
var indent = 0
@ -139,7 +136,6 @@ class TaskViewHolder internal constructor(
this.task = task
indent = task.indent
nameView.text = task.title
hiddenIcon.visibility = if (task.isHidden) View.VISIBLE else View.GONE
setupTitleAndCheckbox()
setupDueDate(sortByDueDate)
setupChips(filter)
@ -271,7 +267,7 @@ class TaskViewHolder internal constructor(
description.isSingleLine = false
description.ellipsize = null
}
setTopPadding(rowPadding, nameView, completeBox, dueDate, hiddenIcon)
setTopPadding(rowPadding, nameView, completeBox, dueDate)
setBottomPadding(rowPadding, completeBox, dueDate)
nameView.textSize = fontSize.toFloat()
description.textSize = fontSize.toFloat()

@ -6,6 +6,7 @@ import androidx.annotation.DrawableRes
import androidx.core.content.res.ResourcesCompat
import com.google.android.material.chip.Chip
import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter
@ -21,6 +22,7 @@ import org.tasks.preferences.Preferences
import org.tasks.themes.ColorProvider
import org.tasks.themes.CustomIcons.getIconResId
import org.tasks.themes.ThemeColor
import java.time.format.FormatStyle
import java.util.*
import javax.inject.Inject
@ -46,6 +48,26 @@ class ChipProvider @Inject constructor(
showIcon = appearance != 1
}
private fun newStartDateChip(task: TaskContainer, compact: Boolean): Chip {
val chip = newChip(task)
apply(
chip,
R.drawable.ic_pending_actions_24px,
DateUtilities.getRelativeDateTime(
activity,
task.startDate,
locale.locale,
if (compact) FormatStyle.SHORT else FormatStyle.MEDIUM,
false,
false
),
0,
showText = true,
showIcon = true
)
return chip
}
fun newSubtaskChip(task: TaskContainer, compact: Boolean): Chip {
val chip = newChip(task)
apply(
@ -66,6 +88,9 @@ class ChipProvider @Inject constructor(
if (task.hasChildren() && preferences.showSubtaskChip) {
chips.add(newSubtaskChip(task, !showText))
}
if (task.isHidden && preferences.showStartDateChip) {
chips.add(newStartDateChip(task, !showText))
}
if (task.hasLocation() && filter !is PlaceFilter && preferences.showPlaceChip) {
val location = task.getLocation()
newChip(PlaceFilter(location.place), R.drawable.ic_outline_place_24px)?.let(chips::add)

@ -2,6 +2,7 @@ package org.tasks.widget
import android.content.Context
import android.widget.RemoteViews
import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.api.CaldavFilter
import com.todoroo.astrid.api.Filter
import com.todoroo.astrid.api.GtasksFilter
@ -11,13 +12,18 @@ import org.tasks.BuildConfig
import org.tasks.R
import org.tasks.data.TaskContainer
import org.tasks.filters.PlaceFilter
import org.tasks.locale.Locale
import org.tasks.preferences.Preferences
import org.tasks.themes.CustomIcons
import org.tasks.ui.ChipListCache
import java.time.format.FormatStyle
import javax.inject.Inject
class ChipProvider @Inject constructor(
@ApplicationContext private val context: Context,
private val chipListCache: ChipListCache,
private val locale: Locale,
private val preferences: Preferences,
) {
var isDark = false
@ -41,6 +47,27 @@ class ChipProvider @Inject constructor(
return chip
}
fun getStartDateChip(task: TaskContainer, showFullDate: 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
)
)
chip.setImageViewResource(R.id.chip_icon, R.drawable.ic_pending_actions_24px)
chip
} else {
null
}
}
fun getListChip(filter: Filter?, task: TaskContainer): RemoteViews? {
task.googleTaskList
?.takeIf { filter !is GtasksFilter }

@ -64,6 +64,7 @@ internal class ScrollableViewsFactory(
private var showDividers = false
private var disableGroups = false
private var showSubtasks = false
private var showStartDates = false
private var showPlaces = false
private var showLists = false
private var showTags = false
@ -199,9 +200,6 @@ internal class ScrollableViewsFactory(
val row = newRemoteView()
if (task.isHidden) {
textColorTitle = textColorSecondary
row.setViewVisibility(R.id.hidden_icon, View.VISIBLE)
} else {
row.setViewVisibility(R.id.hidden_icon, View.GONE)
}
if (task.isCompleted) {
textColorTitle = textColorSecondary
@ -267,6 +265,11 @@ internal class ScrollableViewsFactory(
.putExtra(WidgetClickActivity.EXTRA_COLLAPSED, !taskContainer.isCollapsed)
)
}
if (taskContainer.isHidden && showStartDates) {
chipProvider
.getStartDateChip(taskContainer, showFullDate)
?.let { row.addView(R.id.chips, it) }
}
if (taskContainer.hasLocation() && showPlaces) {
chipProvider
.getPlaceChip(filter, taskContainer)
@ -367,6 +370,7 @@ internal class ScrollableViewsFactory(
} == true
showPlaces = widgetPreferences.showPlaces()
showSubtasks = widgetPreferences.showSubtasks()
showStartDates = widgetPreferences.showStartDates()
showLists = widgetPreferences.showLists()
showTags = widgetPreferences.showTags()
showFullDate = widgetPreferences.alwaysDisplayFullDate

@ -60,6 +60,10 @@ public class WidgetPreferences implements QueryPreferences {
return getBoolean(R.string.p_widget_show_subtasks, true);
}
boolean showStartDates() {
return getBoolean(R.string.p_widget_show_start_dates, true);
}
boolean disableGroups() {
return getBoolean(R.string.p_widget_disable_groups, false);
}

@ -44,22 +44,11 @@
android:textSize="14sp"
tools:text="Tmrrw" />
<ImageView
android:id="@+id/hidden_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/completeBox"
android:paddingEnd="2dp"
android:paddingStart="0dp"
android:src="@drawable/ic_outline_visibility_off_24px"
app:tint="@color/icon_tint_with_alpha"
android:contentDescription="@string/widget_due_date_hidden" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/hidden_icon"
android:layout_toEndOf="@id/completeBox"
android:layout_toStartOf="@id/due_date"
android:paddingStart="0dp"
android:paddingEnd="@dimen/half_keyline_first"

@ -44,23 +44,9 @@
tools:paddingEnd="@dimen/widget_padding"
tools:textColor="@color/white_60"/>
<ImageView
android:id="@+id/hidden_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/widget_complete_box"
android:layout_below="@id/top_padding"
android:paddingStart="0dp"
android:paddingEnd="2dp"
android:visibility="gone"
android:src="@drawable/ic_outline_visibility_off_24px"
android:tint="@color/icon_tint_dark_alpha"
tools:visibility="visible"
tools:ignore="UseAppTint" />
<TextView
android:id="@+id/widget_text"
android:layout_toEndOf="@id/hidden_icon"
android:layout_toEndOf="@id/widget_complete_box"
android:layout_toStartOf="@id/widget_due_end"
android:layout_below="@id/top_padding"
android:layout_width="match_parent"

@ -43,22 +43,9 @@
tools:paddingEnd="@dimen/widget_padding"
tools:textColor="@color/black_60"/>
<ImageView
android:id="@+id/hidden_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/widget_complete_box"
android:layout_below="@id/top_padding"
android:paddingStart="0dp"
android:paddingEnd="2dp"
android:visibility="gone"
android:src="@drawable/ic_outline_visibility_off_24px"
android:alpha="@dimen/alpha_disabled"
tools:visibility="visible"/>
<TextView
android:id="@+id/widget_text"
android:layout_toEndOf="@id/hidden_icon"
android:layout_toEndOf="@id/widget_complete_box"
android:layout_toStartOf="@id/widget_due_end"
android:layout_below="@id/top_padding"
android:layout_width="match_parent"

@ -350,6 +350,7 @@
<string name="p_widget_show_full_task_title">widget-show-full-task-title-</string>
<string name="p_widget_show_dividers">widget-show-dividers-</string>
<string name="p_widget_show_subtasks">widget-show-subtasks-</string>
<string name="p_widget_show_start_dates">widget-show-start-dates-</string>
<string name="p_widget_disable_groups">widget-disable_groups-</string>
<string name="p_widget_show_places">widget-show-places-</string>
<string name="p_widget_show_lists">widget-show-lists-</string>
@ -414,6 +415,7 @@
<string name="p_chip_style">chip_style</string>
<string name="p_chip_appearance">chip_appearance</string>
<string name="p_subtask_chips">chips_subtask</string>
<string name="p_start_date_chip">chips_start_date</string>
<string name="p_place_chips">chips_place</string>
<string name="p_list_chips">chips_list</string>
<string name="p_tag_chips">chips_tag</string>

@ -59,6 +59,7 @@ File %1$s contained %2$s.\n\n
<string name="TEA_no_time">No time</string>
<string name="due_date">Due date</string>
<string name="due_time">Due time</string>
<string name="start_date">Start date</string>
<string name="day_before_due">Day before due</string>
<string name="week_before_due">Week before due</string>
<string name="TEA_hideUntil_due_date" comment="Used for displaying the chosen hide until value in the task edit screen. Should be the same as due_date, just without capitalization.">due date</string>

@ -130,6 +130,11 @@
android:key="@string/p_subtask_chips"
android:title="@string/subtasks" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="@string/p_start_date_chip"
android:title="@string/start_date" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="@string/p_place_chips"

@ -158,6 +158,11 @@
android:key="@string/p_widget_show_subtasks"
android:title="@string/subtasks" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="@string/p_widget_show_start_dates"
android:title="@string/start_date" />
<SwitchPreferenceCompat
android:defaultValue="true"
android:key="@string/p_widget_show_places"

Loading…
Cancel
Save