rustdesk/src/client/file_trait.rs
2022-05-16 14:45:17 +08:00

90 lines
2.6 KiB
Rust

use super::{Data, Interface};
use hbb_common::{
fs,
message_proto::*,
};
pub trait FileManager: Interface {
fn get_home_dir(&self) -> String{
fs::get_home_as_string()
}
#[cfg(not(any(target_os = "android", target_os = "ios")))]
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"))]
fn read_dir(&self,path: &str, include_hidden: bool) -> String {
use crate::mobile::make_fd_to_json;
match fs::read_dir(&fs::get_path(path), include_hidden){
Ok(fd) => make_fd_to_json(fd),
Err(_)=>"".into()
}
}
fn cancel_job(&mut 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(&mut 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(&mut self, id: i32, path: String, is_remote: bool) {
self.send(Data::RemoveDirAll((id, path, is_remote)));
}
fn confirm_delete_files(&mut self, id: i32, file_num: i32) {
self.send(Data::ConfirmDeleteFiles((id, file_num)));
}
fn set_no_confirm(&mut self, id: i32) {
self.send(Data::SetNoConfirm(id));
}
fn remove_dir(&mut 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(&mut self, id: i32, path: String, is_remote: bool) {
self.send(Data::CreateDir((id, path, is_remote)));
}
fn send_files(
&mut 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)));
}
}