Skip to content

Commit ff4a5c6

Browse files
xenonnn4wmikehardy
authored andcommitted
feat(widget): support for filtered decks
For CardAnalysis and DeckPicker widgets. Fixes 18590
1 parent 1dfdb55 commit ff4a5c6

File tree

5 files changed

+17
-6
lines changed

5 files changed

+17
-6
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/pages/CongratsPage.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,14 @@ class DeckOptionsDestination(
290290
} else {
291291
DeckOptions.getIntent(context, deckId)
292292
}
293+
294+
companion object {
295+
suspend fun fromDeckId(deckId: DeckId): DeckOptionsDestination =
296+
DeckOptionsDestination(
297+
deckId = deckId,
298+
isFiltered = withCol { decks.isFiltered(deckId) },
299+
)
300+
}
293301
}
294302

295303
sealed class UnburyState {

AnkiDroid/src/main/java/com/ichi2/widget/cardanalysis/CardAnalysisWidget.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import com.ichi2.anki.IntentHandler.Companion.intentToReviewDeckFromShorcuts
3030
import com.ichi2.anki.R
3131
import com.ichi2.anki.analytics.UsageAnalytics
3232
import com.ichi2.anki.isCollectionEmpty
33-
import com.ichi2.anki.pages.DeckOptions
33+
import com.ichi2.anki.pages.DeckOptionsDestination
3434
import com.ichi2.libanki.DeckId
3535
import com.ichi2.libanki.Decks.Companion.NOT_FOUND_DECK_ID
3636
import com.ichi2.widget.ACTION_UPDATE_WIDGET
@@ -189,7 +189,7 @@ class CardAnalysisWidget : AnalyticsWidgetProvider() {
189189
if (!isEmptyDeck) {
190190
intentToReviewDeckFromShorcuts(context, deckData.deckId)
191191
} else {
192-
DeckOptions.getIntent(context, deckData.deckId)
192+
DeckOptionsDestination(deckData.deckId, deckData.filtered).toIntent(context)
193193
}
194194
val pendingIntent =
195195
PendingIntent.getActivity(

AnkiDroid/src/main/java/com/ichi2/widget/cardanalysis/CardAnalysisWidgetConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ class CardAnalysisWidgetConfig :
266266
/** Returns the list of standard deck. */
267267
private suspend fun fetchDecks(): List<SelectableDeck> =
268268
withContext(Dispatchers.IO) {
269-
SelectableDeck.fromCollection(includeFiltered = false)
269+
SelectableDeck.fromCollection(includeFiltered = true)
270270
}
271271

272272
/** Displays the deck selection dialog with the provided list of decks. */

AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidget.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import com.ichi2.anki.IntentHandler.Companion.intentToReviewDeckFromShorcuts
3131
import com.ichi2.anki.R
3232
import com.ichi2.anki.analytics.UsageAnalytics
3333
import com.ichi2.anki.isCollectionEmpty
34-
import com.ichi2.anki.pages.DeckOptions
34+
import com.ichi2.anki.pages.DeckOptionsDestination
3535
import com.ichi2.libanki.DeckId
3636
import com.ichi2.widget.ACTION_UPDATE_WIDGET
3737
import com.ichi2.widget.AnalyticsWidgetProvider
@@ -50,13 +50,15 @@ typealias AppWidgetId = Int
5050
* @property reviewCount The number of cards due for review.
5151
* @property learnCount The number of cards in the learning phase.
5252
* @property newCount The number of new cards.
53+
* @property filtered Whether the deck is filtered.
5354
*/
5455
data class DeckWidgetData(
5556
val deckId: DeckId,
5657
val name: String,
5758
val reviewCount: Int,
5859
val learnCount: Int,
5960
val newCount: Int,
61+
val filtered: Boolean,
6062
)
6163

6264
/**
@@ -142,7 +144,7 @@ class DeckPickerWidget : AnalyticsWidgetProvider() {
142144
if (!isEmptyDeck) {
143145
intentToReviewDeckFromShorcuts(context, deck.deckId)
144146
} else {
145-
DeckOptions.getIntent(context, deck.deckId)
147+
DeckOptionsDestination.fromDeckId(deck.deckId).toIntent(context)
146148
}
147149

148150
val pendingIntent =
@@ -380,6 +382,7 @@ suspend fun getDeckNamesAndStats(deckIds: List<DeckId>): List<DeckWidgetData> {
380382
reviewCount = node.revCount,
381383
learnCount = node.lrnCount,
382384
newCount = node.newCount,
385+
filtered = node.filtered,
383386
),
384387
)
385388
}

AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidgetConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ class DeckPickerWidgetConfig :
283283
*/
284284
private suspend fun getTotalSelectableDecks(): Int =
285285
withContext(Dispatchers.IO) {
286-
SelectableDeck.fromCollection(includeFiltered = false).size
286+
SelectableDeck.fromCollection(includeFiltered = true).size
287287
}
288288

289289
/** Updates the view according to the saved preference for appWidgetId.*/

0 commit comments

Comments
 (0)