From 21103bdf9f88eefca3aef0b7f38fc3e8fe803c07 Mon Sep 17 00:00:00 2001 From: xiaji Date: Mon, 13 Apr 2026 22:26:27 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=AA=97=E5=8F=A3=E6=AD=BB=E9=94=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gui.rs | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/gui.rs b/src/gui.rs index 7cac286..92c7e18 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -379,6 +379,12 @@ impl eframe::App for App { // 设置窗口 let show_settings = st.show_settings; let state_clone = state.clone(); + let mut st_host = st.host.clone(); + let mut st_port = st.port; + let mut st_token_id = st.token_id.clone(); + let mut st_token_secret = st.token_secret.clone(); + + drop(st); if show_settings { egui::Window::new("设置") @@ -393,36 +399,34 @@ impl eframe::App for App { ui.separator(); ui.add_space(8.0); - let mut state = state_clone.write().unwrap(); - // Base URL 显示 ui.label("API 地址:"); - ui.colored_label(egui::Color32::GRAY, format!("https://{}:{}/api2/json/", state.host, state.port)); + ui.colored_label(egui::Color32::GRAY, format!("https://{}:{}/api2/json/", st_host, st_port)); ui.add_space(8.0); // Host 输入 ui.horizontal(|ui| { ui.label("Host:"); - ui.add(egui::TextEdit::singleline(&mut state.host).desired_width(200.0)); + ui.add(egui::TextEdit::singleline(&mut st_host).desired_width(200.0)); }); // Port 输入 ui.horizontal(|ui| { ui.label("端口:"); - ui.add(egui::DragValue::new(&mut state.port).range(1..=65535).speed(1)); + ui.add(egui::DragValue::new(&mut st_port).range(1..=65535).speed(1)); }); // 令牌ID 输入 ui.horizontal(|ui| { ui.label("令牌ID:"); - ui.add(egui::TextEdit::singleline(&mut state.token_id).desired_width(200.0)); + ui.add(egui::TextEdit::singleline(&mut st_token_id).desired_width(200.0)); }); // 密钥 输入(密码框) ui.horizontal(|ui| { ui.label("密钥:"); - ui.add(egui::TextEdit::singleline(&mut state.token_secret).password(true).desired_width(200.0)); + ui.add(egui::TextEdit::singleline(&mut st_token_secret).password(true).desired_width(200.0)); }); ui.add_space(12.0); @@ -433,15 +437,15 @@ impl eframe::App for App { let cancel_clicked = ui.button("取消").clicked(); if save_clicked { - let h = state.host.clone(); - let p = state.port; - let tid = state.token_id.clone(); - let ts = state.token_secret.clone(); - if !h.is_empty() && !tid.is_empty() && !ts.is_empty() { - let client = ProxmoxClient::new(&h, p, &tid, &ts); + if !st_host.is_empty() && !st_token_id.is_empty() && !st_token_secret.is_empty() { + let client = ProxmoxClient::new(&st_host, st_port, &st_token_id, &st_token_secret); + let mut state = state_clone.write().unwrap(); + state.host = st_host; + state.port = st_port; + state.token_id = st_token_id; + state.token_secret = st_token_secret; state.client = Arc::new(Mutex::new(Some(client))); state.is_connected = true; - state.save_config(); state.add_log("配置已保存"); state.show_settings = false; @@ -449,7 +453,7 @@ impl eframe::App for App { } if cancel_clicked { - state.show_settings = false; + state_clone.write().unwrap().show_settings = false; } });