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/context | |
parent | bf9c102a4cfb85a9fd910195e6372dcd1d062c16 (diff) |
add a view for showing worker progress
Diffstat (limited to 'src/context')
-rw-r--r-- | src/context/context.rs | 27 | ||||
-rw-r--r-- | src/context/tab_context.rs | 6 |
2 files changed, 20 insertions, 13 deletions
diff --git a/src/context/context.rs b/src/context/context.rs index 904d18d..00fe233 100644 --- a/src/context/context.rs +++ b/src/context/context.rs @@ -1,10 +1,11 @@ +use std::collections::vec_deque::Iter; use std::collections::VecDeque; use std::sync::mpsc; use std::thread; use crate::config; use crate::context::{LocalStateContext, TabContext}; -use crate::io::{IOWorkerObserver, IOWorkerThread}; +use crate::io::{IOWorkerObserver, IOWorkerProgress, IOWorkerThread}; use crate::util::event::{Event, Events}; pub struct JoshutoContext { @@ -88,15 +89,27 @@ impl JoshutoContext { pub fn worker_is_busy(&self) -> bool { self.worker.is_some() } - pub fn worker_len(&self) -> usize { - self.worker_queue.len() - } pub fn worker_is_empty(&self) -> bool { self.worker_queue.is_empty() } - pub fn set_worker_msg(&mut self, msg: String) { + + pub fn worker_iter(&self) -> Iter<IOWorkerThread> { + self.worker_queue.iter() + } + + pub fn worker_ref(&self) -> Option<&IOWorkerObserver> { + self.worker.as_ref() + } + + pub fn set_worker_progress(&mut self, res: IOWorkerProgress) { + if let Some(s) = self.worker.as_mut() { + s.set_progress(res); + } + } + + pub fn update_worker_msg(&mut self) { if let Some(s) = self.worker.as_mut() { - s.set_msg(msg); + s.update_msg(); } } pub fn worker_msg(&self) -> Option<&str> { @@ -116,7 +129,7 @@ impl JoshutoContext { let worker_handle = thread::spawn(move || worker.start(wtx)); // relay worker info to event loop while let Ok(progress) = wrx.recv() { - tx.send(Event::IOWorkerProgress(progress)); + let _ = tx.send(Event::IOWorkerProgress(progress)); } let result = worker_handle.join(); diff --git a/src/context/tab_context.rs b/src/context/tab_context.rs index 272e356..f199d4a 100644 --- a/src/context/tab_context.rs +++ b/src/context/tab_context.rs @@ -33,12 +33,6 @@ impl TabContext { self.tabs.len() } - pub fn tab_ref(&self, i: usize) -> Option<&JoshutoTab> { - if i >= self.tabs.len() { - return None; - } - Some(&self.tabs[i]) - } pub fn tab_mut(&mut self, i: usize) -> Option<&mut JoshutoTab> { if i >= self.tabs.len() { return None; |