From 1f8a20c74545e50a377fb05547ec8f01ac9e9d57 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Fri, 25 Sep 2020 08:08:41 -0500 Subject: [PATCH] Display place chips on widget --- .../org/tasks/preferences/fragments/ScrollableWidget.kt | 1 + app/src/main/java/org/tasks/widget/ChipProvider.kt | 8 ++++++++ .../main/java/org/tasks/widget/ScrollableViewsFactory.kt | 7 +++++++ app/src/main/java/org/tasks/widget/WidgetPreferences.java | 4 ++++ app/src/main/res/values/keys.xml | 1 + app/src/main/res/xml/preferences_widget.xml | 5 +++++ 6 files changed, 26 insertions(+) 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 d48c0ed9c..20801aebc 100644 --- a/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt +++ b/app/src/main/java/org/tasks/preferences/fragments/ScrollableWidget.kt @@ -79,6 +79,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_places) setupCheckbox(R.string.p_widget_show_lists) setupCheckbox(R.string.p_widget_show_full_task_title, false) val showDescription = setupCheckbox(R.string.p_widget_show_description, true) diff --git a/app/src/main/java/org/tasks/widget/ChipProvider.kt b/app/src/main/java/org/tasks/widget/ChipProvider.kt index db1c0c6e8..aa9f02b15 100644 --- a/app/src/main/java/org/tasks/widget/ChipProvider.kt +++ b/app/src/main/java/org/tasks/widget/ChipProvider.kt @@ -9,6 +9,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext import org.tasks.BuildConfig import org.tasks.R import org.tasks.data.TaskContainer +import org.tasks.filters.PlaceFilter import org.tasks.themes.CustomIcons import org.tasks.ui.ChipListCache import javax.inject.Inject @@ -51,6 +52,13 @@ class ChipProvider @Inject constructor( return null } + fun getPlaceChip(filter: Filter?, task: TaskContainer): RemoteViews? { + task.location + ?.takeIf { filter !is PlaceFilter || it.place != filter.place} + ?.let { return newChip(PlaceFilter(it.place), R.drawable.ic_outline_place_24px) } + return null + } + 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 8b5616d55..cf56ad77b 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt @@ -56,6 +56,7 @@ internal class ScrollableViewsFactory( private var handleDueDateClick = false private var showDividers = false private var showSubtasks = false + private var showPlaces = false private var showLists = false private var isRtl = false private var tasks: List = ArrayList() @@ -181,6 +182,11 @@ internal class ScrollableViewsFactory( .putExtra(WidgetClickActivity.EXTRA_COLLAPSED, !taskContainer.isCollapsed) ) } + if (taskContainer.hasLocation() && showPlaces) { + chipProvider + .getPlaceChip(filter, taskContainer) + ?.let { row.addView(R.id.chips, it) } + } if (!taskContainer.hasParent() && showLists) { chipProvider .getListChip(filter, taskContainer) @@ -259,6 +265,7 @@ internal class ScrollableViewsFactory( dueDateTextSize = max(10f, textSize - 2) filter = defaultFilterProvider.getFilterFromPreference(widgetPreferences.filterId) showDividers = widgetPreferences.showDividers() + showPlaces = widgetPreferences.showPlaces() showSubtasks = widgetPreferences.showSubtasks() showLists = widgetPreferences.showLists() 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 e57237f07..9e8a36b2a 100644 --- a/app/src/main/java/org/tasks/widget/WidgetPreferences.java +++ b/app/src/main/java/org/tasks/widget/WidgetPreferences.java @@ -53,6 +53,10 @@ public class WidgetPreferences { return getBoolean(R.string.p_widget_show_subtasks, true); } + boolean showPlaces() { + return getBoolean(R.string.p_widget_show_places, true); + } + boolean showLists() { return getBoolean(R.string.p_widget_show_lists, true); } diff --git a/app/src/main/res/values/keys.xml b/app/src/main/res/values/keys.xml index aa1bd6529..3017e368c 100644 --- a/app/src/main/res/values/keys.xml +++ b/app/src/main/res/values/keys.xml @@ -306,6 +306,7 @@ widget-show-full-task-title- widget-show-dividers- widget-show-subtasks- + widget-show-places- widget-show-lists- widget-show-description- widget-show-full-description- diff --git a/app/src/main/res/xml/preferences_widget.xml b/app/src/main/res/xml/preferences_widget.xml index 62354dc1b..2fe1423ca 100644 --- a/app/src/main/res/xml/preferences_widget.xml +++ b/app/src/main/res/xml/preferences_widget.xml @@ -133,6 +133,11 @@ android:key="@string/p_widget_show_subtasks" android:title="@string/subtasks" /> + +