diff --git a/src/gui.rs b/src/gui.rs index 83f03e9..2af7ffa 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -94,22 +94,29 @@ pub struct AppState { impl AppState { pub fn new(config: &Config) -> Self { - let client = if !config.host.is_empty() && !config.token_id.is_empty() && !config.token_secret.is_empty() { + let has_config = !config.host.is_empty() && !config.token_id.is_empty() && !config.token_secret.is_empty(); + + let client = if has_config { let c = ProxmoxClient::new(&config.host, config.port, &config.token_id, &config.token_secret); Arc::new(Mutex::new(Some(c))) } else { Arc::new(Mutex::new(None)) }; - let is_connected = !config.host.is_empty() && !config.token_id.is_empty() && !config.token_secret.is_empty(); + let mut log = vec!["程序启动".to_string()]; + if has_config { + log.push("已加载配置,请点击刷新节点测试连接".to_string()); + } else { + log.push("请在设置中配置连接信息".to_string()); + } Self { client, vm_id: config.vm_id, node: config.node.clone(), vm_status: "未知".to_string(), - log_buffer: vec!["程序启动".to_string()], - is_connected, + log_buffer: log, + is_connected: false, } } @@ -254,15 +261,16 @@ impl eframe::App for App { if let Some(c) = client.as_ref() { match c.get_nodes().await { Ok(nodes) => { - *nodes_clone.write().unwrap() = nodes.clone(); + let mut state = state_clone.write().unwrap(); + state.is_connected = true; if !nodes.is_empty() { - state_clone.write().unwrap().add_log(&format!("找到节点: {:?}", nodes)); + state.add_log(&format!("✓ 连接成功,找到节点: {:?}", nodes)); } else { - state_clone.write().unwrap().add_log("未找到节点"); + state.add_log("未找到节点"); } } Err(e) => { - state_clone.write().unwrap().add_log(&format!("获取节点失败: {}", e)); + state_clone.write().unwrap().add_log(&format!("✗ 连接失败: {}", e)); } } } else {