summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2021-04-24 13:18:21 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2021-04-24 13:18:21 -0400
commitafdb604b2f2e30718730cb07f217f50bd0ed2579 (patch)
tree1671b2c66aa3ab2ac98b3097fc15b5ce748881db /src/ui
parenta98af4f70d1b58ae7b2ece410c22d247240a2b1e (diff)
show visual progress bar in worker view
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/widgets/tui_worker.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/ui/widgets/tui_worker.rs b/src/ui/widgets/tui_worker.rs
index f4fad7f..03891c3 100644
--- a/src/ui/widgets/tui_worker.rs
+++ b/src/ui/widgets/tui_worker.rs
@@ -18,8 +18,6 @@ impl<'a> TuiWorker<'a> {
impl<'a> Widget for TuiWorker<'a> {
fn render(self, area: Rect, buf: &mut Buffer) {
- // TODO: could be styled better
-
match self.context.worker_ref() {
Some(io_obs) => {
if let Some(progress) = io_obs.progress.as_ref() {
@@ -28,20 +26,27 @@ impl<'a> Widget for TuiWorker<'a> {
FileOp::Cut => "Moving",
};
let msg = format!(
- "{} ({}/{}) {:?} -> {:?}",
+ "{} ({}/{}) {:?}",
op_str,
progress.index() + 1,
progress.len(),
- io_obs.src_path(),
io_obs.dest_path()
);
let style = Style::default();
buf.set_stringn(0, 2, msg, area.width as usize, style);
+ // draw a progress bar
+ let progress_bar_width =
+ (progress.index() as f32 / progress.len() as f32 * area.width as f32) as usize;
+ let progress_bar_space = " ".repeat(progress_bar_width);
+ let style = Style::default().bg(Color::Blue);
+ buf.set_stringn(0, 3, progress_bar_space, area.width as usize, style);
+
+ // draw queued up work
let style = Style::default()
.fg(Color::Yellow)
.add_modifier(Modifier::BOLD);
- buf.set_stringn(0, 4, "Queue:", area.width as usize, style);
+ buf.set_stringn(0, 5, "Queue:", area.width as usize, style);
let style = Style::default();
for (i, worker) in self.context.worker_iter().enumerate() {
@@ -50,14 +55,13 @@ impl<'a> Widget for TuiWorker<'a> {
FileOp::Cut => "Move",
};
let msg = format!(
- "{:02} {} {} items {:?} -> {:?}",
+ "{:02} {} {} items {:?}",
i + 1,
op_str,
worker.paths.len(),
- worker.paths[0].parent().unwrap(),
worker.dest
);
- buf.set_stringn(0, (4 + i + 2) as u16, msg, area.width as usize, style);
+ buf.set_stringn(0, (5 + i + 2) as u16, msg, area.width as usize, style);
}
}
}