KennethCheng
680fbfa0ad
feat(ui): Phase 2 C3 — Settings 页 + Dialogs + 窗口状态保存
- src/storage.rs: AppState (last_window_width/height) + load/save
atomic write 到 %APPDATA%/WindowsGotify/state.json(§18)
- ui/settings-page.slint: 5 分组(Connection / Notifications / Startup
/ Appearance / Advanced),Appearance 实时切主题(System/Light/Dark
radio);Advanced 折叠
- ui/dialogs.slint: AboutDialog + ConfirmDialog(§54)
- ui/server-card.slint: 单 server 行(name/url/enabled toggle/edit/remove)
- ui/app.slint: settings 页切换、About 导航、theme 联动
- src/lib.rs: load_state → 启动时应用窗口尺寸;ui.window()
.on_close_requested 在 OS 关闭前 save_state;wire about/close
callbacks
- src/error.rs: 加 AppError::Storage(String) 变体
- Cargo.toml: 加 serde + serde_json
避坑:
- Slint 1.x 同文件内 export component 必须在引用前定义(sub-components
移到 SettingsPage 上面)
- Slint 不支持 padding 两值简写 (padding: 0 16px) → 用 padding-* 四属性
- Slint 不支持 Rectangle 内建 border-color 覆盖 → 命名 card-border
- Slint 不支持 alignment: right → 用 spacer + horizontal-stretch: 1
- 修了一处 .slint 文件被 PowerShell Set-Content GBK 损坏的问题(已
通过 write 工具 + UTF-8 no BOM 重写并清理 ui/ 所有 .slint)
验证:cargo build / build --release 都 exit 0,0 warning
- debug 27.55 MB, subsystem = WINDOWS_CUI
- release 8.10 MB, subsystem = WINDOWS_GUI
2026-09-19 04:47:54 +08:00
..
2026-09-19 04:02:51 +08:00
2026-09-19 04:47:54 +08:00
2026-09-19 04:34:06 +08:00
2026-09-19 04:47:54 +08:00
2026-09-19 04:39:24 +08:00
2026-09-19 04:39:24 +08:00
2026-09-19 04:39:24 +08:00
2026-09-19 04:47:54 +08:00
2026-09-19 04:47:54 +08:00
2026-09-19 04:34:06 +08:00