diff --git a/proto/anki/decks.proto b/proto/anki/decks.proto index ca360aed9..c91abb39a 100644 --- a/proto/anki/decks.proto +++ b/proto/anki/decks.proto @@ -109,12 +109,14 @@ message Deck { repeated SearchTerm search_terms = 2; // v1 scheduler only repeated float delays = 3; - // v2 scheduler only - uint32 preview_again_mins = 4; + // v2 and old v3 scheduler only + uint32 preview_delay = 4; // recent v3 scheduler only; 0 means card will be returned - uint32 preview_hard_mins = 5; + uint32 preview_again_secs = 7; // recent v3 scheduler only; 0 means card will be returned - uint32 preview_good_mins = 6; + uint32 preview_hard_secs = 5; + // recent v3 scheduler only; 0 means card will be returned + uint32 preview_good_secs = 6; } // a container to store the deck specifics in the DB // as a tagged enum diff --git a/qt/aqt/filtered_deck.py b/qt/aqt/filtered_deck.py index 56f5aa14b..acda4ef86 100644 --- a/qt/aqt/filtered_deck.py +++ b/qt/aqt/filtered_deck.py @@ -142,9 +142,9 @@ class FilteredDeckConfigDialog(QDialog): form.order.setCurrentIndex(term1.order) form.limit.setValue(term1.limit) - form.preview_again.setValue(config.preview_again_mins) - form.preview_hard.setValue(config.preview_hard_mins) - form.preview_good.setValue(config.preview_good_mins) + form.preview_again.setValue(config.preview_again_secs) + form.preview_hard.setValue(config.preview_hard_secs) + form.preview_good.setValue(config.preview_good_secs) if len(config.search_terms) > 1: term2: FilteredDeckConfig.SearchTerm = config.search_terms[1] @@ -277,9 +277,9 @@ class FilteredDeckConfigDialog(QDialog): del config.search_terms[:] config.search_terms.extend(terms) - config.preview_again_mins = form.preview_again.value() - config.preview_hard_mins = form.preview_hard.value() - config.preview_good_mins = form.preview_good.value() + config.preview_again_secs = form.preview_again.value() + config.preview_hard_secs = form.preview_hard.value() + config.preview_good_secs = form.preview_good.value() return True diff --git a/qt/aqt/forms/filtered_deck.ui b/qt/aqt/forms/filtered_deck.ui index d92dc32d5..0a90c40e5 100644 --- a/qt/aqt/forms/filtered_deck.ui +++ b/qt/aqt/forms/filtered_deck.ui @@ -7,7 +7,7 @@ 0 0 526 - 567 + 587 @@ -209,10 +209,18 @@ - + + + 99999 + + - + + + 99999 + + @@ -222,19 +230,23 @@ - + + + 99999 + + - decks_minutes + scheduling_seconds - decks_minutes + scheduling_seconds @@ -248,11 +260,11 @@ - decks_minutes + scheduling_seconds - + decks_zero_minutes_hint diff --git a/rslib/src/decks/filtered.rs b/rslib/src/decks/filtered.rs index 9df710775..dcc8585bb 100644 --- a/rslib/src/decks/filtered.rs +++ b/rslib/src/decks/filtered.rs @@ -22,8 +22,8 @@ impl Deck { limit: 20, order: FilteredSearchOrder::Due as i32, }); - filt.preview_again_mins = 1; - filt.preview_hard_mins = 10; + filt.preview_again_secs = 60; + filt.preview_hard_secs = 600; filt.reschedule = true; Deck { id: DeckId(0), diff --git a/rslib/src/decks/schema11.rs b/rslib/src/decks/schema11.rs index 2efe0cf03..e10820ca1 100644 --- a/rslib/src/decks/schema11.rs +++ b/rslib/src/decks/schema11.rs @@ -154,14 +154,17 @@ pub struct FilteredDeckSchema11 { // old scheduler #[serde(default, deserialize_with = "default_on_invalid")] delays: Option>, + // old scheduler + #[serde(default)] + preview_delay: u32, // new scheduler - #[serde(default, rename = "previewDelay")] - preview_again_mins: u32, #[serde(default)] - preview_hard_mins: u32, + preview_again_secs: u32, #[serde(default)] - preview_good_mins: u32, + preview_hard_secs: u32, + #[serde(default)] + preview_good_secs: u32, } #[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Default, Clone)] pub struct DeckTodaySchema11 { @@ -332,9 +335,10 @@ impl From for FilteredDeck { reschedule: deck.resched, search_terms: deck.terms.into_iter().map(Into::into).collect(), delays: deck.delays.unwrap_or_default(), - preview_again_mins: deck.preview_again_mins, - preview_hard_mins: deck.preview_hard_mins, - preview_good_mins: deck.preview_good_mins, + preview_delay: deck.preview_delay, + preview_again_secs: deck.preview_again_secs, + preview_hard_secs: deck.preview_hard_secs, + preview_good_secs: deck.preview_good_secs, } } } @@ -373,9 +377,10 @@ impl From for DeckSchema11 { } else { Some(filt.delays.clone()) }, - preview_again_mins: filt.preview_again_mins, - preview_hard_mins: filt.preview_hard_mins, - preview_good_mins: filt.preview_good_mins, + preview_delay: filt.preview_delay, + preview_again_secs: filt.preview_again_secs, + preview_hard_secs: filt.preview_hard_secs, + preview_good_secs: filt.preview_good_secs, common: deck.into(), }), } diff --git a/rslib/src/scheduler/answering/current.rs b/rslib/src/scheduler/answering/current.rs index 67ef476f1..7aab58db5 100644 --- a/rslib/src/scheduler/answering/current.rs +++ b/rslib/src/scheduler/answering/current.rs @@ -51,7 +51,7 @@ impl CardStateUpdater { .into() } else { PreviewState { - scheduled_secs: filtered.preview_again_mins * 60, + scheduled_secs: filtered.preview_again_secs, finished: false, } .into() diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index bad9f3dca..45c805fd8 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -93,9 +93,9 @@ impl CardStateUpdater { in_filtered_deck: self.deck.is_filtered(), preview_delays: if let DeckKind::Filtered(deck) = &self.deck.kind { PreviewDelays { - again: deck.preview_again_mins, - hard: deck.preview_hard_mins, - good: deck.preview_good_mins, + again: deck.preview_again_secs, + hard: deck.preview_hard_secs, + good: deck.preview_good_secs, } } else { Default::default() diff --git a/rslib/src/scheduler/filtered/custom_study.rs b/rslib/src/scheduler/filtered/custom_study.rs index fda0901a2..e8e085c49 100644 --- a/rslib/src/scheduler/filtered/custom_study.rs +++ b/rslib/src/scheduler/filtered/custom_study.rs @@ -208,9 +208,10 @@ fn custom_study_config( order: order as i32, }], delays: vec![], - preview_again_mins: 1, - preview_hard_mins: 10, - preview_good_mins: 0, + preview_delay: 10, + preview_again_secs: 60, + preview_hard_secs: 600, + preview_good_secs: 0, } } diff --git a/rslib/src/scheduler/states/preview_filter.rs b/rslib/src/scheduler/states/preview_filter.rs index a4f16632a..93965cf25 100644 --- a/rslib/src/scheduler/states/preview_filter.rs +++ b/rslib/src/scheduler/states/preview_filter.rs @@ -33,15 +33,15 @@ impl PreviewState { } } -fn delay_or_return(minutes: u32) -> CardState { - if minutes == 0 { +fn delay_or_return(seconds: u32) -> CardState { + if seconds == 0 { PreviewState { scheduled_secs: 0, finished: true, } } else { PreviewState { - scheduled_secs: minutes * 60, + scheduled_secs: seconds, finished: false, } }