diff --git a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt index 20801aebc..82381f7fb 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt @@ -81,6 +81,7 @@ class ScrollableWidget : InjectingPreferenceFragment() { setupCheckbox(R.string.p_widget_show_subtasks) setupCheckbox(R.string.p_widget_show_places) setupCheckbox(R.string.p_widget_show_lists) + setupCheckbox(R.string.p_widget_show_tags) setupCheckbox(R.string.p_widget_show_full_task_title, false) val showDescription = setupCheckbox(R.string.p_widget_show_description, true) setupCheckbox(R.string.p_widget_show_full_description, false).dependency = showDescription.key diff --git a/app/src/main/java/org/tasks/widget/ChipProvider.kt b/app/src/main/java/org/tasks/widget/ChipProvider.kt index aa9f02b15..246d268ce 100644 --- a/app/src/main/java/org/tasks/widget/ChipProvider.kt +++ b/app/src/main/java/org/tasks/widget/ChipProvider.kt @@ -5,6 +5,7 @@ import android.widget.RemoteViews 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 dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.BuildConfig import org.tasks.R @@ -59,6 +60,17 @@ class ChipProvider @Inject constructor( return null } + fun getTagChips(filter: Filter?, task: TaskContainer): List { + val tags = task.tags?.split(",")?.toHashSet() ?: return emptyList() + if (filter is TagFilter) { + tags.remove(filter.uuid) + } + return tags + .mapNotNull(chipListCache::getTag) + .sortedBy(TagFilter::listingTitle) + .mapNotNull { newChip(it, R.drawable.ic_outline_label_24px) } + } + private fun newChip(filter: Filter?, defaultIcon: Int): RemoteViews? { if (filter == null) { return null diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt index cf56ad77b..d49c95ed1 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt @@ -58,6 +58,7 @@ internal class ScrollableViewsFactory( private var showSubtasks = false private var showPlaces = false private var showLists = false + private var showTags = false private var isRtl = false private var tasks: List = ArrayList() override fun onCreate() {} @@ -192,6 +193,11 @@ internal class ScrollableViewsFactory( .getListChip(filter, taskContainer) ?.let { row.addView(R.id.chips, it) } } + if (showTags && taskContainer.tags?.isNotBlank() == true) { + chipProvider + .getTagChips(filter, taskContainer) + .forEach { row.addView(R.id.chips, it) } + } row.setInt(R.id.widget_row, "setLayoutDirection", locale.directionality) val startPad = taskContainer.getIndent() * indentPadding row.setViewPadding(R.id.widget_row, if (isRtl) 0 else startPad, 0, if (isRtl) startPad else 0, 0) @@ -268,6 +274,7 @@ internal class ScrollableViewsFactory( showPlaces = widgetPreferences.showPlaces() showSubtasks = widgetPreferences.showSubtasks() showLists = widgetPreferences.showLists() + showTags = widgetPreferences.showTags() isRtl = locale.directionality == View.LAYOUT_DIRECTION_RTL } diff --git a/app/src/main/java/org/tasks/widget/WidgetPreferences.java b/app/src/main/java/org/tasks/widget/WidgetPreferences.java index 9e8a36b2a..8bf6c3536 100644 --- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java +++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java @@ -61,6 +61,10 @@ public class WidgetPreferences { return getBoolean(R.string.p_widget_show_lists, true); } + boolean showTags() { + return getBoolean(R.string.p_widget_show_tags, true); + } + public int getDueDatePosition() { return getIntegerFromString(R.string.p_widget_due_date_position, 0); } diff --git a/app/src/main/res/layout/widget_row_dark.xml b/app/src/main/res/layout/widget_row_dark.xml index cbadee05f..762543849 100644 --- a/app/src/main/res/layout/widget_row_dark.xml +++ b/app/src/main/res/layout/widget_row_dark.xml @@ -105,12 +105,14 @@ tools:text="Tomorrow" tools:textColor="@color/white_60"/> - - widget-show-subtasks- widget-show-places- widget-show-lists- + widget-show-tags- widget-show-description- widget-show-full-description- widget-show-checkboxes- diff --git a/app/src/main/res/xml/preferences_widget.xml b/app/src/main/res/xml/preferences_widget.xml index 2fe1423ca..d5d0a01fa 100644 --- a/app/src/main/res/xml/preferences_widget.xml +++ b/app/src/main/res/xml/preferences_widget.xml @@ -143,6 +143,11 @@ android:key="@string/p_widget_show_lists" android:title="@string/lists" /> + +