From 6f7f81264aece992a6b90dc5846bc08b5d607b96 Mon Sep 17 00:00:00 2001 From: ChristianVisintin Date: Fri, 27 Nov 2020 16:47:35 +0100 Subject: [PATCH] Delete fs entry (local) --- src/ui/activities/filetransfer_activity.rs | 46 +++++++++++++++++++--- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/ui/activities/filetransfer_activity.rs b/src/ui/activities/filetransfer_activity.rs index 7426230..00125d3 100644 --- a/src/ui/activities/filetransfer_activity.rs +++ b/src/ui/activities/filetransfer_activity.rs @@ -379,26 +379,62 @@ impl FileTransferActivity { } } KeyCode::Enter => { - // TODO: + // Match selected file + if let Some(entry) = self.local.files.get(self.local.index) { + match entry { + FsEntry::Directory(dir) => { + // Change directory + if let Err(err) = + context.local.change_wrkdir(dir.abs_path.clone()) + { + // Report err + self.input_mode = InputMode::Popup(PopupType::Alert( + Color::Red, + format!("Could not change working directory: {}", err), + )); + } + // Update files + self.local.files = context.local.list_dir(); + } + FsEntry::File(file) => { + // TODO: upload file + } + } + } } KeyCode::Delete => { - // TODO: + // Get file at index + if let Some(entry) = self.local.files.get(self.local.index) { + // Get file name + let file_name: String = match entry { + FsEntry::Directory(dir) => dir.name.clone(), + FsEntry::File(file) => file.name.clone(), + }; + // Show delete prompt + self.input_mode = InputMode::Popup(PopupType::YesNo( + format!("Delete file \"{}\"", file_name), + FileTransferActivity::callback_delete_fsentry, + FileTransferActivity::callback_nothing_to_do, + )) + } } KeyCode::Char(ch) => match ch { - 'g' | 'G' => { // Goto + 'g' | 'G' => { + // Goto // If ctrl is enabled... if key.modifiers.intersects(KeyModifiers::CONTROL) { // TODO: } } - 'r' | 'R' => { // Rename + 'r' | 'R' => { + // Rename // If ctrl is enabled... if key.modifiers.intersects(KeyModifiers::CONTROL) { // TODO: } } _ => { /* Nothing to do */ } - } + }, _ => { /* Nothing to do */ } } }