mirror of
https://github.com/ankitects/anki.git
synced 2025-09-21 15:32:23 -04:00
Remove deck remove prompt but show card count
This commit is contained in:
parent
3219bb2539
commit
f1dd010489
7 changed files with 40 additions and 34 deletions
|
@ -14,6 +14,11 @@ browsing-card = Card
|
||||||
browsing-card-list = Card List
|
browsing-card-list = Card List
|
||||||
browsing-card-state = Card State
|
browsing-card-state = Card State
|
||||||
browsing-cards-cant-be-manually-moved-into = Cards can't be manually moved into a filtered deck.
|
browsing-cards-cant-be-manually-moved-into = Cards can't be manually moved into a filtered deck.
|
||||||
|
browsing-cards-deleted =
|
||||||
|
{ $count ->
|
||||||
|
[one] { $count } card deleted.
|
||||||
|
*[other] { $count } cards deleted.
|
||||||
|
}
|
||||||
browsing-change-deck = Change Deck
|
browsing-change-deck = Change Deck
|
||||||
browsing-change-deck2 = Change Deck...
|
browsing-change-deck2 = Change Deck...
|
||||||
browsing-change-note-type = Change Note Type
|
browsing-change-note-type = Change Note Type
|
||||||
|
|
|
@ -2,7 +2,6 @@ decks-add-new-deck-ctrlandn = Add New Deck (Ctrl+N)
|
||||||
decks-are-you-sure-you-wish-to = Are you sure you wish to delete { $val }?
|
decks-are-you-sure-you-wish-to = Are you sure you wish to delete { $val }?
|
||||||
decks-build = Build
|
decks-build = Build
|
||||||
decks-cards-selected-by = cards selected by
|
decks-cards-selected-by = cards selected by
|
||||||
decks-confirm-deletion = Are you sure you want to delete all selected decks including { $count } cards?
|
|
||||||
decks-create-deck = Create Deck
|
decks-create-deck = Create Deck
|
||||||
decks-custom-steps-in-minutes = Custom steps (in minutes)
|
decks-custom-steps-in-minutes = Custom steps (in minutes)
|
||||||
decks-deck = Deck
|
decks-deck = Deck
|
||||||
|
|
|
@ -137,8 +137,8 @@ class DeckManager:
|
||||||
assert cardsToo and childrenToo
|
assert cardsToo and childrenToo
|
||||||
self.remove([did])
|
self.remove([did])
|
||||||
|
|
||||||
def remove(self, dids: List[int]) -> None:
|
def remove(self, dids: List[int]) -> int:
|
||||||
self.col._backend.remove_decks(dids)
|
return self.col._backend.remove_decks(dids)
|
||||||
|
|
||||||
def all_names_and_ids(
|
def all_names_and_ids(
|
||||||
self, skip_empty_default: bool = False, include_filtered: bool = True
|
self, skip_empty_default: bool = False, include_filtered: bool = True
|
||||||
|
|
|
@ -1199,22 +1199,20 @@ class SidebarTreeView(QTreeView):
|
||||||
self.browser.editor.saveNow(self._delete_decks)
|
self.browser.editor.saveNow(self._delete_decks)
|
||||||
|
|
||||||
def _delete_decks(self) -> None:
|
def _delete_decks(self) -> None:
|
||||||
|
def do_delete() -> None:
|
||||||
|
return self.mw.col.decks.remove(dids)
|
||||||
|
|
||||||
|
def on_done(fut: Future) -> None:
|
||||||
|
self.mw.requireReset(reason=ResetReason.BrowserDeleteDeck, context=self)
|
||||||
|
self.browser.search()
|
||||||
|
self.browser.model.endReset()
|
||||||
|
tooltip(tr(TR.BROWSING_CARDS_DELETED, count=fut.result()), parent=self)
|
||||||
|
self.refresh()
|
||||||
|
|
||||||
dids = self._selected_decks()
|
dids = self._selected_decks()
|
||||||
if self.mw.deckBrowser.ask_delete_decks(dids):
|
self.mw.checkpoint(tr(TR.DECKS_DELETE_DECK))
|
||||||
|
self.browser.model.beginReset()
|
||||||
def do_delete() -> None:
|
self.mw.taskman.run_in_background(do_delete, on_done)
|
||||||
return self.mw.col.decks.remove(dids)
|
|
||||||
|
|
||||||
def on_done(fut: Future) -> None:
|
|
||||||
self.mw.requireReset(reason=ResetReason.BrowserDeleteDeck, context=self)
|
|
||||||
self.browser.search()
|
|
||||||
self.browser.model.endReset()
|
|
||||||
self.refresh()
|
|
||||||
res = fut.result() # Required to check for errors
|
|
||||||
|
|
||||||
self.mw.checkpoint(tr(TR.DECKS_DELETE_DECK))
|
|
||||||
self.browser.model.beginReset()
|
|
||||||
self.mw.taskman.run_in_background(do_delete, on_done)
|
|
||||||
|
|
||||||
def rename_node(self, item: SidebarItem, text: str) -> bool:
|
def rename_node(self, item: SidebarItem, text: str) -> bool:
|
||||||
new_name = text.replace('"', "")
|
new_name = text.replace('"', "")
|
||||||
|
|
|
@ -151,7 +151,7 @@ service BackendService {
|
||||||
rpc GetDeckLegacy(DeckID) returns (Json);
|
rpc GetDeckLegacy(DeckID) returns (Json);
|
||||||
rpc GetDeckNames(GetDeckNamesIn) returns (DeckNames);
|
rpc GetDeckNames(GetDeckNamesIn) returns (DeckNames);
|
||||||
rpc NewDeckLegacy(Bool) returns (Json);
|
rpc NewDeckLegacy(Bool) returns (Json);
|
||||||
rpc RemoveDecks(DeckIDs) returns (Empty);
|
rpc RemoveDecks(DeckIDs) returns (UInt32);
|
||||||
rpc DragDropDecks(DragDropDecksIn) returns (Empty);
|
rpc DragDropDecks(DragDropDecksIn) returns (Empty);
|
||||||
|
|
||||||
// deck config
|
// deck config
|
||||||
|
|
|
@ -662,7 +662,7 @@ impl BackendService for Backend {
|
||||||
.map(Into::into)
|
.map(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove_decks(&self, input: pb::DeckIDs) -> BackendResult<Empty> {
|
fn remove_decks(&self, input: pb::DeckIDs) -> BackendResult<pb::UInt32> {
|
||||||
self.with_col(|col| col.remove_decks_and_child_decks(&Into::<Vec<DeckID>>::into(input)))
|
self.with_col(|col| col.remove_decks_and_child_decks(&Into::<Vec<DeckID>>::into(input)))
|
||||||
.map(Into::into)
|
.map(Into::into)
|
||||||
}
|
}
|
||||||
|
@ -1218,9 +1218,7 @@ impl BackendService for Backend {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn expunge_tags(&self, tags: pb::String) -> BackendResult<pb::UInt32> {
|
fn expunge_tags(&self, tags: pb::String) -> BackendResult<pb::UInt32> {
|
||||||
self.with_col(|col| {
|
self.with_col(|col| col.expunge_tags(tags.val.as_str()).map(Into::into))
|
||||||
col.expunge_tags(tags.val.as_str()).map(Into::into)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_tag_expanded(&self, input: pb::SetTagExpandedIn) -> BackendResult<pb::Empty> {
|
fn set_tag_expanded(&self, input: pb::SetTagExpandedIn) -> BackendResult<pb::Empty> {
|
||||||
|
|
|
@ -440,9 +440,10 @@ impl Collection {
|
||||||
self.storage.get_deck_id(&machine_name)
|
self.storage.get_deck_id(&machine_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn remove_decks_and_child_decks(&mut self, dids: &[DeckID]) -> Result<()> {
|
pub fn remove_decks_and_child_decks(&mut self, dids: &[DeckID]) -> Result<usize> {
|
||||||
// fixme: vet cache clearing
|
// fixme: vet cache clearing
|
||||||
self.state.deck_cache.clear();
|
self.state.deck_cache.clear();
|
||||||
|
let mut card_count = 0;
|
||||||
|
|
||||||
self.transact(None, |col| {
|
self.transact(None, |col| {
|
||||||
let usn = col.usn()?;
|
let usn = col.usn()?;
|
||||||
|
@ -451,24 +452,28 @@ impl Collection {
|
||||||
let child_decks = col.storage.child_decks(&deck)?;
|
let child_decks = col.storage.child_decks(&deck)?;
|
||||||
|
|
||||||
// top level
|
// top level
|
||||||
col.remove_single_deck(&deck, usn)?;
|
card_count += col.remove_single_deck(&deck, usn)?;
|
||||||
|
|
||||||
// remove children
|
// remove children
|
||||||
for deck in child_decks {
|
for deck in child_decks {
|
||||||
col.remove_single_deck(&deck, usn)?;
|
card_count += col.remove_single_deck(&deck, usn)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})?;
|
||||||
|
Ok(card_count)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn remove_single_deck(&mut self, deck: &Deck, usn: Usn) -> Result<()> {
|
pub(crate) fn remove_single_deck(&mut self, deck: &Deck, usn: Usn) -> Result<usize> {
|
||||||
// fixme: undo
|
// fixme: undo
|
||||||
match deck.kind {
|
let card_count = match deck.kind {
|
||||||
DeckKind::Normal(_) => self.delete_all_cards_in_normal_deck(deck.id)?,
|
DeckKind::Normal(_) => self.delete_all_cards_in_normal_deck(deck.id)?,
|
||||||
DeckKind::Filtered(_) => self.return_all_cards_in_filtered_deck(deck.id)?,
|
DeckKind::Filtered(_) => {
|
||||||
}
|
self.return_all_cards_in_filtered_deck(deck.id)?;
|
||||||
|
0
|
||||||
|
}
|
||||||
|
};
|
||||||
self.clear_aux_config_for_deck(deck.id)?;
|
self.clear_aux_config_for_deck(deck.id)?;
|
||||||
if deck.id.0 == 1 {
|
if deck.id.0 == 1 {
|
||||||
let mut deck = deck.to_owned();
|
let mut deck = deck.to_owned();
|
||||||
|
@ -480,12 +485,13 @@ impl Collection {
|
||||||
self.storage.remove_deck(deck.id)?;
|
self.storage.remove_deck(deck.id)?;
|
||||||
self.storage.add_deck_grave(deck.id, usn)?;
|
self.storage.add_deck_grave(deck.id, usn)?;
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(card_count)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delete_all_cards_in_normal_deck(&mut self, did: DeckID) -> Result<()> {
|
fn delete_all_cards_in_normal_deck(&mut self, did: DeckID) -> Result<usize> {
|
||||||
let cids = self.storage.all_cards_in_single_deck(did)?;
|
let cids = self.storage.all_cards_in_single_deck(did)?;
|
||||||
self.remove_cards_and_orphaned_notes(&cids)
|
self.remove_cards_and_orphaned_notes(&cids)?;
|
||||||
|
Ok(cids.len())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_all_deck_names(&self, skip_empty_default: bool) -> Result<Vec<(DeckID, String)>> {
|
pub fn get_all_deck_names(&self, skip_empty_default: bool) -> Result<Vec<(DeckID, String)>> {
|
||||||
|
|
Loading…
Reference in a new issue