Unlucky Launcher v0.2.0
CI / runtime smoke (macos arm64, probe) (push) Skipped
CI / fmt (rustfmt --check) (push) Canceled after 0s
CI / clippy (ubuntu-latest) (push) Canceled after 0s
CI / clippy (windows-latest) (push) Canceled after 0s
CI / test (ubuntu-latest) (push) Canceled after 0s
CI / test (windows-latest) (push) Canceled after 0s
CI / build release (ubuntu-latest) (push) Canceled after 0s
CI / build release (windows-latest) (push) Canceled after 0s
CI / runtime smoke (ubuntu x64, xvfb) (push) Canceled after 0s
Guards / core 零 UI 守门 (push) Canceled after 0s
Guards / presenter 零 UI 守门 (push) Canceled after 0s
Guards / design 零第三方依赖守门 (push) Canceled after 0s
Guards / unsafe 落点守门(集合必须恰好一个文件) (push) Canceled after 0s
Guards / 文件行数 ≤400 守门 (push) Canceled after 0s
Guards / 依赖许可与来源(cargo-deny) (push) Canceled after 0s

首个 iced + Material 3 Expressive 版本的源码快照。
完整历史与日常提交在 dev 分支;main 只放阶段性快照。
This commit is contained in:
AskaEth committed 2026-11-05 14:22:11 +08:00
commit 8a8e5ca0c0
1079 files changed
+208035

No files matched your search

+57
View File
@@ -0,0 +1,57 @@
// 横幅通知条:隔离档位切换提示(M30 ModeChangeWarning)/ 启动失败 / 启动告警。
// 与 Toast 的分工:Toast 是「刚发生了什么」,通知条是「现在需要你处理」(用户点了才收)。
import { Theme } from "../theme/tokens.slint";
import { Metrics } from "../theme/metrics.slint";
import { UiNotice, NoticeKind } from "../models.slint";
import { PageState } from "../page_state.slint";
import { UiText, TextRole } from "../components/label.slint";
import { AppIcon, IconKind } from "../components/icons.slint";
import { MetroButton, ButtonKind } from "../widgets/button.slint";
// 横幅通知:隔离档位切换提示(M30 ModeChangeWarning)/ 启动失败 / 启动告警。
// 与 Toast 的分工:Toast 是「刚发生了什么」,通知条是「现在需要你处理」。
export component NoticeBar inherits Rectangle {
in property <[UiNotice]> notices;
visible: root.notices.length > 0;
height: root.notices.length > 0 ? 48px : 0px;
background: Theme.state-warn-soft;
HorizontalLayout {
padding-left: Metrics.gap-4;
padding-right: Metrics.gap-3;
spacing: Metrics.gap-2;
for notice in root.notices : Rectangle {
horizontal-stretch: 1;
background: transparent;
HorizontalLayout {
spacing: Metrics.gap-2;
AppIcon {
icon-size: 16px;
kind: notice.kind == NoticeKind.error ? IconKind.error : IconKind.warn;
tint: notice.kind == NoticeKind.error ? Theme.state-danger : Theme.state-warn;
}
VerticalLayout {
vertical-stretch: 1;
spacing: 0px;
UiText { role: TextRole.caption; text: notice.title; horizontal-stretch: 1; }
UiText {
role: TextRole.caption;
text: notice.body;
horizontal-stretch: 1;
overflow: elide;
color: Theme.fg-secondary;
}
}
MetroButton {
kind: ButtonKind.subtle;
text: "知道了";
button-height: 22px;
clicked => { PageState.notice-dismiss(notice.id); }
}
}
}
}
}