diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-12-11 21:07:13 -0500 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2020-12-11 21:07:13 -0500 |
commit | 916d72c42cfc7bcb8fc560e17cb3bd75c00757da (patch) | |
tree | a8024fc9bd9a48065cd6b65375109482ac9b7983 /src/ui/views/tui_worker_view.rs | |
parent | bf9c102a4cfb85a9fd910195e6372dcd1d062c16 (diff) |
add a view for showing worker progress
Diffstat (limited to 'src/ui/views/tui_worker_view.rs')
-rw-r--r-- | src/ui/views/tui_worker_view.rs | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/ui/views/tui_worker_view.rs b/src/ui/views/tui_worker_view.rs new file mode 100644 index 0000000..536c45a --- /dev/null +++ b/src/ui/views/tui_worker_view.rs @@ -0,0 +1,55 @@ +use termion::event::Key; + +use tui::layout::Rect; + +use crate::context::JoshutoContext; +use crate::ui::widgets::TuiWorker; +use crate::ui::TuiBackend; +use crate::util::event::Event; +use crate::util::worker; + +pub struct TuiWorkerView {} + +impl TuiWorkerView { + pub fn new() -> Self { + Self {} + } + + pub fn display(&self, context: &mut JoshutoContext, backend: &mut TuiBackend) { + context.flush_event(); + let terminal = backend.terminal_mut(); + + loop { + let _ = terminal.draw(|frame| { + let f_size: Rect = frame.size(); + if f_size.height == 0 { + return; + } + { + let view = TuiWorker::new(&context); + frame.render_widget(view, f_size); + } + }); + + if let Ok(event) = context.poll_event() { + match event { + Event::IOWorkerProgress(res) => { + worker::process_worker_progress(context, res); + } + Event::IOWorkerResult(res) => { + worker::process_finished_worker(context, res); + } + Event::Input(key) => { + match key { + Key::Esc => { + break; + } + _ => {} + } + context.flush_event(); + } + }; + } + } + } +} |