feat(app-iced): M114 账户页三轨登录(微软正版 / 第三方皮肤站 / 本地档案)
- 账户页:当前账户卡 + 全部账户列表 + 空态三入口 + 皮肤区;五项动作(添加/切换/删除/重新登录/校验) - 三轨添加流程:设备码(用户码+链接+倒计时+过期重试+取消)、授权码(浏览器+可复制链接+取消)、 本地档案(名字校验)、第三方站(服务地址 + 服务发现校验 + 密码登录,密码掩码且用完即弃) - 导航:账户为一等页,入口是轨底头像位(未登录=描边剪影 / 已登录=首字母块+名字;窄高收成图标条) - 凭据红线:DTO 侧形状脱敏 + 状态层二次脱敏 + 密码掩码;Inject-JWT 测试断言视图模型干净(已做变异取证) - presenter:authlib 登录/服务发现/皮肤抓取(复用下载引擎的 HTTP 客户端,无新增依赖)、 皮肤原图经 DTO 到 UI 裁剪成头像(既有 image 依赖,未改 Cargo.toml) - i18n:新增 account 域 51 条中英文案(离线档案口径全量写入),金表同步
This commit is contained in:
1 parent
e7b04c4afe
commit
1ff00bbe50
43 files changed
+4343
-117
No files matched your search
@@ -15,12 +15,8 @@
|
||||
//!
|
||||
//! ## 三处口径说明
|
||||
//!
|
||||
//! 1. **状态差异落在指示线/描边/标签上,容器底色不叠状态层**——这是 A1 文本字段的口径
|
||||
//! (`HoverActiveIndicatorColor` / `FocusActiveIndicatorColor` 等 token),与按钮家族
|
||||
//! 「叠一个 8%/10% 的状态层」不同。press 在 A1 里**没有**独立 token,本实现按 hover 处理(登记 D11)。
|
||||
//! 2. 标签是「**常浮起**」的两段式:有标签就固定占上面那 16px(`BodySmall`),不做上浮动画
|
||||
//! (M3 的动画由 motion mission 统一接,登记 D12)。
|
||||
//! 3. 缺省宽度 `Length::Fill`:文本框在页面里按列宽伸展,最小宽 280 无法在 iced 表达(G21)。
|
||||
//! 1. **状态差异落在指示线/描边/标签上,容器底色不叠状态层**(A1 的口径,与按钮家族的 8%/10% 状态层不同);press 无独立 token,按 hover 处理(D11)。
|
||||
//! 2. 标签是「**常浮起**」的两段式(占上面 16px,不做上浮动画,登记 D12);缺省宽度 `Fill`(最小宽 280 无法在 iced 表达,G21)。
|
||||
|
||||
use iced::widget::text::LineHeight;
|
||||
use iced::widget::{column, container, row, text, text_input};
|
||||
@@ -73,6 +69,7 @@ pub struct Field<'a> {
|
||||
error: bool,
|
||||
state: Option<Interaction>,
|
||||
width: Length,
|
||||
secure: bool,
|
||||
}
|
||||
|
||||
impl<'a> Field<'a> {
|
||||
@@ -89,6 +86,7 @@ impl<'a> Field<'a> {
|
||||
error: false,
|
||||
state: None,
|
||||
width: Length::Fill,
|
||||
secure: false,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,6 +143,12 @@ impl<'a> Field<'a> {
|
||||
self.width = width;
|
||||
self
|
||||
}
|
||||
|
||||
/// 密码式输入(M114):上屏是掩码(明文上屏=UI 侧凭据泄漏)。
|
||||
pub fn secure(mut self, secure: bool) -> Self {
|
||||
self.secure = secure;
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
/// 一个字段在某一态下的全套颜色(9.4 / 9.7 / 9.8 的落点)。
|
||||
@@ -269,6 +273,7 @@ pub fn text_field<'a, M: Clone + 'a>(
|
||||
} else {
|
||||
Some(on_input)
|
||||
})
|
||||
.secure(field.secure)
|
||||
.size(input_style.size_px)
|
||||
.line_height(LineHeight::Absolute(Pixels(input_style.line_height_px)))
|
||||
.font(ui.font_of(input_style))
|
||||
|
||||
Reference in new issue
Block a user