CI / fmt (rustfmt --check) (push) Waiting to run
CI / clippy (ubuntu-latest) (push) Waiting to run
CI / clippy (windows-latest) (push) Waiting to run
CI / test (ubuntu-latest) (push) Waiting to run
CI / test (windows-latest) (push) Waiting to run
CI / build release (ubuntu-latest) (push) Waiting to run
CI / build release (windows-latest) (push) Waiting to run
CI / runtime smoke (ubuntu x64, xvfb) (push) Waiting to run
CI / runtime smoke (macos arm64, probe) (push) Skipped
CI / update-e2e (windows x64) (push) Waiting to run
GPU evidence / GPU 判据自测(不需 GPU;跳过 ≠ 已验证) (push) Waiting to run
GPU evidence / GPU 证据 — 探测可用产物与硬件适配器 (push) Waiting to run
Guards / core 零 UI 守门 (push) Waiting to run
Guards / presenter 零 UI 守门 (push) Waiting to run
Guards / design 零第三方依赖守门 (push) Waiting to run
Guards / unsafe 落点守门(集合必须恰好等于期望) (push) Waiting to run
Guards / 文件行数 ≤400 守门 (push) Waiting to run
Guards / 依赖许可与来源(cargo-deny) (push) Waiting to run
Release guard / 发布标记语义守门(push tag → 稳定版) (push) Waiting to run
Signing status(播报,不是门禁) / 判据自测(三行/退出码/变异重放/接线) (push) Waiting to run
Signing status(播报,不是门禁) / 签名就绪度(播报) (push) Waiting to run
Release / 选槽位(默认四个:Windows 两档 + Linux 两档) (push) Waiting to run
本批内容见 CHANGELOG.md 的 0.2.4 段。按 D41 用孤儿快照推 main,保留「公开史只有里程碑」的模型。
35 lines
1.1 KiB
Plaintext
35 lines
1.1 KiB
Plaintext
// 细进度条(0.0~1.0):安装进度 / 下载页顶部 / 向导进度共用。
|
|
// 未知总量(known = false)时画一条不确定态的弱色轨道,而不是假装 0%。
|
|
import { Theme } from "../theme/tokens.slint";
|
|
import { Metrics } from "../theme/metrics.slint";
|
|
|
|
export component ProgressBar inherits Rectangle {
|
|
in property <float> ratio: 0.0;
|
|
in property <bool> known: true;
|
|
in property <length> bar-height: 6px;
|
|
|
|
height: root.bar-height;
|
|
border-radius: root.bar-height / 2;
|
|
background: Theme.bg-hover;
|
|
clip: true;
|
|
|
|
Rectangle {
|
|
x: 0;
|
|
y: 0;
|
|
width: root.known ? max(0px, root.width * clamp(root.ratio, 0.0, 1.0)) : 0px;
|
|
height: root.height;
|
|
border-radius: root.bar-height / 2;
|
|
background: Theme.accent;
|
|
animate width { duration: 180ms; easing: ease-out; }
|
|
}
|
|
|
|
if !root.known : Rectangle {
|
|
x: 0;
|
|
y: 0;
|
|
width: root.width / 3;
|
|
height: root.height;
|
|
border-radius: root.bar-height / 2;
|
|
background: Theme.accent-soft;
|
|
}
|
|
}
|