mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 20:03:05 +02:00
clean(DeckPicker): extract countCardsInDeckTree
Extract helper method to focus on DeckPicker logic
This commit is contained in:
parent
1b3ad5936c
commit
cb15433b86
@ -104,6 +104,7 @@ import com.ichi2.anki.dialogs.customstudy.CustomStudyDialogFactory;
|
||||
import com.ichi2.anki.exception.ConfirmModSchemaException;
|
||||
import com.ichi2.anki.export.ActivityExportingDelegate;
|
||||
import com.ichi2.anki.receiver.SdCardReceiver;
|
||||
import com.ichi2.anki.servicelayer.DeckService;
|
||||
import com.ichi2.anki.servicelayer.SchedulerService;
|
||||
import com.ichi2.anki.servicelayer.UndoService;
|
||||
import com.ichi2.anki.stats.AnkiStatsTaskHandler;
|
||||
@ -142,7 +143,6 @@ import com.ichi2.utils.JSONException;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import kotlin.Unit;
|
||||
import timber.log.Timber;
|
||||
@ -2401,16 +2401,7 @@ public class DeckPicker extends NavigationDrawerActivity implements
|
||||
return;
|
||||
}
|
||||
// Get the number of cards contained in this deck and its subdecks
|
||||
TreeMap<String, Long> children = getCol().getDecks().children(did);
|
||||
long[] dids = new long[children.size() + 1];
|
||||
dids[0] = did;
|
||||
int i = 1;
|
||||
for (Long l : children.values()) {
|
||||
dids[i++] = l;
|
||||
}
|
||||
String ids = Utils.ids2str(dids);
|
||||
int cnt = getCol().getDb().queryScalar(
|
||||
"select count() from cards where did in " + ids + " or odid in " + ids);
|
||||
int cnt = DeckService.countCardsInDeckTree(getCol(), did);
|
||||
boolean isDyn = getCol().getDecks().isDyn(did);
|
||||
// Delete empty decks without warning. Filtered decks save filters in the deck data, so require confirmation.
|
||||
if (cnt == 0 && !isDyn) {
|
||||
|
@ -18,7 +18,9 @@ package com.ichi2.anki.servicelayer
|
||||
|
||||
import com.ichi2.libanki.Collection
|
||||
import com.ichi2.libanki.Consts
|
||||
import com.ichi2.libanki.Utils
|
||||
import com.ichi2.libanki.did
|
||||
import java.util.*
|
||||
|
||||
object DeckService {
|
||||
@JvmStatic
|
||||
@ -32,4 +34,28 @@ object DeckService {
|
||||
@JvmStatic
|
||||
fun defaultDeckHasCards(col: Collection) =
|
||||
col.db.queryScalar("select 1 from cards where did = 1") != 0
|
||||
|
||||
/**
|
||||
* Counts cards in the supplied deck and child decks.
|
||||
*
|
||||
* Includes the count of filtered decks
|
||||
* Includes filtered cards outside the tree if the home deck is included
|
||||
*
|
||||
* @param did Id of the deck to search
|
||||
* @return the number of cards in the supplied deck and child decks
|
||||
*/
|
||||
@JvmStatic
|
||||
fun countCardsInDeckTree(col: Collection, did: did): Int {
|
||||
val children: TreeMap<String, Long> = col.decks.children(did)
|
||||
val dids = LongArray(children.size + 1)
|
||||
dids[0] = did
|
||||
var i = 1
|
||||
for (l in children.values) {
|
||||
dids[i++] = l
|
||||
}
|
||||
val ids = Utils.ids2str(dids)
|
||||
return col.db.queryScalar(
|
||||
"select count() from cards where did in $ids or odid in $ids"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user