summaryrefslogtreecommitdiffstats
path: root/src/context
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2020-12-11 21:07:13 -0500
committerJiayi Zhao <jeff.no.zhao@gmail.com>2020-12-11 21:07:13 -0500
commit916d72c42cfc7bcb8fc560e17cb3bd75c00757da (patch)
treea8024fc9bd9a48065cd6b65375109482ac9b7983 /src/context
parentbf9c102a4cfb85a9fd910195e6372dcd1d062c16 (diff)
add a view for showing worker progress
Diffstat (limited to 'src/context')
-rw-r--r--src/context/context.rs27
-rw-r--r--src/context/tab_context.rs6
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;