diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-07-18 12:06:49 -0400 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-07-18 12:06:49 -0400 |
commit | 743354da056c65c6ce0910394230270ef793d8cc (patch) | |
tree | 22795339118dfdf2e819a03fa3b8081d87226339 /src/event | |
parent | eb8b155329b2c2689cc5b854f0b87f4448485c66 (diff) |
asynchronize delete operation
Diffstat (limited to 'src/event')
-rw-r--r-- | src/event/app_event.rs | 6 | ||||
-rw-r--r-- | src/event/process_event.rs | 26 |
2 files changed, 23 insertions, 9 deletions
diff --git a/src/event/app_event.rs b/src/event/app_event.rs index fd232f6..a22b0f7 100644 --- a/src/event/app_event.rs +++ b/src/event/app_event.rs @@ -11,7 +11,7 @@ use termion::event::Event; use termion::input::TermRead; use crate::fs::JoshutoDirList; -use crate::io::IoWorkerProgress; +use crate::io::FileOperationProgress; use crate::preview::preview_file::FilePreview; #[derive(Debug)] @@ -21,8 +21,8 @@ pub enum AppEvent { // background IO worker events IoWorkerCreate, - IoWorkerProgress(IoWorkerProgress), - IoWorkerResult(io::Result<IoWorkerProgress>), + FileOperationProgress(FileOperationProgress), + IoWorkerResult(io::Result<FileOperationProgress>), // forked process events ChildProcessComplete(u32), diff --git a/src/event/process_event.rs b/src/event/process_event.rs index bf587a3..f8fe41a 100644 --- a/src/event/process_event.rs +++ b/src/event/process_event.rs @@ -11,7 +11,7 @@ use crate::context::AppContext; use crate::event::AppEvent; use crate::fs::JoshutoDirList; use crate::history::DirectoryHistory; -use crate::io::{FileOp, IoWorkerProgress}; +use crate::io::{FileOperation, FileOperationProgress}; use crate::key_command::{AppExecute, Command, CommandKeybind}; use crate::preview::preview_file::FilePreview; use crate::ui; @@ -56,7 +56,7 @@ pub fn get_input_while_composite<'a>( pub fn process_noninteractive(event: AppEvent, context: &mut AppContext) { match event { AppEvent::IoWorkerCreate => process_new_worker(context), - AppEvent::IoWorkerProgress(res) => process_worker_progress(context, res), + AppEvent::FileOperationProgress(res) => process_worker_progress(context, res), AppEvent::IoWorkerResult(res) => process_finished_worker(context, res), AppEvent::PreviewDir(Ok(dirlist)) => process_dir_preview(context, dirlist), AppEvent::PreviewFile(path, file_preview) => { @@ -81,13 +81,16 @@ pub fn process_new_worker(context: &mut AppContext) { } } -pub fn process_worker_progress(context: &mut AppContext, res: IoWorkerProgress) { +pub fn process_worker_progress(context: &mut AppContext, res: FileOperationProgress) { let worker_context = context.worker_context_mut(); worker_context.set_progress(res); worker_context.update_msg(); } -pub fn process_finished_worker(context: &mut AppContext, res: std::io::Result<IoWorkerProgress>) { +pub fn process_finished_worker( + context: &mut AppContext, + res: std::io::Result<FileOperationProgress>, +) { let worker_context = context.worker_context_mut(); let observer = worker_context.remove_worker().unwrap(); let options = context.config_ref().display_options_ref().clone(); @@ -95,12 +98,23 @@ pub fn process_finished_worker(context: &mut AppContext, res: std::io::Result<Io let _ = tab.history_mut().reload(observer.dest_path(), &options); let _ = tab.history_mut().reload(observer.src_path(), &options); } + + /* delete + // remove directory previews + for tab in context.tab_context_mut().iter_mut() { + for p in &paths { + tab.history_mut().remove(p.as_path()); + } + } + */ + observer.join(); match res { Ok(progress) => { let op = match progress.kind() { - FileOp::Copy => "copied", - FileOp::Cut => "moved", + FileOperation::Cut => "moved", + FileOperation::Copy => "copied", + FileOperation::Delete => "deleted", }; let processed_size = format::file_size_to_string(progress.bytes_processed()); let total_size = format::file_size_to_string(progress.total_bytes()); |