mirror of
https://github.com/weyne85/rustdesk.git
synced 2025-10-29 17:00:05 +00:00
enable rust default option
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
@@ -9,6 +9,7 @@ use std::{
|
||||
|
||||
use anyhow::Result;
|
||||
use rand::Rng;
|
||||
use serde as de;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use sodiumoxide::crypto::sign;
|
||||
|
||||
@@ -79,6 +80,26 @@ pub const RS_PUB_KEY: &'static str = "OeVuKk5nlHiXp+APNn0Y3pC1Iwpwn44JGqrQCsWqmB
|
||||
pub const RENDEZVOUS_PORT: i32 = 21116;
|
||||
pub const RELAY_PORT: i32 = 21117;
|
||||
|
||||
macro_rules! serde_field_string {
|
||||
($default_func:ident, $de_func:ident, $default_expr:expr) => {
|
||||
fn $default_func() -> String {
|
||||
$default_expr
|
||||
}
|
||||
|
||||
fn $de_func<'de, D>(deserializer: D) -> Result<String, D::Error>
|
||||
where
|
||||
D: de::Deserializer<'de>,
|
||||
{
|
||||
let s: &str = de::Deserialize::deserialize(deserializer)?;
|
||||
Ok(if s.is_empty() {
|
||||
Self::$default_func()
|
||||
} else {
|
||||
s.to_owned()
|
||||
})
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
|
||||
pub enum NetworkType {
|
||||
Direct,
|
||||
@@ -141,9 +162,20 @@ pub struct PeerConfig {
|
||||
pub size_ft: Size,
|
||||
#[serde(default)]
|
||||
pub size_pf: Size,
|
||||
#[serde(default)]
|
||||
pub view_style: String, // original (default), scale
|
||||
#[serde(default)]
|
||||
#[serde(
|
||||
default = "PeerConfig::default_view_style",
|
||||
deserialize_with = "PeerConfig::deserialize_view_style"
|
||||
)]
|
||||
pub view_style: String,
|
||||
#[serde(
|
||||
default = "PeerConfig::default_scroll_style",
|
||||
deserialize_with = "PeerConfig::deserialize_scroll_style"
|
||||
)]
|
||||
pub scroll_style: String,
|
||||
#[serde(
|
||||
default = "PeerConfig::default_image_quality",
|
||||
deserialize_with = "PeerConfig::deserialize_image_quality"
|
||||
)]
|
||||
pub image_quality: String,
|
||||
#[serde(default)]
|
||||
pub custom_image_quality: Vec<i32>,
|
||||
@@ -167,7 +199,10 @@ pub struct PeerConfig {
|
||||
pub show_quality_monitor: bool,
|
||||
|
||||
// The other scalar value must before this
|
||||
#[serde(default)]
|
||||
#[serde(
|
||||
default,
|
||||
deserialize_with = "PeerConfig::deserialize_options"
|
||||
)]
|
||||
pub options: HashMap<String, String>,
|
||||
// Various data for flutter ui
|
||||
#[serde(default)]
|
||||
@@ -400,7 +435,9 @@ impl Config {
|
||||
#[cfg(target_os = "macos")]
|
||||
let org = ORG.read().unwrap().clone();
|
||||
// /var/root for root
|
||||
if let Some(project) = directories_next::ProjectDirs::from("", &org, &*APP_NAME.read().unwrap()) {
|
||||
if let Some(project) =
|
||||
directories_next::ProjectDirs::from("", &org, &*APP_NAME.read().unwrap())
|
||||
{
|
||||
let mut path = patch(project.config_dir().to_path_buf());
|
||||
path.push(p);
|
||||
return path;
|
||||
@@ -896,6 +933,21 @@ impl PeerConfig {
|
||||
}
|
||||
Default::default()
|
||||
}
|
||||
|
||||
serde_field_string!(default_view_style, deserialize_view_style, "original".to_owned());
|
||||
serde_field_string!(default_scroll_style, deserialize_scroll_style, "scrollauto".to_owned());
|
||||
serde_field_string!(default_image_quality, deserialize_image_quality, "balanced".to_owned());
|
||||
|
||||
fn deserialize_options<'de, D>(deserializer: D) -> Result<HashMap<String, String>, D::Error>
|
||||
where
|
||||
D: de::Deserializer<'de>,
|
||||
{
|
||||
let mut mp: HashMap<String, String> = de::Deserialize::deserialize(deserializer)?;
|
||||
if !mp.contains_key("codec-preference") {
|
||||
mp.insert("codec-preference".to_owned(), "auto".to_owned());
|
||||
}
|
||||
Ok(mp)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Serialize, Deserialize, Clone)]
|
||||
|
||||
Reference in New Issue
Block a user