glues_tui/context/notebook/
tree_item.rs1use glues_core::{
2 data::{Directory, Note},
3 types::Id,
4};
5
6#[derive(Clone)]
7pub struct TreeItem {
8 pub depth: usize,
9 pub target: bool,
10 pub selectable: bool,
11 pub kind: TreeItemKind,
12}
13
14#[derive(Clone)]
15pub enum TreeItemKind {
16 Note { note: Note },
17 Directory { directory: Directory, opened: bool },
18}
19
20impl TreeItem {
21 pub fn is_directory(&self) -> bool {
22 matches!(self.kind, TreeItemKind::Directory { .. })
23 }
24
25 pub fn id(&self) -> &Id {
26 match &self.kind {
27 TreeItemKind::Note { note, .. } => ¬e.id,
28 TreeItemKind::Directory { directory, .. } => &directory.id,
29 }
30 }
31
32 pub fn name(&self) -> String {
33 match &self.kind {
34 TreeItemKind::Note { note, .. } => ¬e.name,
35 TreeItemKind::Directory { directory, .. } => &directory.name,
36 }
37 .clone()
38 }
39}