summaryrefslogtreecommitdiffstats
path: root/src/event
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2022-07-18 12:06:49 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2022-07-18 12:06:49 -0400
commit743354da056c65c6ce0910394230270ef793d8cc (patch)
tree22795339118dfdf2e819a03fa3b8081d87226339 /src/event
parenteb8b155329b2c2689cc5b854f0b87f4448485c66 (diff)
asynchronize delete operation
Diffstat (limited to 'src/event')
-rw-r--r--src/event/app_event.rs6
-rw-r--r--src/event/process_event.rs26
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());