mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00
Show the number of cards added when adding (#4310)
* modify `generate_cards_for_note` to return count * modify `add_note` to return count * show the number of cards added when adding
This commit is contained in:
parent
4ac80061ca
commit
153b972dfd
7 changed files with 23 additions and 15 deletions
|
@ -1,5 +1,10 @@
|
||||||
adding-add-shortcut-ctrlandenter = Add (shortcut: ctrl+enter)
|
adding-add-shortcut-ctrlandenter = Add (shortcut: ctrl+enter)
|
||||||
adding-added = Added
|
adding-added = Added
|
||||||
|
adding-added-cards =
|
||||||
|
Added { $count ->
|
||||||
|
[one] { $count } card
|
||||||
|
*[other] { $count } cards
|
||||||
|
}
|
||||||
adding-discard-current-input = Discard current input?
|
adding-discard-current-input = Discard current input?
|
||||||
adding-keep-editing = Keep Editing
|
adding-keep-editing = Keep Editing
|
||||||
adding-edit = Edit "{ $val }"
|
adding-edit = Edit "{ $val }"
|
||||||
|
|
|
@ -59,7 +59,7 @@ message AddNoteRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
message AddNoteResponse {
|
message AddNoteResponse {
|
||||||
collection.OpChanges changes = 1;
|
collection.OpChangesWithCount changes = 1;
|
||||||
int64 note_id = 2;
|
int64 note_id = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -528,7 +528,7 @@ class Collection(DeprecatedNamesMixin):
|
||||||
def new_note(self, notetype: NotetypeDict) -> Note:
|
def new_note(self, notetype: NotetypeDict) -> Note:
|
||||||
return Note(self, notetype)
|
return Note(self, notetype)
|
||||||
|
|
||||||
def add_note(self, note: Note, deck_id: DeckId) -> OpChanges:
|
def add_note(self, note: Note, deck_id: DeckId) -> OpChangesWithCount:
|
||||||
hooks.note_will_be_added(self, note, deck_id)
|
hooks.note_will_be_added(self, note, deck_id)
|
||||||
out = self._backend.add_note(note=note._to_backend_note(), deck_id=deck_id)
|
out = self._backend.add_note(note=note._to_backend_note(), deck_id=deck_id)
|
||||||
note.id = NoteId(out.note_id)
|
note.id = NoteId(out.note_id)
|
||||||
|
|
|
@ -8,7 +8,7 @@ from collections.abc import Callable
|
||||||
import aqt.editor
|
import aqt.editor
|
||||||
import aqt.forms
|
import aqt.forms
|
||||||
from anki._legacy import deprecated
|
from anki._legacy import deprecated
|
||||||
from anki.collection import OpChanges, SearchNode
|
from anki.collection import OpChanges, OpChangesWithCount, SearchNode
|
||||||
from anki.decks import DeckId
|
from anki.decks import DeckId
|
||||||
from anki.models import NotetypeId
|
from anki.models import NotetypeId
|
||||||
from anki.notes import Note, NoteFieldsCheckResult, NoteId
|
from anki.notes import Note, NoteFieldsCheckResult, NoteId
|
||||||
|
@ -294,13 +294,13 @@ class AddCards(QMainWindow):
|
||||||
|
|
||||||
target_deck_id = self.deck_chooser.selected_deck_id
|
target_deck_id = self.deck_chooser.selected_deck_id
|
||||||
|
|
||||||
def on_success(changes: OpChanges) -> None:
|
def on_success(changes: OpChangesWithCount) -> None:
|
||||||
# only used for detecting changed sticky fields on close
|
# only used for detecting changed sticky fields on close
|
||||||
self._last_added_note = note
|
self._last_added_note = note
|
||||||
|
|
||||||
self.addHistory(note)
|
self.addHistory(note)
|
||||||
|
|
||||||
tooltip(tr.adding_added(), period=500)
|
tooltip(tr.adding_added_cards(count=changes.count), period=500)
|
||||||
av_player.stop_and_clear_queue()
|
av_player.stop_and_clear_queue()
|
||||||
self._load_new_note(sticky_fields_from=note)
|
self._load_new_note(sticky_fields_from=note)
|
||||||
gui_hooks.add_cards_did_add_note(note)
|
gui_hooks.add_cards_did_add_note(note)
|
||||||
|
|
|
@ -18,7 +18,7 @@ def add_note(
|
||||||
parent: QWidget,
|
parent: QWidget,
|
||||||
note: Note,
|
note: Note,
|
||||||
target_deck_id: DeckId,
|
target_deck_id: DeckId,
|
||||||
) -> CollectionOp[OpChanges]:
|
) -> CollectionOp[OpChangesWithCount]:
|
||||||
return CollectionOp(parent, lambda col: col.add_note(note, target_deck_id))
|
return CollectionOp(parent, lambda col: col.add_note(note, target_deck_id))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ impl TryFrom<anki_proto::notes::AddNoteRequest> for AddNoteRequest {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Collection {
|
impl Collection {
|
||||||
pub fn add_note(&mut self, note: &mut Note, did: DeckId) -> Result<OpOutput<()>> {
|
pub fn add_note(&mut self, note: &mut Note, did: DeckId) -> Result<OpOutput<usize>> {
|
||||||
self.transact(Op::AddNote, |col| col.add_note_inner(note, did))
|
self.transact(Op::AddNote, |col| col.add_note_inner(note, did))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -372,7 +372,7 @@ impl Collection {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn add_note_inner(&mut self, note: &mut Note, did: DeckId) -> Result<()> {
|
pub(crate) fn add_note_inner(&mut self, note: &mut Note, did: DeckId) -> Result<usize> {
|
||||||
let nt = self
|
let nt = self
|
||||||
.get_notetype(note.notetype_id)?
|
.get_notetype(note.notetype_id)?
|
||||||
.or_invalid("missing note type")?;
|
.or_invalid("missing note type")?;
|
||||||
|
@ -383,10 +383,11 @@ impl Collection {
|
||||||
note.prepare_for_update(ctx.notetype, normalize_text)?;
|
note.prepare_for_update(ctx.notetype, normalize_text)?;
|
||||||
note.set_modified(ctx.usn);
|
note.set_modified(ctx.usn);
|
||||||
self.add_note_only_undoable(note)?;
|
self.add_note_only_undoable(note)?;
|
||||||
self.generate_cards_for_new_note(&ctx, note, did)?;
|
let count = self.generate_cards_for_new_note(&ctx, note, did)?;
|
||||||
self.set_last_deck_for_notetype(note.notetype_id, did)?;
|
self.set_last_deck_for_notetype(note.notetype_id, did)?;
|
||||||
self.set_last_notetype_for_deck(did, note.notetype_id)?;
|
self.set_last_notetype_for_deck(did, note.notetype_id)?;
|
||||||
self.set_current_notetype_id(note.notetype_id)
|
self.set_current_notetype_id(note.notetype_id)?;
|
||||||
|
Ok(count)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_note(&mut self, note: &mut Note) -> Result<OpOutput<()>> {
|
pub fn update_note(&mut self, note: &mut Note) -> Result<OpOutput<()>> {
|
||||||
|
|
|
@ -215,7 +215,7 @@ impl Collection {
|
||||||
ctx: &CardGenContext<impl Deref<Target = Notetype>>,
|
ctx: &CardGenContext<impl Deref<Target = Notetype>>,
|
||||||
note: &Note,
|
note: &Note,
|
||||||
target_deck_id: DeckId,
|
target_deck_id: DeckId,
|
||||||
) -> Result<()> {
|
) -> Result<usize> {
|
||||||
self.generate_cards_for_note(
|
self.generate_cards_for_note(
|
||||||
ctx,
|
ctx,
|
||||||
note,
|
note,
|
||||||
|
@ -231,7 +231,8 @@ impl Collection {
|
||||||
note: &Note,
|
note: &Note,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let existing = self.storage.existing_cards_for_note(note.id)?;
|
let existing = self.storage.existing_cards_for_note(note.id)?;
|
||||||
self.generate_cards_for_note(ctx, note, &existing, ctx.last_deck, &mut Default::default())
|
self.generate_cards_for_note(ctx, note, &existing, ctx.last_deck, &mut Default::default())?;
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn generate_cards_for_note(
|
fn generate_cards_for_note(
|
||||||
|
@ -241,12 +242,13 @@ impl Collection {
|
||||||
existing: &[AlreadyGeneratedCardInfo],
|
existing: &[AlreadyGeneratedCardInfo],
|
||||||
target_deck_id: Option<DeckId>,
|
target_deck_id: Option<DeckId>,
|
||||||
cache: &mut CardGenCache,
|
cache: &mut CardGenCache,
|
||||||
) -> Result<()> {
|
) -> Result<usize> {
|
||||||
let cards = ctx.new_cards_required(note, existing, true);
|
let cards = ctx.new_cards_required(note, existing, true);
|
||||||
if cards.is_empty() {
|
if cards.is_empty() {
|
||||||
return Ok(());
|
return Ok(0);
|
||||||
}
|
}
|
||||||
self.add_generated_cards(note.id, &cards, target_deck_id, cache)
|
self.add_generated_cards(note.id, &cards, target_deck_id, cache)?;
|
||||||
|
Ok(cards.len())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn generate_cards_for_notetype(
|
pub(crate) fn generate_cards_for_notetype(
|
||||||
|
|
Loading…
Reference in a new issue