Tags: WJZ-P/NekoCrypt
Tags
界面调整与文案优化
主要改动:
1. **KeyScreen 界面优化:**
* 在“默认支持应用”模块下方新增了一条说明文本,提示用户默认配置可能失效,推荐手动扫描添加。
* 该说明文本使用带圆角的背景、小图标和特定的颜色,使其在视觉上更突出。
2. **字符串资源更新:**
* `strings.xml` 中新增了 `key_screen_supported_app_description` 字符串,用于上述说明文本。
* 将 `cipher_style_title` 的内容从“密文语种”修改为“密文语种选择”,使其更明确。
3. **README.md 文档更新:**
* 在介绍扫描配置的部分,补充说明了选择消息节点时需要注意选择包含实际发送文本的节点,避免误选。
更新 README.md,补充适配额外聊天软件的说明和图片。
主要改动:
- 新增 "适配额外聊天软件" 章节,详细介绍了如何使用扫描功能来适配新的聊天应用。
- 提供了扫描开关的设置界面截图。
- 提供了扫描结果界面的截图。
- 说明了必须选择输入框、发送按钮、消息列表、消息节点四个要素才能确认保存。
- 更新了下载链接的描述,建议用户从 release 页面下载以获取最新版本。
- 更新了 "支持软件" 表格:
- 将微信的支持状态从 🚧 (部分设备无效) 修改为 ✅ (部分设备无效/未知原因)。
- 将 "更多" 的支持状态从 "敬请期待" 修改为 "✅ 使用扫描功能自助添加"。
- 更新了 "鸣谢" 部分,感谢了一位匿名人士。
重构扫描结果对话框,实现节点选择功能
主要改动:
1. **扫描结果对话框 (`ScannerDialog`) UI 大调整:**
* 引入了节点选择逻辑,用户现在可以从扫描到的多个节点中为“输入框”、“发送按钮”、“消息列表”和“消息文本”分别选择一个。
* **状态管理**:使用 `remember` 和 `mutableStateOf` 来保存用户对各类节点(输入框 `selectedInput`、发送按钮 `selectedSendBtn`、消息列表容器 `selectedList`、消息文本 `selectedMessageText`)的选择。
* **确认按钮**:
* 新增“确认”按钮。
* 按钮的可用状态 (`enabled`) 由 `isConfirmEnabled` 控制,当所有必要的节点都被选定时才可用。
* 点击“确认”后,会调用新的 `onConfirm` 回调,并传递一个包含所有用户选择的 `ScanSelections` 对象。
* **取消按钮**:保留原有的“取消”按钮(文本从“确定”改为“取消”),用于关闭对话框。
2. **新的选择型区块组件:**
* **`SelectableSection`**:
* 取代了原有的 `ScanResultSection`。
* 用于展示“输入框”和“发送按钮”这类单层选择的节点列表。
* 接收 `selectedNode` 和 `onNodeSelected` 参数,用于高亮显示已选节点并响应选择事件。
* **`MessageListSelectionSection`**:
* 取代了原有的 `MessageListSection`。
* 专门用于处理“消息列表”及其内部“消息文本”的二级选择。
* 接收 `selectedList`、`selectedText`、`onListSelected` 和 `onTextSelected` 参数。
* 当用户选择一个消息列表容器后,其内部的消息文本才会以下级选项的形式展开(使用 `AnimatedVisibility` 实现动画效果)。
* 切换列表时,会重置消息文本的选择。
3. **新的选择型卡片组件:**
* **`SelectableNodeInfoCard`**:
* 取代了原有的 `NodeInfoCard`。
* 卡片现在可以通过 `isSelected` 参数来控制其边框高亮,以指示是否被选中。
* 添加了 `onSelected` 回调,当用户点击卡片时触发。
* 卡片内容布局从 `Column` 改为 `Row`,内部的节点信息仍然是 `Column` 布局,但整体卡片具备了单选行为的视觉和交互。
* 使用了 `Modifier.selectable` 和 `Role.RadioButton` 来增强可访问性。
* 选中的卡片会有主题色的边框。
4. **`ScannerDialogActivity` 调整:**
* 为 `ScannerDialog` Composable 传递了空的 `onConfirm` lambda 表达式,后续将在此处理用户确认后的选择结果。
5. **数据类 (`FoundNodeInfo`, `MessageListScanResult`, `ScanResult`) 结构保持不变。**
此次重构的核心目标是让用户能够在扫描到的多个候选项中,明确指定哪些节点分别对应应用中的关键元素,为后续的自动化操作或配置打下基础。