feat: maoos tray speed can be closed

This commit is contained in:
huzibaca
2025-01-13 20:48:25 +08:00
parent 41a27641df
commit 1a61fab79a
12 changed files with 59 additions and 18 deletions

View File

@@ -1,7 +1,7 @@
use crate::config::DEFAULT_PAC;
use crate::config::{deserialize_encrypted, serialize_encrypted};
use crate::utils::{dirs, help};
use crate::utils::i18n;
use crate::utils::{dirs, help};
use anyhow::Result;
use log::LevelFilter;
use serde::{Deserialize, Serialize};
@@ -176,6 +176,8 @@ pub struct IVerge {
default
)]
pub webdav_password: Option<String>,
pub enable_tray_speed: Option<bool>,
}
#[derive(Default, Debug, Clone, Deserialize, Serialize)]
@@ -207,10 +209,10 @@ impl IVerge {
let sys_lang = sys_locale::get_locale()
.unwrap_or_else(|| String::from("en"))
.to_lowercase();
let lang_code = sys_lang.split(['_', '-']).next().unwrap_or("en");
let supported_languages = i18n::get_supported_languages();
if supported_languages.contains(&lang_code.to_string()) {
lang_code.to_string()
} else {
@@ -276,6 +278,7 @@ impl IVerge {
webdav_url: None,
webdav_username: None,
webdav_password: None,
enable_tray_speed: Some(true),
..Self::default()
}
}
@@ -355,6 +358,7 @@ impl IVerge {
patch!(webdav_url);
patch!(webdav_username);
patch!(webdav_password);
patch!(enable_tray_speed);
}
/// 在初始化前尝试拿到单例端口的值
@@ -441,6 +445,7 @@ pub struct IVergeResponse {
pub webdav_url: Option<String>,
pub webdav_username: Option<String>,
pub webdav_password: Option<String>,
pub enable_tray_speed: Option<bool>,
}
impl From<IVerge> for IVergeResponse {
@@ -501,6 +506,7 @@ impl From<IVerge> for IVergeResponse {
webdav_url: verge.webdav_url,
webdav_username: verge.webdav_username,
webdav_password: verge.webdav_password,
enable_tray_speed: verge.enable_tray_speed,
}
}
}

View File

@@ -216,16 +216,22 @@ impl Tray {
#[cfg(target_os = "macos")]
{
let enable_tray_speed = Config::verge().latest().enable_tray_speed.unwrap_or(true);
let is_template =
crate::utils::help::is_monochrome_image_from_bytes(&icon_bytes).unwrap_or(false);
// 如果rate为None获取当前速率
let rate = rate.or_else(|| {
self.speed_rate
.lock()
.as_ref()
.and_then(|speed_rate| speed_rate.get_curent_rate())
});
let icon_bytes = SpeedRate::add_speed_text(icon_bytes, rate)?;
let icon_bytes = if enable_tray_speed {
let rate = rate.or_else(|| {
self.speed_rate
.lock()
.as_ref()
.and_then(|speed_rate| speed_rate.get_curent_rate())
});
SpeedRate::add_speed_text(icon_bytes, rate)?
} else {
icon_bytes
};
let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&icon_bytes)?));
let _ = tray.set_icon_as_template(is_template);
}

View File

@@ -194,6 +194,7 @@ pub async fn patch_verge(patch: IVerge) -> Result<()> {
let socks_port = patch.verge_socks_port;
let http_enabled = patch.verge_http_enabled;
let http_port = patch.verge_port;
let enable_tray_speed = patch.enable_tray_speed;
let res: std::result::Result<(), anyhow::Error> = {
let mut should_restart_core = false;
@@ -260,6 +261,10 @@ pub async fn patch_verge(patch: IVerge) -> Result<()> {
should_update_systray_menu = true;
}
if enable_tray_speed.is_some() {
should_update_systray_icon = true;
}
if should_restart_core {
CoreManager::global().restart_core().await?;
}