From 5a59f7a2f314f3610b1c76adad1aeedb01ab0499 Mon Sep 17 00:00:00 2001 From: Aldana Belen Rodriguez Date: Mon, 28 Sep 2026 18:29:28 +0200 Subject: [PATCH] Make study summary popup dismissible from the dialog --- .../main/java/com/ichi2/anki/DeckPicker.kt | 49 +++++++++++++------ .../res/values-de/ankiquest_navigation.xml | 1 + .../res/values-es/ankiquest_navigation.xml | 1 + .../res/values-fr/ankiquest_navigation.xml | 1 + .../res/values-pt/ankiquest_navigation.xml | 1 + .../main/res/values/ankiquest_navigation.xml | 1 + 6 files changed, 40 insertions(+), 14 deletions(-) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt b/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt index 1d87e3f3b7c1..12202b245f19 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt +++ b/AnkiDroid/src/main/java/com/ichi2/anki/DeckPicker.kt @@ -21,11 +21,13 @@ import android.graphics.PixelFormat import android.os.Build import android.os.Bundle import android.text.util.Linkify +import android.view.Gravity import android.view.KeyEvent import android.view.Menu import android.view.MenuItem import android.view.View import android.view.ViewGroup.MarginLayoutParams +import android.widget.LinearLayout import android.widget.TextView import androidx.activity.OnBackPressedCallback import androidx.activity.SystemBarStyle @@ -37,6 +39,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.annotation.VisibleForTesting import androidx.appcompat.app.AlertDialog +import androidx.appcompat.widget.AppCompatCheckBox import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.TooltipCompat @@ -1545,23 +1548,37 @@ open class DeckPicker : launchCatchingTask { val summary = AnkiquestStudySession.finish() if (summary != null && sharedPrefs().getBoolean(AnkiquestNavigation.SESSION_SUMMARY_KEY, true)) { + val neverAgain = + AppCompatCheckBox(this@DeckPicker).apply { + setText(R.string.ankiquest_summary_dont_show_again) + } + val content = + LinearLayout(this@DeckPicker).apply { + orientation = LinearLayout.VERTICAL + val padding = (20 * resources.displayMetrics.density).toInt() + setPadding(padding, 0, padding, 0) + addView( + com.ichi2.anki.ankiquest.AnkiquestAki + .image( + this@DeckPicker, + if (summary.remaining == 0) R.drawable.aki_celebrate else R.drawable.aki_streak, + 112, + ).apply { + layoutParams = + LinearLayout + .LayoutParams( + layoutParams, + ).apply { gravity = Gravity.CENTER_HORIZONTAL } + }, + ) + addView(neverAgain) + } val builder = AlertDialog .Builder(this@DeckPicker) .setTitle(R.string.ankiquest_summary_title) - .setView( - com.ichi2.anki.ankiquest.AnkiquestAki.image( - this@DeckPicker, - if (summary.remaining == - 0 - ) { - R.drawable.aki_celebrate - } else { - R.drawable.aki_streak - }, - 112, - ), - ).setMessage( + .setView(content) + .setMessage( getString( R.string.ankiquest_summary_body, summary.reviews, @@ -1575,7 +1592,11 @@ open class DeckPicker : if (summary.remaining > 0) { builder.setPositiveButton(R.string.ankiquest_summary_continue) { _, _ -> openReviewer() } } - builder.show() + builder.show().setOnDismissListener { + if (neverAgain.isChecked) { + sharedPrefs().edit { putBoolean(AnkiquestNavigation.SESSION_SUMMARY_KEY, false) } + } + } } fragment?.refreshInterface() } diff --git a/AnkiDroid/src/main/res/values-de/ankiquest_navigation.xml b/AnkiDroid/src/main/res/values-de/ankiquest_navigation.xml index 2d19f82a5a55..137c8ea2d83c 100644 --- a/AnkiDroid/src/main/res/values-de/ankiquest_navigation.xml +++ b/AnkiDroid/src/main/res/values-de/ankiquest_navigation.xml @@ -18,6 +18,7 @@ Fortschritt ansehen Sitzungszusammenfassung Zeige eine unaufdringliche, barrierefreie Zusammenfassung, wenn du eine Lernsitzung verlässt. + Nicht mehr anzeigen Dieser Stapel ist nicht mehr verfügbar. Wähle einen anderen. In diesem Stapel sind gerade keine Karten bereit. Wähle einen anderen oder komme später wieder. diff --git a/AnkiDroid/src/main/res/values-es/ankiquest_navigation.xml b/AnkiDroid/src/main/res/values-es/ankiquest_navigation.xml index 85f07c5dce49..4d94bbf37fe6 100644 --- a/AnkiDroid/src/main/res/values-es/ankiquest_navigation.xml +++ b/AnkiDroid/src/main/res/values-es/ankiquest_navigation.xml @@ -18,6 +18,7 @@ Ver progreso Resumen de la sesión Mostrar un resumen accesible y discreto al salir de una sesión de estudio. + No volver a mostrar esto Este mazo ya no está disponible. Elige otro. No hay tarjetas listas en este mazo ahora. Elige otro mazo o vuelve más tarde. diff --git a/AnkiDroid/src/main/res/values-fr/ankiquest_navigation.xml b/AnkiDroid/src/main/res/values-fr/ankiquest_navigation.xml index 0b881d2b9b3e..37d52b606421 100644 --- a/AnkiDroid/src/main/res/values-fr/ankiquest_navigation.xml +++ b/AnkiDroid/src/main/res/values-fr/ankiquest_navigation.xml @@ -18,6 +18,7 @@ Voir la progression Résumé de la session Affiche un résumé discret et accessible quand tu quittes une séance d’étude. + Ne plus afficher ceci Ce paquet n’est plus disponible. Choisis-en un autre. Aucune carte n’est prête dans ce paquet pour le moment. Choisis un autre paquet ou reviens plus tard. diff --git a/AnkiDroid/src/main/res/values-pt/ankiquest_navigation.xml b/AnkiDroid/src/main/res/values-pt/ankiquest_navigation.xml index 0b0be6d7e532..300673cc7fc6 100644 --- a/AnkiDroid/src/main/res/values-pt/ankiquest_navigation.xml +++ b/AnkiDroid/src/main/res/values-pt/ankiquest_navigation.xml @@ -18,6 +18,7 @@ Ver progresso Resumo da sessão Mostra um resumo discreto e acessível quando terminas uma sessão de estudo. + Não voltar a mostrar Este baralho já não está disponível. Escolhe outro. Não há cartões prontos neste baralho agora. Escolhe outro ou volta mais tarde. diff --git a/AnkiDroid/src/main/res/values/ankiquest_navigation.xml b/AnkiDroid/src/main/res/values/ankiquest_navigation.xml index 9a4dc0a04d81..6e05e71f196b 100644 --- a/AnkiDroid/src/main/res/values/ankiquest_navigation.xml +++ b/AnkiDroid/src/main/res/values/ankiquest_navigation.xml @@ -20,6 +20,7 @@ ankiquestSessionSummary Session summary Show a quiet, accessible recap when you leave a study session. + Don’t show this again This deck is no longer available. Choose another deck. No cards are ready in this deck right now. Choose another deck or come back later.