Skip to content

Commit

Permalink
Better progress display when deleting multiple items
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Thiel committed Jun 16, 2019
1 parent a8f595f commit d586703
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "dua-cli"
version = "2.1.0"
version = "2.1.1"
authors = ["Sebastian Thiel <byronimo@gmail.com>"]
edition = "2018"
include = ["src/**/*", "Cargo.toml"]
Expand Down
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ dua interactive

* [ ] Evaluate unit coloring - can we highlight different units better, make them stick out?

#### ✅ v2.1.01 bug fixes and improvements

* Better information about deletion progress

#### ✅ v2.1.0- bug fixes and improvements

* windows support
Expand Down
21 changes: 16 additions & 5 deletions src/interactive/app/handlers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,8 @@ impl TerminalApp {
self.state.entries = sorted_entries(&self.traversal.tree, root, self.state.sorting);
}

pub fn delete_entry(&mut self, index: TreeIndex) -> Result<(), usize> {
pub fn delete_entry(&mut self, index: TreeIndex) -> Result<usize, usize> {
let mut entries_deleted = 0;
if let Some(_entry) = self.traversal.tree.node_weight(index) {
let path_to_delete = path_of(&self.traversal.tree, index);
delete_directory_recursively(path_to_delete)?;
Expand All @@ -194,6 +195,7 @@ impl TerminalApp {
while let Some(nx) = bfs.next(&self.traversal.tree) {
self.traversal.tree.remove_node(nx);
self.traversal.entries_traversed -= 1;
entries_deleted += 1;
}
self.state.entries =
sorted_entries(&self.traversal.tree, self.state.root, self.state.sorting);
Expand All @@ -209,7 +211,7 @@ impl TerminalApp {
}
self.recompute_sizes_recursively(parent_idx);
}
Ok(())
Ok(entries_deleted)
}

fn recompute_sizes_recursively(&mut self, mut index: TreeIndex) {
Expand Down Expand Up @@ -249,15 +251,24 @@ impl TerminalApp {
self.window.mark_pane = match res {
Some((pane, mode)) => match mode {
Some(MarkMode::Delete) => {
pane.iterate_deletable_items(|mut pane, entry_to_delete| {
self.state.message = Some("Deleting entries...".to_string());
let mut entries_deleted = 0;
let res = pane.iterate_deletable_items(|mut pane, entry_to_delete| {
self.window.mark_pane = Some(pane);
self.draw(terminal).ok();
pane = self.window.mark_pane.take().expect("option to be filled");
match self.delete_entry(entry_to_delete) {
Ok(_) => Ok(pane),
Ok(ed) => {
entries_deleted += ed;
self.state.message =
Some(format!("Deleted {} entries...", entries_deleted));
Ok(pane)
}
Err(c) => Err((pane, c)),
}
})
});
self.state.message = None;
res
}
None => Some(pane),
},
Expand Down

0 comments on commit d586703

Please sign in to comment.