use a separate enum for the is:* searches

This commit is contained in:
Damien Elmes 2021-01-30 10:49:00 +10:00
parent 22b80c2dd5
commit 52bac7a7a1
6 changed files with 67 additions and 24 deletions

View file

@ -5,6 +5,7 @@ ignore = forms,hooks_gen.py
[TYPECHECK]
ignored-modules=win32file,pywintypes,socket,win32pipe,winrt,pyaudio
ignored-classes=FilterToSearchIn
[REPORTS]
output-format=colorized

View file

@ -1015,13 +1015,31 @@ QTableView {{ gridline-color: {grid} }}
subm.addChild(
self._simpleFilters(
(
(tr(TR.ACTIONS_NEW), SearchTerm(new=True)),
(tr(TR.SCHEDULING_LEARNING), SearchTerm(learn=True)),
(tr(TR.SCHEDULING_REVIEW), SearchTerm(review=True)),
(tr(TR.FILTERING_IS_DUE), SearchTerm(due=True)),
(
tr(TR.ACTIONS_NEW),
SearchTerm(card_state=SearchTerm.CardState.NEW),
),
(
tr(TR.SCHEDULING_LEARNING),
SearchTerm(card_state=SearchTerm.CardState.LEARN),
),
(
tr(TR.SCHEDULING_REVIEW),
SearchTerm(card_state=SearchTerm.CardState.REVIEW),
),
(
tr(TR.FILTERING_IS_DUE),
SearchTerm(card_state=SearchTerm.CardState.DUE),
),
None,
(tr(TR.BROWSING_SUSPENDED), SearchTerm(suspended=True)),
(tr(TR.BROWSING_BURIED), SearchTerm(buried=True)),
(
tr(TR.BROWSING_SUSPENDED),
SearchTerm(card_state=SearchTerm.CardState.SUSPENDED),
),
(
tr(TR.BROWSING_BURIED),
SearchTerm(card_state=SearchTerm.CardState.BURIED),
),
None,
(tr(TR.ACTIONS_RED_FLAG), SearchTerm(flag=Flag.RED)),
(tr(TR.ACTIONS_ORANGE_FLAG), SearchTerm(flag=Flag.ORANGE)),

View file

@ -175,23 +175,28 @@ class CustomStudy(QDialog):
dyn["resched"] = True
elif i == RADIO_PREVIEW:
search = self.mw.col.build_search_string(
SearchTerm(new=True), SearchTerm(added_in_days=spin)
SearchTerm(card_state=SearchTerm.CardState.NEW),
SearchTerm(added_in_days=spin),
)
dyn["terms"][0] = [search, DYN_MAX_SIZE, DYN_OLDEST]
dyn["resched"] = False
elif i == RADIO_CRAM:
type = f.cardType.currentRow()
if type == TYPE_NEW:
terms = self.mw.col.build_search_string(SearchTerm(new=True))
terms = self.mw.col.build_search_string(
SearchTerm(card_state=SearchTerm.CardState.NEW)
)
ord = DYN_ADDED
dyn["resched"] = True
elif type == TYPE_DUE:
terms = self.mw.col.build_search_string(SearchTerm(due=True))
terms = self.mw.col.build_search_string(
SearchTerm(card_state=SearchTerm.CardState.DUE)
)
ord = DYN_DUE
dyn["resched"] = True
elif type == TYPE_REVIEW:
terms = self.mw.col.build_search_string(
SearchTerm(new=True), negate=True
SearchTerm(card_state=SearchTerm.CardState.NEW), negate=True
)
ord = DYN_RANDOM
dyn["resched"] = True

View file

@ -47,9 +47,13 @@ class DeckConf(QDialog):
self.initialSetup()
self.loadConf()
if search:
search = self.mw.col.build_search_string(search, SearchTerm(due=True))
search = self.mw.col.build_search_string(
search, SearchTerm(card_state=SearchTerm.CardState.DUE)
)
self.form.search.setText(search)
search_2 = self.mw.col.build_search_string(search, SearchTerm(new=True))
search_2 = self.mw.col.build_search_string(
search, SearchTerm(card_state=SearchTerm.CardState.NEW)
)
self.form.search_2.setText(search_2)
self.form.search.selectAll()

View file

@ -789,6 +789,14 @@ message FilterToSearchIn {
uint32 days = 1;
Rating rating = 2;
}
enum CardState {
NEW = 0;
LEARN = 1;
REVIEW = 2;
DUE = 3;
SUSPENDED = 4;
BURIED = 5;
}
oneof filter {
string tag = 1;
string deck = 2;
@ -803,12 +811,7 @@ message FilterToSearchIn {
bool whole_collection = 11;
bool current_deck = 12;
Flag flag = 13;
bool new = 14;
bool learn = 15;
bool review = 16;
bool due = 17;
bool suspended = 18;
bool buried = 19;
CardState card_state = 14;
}
}

View file

@ -328,12 +328,11 @@ impl From<pb::FilterToSearchIn> for Node<'_> {
}),
Filter::WholeCollection(_) => Node::Search(SearchNode::WholeCollection),
Filter::CurrentDeck(_) => Node::Search(SearchNode::Deck("current".into())),
Filter::New(_) => Node::Search(SearchNode::State(StateKind::New)),
Filter::Learn(_) => Node::Search(SearchNode::State(StateKind::Learning)),
Filter::Review(_) => Node::Search(SearchNode::State(StateKind::Review)),
Filter::Due(_) => Node::Search(SearchNode::State(StateKind::Due)),
Filter::Suspended(_) => Node::Search(SearchNode::State(StateKind::Suspended)),
Filter::Buried(_) => Node::Search(SearchNode::State(StateKind::Buried)),
Filter::CardState(state) => Node::Search(SearchNode::State(
pb::filter_to_search_in::CardState::from_i32(state)
.unwrap_or_default()
.into(),
)),
Filter::Flag(flag) => match Flag::from_i32(flag).unwrap_or(Flag::Any) {
Flag::Without => Node::Search(SearchNode::Flag(0)),
Flag::Any => Node::Not(Box::new(Node::Search(SearchNode::Flag(0)))),
@ -368,6 +367,19 @@ impl From<pb::filter_to_search_in::rated::Rating> for EaseKind {
}
}
impl From<pb::filter_to_search_in::CardState> for StateKind {
fn from(k: pb::filter_to_search_in::CardState) -> Self {
match k {
pb::filter_to_search_in::CardState::New => StateKind::New,
pb::filter_to_search_in::CardState::Learn => StateKind::Learning,
pb::filter_to_search_in::CardState::Review => StateKind::Review,
pb::filter_to_search_in::CardState::Due => StateKind::Due,
pb::filter_to_search_in::CardState::Suspended => StateKind::Suspended,
pb::filter_to_search_in::CardState::Buried => StateKind::Buried,
}
}
}
impl BackendService for Backend {
fn latest_progress(&self, _input: Empty) -> BackendResult<pb::Progress> {
let progress = self.progress_state.lock().unwrap().last_progress;