collapsed->expanded in TagTreeNode

This commit is contained in:
Damien Elmes 2021-02-02 18:12:50 +10:00
parent 7d8448a321
commit 52b256663f
5 changed files with 14 additions and 13 deletions

View file

@ -548,7 +548,7 @@ class SidebarTreeView(QTreeView):
icon, icon,
self._filter_func(SearchTerm(tag=head + node.name)), self._filter_func(SearchTerm(tag=head + node.name)),
toggle_expand(), toggle_expand(),
not node.collapsed, node.expanded,
item_type=SidebarItemType.TAG, item_type=SidebarItemType.TAG,
full_name=head + node.name, full_name=head + node.name,
) )

View file

@ -865,7 +865,7 @@ message TagTreeNode {
string name = 1; string name = 1;
repeated TagTreeNode children = 2; repeated TagTreeNode children = 2;
uint32 level = 3; uint32 level = 3;
bool collapsed = 4; bool expanded = 4;
} }
message SetConfigJsonIn { message SetConfigJsonIn {

View file

@ -242,7 +242,7 @@ impl Collection {
let usn = self.usn()?; let usn = self.usn()?;
let stamp = TimestampMillis::now(); let stamp = TimestampMillis::now();
let collapsed_tags = self.storage.collapsed_tags()?; let expanded_tags = self.storage.expanded_tags()?;
self.storage.clear_tags()?; self.storage.clear_tags()?;
let total_notes = self.storage.total_notes()?; let total_notes = self.storage.total_notes()?;
@ -296,7 +296,7 @@ impl Collection {
// the note rebuilding process took care of adding tags back, so we just need // the note rebuilding process took care of adding tags back, so we just need
// to ensure to restore the collapse state // to ensure to restore the collapse state
self.storage.restore_collapsed_tags(&collapsed_tags)?; self.storage.restore_expanded_tags(&expanded_tags)?;
// if the collection is empty and the user has deleted all note types, ensure at least // if the collection is empty and the user has deleted all note types, ensure at least
// one note type exists // one note type exists
@ -646,7 +646,7 @@ mod test {
note.tags.push("two".into()); note.tags.push("two".into());
col.add_note(&mut note, DeckID(1))?; col.add_note(&mut note, DeckID(1))?;
col.set_tag_collapsed("two", true)?; col.set_tag_collapsed("one", false)?;
col.check_database(progress_fn)?; col.check_database(progress_fn)?;

View file

@ -24,17 +24,17 @@ impl SqliteStorage {
.collect() .collect()
} }
pub(crate) fn collapsed_tags(&self) -> Result<Vec<String>> { pub(crate) fn expanded_tags(&self) -> Result<Vec<String>> {
self.db self.db
.prepare_cached("select tag from tags where collapsed = true")? .prepare_cached("select tag from tags where collapsed = false")?
.query_and_then(NO_PARAMS, |r| r.get::<_, String>(0).map_err(Into::into))? .query_and_then(NO_PARAMS, |r| r.get::<_, String>(0).map_err(Into::into))?
.collect::<Result<Vec<_>>>() .collect::<Result<Vec<_>>>()
} }
pub(crate) fn restore_collapsed_tags(&self, tags: &[String]) -> Result<()> { pub(crate) fn restore_expanded_tags(&self, tags: &[String]) -> Result<()> {
let mut stmt = self let mut stmt = self
.db .db
.prepare_cached("update tags set collapsed = true where tag = ?")?; .prepare_cached("update tags set collapsed = false where tag = ?")?;
for tag in tags { for tag in tags {
stmt.execute(&[tag])?; stmt.execute(&[tag])?;
} }

View file

@ -171,7 +171,7 @@ fn add_child_nodes(tags: &mut Peekable<impl Iterator<Item = Tag>>, parent: &mut
name: (*split_name.last().unwrap()).into(), name: (*split_name.last().unwrap()).into(),
children: vec![], children: vec![],
level: parent.level + 1, level: parent.level + 1,
collapsed: tag.collapsed, expanded: !tag.collapsed,
}); });
tags.next(); tags.next();
} }
@ -273,13 +273,13 @@ impl Collection {
} }
pub fn clear_unused_tags(&self) -> Result<()> { pub fn clear_unused_tags(&self) -> Result<()> {
let collapsed: HashSet<_> = self.storage.collapsed_tags()?.into_iter().collect(); let expanded: HashSet<_> = self.storage.expanded_tags()?.into_iter().collect();
self.storage.clear_tags()?; self.storage.clear_tags()?;
let usn = self.usn()?; let usn = self.usn()?;
for name in self.storage.all_tags_in_notes()? { for name in self.storage.all_tags_in_notes()? {
let name = normalize_tag_name(&name).into(); let name = normalize_tag_name(&name).into();
self.storage.register_tag(&Tag { self.storage.register_tag(&Tag {
collapsed: collapsed.contains(&name), collapsed: !expanded.contains(&name),
name, name,
usn, usn,
})?; })?;
@ -503,6 +503,7 @@ mod test {
name: name.into(), name: name.into(),
level, level,
children, children,
..Default::default() ..Default::default()
} }
} }
@ -607,7 +608,7 @@ mod test {
note.tags.push("two".into()); note.tags.push("two".into());
col.add_note(&mut note, DeckID(1))?; col.add_note(&mut note, DeckID(1))?;
col.set_tag_collapsed("two", true)?; col.set_tag_collapsed("one", false)?;
col.clear_unused_tags()?; col.clear_unused_tags()?;
assert_eq!(col.storage.get_tag("one")?.unwrap().collapsed, false); assert_eq!(col.storage.get_tag("one")?.unwrap().collapsed, false);
assert_eq!(col.storage.get_tag("two")?.unwrap().collapsed, true); assert_eq!(col.storage.get_tag("two")?.unwrap().collapsed, true);