Remove protobuf filters whole_col and current_deck

This commit is contained in:
RumovZ 2021-01-31 11:12:49 +01:00
parent 5d810dd799
commit 13c6921da1
4 changed files with 57 additions and 55 deletions

View file

@ -609,7 +609,7 @@ class Browser(QMainWindow):
tr(TR.BROWSING_SEARCH_BAR_HINT) tr(TR.BROWSING_SEARCH_BAR_HINT)
) )
self.form.searchEdit.addItems(self.mw.pm.profile["searchHistory"]) self.form.searchEdit.addItems(self.mw.pm.profile["searchHistory"])
self.search_for(self.col.build_search_string(SearchTerm(current_deck=True)), "") self.search_for(self.col.build_search_string(SearchTerm(deck="current")), "")
self.form.searchEdit.setFocus() self.form.searchEdit.setFocus()
# search triggered by user # search triggered by user

View file

@ -462,14 +462,14 @@ class SidebarTreeView(QTreeView):
item = SidebarItem( item = SidebarItem(
tr(TR.BROWSING_WHOLE_COLLECTION), tr(TR.BROWSING_WHOLE_COLLECTION),
":/icons/collection.svg", ":/icons/collection.svg",
self._filter_func(SearchTerm(whole_collection=True)), self._filter_func(),
item_type=SidebarItemType.COLLECTION, item_type=SidebarItemType.COLLECTION,
) )
root.addChild(item) root.addChild(item)
item = SidebarItem( item = SidebarItem(
tr(TR.BROWSING_CURRENT_DECK), tr(TR.BROWSING_CURRENT_DECK),
":/icons/deck.svg", ":/icons/deck.svg",
self._filter_func(SearchTerm(current_deck=True)), self._filter_func(SearchTerm(deck="current")),
item_type=SidebarItemType.CURRENT_DECK, item_type=SidebarItemType.CURRENT_DECK,
) )
root.addChild(item) root.addChild(item)

View file

@ -811,11 +811,9 @@ message SearchTerm {
Rated rated = 8; Rated rated = 8;
uint32 added_in_days = 9; uint32 added_in_days = 9;
int32 due_in_days = 10; int32 due_in_days = 10;
bool whole_collection = 11; Flag flag = 11;
bool current_deck = 12; CardState card_state = 12;
Flag flag = 13; IdList nids = 13;
CardState card_state = 14;
IdList nids = 15;
} }
} }

View file

@ -294,54 +294,58 @@ impl From<pb::SearchTerm> for Node<'_> {
fn from(msg: pb::SearchTerm) -> Self { fn from(msg: pb::SearchTerm) -> Self {
use pb::search_term::Filter; use pb::search_term::Filter;
use pb::search_term::Flag; use pb::search_term::Flag;
match msg.filter.unwrap_or(Filter::WholeCollection(true)) { if let Some(filter) = msg.filter {
Filter::Tag(s) => Node::Search(SearchNode::Tag( match filter {
escape_anki_wildcards(&s).into_owned().into(), Filter::Tag(s) => Node::Search(SearchNode::Tag(
)), escape_anki_wildcards(&s).into_owned().into(),
Filter::Deck(s) => Node::Search(SearchNode::Deck( )),
escape_anki_wildcards(&s).into_owned().into(), Filter::Deck(s) => Node::Search(SearchNode::Deck(
)), escape_anki_wildcards(&s).into_owned().into(),
Filter::Note(s) => Node::Search(SearchNode::NoteType( )),
escape_anki_wildcards(&s).into_owned().into(), Filter::Note(s) => Node::Search(SearchNode::NoteType(
)), escape_anki_wildcards(&s).into_owned().into(),
Filter::Template(u) => { )),
Node::Search(SearchNode::CardTemplate(TemplateKind::Ordinal(u as u16))) Filter::Template(u) => {
Node::Search(SearchNode::CardTemplate(TemplateKind::Ordinal(u as u16)))
}
Filter::Nid(nid) => Node::Search(SearchNode::NoteIDs(nid.to_string().into())),
Filter::Nids(nids) => {
Node::Search(SearchNode::NoteIDs(nids.into_id_string().into()))
}
Filter::Dupe(dupe) => Node::Search(SearchNode::Duplicates {
note_type_id: dupe.notetype_id.into(),
text: dupe.first_field.into(),
}),
Filter::FieldName(s) => Node::Search(SearchNode::SingleField {
field: escape_anki_wildcards(&s).into_owned().into(),
text: "*".to_string().into(),
is_re: false,
}),
Filter::Rated(rated) => Node::Search(SearchNode::Rated {
days: rated.days,
ease: rated.rating().into(),
}),
Filter::AddedInDays(u) => Node::Search(SearchNode::AddedInDays(u)),
Filter::DueInDays(i) => Node::Search(SearchNode::Property {
operator: "<=".to_string(),
kind: PropertyKind::Due(i),
}),
Filter::CardState(state) => Node::Search(SearchNode::State(
pb::search_term::CardState::from_i32(state)
.unwrap_or_default()
.into(),
)),
Filter::Flag(flag) => match Flag::from_i32(flag).unwrap_or(Flag::Any) {
Flag::None => Node::Search(SearchNode::Flag(0)),
Flag::Any => Node::Not(Box::new(Node::Search(SearchNode::Flag(0)))),
Flag::Red => Node::Search(SearchNode::Flag(1)),
Flag::Orange => Node::Search(SearchNode::Flag(2)),
Flag::Green => Node::Search(SearchNode::Flag(3)),
Flag::Blue => Node::Search(SearchNode::Flag(4)),
},
} }
Filter::Nid(nid) => Node::Search(SearchNode::NoteIDs(nid.to_string().into())), } else {
Filter::Nids(nids) => Node::Search(SearchNode::NoteIDs(nids.into_id_string().into())), Node::Search(SearchNode::WholeCollection)
Filter::Dupe(dupe) => Node::Search(SearchNode::Duplicates {
note_type_id: dupe.notetype_id.into(),
text: dupe.first_field.into(),
}),
Filter::FieldName(s) => Node::Search(SearchNode::SingleField {
field: escape_anki_wildcards(&s).into_owned().into(),
text: "*".to_string().into(),
is_re: false,
}),
Filter::Rated(rated) => Node::Search(SearchNode::Rated {
days: rated.days,
ease: rated.rating().into(),
}),
Filter::AddedInDays(u) => Node::Search(SearchNode::AddedInDays(u)),
Filter::DueInDays(i) => Node::Search(SearchNode::Property {
operator: "<=".to_string(),
kind: PropertyKind::Due(i),
}),
Filter::WholeCollection(_) => Node::Search(SearchNode::WholeCollection),
Filter::CurrentDeck(_) => Node::Search(SearchNode::Deck("current".into())),
Filter::CardState(state) => Node::Search(SearchNode::State(
pb::search_term::CardState::from_i32(state)
.unwrap_or_default()
.into(),
)),
Filter::Flag(flag) => match Flag::from_i32(flag).unwrap_or(Flag::Any) {
Flag::None => Node::Search(SearchNode::Flag(0)),
Flag::Any => Node::Not(Box::new(Node::Search(SearchNode::Flag(0)))),
Flag::Red => Node::Search(SearchNode::Flag(1)),
Flag::Orange => Node::Search(SearchNode::Flag(2)),
Flag::Green => Node::Search(SearchNode::Flag(3)),
Flag::Blue => Node::Search(SearchNode::Flag(4)),
},
} }
} }
} }