Limit widgets to 175 rows

200 rows gave me binder size warnings
pull/3891/head
Alex Baker 3 months ago
parent d1df39d12c
commit 7fa90396b3

@ -5,6 +5,7 @@ import android.content.Intent
import android.view.View
import android.widget.RemoteViews
import android.widget.RemoteViewsService.RemoteViewsFactory
import com.todoroo.andlib.utility.AndroidUtilities.atLeastAndroid16
import com.todoroo.astrid.core.SortHelper
import com.todoroo.astrid.subtasks.SubtasksHelper
import kotlinx.coroutines.runBlocking
@ -50,6 +51,7 @@ internal class TasksWidgetViewFactory(
private val markdown: Markdown,
private val headerFormatter: HeaderFormatter,
) : RemoteViewsFactory {
private val taskLimit = if (atLeastAndroid16()) 175 + 1 else Int.MAX_VALUE
private val indentPadding = (20 * context.resources.displayMetrics.density).toInt()
private val settings = widgetPreferences.getWidgetListSettings()
private val hPad = context.resources.getDimension(R.dimen.widget_padding).toInt()
@ -92,10 +94,11 @@ internal class TasksWidgetViewFactory(
Timber.d("onDestroy widgetId:$widgetId")
}
override fun getCount() = tasks.size
override fun getCount() = tasks.size.coerceAtMost(taskLimit)
override fun getViewAt(position: Int): RemoteViews? = tasks.let {
when {
position == taskLimit - 1 && it.size > taskLimit -> buildFooter()
it.isHeader(position) -> buildHeader(it.getSection(position))
position < it.size -> buildUpdate(it.getItem(position))
else -> null
@ -108,6 +111,7 @@ internal class TasksWidgetViewFactory(
override fun getItemId(position: Int) = tasks.let {
when {
position == taskLimit - 1 && it.size > taskLimit -> 0
it.isHeader(position) -> it.getSection(position).value
position < it.size -> it.getItem(position).id
else -> 0
@ -118,6 +122,18 @@ internal class TasksWidgetViewFactory(
private fun newRemoteView() = RemoteViews(BuildConfig.APPLICATION_ID, R.layout.widget_row)
private fun buildFooter(): RemoteViews {
return RemoteViews(BuildConfig.APPLICATION_ID, R.layout.widget_footer).apply {
setTextSize(R.id.widget_view_more, settings.textSize)
setTextColor(R.id.widget_view_more, onSurface)
setOnClickFillInIntent(
R.id.widget_view_more,
Intent(WidgetClickActivity.OPEN_TASK_LIST)
.putExtra(WidgetClickActivity.EXTRA_FILTER, filter)
)
}
}
private fun buildHeader(section: AdapterSection): RemoteViews {
val sortGroup = section.value
val header: String? = if (filter.supportsSorting()) {

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/widget_view_more"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="@string/widget_view_more_tasks"
android:textSize="14sp"
android:padding="8dp" />
</RelativeLayout>

@ -721,4 +721,5 @@
<string name="delete_tasks_warning">Задачата %s ще бъде премахната. Действието е необратимо!</string>
<string name="continue_without_sync">Без синхронизиране</string>
<string name="help_me_choose">Помощ в избора</string>
<string name="widget_view_more_tasks">Повече задачи</string>
</resources>

@ -743,4 +743,5 @@
<string name="sync_warning_google_tasks_title">Sobre la sincronització de Google Tasks</string>
<string name="sync_warning_google_tasks">No tots els detalls de la tasca es sincronitzen amb Google Tasks</string>
<string name="button_learn_more">Més informació</string>
<string name="widget_view_more_tasks">Mostreu més tasques</string>
</resources>

@ -743,4 +743,5 @@
<string name="help_me_choose">Pomozte mi s výběrem</string>
<string name="delete_tasks_warning">Úkol %s bude odstraněn. Tato akce je nevratná!</string>
<string name="continue_without_sync">Pokračovat bez synchronizace</string>
<string name="widget_view_more_tasks">Zobrazit další úkoly</string>
</resources>

@ -721,4 +721,5 @@
<string name="continue_without_sync">Fortsæt uden synkronisering</string>
<string name="help_me_choose">Hjælp mig med at vælge</string>
<string name="delete_tasks_warning">%s bliver slettet. Dette kan ikke fortrydes!</string>
<string name="widget_view_more_tasks">Vis flere opgaver</string>
</resources>

@ -721,4 +721,5 @@
<string name="help_me_choose">Hilf mir bei der Auswahl</string>
<string name="continue_without_sync">Weiter ohne Synchronisierung</string>
<string name="delete_tasks_warning">%s wird/werden gelöscht. Dies kann nicht rückgängig gemacht werden!</string>
<string name="widget_view_more_tasks">Mehr Aufgaben anzeigen</string>
</resources>

@ -721,4 +721,5 @@
<string name="delete_tasks_warning">Forigas %s. Ne eblas malfari tion!</string>
<string name="continue_without_sync">Daŭrigi sen sinkronigo</string>
<string name="help_me_choose">Helpu min elekti</string>
<string name="widget_view_more_tasks">Vidi pli da taskoj</string>
</resources>

@ -743,4 +743,5 @@
<string name="continue_without_sync">Continua sin sincronizar</string>
<string name="help_me_choose">Ayudame a escoger</string>
<string name="delete_tasks_warning">%s será eliminado. ¡Esto no se puede deshacer!</string>
<string name="widget_view_more_tasks">Ver más tareas</string>
</resources>

@ -721,4 +721,5 @@
<string name="continue_without_sync">Jätka ilma sünkroniseerimata</string>
<string name="help_me_choose">Aita mul valida</string>
<string name="delete_tasks_warning">%s saab olema kustutatud. Seda tegevust ei saa tagasi pöörata!</string>
<string name="widget_view_more_tasks">Vaata veel ülesandeid</string>
</resources>

@ -743,4 +743,5 @@
<string name="help_me_choose">Aidez-moi à choisir</string>
<string name="delete_tasks_warning">%s sera supprimé. Cette opération est irréversible!</string>
<string name="multiline_title_off">Appuyer sur Terminé pour enregistrer la tâche</string>
<string name="widget_view_more_tasks">Voir plus de tâches</string>
</resources>

@ -661,6 +661,7 @@
<string name="sync_warning_google_tasks_title">Acerca da sincronización de Google Task</string>
<string name="sync_warning_google_tasks">Non todos os detalles da tarefa se sincronizan con Google Tasks</string>
<string name="button_learn_more">Máis información</string>
<string name="widget_view_more_tasks">Ver máis tarefas</string>
<plurals name="repeat_occurrence">
<item quantity="one">ocorrencia</item>
<item quantity="other">ocorrencias</item>

@ -743,4 +743,5 @@
<string name="banner_app_updated_title">Aplikacija je aktualizirana</string>
<string name="banner_app_updated_description">Aplikacija Tasks je upravo aktualizirana na %s. Želiš li vidjeti bilješke o izdanju?</string>
<string name="multiline_title_off">Pritisni „Gotovo” za spremanje zadatka</string>
<string name="widget_view_more_tasks">Prikaži više zadataka</string>
</resources>

@ -721,4 +721,5 @@
<string name="continue_without_sync">Folytatás szinkronizálás nélkül</string>
<string name="help_me_choose">Segítséget kérek a választásban</string>
<string name="multiline_title_off">Kattints a Kész gombra a feladat elmentéséhez</string>
<string name="widget_view_more_tasks">További feladatok megtekintése</string>
</resources>

@ -743,4 +743,5 @@
<string name="continue_without_sync">Continua senza sincronizzazione</string>
<string name="help_me_choose">Aiutami a scegliere</string>
<string name="delete_tasks_warning">%s verrà cancellato. L\'operazione non può essere annullata!</string>
<string name="widget_view_more_tasks">Visualizza ulteriori attività</string>
</resources>

@ -745,4 +745,5 @@
<string name="continue_without_sync">להמשיך ללא סנכרון</string>
<string name="help_me_choose">עזור לי לבחור</string>
<string name="delete_tasks_warning">%s יימחק. לא ניתן לבטל זאת!</string>
<string name="widget_view_more_tasks">הצג עוד משימות</string>
</resources>

@ -721,4 +721,5 @@
<string name="continue_without_sync">Doorgaan zonder synchronisatie</string>
<string name="help_me_choose">Help me kiezen</string>
<string name="delete_tasks_warning">%s wordt verwijderd. Dit kan niet ongedaan worden gemaakt!</string>
<string name="widget_view_more_tasks">Meer taken zien</string>
</resources>

@ -723,4 +723,5 @@
<string name="help_me_choose">Ajude-me a escolher</string>
<string name="continue_without_sync">Continuar sem sync</string>
<string name="delete_tasks_warning">%s será apagado. Isso não poderá ser desfeito!</string>
<string name="widget_view_more_tasks">Ver mais tarefas</string>
</resources>

@ -750,4 +750,5 @@
<string name="continue_without_sync">Продолжить без синхронизации</string>
<string name="help_me_choose">Помогите мне выбрать</string>
<string name="delete_tasks_warning">%s будет удалена. Это нельзя отменить!</string>
<string name="widget_view_more_tasks">Просмотреть больше задач</string>
</resources>

@ -743,4 +743,5 @@
<string name="task_defaults">Подразумевано за задатке</string>
<string name="CFC_importance_text">Минимум приоритета ?</string>
<string name="caldav_home_set_not_found">Сет није пронађен</string>
<string name="widget_view_more_tasks">Погледај још задатака</string>
</resources>

@ -721,4 +721,5 @@
<string name="help_me_choose">Hjälp mig att välja</string>
<string name="delete_tasks_warning">%s kommer att tas bort. Detta kan inte ångras!</string>
<string name="continue_without_sync">Fortsätt utan synkronisering</string>
<string name="widget_view_more_tasks">Visa mer uppgifter</string>
</resources>

@ -721,4 +721,5 @@
<string name="delete_tasks_warning">%s silinecek. Bu geri alınamaz!</string>
<string name="continue_without_sync">Eşzamanlamadan sürdür</string>
<string name="help_me_choose">Seçmeme yardım et</string>
<string name="widget_view_more_tasks">Daha çok görev gör</string>
</resources>

@ -751,4 +751,5 @@
<string name="continue_without_sync">Продовжити без синхронізації</string>
<string name="help_me_choose">Допоможіть обрати</string>
<string name="delete_tasks_warning">%s буде видалено. Дію неможливо скасувати!</string>
<string name="widget_view_more_tasks">Переглянути інші завдання</string>
</resources>

@ -710,4 +710,5 @@
<string name="continue_without_sync">继续但不同步</string>
<string name="help_me_choose">帮我选择</string>
<string name="delete_tasks_warning">%s 将会删除。此操作无法撤销!</string>
<string name="widget_view_more_tasks">查看更多任务</string>
</resources>

@ -726,4 +726,5 @@ File %1$s contained %2$s.\n\n
<string name="sync_warning_google_tasks_title">About Google Task sync</string>
<string name="sync_warning_google_tasks">Not all task details sync with Google Tasks</string>
<string name="button_learn_more">Learn more</string>
<string name="widget_view_more_tasks">View more tasks</string>
</resources>

Loading…
Cancel
Save