diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2021-04-24 13:18:21 -0400 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2021-04-24 13:18:21 -0400 |
commit | afdb604b2f2e30718730cb07f217f50bd0ed2579 (patch) | |
tree | 1671b2c66aa3ab2ac98b3097fc15b5ce748881db /src/ui | |
parent | a98af4f70d1b58ae7b2ece410c22d247240a2b1e (diff) |
show visual progress bar in worker view
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/widgets/tui_worker.rs | 20 |
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); } } } |