Default search text for Browser as in Desktop
Is your feature request related to a problem? Please describe. When going into Browser on AnkiDroid, I often have to manually type in -is:suspended to hide the suspended cards.
Describe the solution you'd like Desktop Anki has a "Default search text" feature (Tools > Preferences > Editing tab > Browsing section. This would be nice to see in AnkiDroid as well. I suppose Settings > General would be a logical place to put it, but no strong opinions on that.
Describe alternatives you've considered Manually typing -is:suspended each time to hide suspended cards
Additional context
Here it is in Desktop Anki.
https://github.com/ankitects/anki/commit/114eec6585fd7e4b016ef2c3c88981739ba4e8af
Taking it up, @david-allison what is the use case for the changes you mentioned? We will be using shared pref if I am right in AnkiDroid
Use case: https://forums.ankiweb.net/t/whats-the-default-search-when-browsing-now-also-how-do-i-choose-to-browse-current-deck/8922
Might want to block this on
- https://github.com/ankidroid/Anki-Android/pull/16128
As listed in the patch above, load from the collection config.
Rough patch, thoroughly untested
Subject: [PATCH]
---
Index: AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt b/AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt
--- a/AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt (revision a75ef34cf93c809931752f986f7b7ef95d51480b)
+++ b/AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt (date 1713457319384)
@@ -21,6 +21,7 @@
import androidx.lifecycle.viewModelScope
import androidx.lifecycle.viewmodel.initializer
import androidx.lifecycle.viewmodel.viewModelFactory
+import anki.config.ConfigKey
import com.ichi2.anki.AnkiDroidApp
import com.ichi2.anki.CardBrowser
import com.ichi2.anki.CollectionManager.withCol
@@ -233,6 +234,11 @@
viewModelScope.launch {
// PERF: slightly inefficient if the source was lastDeckId
setDeckId(getInitialDeck())
+ flowOfSearchTerms.update {
+ getDefaultSearchText().also { searchText ->
+ Timber.d("default search text: %s", searchText)
+ }
+ }
val cardsOrNotes = withCol { CardsOrNotes.fromCollection() }
flowOfCardsOrNotes.update { cardsOrNotes }
@@ -245,6 +251,9 @@
}
}
+ private suspend fun getDefaultSearchText(): String =
+ withCol { config.getString(ConfigKey.String.DEFAULT_SEARCH_TEXT) }
+
/** Whether any rows are selected */
fun hasSelectedAnyRows(): Boolean = selectedRows.isNotEmpty()
Index: AnkiDroid/src/main/java/com/ichi2/libanki/Config.kt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/AnkiDroid/src/main/java/com/ichi2/libanki/Config.kt b/AnkiDroid/src/main/java/com/ichi2/libanki/Config.kt
--- a/AnkiDroid/src/main/java/com/ichi2/libanki/Config.kt (revision a75ef34cf93c809931752f986f7b7ef95d51480b)
+++ b/AnkiDroid/src/main/java/com/ichi2/libanki/Config.kt (date 1713456221276)
@@ -55,6 +55,10 @@
return backend.getConfigBool(key)
}
+ fun getString(key: ConfigKey.String): String {
+ return backend.getConfigString(key)
+ }
+
fun setBool(key: ConfigKey.Bool, value: Boolean) {
backend.setConfigBool(key, value, false)
}
Ahh the card browser refactor, umm lets wait then its pending for a long time now.
I am also struggling with this. I tried using the JS solution from #9247 to make buttons but failed miserably. This suggestion would also work for me. I have all my cards tagged with the kanji present in their main field. On the PC, I use an addon to add tags as clickable buttons. They open the search using "tag: "kanji")". With this, I can check cards with the same kanji. It's a great tool for studying new cards and to hammer down cards you keep failing.
- Fixed in #17911