mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-01-06 05:37:51 +08:00
140 lines
3.7 KiB
Rust
140 lines
3.7 KiB
Rust
use hbb_common::{fs, message_proto::*, log};
|
|
|
|
use super::{Data, Interface};
|
|
|
|
pub trait FileManager: Interface {
|
|
fn get_home_dir(&self) -> String {
|
|
fs::get_home_as_string()
|
|
}
|
|
|
|
#[cfg(not(any(target_os = "android", target_os = "ios", feature = "cli", feature = "flutter")))]
|
|
fn read_dir(&self, path: String, include_hidden: bool) -> sciter::Value {
|
|
match fs::read_dir(&fs::get_path(&path), include_hidden) {
|
|
Err(_) => sciter::Value::null(),
|
|
Ok(fd) => {
|
|
use crate::ui::remote::make_fd;
|
|
let mut m = make_fd(0, &fd.entries.to_vec(), false);
|
|
m.set_item("path", path);
|
|
m
|
|
}
|
|
}
|
|
}
|
|
|
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "cli", feature = "flutter"))]
|
|
fn read_dir(&self, path: &str, include_hidden: bool) -> String {
|
|
use crate::common::make_fd_to_json;
|
|
match fs::read_dir(&fs::get_path(path), include_hidden) {
|
|
Ok(fd) => make_fd_to_json(fd.id, fd.path, &fd.entries),
|
|
Err(_) => "".into(),
|
|
}
|
|
}
|
|
|
|
fn cancel_job(&self, id: i32) {
|
|
self.send(Data::CancelJob(id));
|
|
}
|
|
|
|
fn read_remote_dir(&self, path: String, include_hidden: bool) {
|
|
let mut msg_out = Message::new();
|
|
let mut file_action = FileAction::new();
|
|
file_action.set_read_dir(ReadDir {
|
|
path,
|
|
include_hidden,
|
|
..Default::default()
|
|
});
|
|
msg_out.set_file_action(file_action);
|
|
self.send(Data::Message(msg_out));
|
|
}
|
|
|
|
fn remove_file(&self, id: i32, path: String, file_num: i32, is_remote: bool) {
|
|
self.send(Data::RemoveFile((id, path, file_num, is_remote)));
|
|
}
|
|
|
|
fn remove_dir_all(&self, id: i32, path: String, is_remote: bool, include_hidden: bool) {
|
|
self.send(Data::RemoveDirAll((id, path, is_remote, include_hidden)));
|
|
}
|
|
|
|
fn confirm_delete_files(&self, id: i32, file_num: i32) {
|
|
self.send(Data::ConfirmDeleteFiles((id, file_num)));
|
|
}
|
|
|
|
fn set_no_confirm(&self, id: i32) {
|
|
self.send(Data::SetNoConfirm(id));
|
|
}
|
|
|
|
fn remove_dir(&self, id: i32, path: String, is_remote: bool) {
|
|
if is_remote {
|
|
self.send(Data::RemoveDir((id, path)));
|
|
} else {
|
|
fs::remove_all_empty_dir(&fs::get_path(&path)).ok();
|
|
}
|
|
}
|
|
|
|
fn create_dir(&self, id: i32, path: String, is_remote: bool) {
|
|
self.send(Data::CreateDir((id, path, is_remote)));
|
|
}
|
|
|
|
fn send_files(
|
|
&self,
|
|
id: i32,
|
|
path: String,
|
|
to: String,
|
|
file_num: i32,
|
|
include_hidden: bool,
|
|
is_remote: bool,
|
|
) {
|
|
self.send(Data::SendFiles((
|
|
id,
|
|
path,
|
|
to,
|
|
file_num,
|
|
include_hidden,
|
|
is_remote,
|
|
)));
|
|
}
|
|
|
|
fn add_job(
|
|
&self,
|
|
id: i32,
|
|
path: String,
|
|
to: String,
|
|
file_num: i32,
|
|
include_hidden: bool,
|
|
is_remote: bool,
|
|
) {
|
|
self.send(Data::AddJob((
|
|
id,
|
|
path,
|
|
to,
|
|
file_num,
|
|
include_hidden,
|
|
is_remote,
|
|
)));
|
|
}
|
|
|
|
fn resume_job(&self, id: i32, is_remote: bool) {
|
|
self.send(Data::ResumeJob((id, is_remote)));
|
|
}
|
|
|
|
fn set_confirm_override_file(
|
|
&self,
|
|
id: i32,
|
|
file_num: i32,
|
|
need_override: bool,
|
|
remember: bool,
|
|
is_upload: bool,
|
|
) {
|
|
log::info!(
|
|
"confirm file transfer, job: {}, need_override: {}",
|
|
id,
|
|
need_override
|
|
);
|
|
self.send(Data::SetConfirmOverrideFile((
|
|
id,
|
|
file_num,
|
|
need_override,
|
|
remember,
|
|
is_upload,
|
|
)));
|
|
}
|
|
}
|