From 2ffc055487c2e726254a8e41271d3006f8a5107e Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 12 Mar 2021 16:27:40 +1000 Subject: [PATCH] 'change deck' now undoable --- qt/aqt/browser.py | 19 ++++++++++--------- rslib/src/card/mod.rs | 2 +- rslib/src/undo/ops.rs | 2 ++ 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index bc72d432c..f232bb33f 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -55,7 +55,6 @@ from aqt.utils import ( shortcut, show_invalid_search_error, showInfo, - showWarning, tooltip, tr, ) @@ -1185,15 +1184,17 @@ where id in %s""" if not ret.name: return did = self.col.decks.id(ret.name) - deck = self.col.decks.get(did) - if deck["dyn"]: - showWarning(tr(TR.BROWSING_CARDS_CANT_BE_MANUALLY_MOVED_INTO)) - return self.model.beginReset() - self.mw.checkpoint(tr(TR.BROWSING_CHANGE_DECK)) - self.col.set_deck(cids, did) - self.model.endReset() - self.mw.requireReset(reason=ResetReason.BrowserSetDeck, context=self) + + def do_move() -> None: + self.col.set_deck(cids, did) + + def on_done(fut: Future) -> None: + self.model.endReset() + fut.result() + self.mw.requireReset(reason=ResetReason.BrowserSetDeck, context=self) + + self.mw.taskman.with_progress(do_move, on_done) # Tags ###################################################################### diff --git a/rslib/src/card/mod.rs b/rslib/src/card/mod.rs index 780f5e1bf..dec89213a 100644 --- a/rslib/src/card/mod.rs +++ b/rslib/src/card/mod.rs @@ -211,7 +211,7 @@ impl Collection { self.storage.set_search_table_to_card_ids(cards, false)?; let sched = self.scheduler_version(); let usn = self.usn()?; - self.transact(None, |col| { + self.transact(Some(UndoableOpKind::SetDeck), |col| { for mut card in col.storage.all_searched_cards()? { if card.deck_id == deck_id { continue; diff --git a/rslib/src/undo/ops.rs b/rslib/src/undo/ops.rs index 562470ab6..e505b2fa5 100644 --- a/rslib/src/undo/ops.rs +++ b/rslib/src/undo/ops.rs @@ -21,6 +21,7 @@ pub enum UndoableOpKind { UpdateNote, UpdatePreferences, UpdateTag, + SetDeck, } impl UndoableOpKind { @@ -48,6 +49,7 @@ impl Collection { UndoableOpKind::UpdateNote => TR::UndoUpdateNote, UndoableOpKind::UpdatePreferences => TR::PreferencesPreferences, UndoableOpKind::UpdateTag => TR::UndoUpdateTag, + UndoableOpKind::SetDeck => TR::BrowsingChangeDeck, }; self.i18n.tr(key).to_string()