用户原话:「我们内置了那么多镜像源 甚至用户不能手动选择指定版本下载。」
「自动下载 jdk17 作为基准版本,后续在设置中提供多版本可供用户下载。」
- core:新增 `game::java::catalog`(8/11/17/21/25 五档 × 能承接的发行版 × 「该装哪档」),
数据全部来自 `JdkVendor::supports` 与 `vendor::order`,不复制第二份真相。
- progress:`SourceFailed` 补一个结构化的 `kind`(在这之前只有中文 `reason`,双语界面
要么放弃语言、要么放弃「哪个源为什么退避」这条用户可见信息)。
- app-iced:`downloads` 模块真下(后台线程 + `ProgressEmitter` + 快照),三态(选择列表 /
下载中 / 失败)都能说出「命中的源 / 退避原因 / 试过哪些源」;成功后重扫并(在
`java.auto_install` 开着且没有默认 JDK 时)把新装的那份设为默认。
- 三个设置键做成可改 UI:`java.installRoot` / `java.vendorPriority` / `java.auto_install`,
各自带「现在生效什么、从哪一层来」(数据目录模式 / 地区默认序),改完回读落盘值。
- `State::satisfied` 换成带方向的 `Fit`:1.12.2 + Java 21 不再被说成「低于要求」。
- i18n:删掉 `SettingsJavaEmptyBody` / `SettingsJavaAddHint` 的 markdown 反引号;
`SettingsJavaNeverScannedBody` 改成不与首屏自动扫矛盾的表述。
- 出图三张(选择列表 / 下载中 / 失败)在 DevDocs/artifacts/m197/。
顺带拆文件守 400 行:`golden/tail.rs` 的 M174 段搬到 `golden/tail_ai.rs`,
`pages/settings/java/{context,prefs,prefs_store,downloads,download_view}` 各自成模块。
35 lines
1.4 KiB
Rust
35 lines
1.4 KiB
Rust
//! 「下载按钮为什么没开始」的四档原因(M197)。
|
|
//!
|
|
//! 从 `downloads.rs` 拆出来守 400 行硬线(与 `downloads/tests.rs` 同一种拆法)。
|
|
//! 点了没反应是禁止的:每一种拒绝都要在下载区顶上写清是哪一档。
|
|
|
|
/// 「没开始」的四种原因(每一种都要在界面上说清,不许点了没反应)。
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
pub enum Refusal {
|
|
/// 目录里没有这个大版本
|
|
UnknownMajor,
|
|
/// 这一档在这台机器上没有发行版承接
|
|
NoVendor,
|
|
/// 已经有一个作业在跑
|
|
Busy,
|
|
/// 没有可写的设置文件
|
|
NoStorage,
|
|
/// 有设置文件,但安装根解析不出来(standard 模式拿不到 %APPDATA% 之类的系统目录)
|
|
RootUnresolved,
|
|
}
|
|
|
|
impl Refusal {
|
|
/// 文案 key(页面自己的拒绝原因,与 `state::Refusal` 同一套渲染路径)。
|
|
#[must_use]
|
|
pub const fn label(self) -> unlucky_i18n::Key {
|
|
use unlucky_i18n::Key;
|
|
match self {
|
|
Self::UnknownMajor => Key::SettingsJavaReasonDownloadUnknownMajor,
|
|
Self::NoVendor => Key::SettingsJavaReasonDownloadNoVendor,
|
|
Self::Busy => Key::SettingsJavaReasonDownloadBusy,
|
|
Self::NoStorage => Key::SettingsJavaNoStorage,
|
|
Self::RootUnresolved => Key::SettingsJavaReasonRootUnresolved,
|
|
}
|
|
}
|
|
}
|