diff --git a/app/src/main/java/org/tasks/tasklist/SectionedDataSource.kt b/app/src/main/java/org/tasks/tasklist/SectionedDataSource.kt index 95b0af6d9..97fd6ed43 100644 --- a/app/src/main/java/org/tasks/tasklist/SectionedDataSource.kt +++ b/app/src/main/java/org/tasks/tasklist/SectionedDataSource.kt @@ -1,6 +1,7 @@ package org.tasks.tasklist import android.util.SparseArray +import androidx.core.util.forEach import com.todoroo.astrid.core.SortHelper import org.tasks.data.TaskContainer import org.tasks.date.DateTimeUtils @@ -118,4 +119,10 @@ class SectionedDataSource constructor( } else { getNearestHeader(sectionedPosition - 1) } + + fun getSectionValues(): List { + val values = ArrayList() + sections.forEach { _, header -> values.add(header.value) } + return values + } } \ No newline at end of file diff --git a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt index 91d862b7f..9b6b68f20 100644 --- a/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt +++ b/app/src/main/java/org/tasks/widget/ScrollableViewsFactory.kt @@ -68,6 +68,8 @@ internal class ScrollableViewsFactory( private var collapsed = HashSet() private var sortMode = -1 private var tasks = SectionedDataSource(emptyList(), false, 0, collapsed) + private val widgetPreferences = WidgetPreferences(context, preferences, widgetId) + override fun onCreate() {} override fun onDataSetChanged() { @@ -79,6 +81,9 @@ internal class ScrollableViewsFactory( sortMode, collapsed ) + if (collapsed.retainAll(tasks.getSectionValues())) { + widgetPreferences.collapsed = collapsed + } } } @@ -326,7 +331,6 @@ internal class ScrollableViewsFactory( } private suspend fun updateSettings() { - val widgetPreferences = WidgetPreferences(context, preferences, widgetId) vPad = widgetPreferences.widgetSpacing hPad = context.resources.getDimension(R.dimen.widget_padding).toInt() handleDueDateClick = widgetPreferences.rescheduleOnDueDateClick()