Open file with

This commit is contained in:
veeso
2021-06-10 12:14:09 +02:00
parent a8354ee38f
commit 4e50038b41
7 changed files with 134 additions and 11 deletions
@@ -140,4 +140,49 @@ impl FileTransferActivity {
}
}
}
pub(crate) fn action_find_open(&mut self) {
match self.get_found_selected_entries() {
SelectedEntry::One(entry) => {
// Open file
self.open_found_file(&entry, None);
}
SelectedEntry::Many(entries) => {
// Iter files
for entry in entries.iter() {
// Open file
self.open_found_file(entry, None);
}
}
SelectedEntry::None => {}
}
}
pub(crate) fn action_find_open_with(&mut self, with: &str) {
match self.get_found_selected_entries() {
SelectedEntry::One(entry) => {
// Open file
self.open_found_file(&entry, Some(with));
}
SelectedEntry::Many(entries) => {
// Iter files
for entry in entries.iter() {
// Open file
self.open_found_file(entry, Some(with));
}
}
SelectedEntry::None => {}
}
}
fn open_found_file(&mut self, entry: &FsEntry, with: Option<&str>) {
match self.browser.tab() {
FileExplorerTab::FindLocal | FileExplorerTab::Local => {
self.action_open_local(entry, with);
}
FileExplorerTab::FindRemote | FileExplorerTab::Remote => {
self.action_open_remote(entry, with);
}
}
}
}
+33 -3
View File
@@ -28,13 +28,13 @@
// deps
extern crate open;
// locals
use super::{FileTransferActivity, FsEntry, LogLevel};
use super::{FileTransferActivity, FsEntry, LogLevel, SelectedEntry};
impl FileTransferActivity {
/// ### action_open_local
///
/// Open local file
pub(crate) fn action_open_local(&mut self, entry: FsEntry, open_with: Option<String>) {
pub(crate) fn action_open_local(&mut self, entry: &FsEntry, open_with: Option<&str>) {
let real_entry: FsEntry = entry.get_realfile();
if let FsEntry::File(file) = real_entry {
// Open file
@@ -63,7 +63,7 @@ impl FileTransferActivity {
/// ### action_open_local
///
/// Open remote file. The file is first downloaded to a temporary directory on localhost
pub(crate) fn action_open_remote(&mut self, entry: FsEntry, open_with: Option<String>) {
pub(crate) fn action_open_remote(&mut self, entry: &FsEntry, open_with: Option<&str>) {
let real_entry: FsEntry = entry.get_realfile();
if let FsEntry::File(file) = real_entry {
// Download file
@@ -99,4 +99,34 @@ impl FileTransferActivity {
}
}
}
/// ### action_local_open_with
///
/// Open selected file with provided application
pub(crate) fn action_local_open_with(&mut self, with: &str) {
let entries: Vec<FsEntry> = match self.get_local_selected_entries() {
SelectedEntry::One(entry) => vec![entry],
SelectedEntry::Many(entries) => entries,
SelectedEntry::None => vec![],
};
// Open all entries
for entry in entries.iter() {
self.action_open_local(entry, Some(with));
}
}
/// ### action_remote_open_with
///
/// Open selected file with provided application
pub(crate) fn action_remote_open_with(&mut self, with: &str) {
let entries: Vec<FsEntry> = match self.get_remote_selected_entries() {
SelectedEntry::One(entry) => vec![entry],
SelectedEntry::Many(entries) => entries,
SelectedEntry::None => vec![],
};
// Open all entries
for entry in entries.iter() {
self.action_open_remote(entry, Some(with));
}
}
}
@@ -57,7 +57,7 @@ impl FileTransferActivity {
match action {
SubmitAction::ChangeDir => self.action_enter_local_dir(entry, false),
SubmitAction::OpenFile => {
self.action_open_local(entry, None);
self.action_open_local(&entry, None);
false
}
}
@@ -86,7 +86,7 @@ impl FileTransferActivity {
match action {
SubmitAction::ChangeDir => self.action_enter_remote_dir(entry, false),
SubmitAction::OpenFile => {
self.action_open_remote(entry, None);
self.action_open_remote(&entry, None);
false
}
}