fix(ui): Phase 7 C5 — 移除假按钮 + 真实托盘图标

用户报告设置页很多按钮无反应 + 关闭后托盘看不到图标。两处问题:\n\n1. ServerCard 占位按钮无回调:\n- server-card.slint:去掉了 toggled/edit-clicked/remove-clicked 三个回调以及 enabled 切换、Edit / Remove 按钮;变成纯展示卡(状态点 + name + url + 当前标记)\n- settings-page.slint:去掉硬编码的 Home / NAS 占位,改用 active-server-name / active-server-url / active-server-enabled 三个属性(MainWindow → AppConfig 实时填充);空时显示 '(未配置服务器)' 空态提示\n- app.slint:MainWindow 加三个属性 + 转发给 SettingsPage\n- lib.rs:startup 阶段把活跃服务器信息塞进 UI;测试连接成功/失败时更新 enabled 状态\n\n2. 托盘图标看不见:\n- tray.rs:原本 hIcon 写 null,Win10+ 上 Shell_NotifyIconW(NIM_ADD, NULL hIcon) 实际渲染为空白或很弱的小方块。改用 LoadIconW(NULL, IDI_APPLICATION) 加载 Windows 自带的应用程序图标(无需嵌入 .ico 资源,主题感知)。show_toast / Drop 的 hIcon 维持 null(让 NIM_MODIFY/NIM_DELETE 不动原有图标)。AGENTS.md §53 标记真 .ico 资源为 V2 项。
This commit is contained in:
2026-09-19 20:40:33 +08:00
parent 383bb404a9
commit a091e6839a
5 changed files with 131 additions and 87 deletions
+39 -12
View File
@@ -128,6 +128,16 @@ export component SettingsPage inherits Rectangle {
callback toggle-persist(string, bool);
// Phase 7 C5: active server config (forwarded from MainWindow →
// AppConfig). Empty strings mean "未配置服务器". The page used to
// hardcode two placeholder rows ("Home" / "NAS") with Edit /
// Remove buttons that didn't do anything — that's what the user
// reported as "很多都没反应". V1 only has the single active
// server anyway, so a single card is honest about scope.
in property <string> active-server-name: "";
in property <string> active-server-url: "";
in property <bool> active-server-enabled: false;
in property <color> divider-color: #3a3b40;
in property <color> hint-color: #6a6a6a;
@@ -162,18 +172,35 @@ export component SettingsPage inherits Rectangle {
}
}
ServerCard {
server-name: "Home";
server-url: "https://gotify.example.com";
enabled: true;
is-current: true;
}
ServerCard {
server-name: "NAS";
server-url: "http://192.168.50.103:50334";
enabled: true;
is-current: false;
}
// Phase 7 C5: 单卡显示活跃服务器。多 server 添加/编辑/
// 删除 UI 在 V2 实现(AGENTS.md §21),V1 只有一个活跃
// server。空字符串 → 空态。
if root.active-server-url != "":
ServerCard {
server-name: root.active-server-name;
server-url: root.active-server-url;
enabled: root.active-server-enabled;
is-current: true;
}
if root.active-server-url == "":
Rectangle {
width: 100%;
height: 56px;
border-radius: 8px;
background: #28292d;
border-color: #3a3b40;
border-width: 1px;
Text {
x: 16px;
y: (parent.height - self.height) / 2;
text: "(未配置服务器 — V1 暂不支持 UI 添加,请手动编辑 %APPDATA%\\WindowsGotify\\config.json)";
color: #6a6a6a;
font-size: 12px;
wrap: word-wrap;
width: parent.width - 32px;
}
}
}
// 通知